// 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  S11969C5_nt  {
  void *s11969c5f0[4];
  void  mf11969c5(); // _ZN11S11969C5_nt9mf11969c5Ev
};
//SIG(-1 S11969C5_nt) C1{ m Fp[4]}


void  S11969C5_nt ::mf11969c5(){}

//skip512 S11969C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C4_nt  {
  ::S11969C5_nt s11969c4f0;
  virtual  ~S11969C4_nt(); // _ZN11S11969C4_ntD1Ev
  virtual void  v28(); // _ZN11S11969C4_nt3v28Ev
  virtual void  v29(); // _ZN11S11969C4_nt3v29Ev
  virtual void  v30(); // _ZN11S11969C4_nt3v30Ev
  virtual void  v31(); // _ZN11S11969C4_nt3v31Ev
  virtual void  v32(); // _ZN11S11969C4_nt3v32Ev
  virtual void  v33(); // _ZN11S11969C4_nt3v33Ev
  S11969C4_nt(); // tgen
};
//SIG(-1 S11969C4_nt) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S11969C4_nt ::~S11969C4_nt(){ note_dtor("S11969C4_nt", this);}
void  S11969C4_nt ::v28(){vfunc_called(this, "_ZN11S11969C4_nt3v28Ev");}
void  S11969C4_nt ::v29(){vfunc_called(this, "_ZN11S11969C4_nt3v29Ev");}
void  S11969C4_nt ::v30(){vfunc_called(this, "_ZN11S11969C4_nt3v30Ev");}
void  S11969C4_nt ::v31(){vfunc_called(this, "_ZN11S11969C4_nt3v31Ev");}
void  S11969C4_nt ::v32(){vfunc_called(this, "_ZN11S11969C4_nt3v32Ev");}
void  S11969C4_nt ::v33(){vfunc_called(this, "_ZN11S11969C4_nt3v33Ev");}
S11969C4_nt ::S11969C4_nt(){ note_ctor("S11969C4_nt", this);} // tgen

//skip512 S11969C4_nt

#else // __cplusplus

extern void _ZN11S11969C4_ntC1Ev();
extern void _ZN11S11969C4_ntD1Ev();
Name_Map name_map_S11969C4_nt[] = {
  NSPAIR(_ZN11S11969C4_ntC1Ev),
  NSPAIR(_ZN11S11969C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S11969C4_nt[];
extern void _ZN11S11969C4_ntD1Ev();
extern void _ZN11S11969C4_ntD0Ev();
extern void _ZN11S11969C4_nt3v28Ev();
extern void _ZN11S11969C4_nt3v29Ev();
extern void _ZN11S11969C4_nt3v30Ev();
extern void _ZN11S11969C4_nt3v31Ev();
extern void _ZN11S11969C4_nt3v32Ev();
extern void _ZN11S11969C4_nt3v33Ev();
static  VTBL_ENTRY vtc_S11969C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S11969C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S11969C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v33Ev,
};
extern VTBL_ENTRY _ZTI11S11969C4_nt[];
VTBL_ENTRY *P__ZTI11S11969C4_nt = _ZTI11S11969C4_nt; 
extern  VTBL_ENTRY _ZTV11S11969C4_nt[];
Class_Descriptor cd_S11969C4_nt = {  "S11969C4_nt", // class name
  0,0,//no base classes
  &(vtc_S11969C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI11S11969C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S11969C4_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C6  {
  virtual  ~S11969C6(); // _ZN8S11969C6D1Ev
  virtual void  v34(); // _ZN8S11969C63v34Ev
  virtual void  v35(); // _ZN8S11969C63v35Ev
  virtual void  v36(); // _ZN8S11969C63v36Ev
  virtual void  v37(); // _ZN8S11969C63v37Ev
  virtual void  v38(); // _ZN8S11969C63v38Ev
  virtual void  v39(); // _ZN8S11969C63v39Ev
  virtual void  v40(); // _ZN8S11969C63v40Ev
  virtual void  v41(); // _ZN8S11969C63v41Ev
  virtual void  v42(); // _ZN8S11969C63v42Ev
  virtual void  v43(); // _ZN8S11969C63v43Ev
  virtual void  v44(); // _ZN8S11969C63v44Ev
  virtual void  v45(); // _ZN8S11969C63v45Ev
  virtual void  v46(); // _ZN8S11969C63v46Ev
  virtual void  v47(); // _ZN8S11969C63v47Ev
  virtual void  v48(); // _ZN8S11969C63v48Ev
  virtual void  v49(); // _ZN8S11969C63v49Ev
  virtual void  v50(); // _ZN8S11969C63v50Ev
  virtual void  v51(); // _ZN8S11969C63v51Ev
  virtual void  v52(); // _ZN8S11969C63v52Ev
  virtual void  v53(); // _ZN8S11969C63v53Ev
  virtual void  v54(); // _ZN8S11969C63v54Ev
  S11969C6(); // tgen
};
//SIG(-1 S11969C6) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21}


 S11969C6 ::~S11969C6(){ note_dtor("S11969C6", this);}
void  S11969C6 ::v34(){vfunc_called(this, "_ZN8S11969C63v34Ev");}
void  S11969C6 ::v35(){vfunc_called(this, "_ZN8S11969C63v35Ev");}
void  S11969C6 ::v36(){vfunc_called(this, "_ZN8S11969C63v36Ev");}
void  S11969C6 ::v37(){vfunc_called(this, "_ZN8S11969C63v37Ev");}
void  S11969C6 ::v38(){vfunc_called(this, "_ZN8S11969C63v38Ev");}
void  S11969C6 ::v39(){vfunc_called(this, "_ZN8S11969C63v39Ev");}
void  S11969C6 ::v40(){vfunc_called(this, "_ZN8S11969C63v40Ev");}
void  S11969C6 ::v41(){vfunc_called(this, "_ZN8S11969C63v41Ev");}
void  S11969C6 ::v42(){vfunc_called(this, "_ZN8S11969C63v42Ev");}
void  S11969C6 ::v43(){vfunc_called(this, "_ZN8S11969C63v43Ev");}
void  S11969C6 ::v44(){vfunc_called(this, "_ZN8S11969C63v44Ev");}
void  S11969C6 ::v45(){vfunc_called(this, "_ZN8S11969C63v45Ev");}
void  S11969C6 ::v46(){vfunc_called(this, "_ZN8S11969C63v46Ev");}
void  S11969C6 ::v47(){vfunc_called(this, "_ZN8S11969C63v47Ev");}
void  S11969C6 ::v48(){vfunc_called(this, "_ZN8S11969C63v48Ev");}
void  S11969C6 ::v49(){vfunc_called(this, "_ZN8S11969C63v49Ev");}
void  S11969C6 ::v50(){vfunc_called(this, "_ZN8S11969C63v50Ev");}
void  S11969C6 ::v51(){vfunc_called(this, "_ZN8S11969C63v51Ev");}
void  S11969C6 ::v52(){vfunc_called(this, "_ZN8S11969C63v52Ev");}
void  S11969C6 ::v53(){vfunc_called(this, "_ZN8S11969C63v53Ev");}
void  S11969C6 ::v54(){vfunc_called(this, "_ZN8S11969C63v54Ev");}
S11969C6 ::S11969C6(){ note_ctor("S11969C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S11969C6C1Ev();
extern void _ZN8S11969C6D1Ev();
Name_Map name_map_S11969C6[] = {
  NSPAIR(_ZN8S11969C6C1Ev),
  NSPAIR(_ZN8S11969C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S11969C6[];
extern void _ZN8S11969C6D1Ev();
extern void _ZN8S11969C6D0Ev();
extern void _ZN8S11969C63v34Ev();
extern void _ZN8S11969C63v35Ev();
extern void _ZN8S11969C63v36Ev();
extern void _ZN8S11969C63v37Ev();
extern void _ZN8S11969C63v38Ev();
extern void _ZN8S11969C63v39Ev();
extern void _ZN8S11969C63v40Ev();
extern void _ZN8S11969C63v41Ev();
extern void _ZN8S11969C63v42Ev();
extern void _ZN8S11969C63v43Ev();
extern void _ZN8S11969C63v44Ev();
extern void _ZN8S11969C63v45Ev();
extern void _ZN8S11969C63v46Ev();
extern void _ZN8S11969C63v47Ev();
extern void _ZN8S11969C63v48Ev();
extern void _ZN8S11969C63v49Ev();
extern void _ZN8S11969C63v50Ev();
extern void _ZN8S11969C63v51Ev();
extern void _ZN8S11969C63v52Ev();
extern void _ZN8S11969C63v53Ev();
extern void _ZN8S11969C63v54Ev();
static  VTBL_ENTRY vtc_S11969C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S11969C6[0]),
  (VTBL_ENTRY)&_ZN8S11969C6D1Ev,
  (VTBL_ENTRY)&_ZN8S11969C6D0Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v34Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v35Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v36Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v37Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v38Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v39Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v40Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v41Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v42Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v43Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v44Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v45Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v46Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v47Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v48Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v49Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v50Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v51Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v52Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v53Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v54Ev,
};
extern VTBL_ENTRY _ZTI8S11969C6[];
extern  VTBL_ENTRY _ZTV8S11969C6[];
Class_Descriptor cd_S11969C6 = {  "S11969C6", // class name
  0,0,//no base classes
  &(vtc_S11969C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S11969C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S11969C6),25, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C8_nt  {
  void *s11969c8f0;
  int s11969c8f1;
  void *s11969c8f2;
  int s11969c8f3[2];
  void  mf11969c8(); // _ZN11S11969C8_nt9mf11969c8Ev
};
//SIG(-1 S11969C8_nt) C1{ m Fp Fi Fp Fi[2]}


void  S11969C8_nt ::mf11969c8(){}

//skip512 S11969C8_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S11969C11_nt  {
  __tsi64 s11969c11f0[2];
  void  mf11969c11(); // _ZN12S11969C11_nt10mf11969c11Ev
};
//SIG(-1 S11969C11_nt) C1{ m FL[2]}


void  S11969C11_nt ::mf11969c11(){}

//skip512 S11969C11_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C10_nt  {
  ::S11969C11_nt s11969c10f0;
  void  mf11969c10(); // _ZN12S11969C10_nt10mf11969c10Ev
};
//SIG(-1 S11969C10_nt) C1{ m FC2{ m FL[2]}}


void  S11969C10_nt ::mf11969c10(){}

//skip512 S11969C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C9_nt  {
  ::S11969C10_nt s11969c9f0;
  ::S11969C10_nt s11969c9f1;
  ::S11969C10_nt s11969c9f2;
  ::S11969C10_nt s11969c9f3;
  void  mf11969c9(); // _ZN11S11969C9_nt9mf11969c9Ev
};
//SIG(-1 S11969C9_nt) C1{ m FC2{ m FC3{ m FL[2]}} FC2 FC2 FC2}


void  S11969C9_nt ::mf11969c9(){}

//skip512 S11969C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C7_nt  : S11969C8_nt {
  ::S11969C9_nt s11969c7f0;
};
//SIG(-1 S11969C7_nt) C1{ BC2{ m Fp Fi Fp Fi[2]} FC3{ m FC4{ m FC5{ m FL[2]}} FC4 FC4 FC4}}



//skip512 S11969C7_nt

#else // __cplusplus

extern Class_Descriptor cd_S11969C8_nt;
static Base_Class bases_S11969C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S11969C12_nt  : S11969C8_nt {
  ::S11969C10_nt s11969c12f0;
};
//SIG(-1 S11969C12_nt) C1{ BC2{ m Fp Fi Fp Fi[2]} FC3{ m FC4{ m FL[2]}}}



//skip512 S11969C12_nt

#else // __cplusplus

extern Class_Descriptor cd_S11969C8_nt;
static Base_Class bases_S11969C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S11969C17_nt  {
  __tsi64 s11969c17f0;
  void  mf11969c17(); // _ZN12S11969C17_nt10mf11969c17Ev
};
//SIG(-1 S11969C17_nt) C1{ m FL}


void  S11969C17_nt ::mf11969c17(){}

//skip512 S11969C17_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C16_nt  {
  ::S11969C17_nt s11969c16f0;
  void  mf11969c16(); // _ZN12S11969C16_nt10mf11969c16Ev
};
//SIG(-1 S11969C16_nt) C1{ m FC2{ m FL}}


void  S11969C16_nt ::mf11969c16(){}

//skip512 S11969C16_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C15_nt  : S11969C8_nt {
  ::S11969C16_nt s11969c15f0;
};
//SIG(-1 S11969C15_nt) C1{ BC2{ m Fp Fi Fp Fi[2]} FC3{ m FC4{ m FL}}}



//skip512 S11969C15_nt

#else // __cplusplus

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



//skip512 S11969C19_nt

#else // __cplusplus

extern Class_Descriptor cd_S11969C8_nt;
static Base_Class bases_S11969C19_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S11969C22_nt  {
  void *s11969c22f0[2];
  void  mf11969c22(); // _ZN12S11969C22_nt10mf11969c22Ev
};
//SIG(-1 S11969C22_nt) C1{ m Fp[2]}


void  S11969C22_nt ::mf11969c22(){}

//skip512 S11969C22_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C23_nt  {
  void *s11969c23f0;
  void  mf11969c23(); // _ZN12S11969C23_nt10mf11969c23Ev
};
//SIG(-1 S11969C23_nt) C1{ m Fp}


void  S11969C23_nt ::mf11969c23(){}

//skip512 S11969C23_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C21_nt  {
  ::S11969C22_nt s11969c21f0;
  ::S11969C23_nt s11969c21f1;
  void  mf11969c21(); // _ZN12S11969C21_nt10mf11969c21Ev
};
//SIG(-1 S11969C21_nt) C1{ m FC2{ m Fp[2]} FC3{ m Fp}}


void  S11969C21_nt ::mf11969c21(){}

//skip512 S11969C21_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C20_nt  : S11969C8_nt {
  ::S11969C21_nt s11969c20f0;
};
//SIG(-1 S11969C20_nt) C1{ BC2{ m Fp Fi Fp Fi[2]} FC3{ m FC4{ m Fp[2]} FC5{ m Fp}}}



//skip512 S11969C20_nt

#else // __cplusplus

extern Class_Descriptor cd_S11969C8_nt;
static Base_Class bases_S11969C20_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S11969C3  : S11969C4_nt , S11969C6 {
  ::S11969C7_nt s11969c3f0;
  ::S11969C7_nt s11969c3f1;
  ::S11969C12_nt s11969c3f2;
  ::S11969C7_nt s11969c3f3;
  ::S11969C15_nt s11969c3f4;
  ::S11969C12_nt s11969c3f5;
  ::S11969C15_nt s11969c3f6;
  ::S11969C12_nt s11969c3f7;
  ::S11969C12_nt s11969c3f8;
  ::S11969C12_nt s11969c3f9;
  ::S11969C12_nt s11969c3f10;
  ::S11969C12_nt s11969c3f11;
  ::S11969C15_nt s11969c3f12;
  ::S11969C19_nt s11969c3f13;
  ::S11969C12_nt s11969c3f14;
  ::S11969C19_nt s11969c3f15;
  ::S11969C20_nt s11969c3f16;
  ::S11969C20_nt s11969c3f17;
  ::S11969C12_nt s11969c3f18;
  virtual void  v1(); // _ZN8S11969C32v1Ev
  virtual void  v2(); // _ZN8S11969C32v2Ev
  virtual void  v3(); // _ZN8S11969C32v3Ev
  virtual void  v4(); // _ZN8S11969C32v4Ev
  virtual void  v5(); // _ZN8S11969C32v5Ev
  virtual void  v6(); // _ZN8S11969C32v6Ev
  virtual void  v7(); // _ZN8S11969C32v7Ev
  virtual void  v8(); // _ZN8S11969C32v8Ev
  virtual void  v9(); // _ZN8S11969C32v9Ev
  virtual void  v10(); // _ZN8S11969C33v10Ev
  virtual void  v11(); // _ZN8S11969C33v11Ev
  virtual void  v12(); // _ZN8S11969C33v12Ev
  virtual void  v13(); // _ZN8S11969C33v13Ev
  virtual void  v14(); // _ZN8S11969C33v14Ev
  virtual void  v15(); // _ZN8S11969C33v15Ev
  virtual void  v16(); // _ZN8S11969C33v16Ev
  virtual void  v17(); // _ZN8S11969C33v17Ev
  virtual void  v18(); // _ZN8S11969C33v18Ev
  virtual void  v19(); // _ZN8S11969C33v19Ev
  virtual void  v20(); // _ZN8S11969C33v20Ev
  virtual void  v21(); // _ZN8S11969C33v21Ev
  virtual void  v22(); // _ZN8S11969C33v22Ev
  virtual void  v23(); // _ZN8S11969C33v23Ev
  virtual void  v24(); // _ZN8S11969C33v24Ev
  virtual void  v25(); // _ZN8S11969C33v25Ev
  virtual void  v26(); // _ZN8S11969C33v26Ev
  virtual void  v27(); // _ZN8S11969C33v27Ev
  ~S11969C3(); // tgen
  S11969C3(); // tgen
};
//SIG(-1 S11969C3) C1{ BC2{ vd v28 v29 v30 v31 v32 v33 FC3{ m Fp[4]}} BC4{ vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} 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 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FC9{ m FL[2]}} FC8 FC8 FC8}} FC5 FC10{ BC6 FC8} FC5 FC11{ BC6 FC12{ m FC13{ m FL}}} FC10 FC11 FC10 FC10 FC10 FC10 FC10 FC11 FC14{ BC6 Fi} FC10 FC14 FC15{ BC6 FC16{ m FC17{ m Fp[2]} FC18{ m Fp}}} FC15 FC10}


void  S11969C3 ::v1(){vfunc_called(this, "_ZN8S11969C32v1Ev");}
void  S11969C3 ::v2(){vfunc_called(this, "_ZN8S11969C32v2Ev");}
void  S11969C3 ::v3(){vfunc_called(this, "_ZN8S11969C32v3Ev");}
void  S11969C3 ::v4(){vfunc_called(this, "_ZN8S11969C32v4Ev");}
void  S11969C3 ::v5(){vfunc_called(this, "_ZN8S11969C32v5Ev");}
void  S11969C3 ::v6(){vfunc_called(this, "_ZN8S11969C32v6Ev");}
void  S11969C3 ::v7(){vfunc_called(this, "_ZN8S11969C32v7Ev");}
void  S11969C3 ::v8(){vfunc_called(this, "_ZN8S11969C32v8Ev");}
void  S11969C3 ::v9(){vfunc_called(this, "_ZN8S11969C32v9Ev");}
void  S11969C3 ::v10(){vfunc_called(this, "_ZN8S11969C33v10Ev");}
void  S11969C3 ::v11(){vfunc_called(this, "_ZN8S11969C33v11Ev");}
void  S11969C3 ::v12(){vfunc_called(this, "_ZN8S11969C33v12Ev");}
void  S11969C3 ::v13(){vfunc_called(this, "_ZN8S11969C33v13Ev");}
void  S11969C3 ::v14(){vfunc_called(this, "_ZN8S11969C33v14Ev");}
void  S11969C3 ::v15(){vfunc_called(this, "_ZN8S11969C33v15Ev");}
void  S11969C3 ::v16(){vfunc_called(this, "_ZN8S11969C33v16Ev");}
void  S11969C3 ::v17(){vfunc_called(this, "_ZN8S11969C33v17Ev");}
void  S11969C3 ::v18(){vfunc_called(this, "_ZN8S11969C33v18Ev");}
void  S11969C3 ::v19(){vfunc_called(this, "_ZN8S11969C33v19Ev");}
void  S11969C3 ::v20(){vfunc_called(this, "_ZN8S11969C33v20Ev");}
void  S11969C3 ::v21(){vfunc_called(this, "_ZN8S11969C33v21Ev");}
void  S11969C3 ::v22(){vfunc_called(this, "_ZN8S11969C33v22Ev");}
void  S11969C3 ::v23(){vfunc_called(this, "_ZN8S11969C33v23Ev");}
void  S11969C3 ::v24(){vfunc_called(this, "_ZN8S11969C33v24Ev");}
void  S11969C3 ::v25(){vfunc_called(this, "_ZN8S11969C33v25Ev");}
void  S11969C3 ::v26(){vfunc_called(this, "_ZN8S11969C33v26Ev");}
void  S11969C3 ::v27(){vfunc_called(this, "_ZN8S11969C33v27Ev");}
S11969C3 ::~S11969C3(){ note_dtor("S11969C3", this);} // tgen
S11969C3 ::S11969C3(){ note_ctor("S11969C3", this);} // tgen

static void Test_S11969C3()
{
  extern Class_Descriptor cd_S11969C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(136,200)];
    init_test(&cd_S11969C3, buf);
    S11969C3 *dp, &lv = *(dp=new (buf) S11969C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1080,796), "sizeof(S11969C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C3)");
    check_base_class_offset(lv, (S11969C4_nt*), 0, "S11969C3");
    check_base_class_offset(lv, (S11969C6*), ABISELECT(40,20), "S11969C3");
    check_field_offset(lv, s11969c3f0, ABISELECT(48,24), "S11969C3.s11969c3f0");
    check_field_offset(lv, s11969c3f1, ABISELECT(144,108), "S11969C3.s11969c3f1");
    check_field_offset(lv, s11969c3f2, ABISELECT(240,192), "S11969C3.s11969c3f2");
    check_field_offset(lv, s11969c3f3, ABISELECT(288,228), "S11969C3.s11969c3f3");
    check_field_offset(lv, s11969c3f4, ABISELECT(384,312), "S11969C3.s11969c3f4");
    check_field_offset(lv, s11969c3f5, ABISELECT(424,340), "S11969C3.s11969c3f5");
    check_field_offset(lv, s11969c3f6, ABISELECT(472,376), "S11969C3.s11969c3f6");
    check_field_offset(lv, s11969c3f7, ABISELECT(512,404), "S11969C3.s11969c3f7");
    check_field_offset(lv, s11969c3f8, ABISELECT(560,440), "S11969C3.s11969c3f8");
    check_field_offset(lv, s11969c3f9, ABISELECT(608,476), "S11969C3.s11969c3f9");
    check_field_offset(lv, s11969c3f10, ABISELECT(656,512), "S11969C3.s11969c3f10");
    check_field_offset(lv, s11969c3f11, ABISELECT(704,548), "S11969C3.s11969c3f11");
    check_field_offset(lv, s11969c3f12, ABISELECT(752,584), "S11969C3.s11969c3f12");
    check_field_offset(lv, s11969c3f13, ABISELECT(792,612), "S11969C3.s11969c3f13");
    check_field_offset(lv, s11969c3f14, ABISELECT(832,636), "S11969C3.s11969c3f14");
    check_field_offset(lv, s11969c3f15, ABISELECT(880,672), "S11969C3.s11969c3f15");
    check_field_offset(lv, s11969c3f16, ABISELECT(920,696), "S11969C3.s11969c3f16");
    check_field_offset(lv, s11969c3f17, ABISELECT(976,728), "S11969C3.s11969c3f17");
    check_field_offset(lv, s11969c3f18, ABISELECT(1032,760), "S11969C3.s11969c3f18");
    test_class_info(&lv, &cd_S11969C3);
    dp->~S11969C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS11969C3(Test_S11969C3, "S11969C3", ABISELECT(1080,796));

#else // __cplusplus

extern void _ZN8S11969C3C1Ev();
extern void _ZN8S11969C3D1Ev();
Name_Map name_map_S11969C3[] = {
  NSPAIR(_ZN8S11969C3C1Ev),
  NSPAIR(_ZN8S11969C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C4_nt;
extern VTBL_ENTRY _ZTI11S11969C4_nt[];
extern  VTBL_ENTRY _ZTV11S11969C4_nt[];
extern Class_Descriptor cd_S11969C6;
extern VTBL_ENTRY _ZTI8S11969C6[];
extern  VTBL_ENTRY _ZTV8S11969C6[];
static Base_Class bases_S11969C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S11969C6,    ABISELECT(40,20), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S11969C3[];
extern void _ZN8S11969C3D1Ev();
extern void _ZN8S11969C3D0Ev();
extern void _ZN11S11969C4_nt3v28Ev();
extern void _ZN11S11969C4_nt3v29Ev();
extern void _ZN11S11969C4_nt3v30Ev();
extern void _ZN11S11969C4_nt3v31Ev();
extern void _ZN11S11969C4_nt3v32Ev();
extern void _ZN11S11969C4_nt3v33Ev();
extern void _ZN8S11969C32v1Ev();
extern void _ZN8S11969C32v2Ev();
extern void _ZN8S11969C32v3Ev();
extern void _ZN8S11969C32v4Ev();
extern void _ZN8S11969C32v5Ev();
extern void _ZN8S11969C32v6Ev();
extern void _ZN8S11969C32v7Ev();
extern void _ZN8S11969C32v8Ev();
extern void _ZN8S11969C32v9Ev();
extern void _ZN8S11969C33v10Ev();
extern void _ZN8S11969C33v11Ev();
extern void _ZN8S11969C33v12Ev();
extern void _ZN8S11969C33v13Ev();
extern void _ZN8S11969C33v14Ev();
extern void _ZN8S11969C33v15Ev();
extern void _ZN8S11969C33v16Ev();
extern void _ZN8S11969C33v17Ev();
extern void _ZN8S11969C33v18Ev();
extern void _ZN8S11969C33v19Ev();
extern void _ZN8S11969C33v20Ev();
extern void _ZN8S11969C33v21Ev();
extern void _ZN8S11969C33v22Ev();
extern void _ZN8S11969C33v23Ev();
extern void _ZN8S11969C33v24Ev();
extern void _ZN8S11969C33v25Ev();
extern void _ZN8S11969C33v26Ev();
extern void _ZN8S11969C33v27Ev();
extern void ABISELECT(_ZThn40_N8S11969C3D1Ev,_ZThn20_N8S11969C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S11969C3D0Ev,_ZThn20_N8S11969C3D0Ev)();
extern void _ZN8S11969C63v34Ev();
extern void _ZN8S11969C63v35Ev();
extern void _ZN8S11969C63v36Ev();
extern void _ZN8S11969C63v37Ev();
extern void _ZN8S11969C63v38Ev();
extern void _ZN8S11969C63v39Ev();
extern void _ZN8S11969C63v40Ev();
extern void _ZN8S11969C63v41Ev();
extern void _ZN8S11969C63v42Ev();
extern void _ZN8S11969C63v43Ev();
extern void _ZN8S11969C63v44Ev();
extern void _ZN8S11969C63v45Ev();
extern void _ZN8S11969C63v46Ev();
extern void _ZN8S11969C63v47Ev();
extern void _ZN8S11969C63v48Ev();
extern void _ZN8S11969C63v49Ev();
extern void _ZN8S11969C63v50Ev();
extern void _ZN8S11969C63v51Ev();
extern void _ZN8S11969C63v52Ev();
extern void _ZN8S11969C63v53Ev();
extern void _ZN8S11969C63v54Ev();
static  VTBL_ENTRY vtc_S11969C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S11969C3[0]),
  (VTBL_ENTRY)&_ZN8S11969C3D1Ev,
  (VTBL_ENTRY)&_ZN8S11969C3D0Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S11969C32v1Ev,
  (VTBL_ENTRY)&_ZN8S11969C32v2Ev,
  (VTBL_ENTRY)&_ZN8S11969C32v3Ev,
  (VTBL_ENTRY)&_ZN8S11969C32v4Ev,
  (VTBL_ENTRY)&_ZN8S11969C32v5Ev,
  (VTBL_ENTRY)&_ZN8S11969C32v6Ev,
  (VTBL_ENTRY)&_ZN8S11969C32v7Ev,
  (VTBL_ENTRY)&_ZN8S11969C32v8Ev,
  (VTBL_ENTRY)&_ZN8S11969C32v9Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v10Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v11Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v12Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v13Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v14Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v15Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v16Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v17Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v18Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v19Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v20Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v21Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v22Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v23Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v24Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v25Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v26Ev,
  (VTBL_ENTRY)&_ZN8S11969C33v27Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S11969C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S11969C3D1Ev,_ZThn20_N8S11969C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S11969C3D0Ev,_ZThn20_N8S11969C3D0Ev),
  (VTBL_ENTRY)&_ZN8S11969C63v34Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v35Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v36Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v37Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v38Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v39Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v40Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v41Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v42Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v43Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v44Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v45Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v46Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v47Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v48Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v49Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v50Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v51Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v52Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v53Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v54Ev,
};
extern VTBL_ENTRY _ZTI8S11969C3[];
extern  VTBL_ENTRY _ZTV8S11969C3[];
Class_Descriptor cd_S11969C3 = {  "S11969C3", // class name
  bases_S11969C3, 2,
  &(vtc_S11969C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1080,796), // object size
  NSPAIRA(_ZTI8S11969C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S11969C3),62, //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  S11969C26_nt  {
  virtual  ~S11969C26_nt(); // _ZN12S11969C26_ntD1Ev
  virtual void  v55(); // _ZN12S11969C26_nt3v55Ev
  S11969C26_nt(); // tgen
};
//SIG(-1 S11969C26_nt) C1{ vd v1}


 S11969C26_nt ::~S11969C26_nt(){ note_dtor("S11969C26_nt", this);}
void  S11969C26_nt ::v55(){vfunc_called(this, "_ZN12S11969C26_nt3v55Ev");}
S11969C26_nt ::S11969C26_nt(){ note_ctor("S11969C26_nt", this);} // tgen

//skip512 S11969C26_nt

#else // __cplusplus

extern void _ZN12S11969C26_ntC1Ev();
extern void _ZN12S11969C26_ntD1Ev();
Name_Map name_map_S11969C26_nt[] = {
  NSPAIR(_ZN12S11969C26_ntC1Ev),
  NSPAIR(_ZN12S11969C26_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S11969C26_nt[];
extern void _ZN12S11969C26_ntD1Ev();
extern void _ZN12S11969C26_ntD0Ev();
extern void _ZN12S11969C26_nt3v55Ev();
static  VTBL_ENTRY vtc_S11969C26_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S11969C26_nt[0]),
  (VTBL_ENTRY)&_ZN12S11969C26_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S11969C26_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S11969C26_nt3v55Ev,
};
extern VTBL_ENTRY _ZTI12S11969C26_nt[];
VTBL_ENTRY *P__ZTI12S11969C26_nt = _ZTI12S11969C26_nt; 
extern  VTBL_ENTRY _ZTV12S11969C26_nt[];
Class_Descriptor cd_S11969C26_nt = {  "S11969C26_nt", // class name
  0,0,//no base classes
  &(vtc_S11969C26_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S11969C26_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S11969C26_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  S11969C29_nt  {
  void  mf11969c29(); // _ZN12S11969C29_nt10mf11969c29Ev
};
//SIG(-1 S11969C29_nt) C1{ m}


void  S11969C29_nt ::mf11969c29(){}

//skip512 S11969C29_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S11969C29_nt[];
VTBL_ENTRY *P__ZTI12S11969C29_nt = _ZTI12S11969C29_nt; 
Class_Descriptor cd_S11969C29_nt = {  "S11969C29_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI12S11969C29_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  S11969C28_nt  {
  void *s11969c28f0;
  int s11969c28f1[2];
  ::S11969C29_nt s11969c28f2;
  void  mf11969c28(); // _ZN12S11969C28_nt10mf11969c28Ev
};
//SIG(-1 S11969C28_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S11969C28_nt ::mf11969c28(){}

//skip512 S11969C28_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C27_nt  {
  ::S11969C28_nt s11969c27f0;
  void  mf11969c27(); // _ZN12S11969C27_nt10mf11969c27Ev
};
//SIG(-1 S11969C27_nt) C1{ m FC2{ m Fp Fi[2] FC3{ m}}}


void  S11969C27_nt ::mf11969c27(){}

//skip512 S11969C27_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C25_nt  : S11969C26_nt {
  void *s11969c25f0[2];
  ::S11969C27_nt s11969c25f1;
  ::S11969C22_nt s11969c25f2;
  virtual  ~S11969C25_nt(); // _ZN12S11969C25_ntD1Ev
  virtual void  v56(); // _ZN12S11969C25_nt3v56Ev
  S11969C25_nt(); // tgen
};
//SIG(-1 S11969C25_nt) C1{ BC2{ vd v2} vd v1 Fp[2] FC3{ m FC4{ m Fp Fi[2] FC5{ m}}} FC6{ m Fp[2]}}


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

//skip512 S11969C25_nt

#else // __cplusplus

extern void _ZN12S11969C25_ntC1Ev();
extern void _ZN12S11969C25_ntD1Ev();
Name_Map name_map_S11969C25_nt[] = {
  NSPAIR(_ZN12S11969C25_ntC1Ev),
  NSPAIR(_ZN12S11969C25_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C26_nt;
extern VTBL_ENTRY _ZTI12S11969C26_nt[];
extern  VTBL_ENTRY _ZTV12S11969C26_nt[];
static Base_Class bases_S11969C25_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S11969C25_nt[];
extern void _ZN12S11969C25_ntD1Ev();
extern void _ZN12S11969C25_ntD0Ev();
extern void _ZN12S11969C26_nt3v55Ev();
extern void _ZN12S11969C25_nt3v56Ev();
static  VTBL_ENTRY vtc_S11969C25_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S11969C25_nt[0]),
  (VTBL_ENTRY)&_ZN12S11969C25_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S11969C25_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S11969C26_nt3v55Ev,
  (VTBL_ENTRY)&_ZN12S11969C25_nt3v56Ev,
};
extern VTBL_ENTRY _ZTI12S11969C25_nt[];
VTBL_ENTRY *P__ZTI12S11969C25_nt = _ZTI12S11969C25_nt; 
extern  VTBL_ENTRY _ZTV12S11969C25_nt[];
Class_Descriptor cd_S11969C25_nt = {  "S11969C25_nt", // class name
  bases_S11969C25_nt, 1,
  &(vtc_S11969C25_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI12S11969C25_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV12S11969C25_nt),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  S11969C32_nt  {
  short s11969c32f0[2];
  char s11969c32f1[2];
  short s11969c32f2;
};
//SIG(1 S11969C32_nt) C1{ Fs[2] Fc[2] Fs}



//skip512 S11969C32_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C33_nt  {
  short s11969c33f0[2];
};
//SIG(1 S11969C33_nt) C1{ Fs[2]}



//skip512 S11969C33_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C34  {
  void *s11969c34f0[2];
  void  mf11969c34(); // _ZN9S11969C3410mf11969c34Ev
};
//SIG(-1 S11969C34) C1{ m Fp[2]}


void  S11969C34 ::mf11969c34(){}

static void Test_S11969C34()
{
  {
    init_simple_test("S11969C34");
    S11969C34 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S11969C34)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C34)");
    check_field_offset(lv, s11969c34f0, 0, "S11969C34.s11969c34f0");
  }
}
static Arrange_To_Call_Me vS11969C34(Test_S11969C34, "S11969C34", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C31_nt  {
  ::S11969C32_nt s11969c31f0[12];
  int s11969c31f1;
  ::S11969C33_nt s11969c31f2[4];
  int s11969c31f3;
  ::S11969C34 s11969c31f4;
  void  mf11969c31(); // _ZN12S11969C31_nt10mf11969c31Ev
};
//SIG(-1 S11969C31_nt) C1{ m FC2{ Fs[2] Fc[2] Fs}[12] Fi FC3{ Fs[2]}[4] Fi FC4{ m Fp[2]}}


void  S11969C31_nt ::mf11969c31(){}

//skip512 S11969C31_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C24_nt  : S11969C25_nt {
  ::S11969C31_nt s11969c24f0;
  virtual  ~S11969C24_nt(); // _ZN12S11969C24_ntD1Ev
  S11969C24_nt(); // tgen
};
//SIG(-1 S11969C24_nt) C1{ BC2{ BC3{ vd v1} vd v2 Fp[2] FC4{ m FC5{ m Fp Fi[2] FC6{ m}}} FC7{ m Fp[2]}} vd FC8{ m FC9{ Fs[2] Fc[2] Fs}[12] Fi FC10{ Fs[2]}[4] Fi FC11{ m Fp[2]}}}


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

//skip512 S11969C24_nt

#else // __cplusplus

extern void _ZN12S11969C24_ntC1Ev();
extern void _ZN12S11969C24_ntD1Ev();
Name_Map name_map_S11969C24_nt[] = {
  NSPAIR(_ZN12S11969C24_ntC1Ev),
  NSPAIR(_ZN12S11969C24_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C26_nt;
extern VTBL_ENTRY _ZTI12S11969C26_nt[];
extern  VTBL_ENTRY _ZTV12S11969C26_nt[];
extern Class_Descriptor cd_S11969C25_nt;
extern VTBL_ENTRY _ZTI12S11969C25_nt[];
extern  VTBL_ENTRY _ZTV12S11969C25_nt[];
static Base_Class bases_S11969C24_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S11969C25_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI12S11969C24_nt[];
extern void _ZN12S11969C24_ntD1Ev();
extern void _ZN12S11969C24_ntD0Ev();
extern void _ZN12S11969C26_nt3v55Ev();
extern void _ZN12S11969C25_nt3v56Ev();
static  VTBL_ENTRY vtc_S11969C24_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S11969C24_nt[0]),
  (VTBL_ENTRY)&_ZN12S11969C24_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S11969C24_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S11969C26_nt3v55Ev,
  (VTBL_ENTRY)&_ZN12S11969C25_nt3v56Ev,
};
extern VTBL_ENTRY _ZTI12S11969C24_nt[];
VTBL_ENTRY *P__ZTI12S11969C24_nt = _ZTI12S11969C24_nt; 
extern  VTBL_ENTRY _ZTV12S11969C24_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C2  {
  ::S11969C3 s11969c2f0;
  ::S11969C24_nt s11969c2f1;
  void  mf11969c2(); // _ZN8S11969C29mf11969c2Ev
};
//SIG(-1 S11969C2) C1{ m FC2{ BC3{ vd v28 v29 v30 v31 v32 v33 FC4{ m Fp[4]}} BC5{ vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} 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 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FC10{ m FL[2]}} FC9 FC9 FC9}} FC6 FC11{ BC7 FC9} FC6 FC12{ BC7 FC13{ m FC14{ m FL}}} FC11 FC12 FC11 FC11 FC11 FC11 FC11 FC12 FC15{ BC7 Fi} FC11 FC15 FC16{ BC7 FC17{ m FC18{ m Fp[2]} FC19{ m Fp}}} FC16 FC11} FC20{ BC21{ BC22{ vd v55} vd v56 Fp[2] FC23{ m FC24{ m Fp Fi[2] FC25{ m}}} FC18} vd FC26{ m FC27{ Fs[2] Fc[2] Fs}[12] Fi FC28{ Fs[2]}[4] Fi FC29{ m Fp[2]}}}}


void  S11969C2 ::mf11969c2(){}

static void Test_S11969C2()
{
  {
    init_simple_test("S11969C2");
    S11969C2 lv;
    check2(sizeof(lv), ABISELECT(1280,960), "sizeof(S11969C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C2)");
    check_field_offset(lv, s11969c2f0, 0, "S11969C2.s11969c2f0");
    check_field_offset(lv, s11969c2f1, ABISELECT(1080,796), "S11969C2.s11969c2f1");
  }
}
static Arrange_To_Call_Me vS11969C2(Test_S11969C2, "S11969C2", ABISELECT(1280,960));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C37_nt  {
  virtual  ~S11969C37_nt(); // _ZN12S11969C37_ntD1Ev
  virtual void  v67(); // _ZN12S11969C37_nt3v67Ev
  virtual void  v68(); // _ZN12S11969C37_nt3v68Ev
  virtual void  v69(); // _ZN12S11969C37_nt3v69Ev
  virtual void  v70(); // _ZN12S11969C37_nt3v70Ev
  S11969C37_nt(); // tgen
};
//SIG(-1 S11969C37_nt) C1{ vd v1 v2 v3 v4}


 S11969C37_nt ::~S11969C37_nt(){ note_dtor("S11969C37_nt", this);}
void  S11969C37_nt ::v67(){vfunc_called(this, "_ZN12S11969C37_nt3v67Ev");}
void  S11969C37_nt ::v68(){vfunc_called(this, "_ZN12S11969C37_nt3v68Ev");}
void  S11969C37_nt ::v69(){vfunc_called(this, "_ZN12S11969C37_nt3v69Ev");}
void  S11969C37_nt ::v70(){vfunc_called(this, "_ZN12S11969C37_nt3v70Ev");}
S11969C37_nt ::S11969C37_nt(){ note_ctor("S11969C37_nt", this);} // tgen

//skip512 S11969C37_nt

#else // __cplusplus

extern void _ZN12S11969C37_ntC1Ev();
extern void _ZN12S11969C37_ntD1Ev();
Name_Map name_map_S11969C37_nt[] = {
  NSPAIR(_ZN12S11969C37_ntC1Ev),
  NSPAIR(_ZN12S11969C37_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S11969C37_nt[];
extern void _ZN12S11969C37_ntD1Ev();
extern void _ZN12S11969C37_ntD0Ev();
extern void _ZN12S11969C37_nt3v67Ev();
extern void _ZN12S11969C37_nt3v68Ev();
extern void _ZN12S11969C37_nt3v69Ev();
extern void _ZN12S11969C37_nt3v70Ev();
static  VTBL_ENTRY vtc_S11969C37_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S11969C37_nt[0]),
  (VTBL_ENTRY)&_ZN12S11969C37_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S11969C37_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v67Ev,
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v68Ev,
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v69Ev,
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v70Ev,
};
extern VTBL_ENTRY _ZTI12S11969C37_nt[];
VTBL_ENTRY *P__ZTI12S11969C37_nt = _ZTI12S11969C37_nt; 
extern  VTBL_ENTRY _ZTV12S11969C37_nt[];
Class_Descriptor cd_S11969C37_nt = {  "S11969C37_nt", // class name
  0,0,//no base classes
  &(vtc_S11969C37_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S11969C37_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S11969C37_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  S11969C36  : S11969C4_nt , S11969C37_nt {
  ::S11969C20_nt s11969c36f0;
  virtual void  v57(); // _ZN9S11969C363v57Ev
  virtual void  v58(); // _ZN9S11969C363v58Ev
  virtual void  v59(); // _ZN9S11969C363v59Ev
  virtual void  v60(); // _ZN9S11969C363v60Ev
  virtual void  v61(); // _ZN9S11969C363v61Ev
  virtual void  v62(); // _ZN9S11969C363v62Ev
  virtual void  v63(); // _ZN9S11969C363v63Ev
  virtual void  v64(); // _ZN9S11969C363v64Ev
  virtual void  v65(); // _ZN9S11969C363v65Ev
  virtual void  v66(); // _ZN9S11969C363v66Ev
  ~S11969C36(); // tgen
  S11969C36(); // tgen
};
//SIG(-1 S11969C36) C1{ BC2{ vd v11 v12 v13 v14 v15 v16 FC3{ m Fp[4]}} BC4{ vd v17 v18 v19 v20} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m Fp[2]} FC9{ m Fp}}}}


void  S11969C36 ::v57(){vfunc_called(this, "_ZN9S11969C363v57Ev");}
void  S11969C36 ::v58(){vfunc_called(this, "_ZN9S11969C363v58Ev");}
void  S11969C36 ::v59(){vfunc_called(this, "_ZN9S11969C363v59Ev");}
void  S11969C36 ::v60(){vfunc_called(this, "_ZN9S11969C363v60Ev");}
void  S11969C36 ::v61(){vfunc_called(this, "_ZN9S11969C363v61Ev");}
void  S11969C36 ::v62(){vfunc_called(this, "_ZN9S11969C363v62Ev");}
void  S11969C36 ::v63(){vfunc_called(this, "_ZN9S11969C363v63Ev");}
void  S11969C36 ::v64(){vfunc_called(this, "_ZN9S11969C363v64Ev");}
void  S11969C36 ::v65(){vfunc_called(this, "_ZN9S11969C363v65Ev");}
void  S11969C36 ::v66(){vfunc_called(this, "_ZN9S11969C363v66Ev");}
S11969C36 ::~S11969C36(){ note_dtor("S11969C36", this);} // tgen
S11969C36 ::S11969C36(){ note_ctor("S11969C36", this);} // tgen

static void Test_S11969C36()
{
  extern Class_Descriptor cd_S11969C36;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,15)];
    init_test(&cd_S11969C36, buf);
    S11969C36 *dp, &lv = *(dp=new (buf) S11969C36());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,56), "sizeof(S11969C36)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C36)");
    check_base_class_offset(lv, (S11969C4_nt*), 0, "S11969C36");
    check_base_class_offset(lv, (S11969C37_nt*), ABISELECT(40,20), "S11969C36");
    check_field_offset(lv, s11969c36f0, ABISELECT(48,24), "S11969C36.s11969c36f0");
    test_class_info(&lv, &cd_S11969C36);
    dp->~S11969C36();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS11969C36(Test_S11969C36, "S11969C36", ABISELECT(104,56));

#else // __cplusplus

extern void _ZN9S11969C36C1Ev();
extern void _ZN9S11969C36D1Ev();
Name_Map name_map_S11969C36[] = {
  NSPAIR(_ZN9S11969C36C1Ev),
  NSPAIR(_ZN9S11969C36D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C4_nt;
extern VTBL_ENTRY _ZTI11S11969C4_nt[];
extern  VTBL_ENTRY _ZTV11S11969C4_nt[];
extern Class_Descriptor cd_S11969C37_nt;
extern VTBL_ENTRY _ZTI12S11969C37_nt[];
extern  VTBL_ENTRY _ZTV12S11969C37_nt[];
static Base_Class bases_S11969C36[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S11969C37_nt,    ABISELECT(40,20), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S11969C36[];
extern void _ZN9S11969C36D1Ev();
extern void _ZN9S11969C36D0Ev();
extern void _ZN11S11969C4_nt3v28Ev();
extern void _ZN11S11969C4_nt3v29Ev();
extern void _ZN11S11969C4_nt3v30Ev();
extern void _ZN11S11969C4_nt3v31Ev();
extern void _ZN11S11969C4_nt3v32Ev();
extern void _ZN11S11969C4_nt3v33Ev();
extern void _ZN9S11969C363v57Ev();
extern void _ZN9S11969C363v58Ev();
extern void _ZN9S11969C363v59Ev();
extern void _ZN9S11969C363v60Ev();
extern void _ZN9S11969C363v61Ev();
extern void _ZN9S11969C363v62Ev();
extern void _ZN9S11969C363v63Ev();
extern void _ZN9S11969C363v64Ev();
extern void _ZN9S11969C363v65Ev();
extern void _ZN9S11969C363v66Ev();
extern void ABISELECT(_ZThn40_N9S11969C36D1Ev,_ZThn20_N9S11969C36D1Ev)();
extern void ABISELECT(_ZThn40_N9S11969C36D0Ev,_ZThn20_N9S11969C36D0Ev)();
extern void _ZN12S11969C37_nt3v67Ev();
extern void _ZN12S11969C37_nt3v68Ev();
extern void _ZN12S11969C37_nt3v69Ev();
extern void _ZN12S11969C37_nt3v70Ev();
static  VTBL_ENTRY vtc_S11969C36[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S11969C36[0]),
  (VTBL_ENTRY)&_ZN9S11969C36D1Ev,
  (VTBL_ENTRY)&_ZN9S11969C36D0Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN9S11969C363v57Ev,
  (VTBL_ENTRY)&_ZN9S11969C363v58Ev,
  (VTBL_ENTRY)&_ZN9S11969C363v59Ev,
  (VTBL_ENTRY)&_ZN9S11969C363v60Ev,
  (VTBL_ENTRY)&_ZN9S11969C363v61Ev,
  (VTBL_ENTRY)&_ZN9S11969C363v62Ev,
  (VTBL_ENTRY)&_ZN9S11969C363v63Ev,
  (VTBL_ENTRY)&_ZN9S11969C363v64Ev,
  (VTBL_ENTRY)&_ZN9S11969C363v65Ev,
  (VTBL_ENTRY)&_ZN9S11969C363v66Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S11969C36[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S11969C36D1Ev,_ZThn20_N9S11969C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S11969C36D0Ev,_ZThn20_N9S11969C36D0Ev),
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v67Ev,
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v68Ev,
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v69Ev,
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v70Ev,
};
extern VTBL_ENTRY _ZTI9S11969C36[];
extern  VTBL_ENTRY _ZTV9S11969C36[];
Class_Descriptor cd_S11969C36 = {  "S11969C36", // class name
  bases_S11969C36, 2,
  &(vtc_S11969C36[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,56), // object size
  NSPAIRA(_ZTI9S11969C36),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S11969C36),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  S11969C39  : S11969C26_nt {
  void *s11969c39f0[2];
  ::S11969C27_nt s11969c39f1;
  ::S11969C34 s11969c39f2;
  virtual  ~S11969C39(); // _ZN9S11969C39D1Ev
  virtual void  v71(); // _ZN9S11969C393v71Ev
  S11969C39(); // tgen
};
//SIG(-1 S11969C39) C1{ BC2{ vd v2} vd v1 Fp[2] FC3{ m FC4{ m Fp Fi[2] FC5{ m}}} FC6{ m Fp[2]}}


 S11969C39 ::~S11969C39(){ note_dtor("S11969C39", this);}
void  S11969C39 ::v71(){vfunc_called(this, "_ZN9S11969C393v71Ev");}
S11969C39 ::S11969C39(){ note_ctor("S11969C39", this);} // tgen

static void Test_S11969C39()
{
  extern Class_Descriptor cd_S11969C39;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S11969C39, buf);
    S11969C39 *dp, &lv = *(dp=new (buf) S11969C39());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S11969C39)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C39)");
    check_base_class_offset(lv, (S11969C26_nt*), 0, "S11969C39");
    check_field_offset(lv, s11969c39f0, ABISELECT(8,4), "S11969C39.s11969c39f0");
    check_field_offset(lv, s11969c39f1, ABISELECT(24,12), "S11969C39.s11969c39f1");
    check_field_offset(lv, s11969c39f2, ABISELECT(48,28), "S11969C39.s11969c39f2");
    test_class_info(&lv, &cd_S11969C39);
    dp->~S11969C39();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS11969C39(Test_S11969C39, "S11969C39", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S11969C39C1Ev();
extern void _ZN9S11969C39D1Ev();
Name_Map name_map_S11969C39[] = {
  NSPAIR(_ZN9S11969C39C1Ev),
  NSPAIR(_ZN9S11969C39D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C26_nt;
extern VTBL_ENTRY _ZTI12S11969C26_nt[];
extern  VTBL_ENTRY _ZTV12S11969C26_nt[];
static Base_Class bases_S11969C39[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S11969C39[];
extern void _ZN9S11969C39D1Ev();
extern void _ZN9S11969C39D0Ev();
extern void _ZN12S11969C26_nt3v55Ev();
extern void _ZN9S11969C393v71Ev();
static  VTBL_ENTRY vtc_S11969C39[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S11969C39[0]),
  (VTBL_ENTRY)&_ZN9S11969C39D1Ev,
  (VTBL_ENTRY)&_ZN9S11969C39D0Ev,
  (VTBL_ENTRY)&_ZN12S11969C26_nt3v55Ev,
  (VTBL_ENTRY)&_ZN9S11969C393v71Ev,
};
extern VTBL_ENTRY _ZTI9S11969C39[];
extern  VTBL_ENTRY _ZTV9S11969C39[];
Class_Descriptor cd_S11969C39 = {  "S11969C39", // class name
  bases_S11969C39, 1,
  &(vtc_S11969C39[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S11969C39),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S11969C39),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  S11969C45_nt  {
  char s11969c45f0;
  char s11969c45f1:4;
  char s11969c45f2:4;
  char s11969c45f3:4;
  char s11969c45f4:4;
  char s11969c45f5:4;
  char s11969c45f6:4;
};
//SIG(-1 S11969C45_nt) C1{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4}



//skip512 S11969C45_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C44_nt  {
  void *s11969c44f0;
  int s11969c44f1;
  ::S11969C45_nt s11969c44f2;
  int s11969c44f3;
  ::S11969C34 s11969c44f4;
  void  mf11969c44(); // _ZN12S11969C44_nt10mf11969c44Ev
};
//SIG(-1 S11969C44_nt) C1{ m Fp Fi FC2{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC3{ m Fp[2]}}


void  S11969C44_nt ::mf11969c44(){}

//skip512 S11969C44_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C38_nt  : S11969C39 {
  ::S11969C44_nt s11969c38f0;
  virtual  ~S11969C38_nt(); // _ZN12S11969C38_ntD1Ev
  S11969C38_nt(); // tgen
};
//SIG(-1 S11969C38_nt) C1{ BC2{ BC3{ vd v1} vd v2 Fp[2] FC4{ m FC5{ m Fp Fi[2] FC6{ m}}} FC7{ m Fp[2]}} vd FC8{ m Fp Fi FC9{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC7}}


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

//skip512 S11969C38_nt

#else // __cplusplus

extern void _ZN12S11969C38_ntC1Ev();
extern void _ZN12S11969C38_ntD1Ev();
Name_Map name_map_S11969C38_nt[] = {
  NSPAIR(_ZN12S11969C38_ntC1Ev),
  NSPAIR(_ZN12S11969C38_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C26_nt;
extern VTBL_ENTRY _ZTI12S11969C26_nt[];
extern  VTBL_ENTRY _ZTV12S11969C26_nt[];
extern Class_Descriptor cd_S11969C39;
extern VTBL_ENTRY _ZTI9S11969C39[];
extern  VTBL_ENTRY _ZTV9S11969C39[];
static Base_Class bases_S11969C38_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C26_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S11969C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI12S11969C38_nt[];
extern void _ZN12S11969C38_ntD1Ev();
extern void _ZN12S11969C38_ntD0Ev();
extern void _ZN12S11969C26_nt3v55Ev();
extern void _ZN9S11969C393v71Ev();
static  VTBL_ENTRY vtc_S11969C38_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S11969C38_nt[0]),
  (VTBL_ENTRY)&_ZN12S11969C38_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S11969C38_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S11969C26_nt3v55Ev,
  (VTBL_ENTRY)&_ZN9S11969C393v71Ev,
};
extern VTBL_ENTRY _ZTI12S11969C38_nt[];
VTBL_ENTRY *P__ZTI12S11969C38_nt = _ZTI12S11969C38_nt; 
extern  VTBL_ENTRY _ZTV12S11969C38_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C35  {
  ::S11969C36 s11969c35f0;
  ::S11969C38_nt s11969c35f1;
  void  mf11969c35(); // _ZN9S11969C3510mf11969c35Ev
};
//SIG(-1 S11969C35) C1{ m FC2{ BC3{ vd v11 v12 v13 v14 v15 v16 FC4{ m Fp[4]}} BC5{ vd v17 v18 v19 v20} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m Fp[2]} FC10{ m Fp}}}} FC11{ BC12{ BC13{ vd v21} vd v22 Fp[2] FC14{ m FC15{ m Fp Fi[2] FC16{ m}}} FC17{ m Fp[2]}} vd FC18{ m Fp Fi FC19{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC17}}}


void  S11969C35 ::mf11969c35(){}

static void Test_S11969C35()
{
  {
    init_simple_test("S11969C35");
    static S11969C35 lv;
    check2(sizeof(lv), ABISELECT(208,116), "sizeof(S11969C35)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C35)");
    check_field_offset(lv, s11969c35f0, 0, "S11969C35.s11969c35f0");
    check_field_offset(lv, s11969c35f1, ABISELECT(104,56), "S11969C35.s11969c35f1");
  }
}
static Arrange_To_Call_Me vS11969C35(Test_S11969C35, "S11969C35", ABISELECT(208,116));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C47  : S11969C4_nt , S11969C6 {
  ::S11969C7_nt s11969c47f0;
  ::S11969C7_nt s11969c47f1;
  ::S11969C12_nt s11969c47f2;
  ::S11969C7_nt s11969c47f3;
  ::S11969C15_nt s11969c47f4;
  ::S11969C12_nt s11969c47f5;
  ::S11969C15_nt s11969c47f6;
  ::S11969C12_nt s11969c47f7;
  ::S11969C7_nt s11969c47f8;
  ::S11969C12_nt s11969c47f9;
  ::S11969C12_nt s11969c47f10;
  ::S11969C12_nt s11969c47f11;
  ::S11969C15_nt s11969c47f12;
  ::S11969C12_nt s11969c47f13;
  ::S11969C19_nt s11969c47f14;
  ::S11969C20_nt s11969c47f15;
  ::S11969C20_nt s11969c47f16;
  ::S11969C12_nt s11969c47f17;
  virtual void  v72(); // _ZN9S11969C473v72Ev
  virtual void  v73(); // _ZN9S11969C473v73Ev
  virtual void  v74(); // _ZN9S11969C473v74Ev
  virtual void  v75(); // _ZN9S11969C473v75Ev
  virtual void  v76(); // _ZN9S11969C473v76Ev
  virtual void  v77(); // _ZN9S11969C473v77Ev
  virtual void  v78(); // _ZN9S11969C473v78Ev
  virtual void  v79(); // _ZN9S11969C473v79Ev
  virtual void  v80(); // _ZN9S11969C473v80Ev
  virtual void  v81(); // _ZN9S11969C473v81Ev
  virtual void  v82(); // _ZN9S11969C473v82Ev
  virtual void  v83(); // _ZN9S11969C473v83Ev
  virtual void  v84(); // _ZN9S11969C473v84Ev
  virtual void  v85(); // _ZN9S11969C473v85Ev
  virtual void  v86(); // _ZN9S11969C473v86Ev
  virtual void  v87(); // _ZN9S11969C473v87Ev
  virtual void  v88(); // _ZN9S11969C473v88Ev
  virtual void  v89(); // _ZN9S11969C473v89Ev
  virtual void  v90(); // _ZN9S11969C473v90Ev
  virtual void  v91(); // _ZN9S11969C473v91Ev
  virtual void  v92(); // _ZN9S11969C473v92Ev
  virtual void  v93(); // _ZN9S11969C473v93Ev
  virtual void  v94(); // _ZN9S11969C473v94Ev
  virtual void  v95(); // _ZN9S11969C473v95Ev
  virtual void  v96(); // _ZN9S11969C473v96Ev
  virtual void  v97(); // _ZN9S11969C473v97Ev
  virtual void  v98(); // _ZN9S11969C473v98Ev
  ~S11969C47(); // tgen
  S11969C47(); // tgen
};
//SIG(-1 S11969C47) C1{ BC2{ vd v28 v29 v30 v31 v32 v33 FC3{ m Fp[4]}} BC4{ vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} 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 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FC9{ m FL[2]}} FC8 FC8 FC8}} FC5 FC10{ BC6 FC8} FC5 FC11{ BC6 FC12{ m FC13{ m FL}}} FC10 FC11 FC10 FC5 FC10 FC10 FC10 FC11 FC10 FC14{ BC6 Fi} FC15{ BC6 FC16{ m FC17{ m Fp[2]} FC18{ m Fp}}} FC15 FC10}


void  S11969C47 ::v72(){vfunc_called(this, "_ZN9S11969C473v72Ev");}
void  S11969C47 ::v73(){vfunc_called(this, "_ZN9S11969C473v73Ev");}
void  S11969C47 ::v74(){vfunc_called(this, "_ZN9S11969C473v74Ev");}
void  S11969C47 ::v75(){vfunc_called(this, "_ZN9S11969C473v75Ev");}
void  S11969C47 ::v76(){vfunc_called(this, "_ZN9S11969C473v76Ev");}
void  S11969C47 ::v77(){vfunc_called(this, "_ZN9S11969C473v77Ev");}
void  S11969C47 ::v78(){vfunc_called(this, "_ZN9S11969C473v78Ev");}
void  S11969C47 ::v79(){vfunc_called(this, "_ZN9S11969C473v79Ev");}
void  S11969C47 ::v80(){vfunc_called(this, "_ZN9S11969C473v80Ev");}
void  S11969C47 ::v81(){vfunc_called(this, "_ZN9S11969C473v81Ev");}
void  S11969C47 ::v82(){vfunc_called(this, "_ZN9S11969C473v82Ev");}
void  S11969C47 ::v83(){vfunc_called(this, "_ZN9S11969C473v83Ev");}
void  S11969C47 ::v84(){vfunc_called(this, "_ZN9S11969C473v84Ev");}
void  S11969C47 ::v85(){vfunc_called(this, "_ZN9S11969C473v85Ev");}
void  S11969C47 ::v86(){vfunc_called(this, "_ZN9S11969C473v86Ev");}
void  S11969C47 ::v87(){vfunc_called(this, "_ZN9S11969C473v87Ev");}
void  S11969C47 ::v88(){vfunc_called(this, "_ZN9S11969C473v88Ev");}
void  S11969C47 ::v89(){vfunc_called(this, "_ZN9S11969C473v89Ev");}
void  S11969C47 ::v90(){vfunc_called(this, "_ZN9S11969C473v90Ev");}
void  S11969C47 ::v91(){vfunc_called(this, "_ZN9S11969C473v91Ev");}
void  S11969C47 ::v92(){vfunc_called(this, "_ZN9S11969C473v92Ev");}
void  S11969C47 ::v93(){vfunc_called(this, "_ZN9S11969C473v93Ev");}
void  S11969C47 ::v94(){vfunc_called(this, "_ZN9S11969C473v94Ev");}
void  S11969C47 ::v95(){vfunc_called(this, "_ZN9S11969C473v95Ev");}
void  S11969C47 ::v96(){vfunc_called(this, "_ZN9S11969C473v96Ev");}
void  S11969C47 ::v97(){vfunc_called(this, "_ZN9S11969C473v97Ev");}
void  S11969C47 ::v98(){vfunc_called(this, "_ZN9S11969C473v98Ev");}
S11969C47 ::~S11969C47(){ note_dtor("S11969C47", this);} // tgen
S11969C47 ::S11969C47(){ note_ctor("S11969C47", this);} // tgen

static void Test_S11969C47()
{
  extern Class_Descriptor cd_S11969C47;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(137,206)];
    init_test(&cd_S11969C47, buf);
    S11969C47 *dp, &lv = *(dp=new (buf) S11969C47());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1088,820), "sizeof(S11969C47)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C47)");
    check_base_class_offset(lv, (S11969C4_nt*), 0, "S11969C47");
    check_base_class_offset(lv, (S11969C6*), ABISELECT(40,20), "S11969C47");
    check_field_offset(lv, s11969c47f0, ABISELECT(48,24), "S11969C47.s11969c47f0");
    check_field_offset(lv, s11969c47f1, ABISELECT(144,108), "S11969C47.s11969c47f1");
    check_field_offset(lv, s11969c47f2, ABISELECT(240,192), "S11969C47.s11969c47f2");
    check_field_offset(lv, s11969c47f3, ABISELECT(288,228), "S11969C47.s11969c47f3");
    check_field_offset(lv, s11969c47f4, ABISELECT(384,312), "S11969C47.s11969c47f4");
    check_field_offset(lv, s11969c47f5, ABISELECT(424,340), "S11969C47.s11969c47f5");
    check_field_offset(lv, s11969c47f6, ABISELECT(472,376), "S11969C47.s11969c47f6");
    check_field_offset(lv, s11969c47f7, ABISELECT(512,404), "S11969C47.s11969c47f7");
    check_field_offset(lv, s11969c47f8, ABISELECT(560,440), "S11969C47.s11969c47f8");
    check_field_offset(lv, s11969c47f9, ABISELECT(656,524), "S11969C47.s11969c47f9");
    check_field_offset(lv, s11969c47f10, ABISELECT(704,560), "S11969C47.s11969c47f10");
    check_field_offset(lv, s11969c47f11, ABISELECT(752,596), "S11969C47.s11969c47f11");
    check_field_offset(lv, s11969c47f12, ABISELECT(800,632), "S11969C47.s11969c47f12");
    check_field_offset(lv, s11969c47f13, ABISELECT(840,660), "S11969C47.s11969c47f13");
    check_field_offset(lv, s11969c47f14, ABISELECT(888,696), "S11969C47.s11969c47f14");
    check_field_offset(lv, s11969c47f15, ABISELECT(928,720), "S11969C47.s11969c47f15");
    check_field_offset(lv, s11969c47f16, ABISELECT(984,752), "S11969C47.s11969c47f16");
    check_field_offset(lv, s11969c47f17, ABISELECT(1040,784), "S11969C47.s11969c47f17");
    test_class_info(&lv, &cd_S11969C47);
    dp->~S11969C47();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS11969C47(Test_S11969C47, "S11969C47", ABISELECT(1088,820));

#else // __cplusplus

extern void _ZN9S11969C47C1Ev();
extern void _ZN9S11969C47D1Ev();
Name_Map name_map_S11969C47[] = {
  NSPAIR(_ZN9S11969C47C1Ev),
  NSPAIR(_ZN9S11969C47D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C4_nt;
extern VTBL_ENTRY _ZTI11S11969C4_nt[];
extern  VTBL_ENTRY _ZTV11S11969C4_nt[];
extern Class_Descriptor cd_S11969C6;
extern VTBL_ENTRY _ZTI8S11969C6[];
extern  VTBL_ENTRY _ZTV8S11969C6[];
static Base_Class bases_S11969C47[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S11969C6,    ABISELECT(40,20), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S11969C47[];
extern void _ZN9S11969C47D1Ev();
extern void _ZN9S11969C47D0Ev();
extern void _ZN11S11969C4_nt3v28Ev();
extern void _ZN11S11969C4_nt3v29Ev();
extern void _ZN11S11969C4_nt3v30Ev();
extern void _ZN11S11969C4_nt3v31Ev();
extern void _ZN11S11969C4_nt3v32Ev();
extern void _ZN11S11969C4_nt3v33Ev();
extern void _ZN9S11969C473v72Ev();
extern void _ZN9S11969C473v73Ev();
extern void _ZN9S11969C473v74Ev();
extern void _ZN9S11969C473v75Ev();
extern void _ZN9S11969C473v76Ev();
extern void _ZN9S11969C473v77Ev();
extern void _ZN9S11969C473v78Ev();
extern void _ZN9S11969C473v79Ev();
extern void _ZN9S11969C473v80Ev();
extern void _ZN9S11969C473v81Ev();
extern void _ZN9S11969C473v82Ev();
extern void _ZN9S11969C473v83Ev();
extern void _ZN9S11969C473v84Ev();
extern void _ZN9S11969C473v85Ev();
extern void _ZN9S11969C473v86Ev();
extern void _ZN9S11969C473v87Ev();
extern void _ZN9S11969C473v88Ev();
extern void _ZN9S11969C473v89Ev();
extern void _ZN9S11969C473v90Ev();
extern void _ZN9S11969C473v91Ev();
extern void _ZN9S11969C473v92Ev();
extern void _ZN9S11969C473v93Ev();
extern void _ZN9S11969C473v94Ev();
extern void _ZN9S11969C473v95Ev();
extern void _ZN9S11969C473v96Ev();
extern void _ZN9S11969C473v97Ev();
extern void _ZN9S11969C473v98Ev();
extern void ABISELECT(_ZThn40_N9S11969C47D1Ev,_ZThn20_N9S11969C47D1Ev)();
extern void ABISELECT(_ZThn40_N9S11969C47D0Ev,_ZThn20_N9S11969C47D0Ev)();
extern void _ZN8S11969C63v34Ev();
extern void _ZN8S11969C63v35Ev();
extern void _ZN8S11969C63v36Ev();
extern void _ZN8S11969C63v37Ev();
extern void _ZN8S11969C63v38Ev();
extern void _ZN8S11969C63v39Ev();
extern void _ZN8S11969C63v40Ev();
extern void _ZN8S11969C63v41Ev();
extern void _ZN8S11969C63v42Ev();
extern void _ZN8S11969C63v43Ev();
extern void _ZN8S11969C63v44Ev();
extern void _ZN8S11969C63v45Ev();
extern void _ZN8S11969C63v46Ev();
extern void _ZN8S11969C63v47Ev();
extern void _ZN8S11969C63v48Ev();
extern void _ZN8S11969C63v49Ev();
extern void _ZN8S11969C63v50Ev();
extern void _ZN8S11969C63v51Ev();
extern void _ZN8S11969C63v52Ev();
extern void _ZN8S11969C63v53Ev();
extern void _ZN8S11969C63v54Ev();
static  VTBL_ENTRY vtc_S11969C47[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S11969C47[0]),
  (VTBL_ENTRY)&_ZN9S11969C47D1Ev,
  (VTBL_ENTRY)&_ZN9S11969C47D0Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v72Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v73Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v74Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v75Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v76Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v77Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v78Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v79Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v80Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v81Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v82Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v83Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v84Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v85Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v86Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v87Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v88Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v89Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v90Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v91Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v92Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v93Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v94Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v95Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v96Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v97Ev,
  (VTBL_ENTRY)&_ZN9S11969C473v98Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S11969C47[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S11969C47D1Ev,_ZThn20_N9S11969C47D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S11969C47D0Ev,_ZThn20_N9S11969C47D0Ev),
  (VTBL_ENTRY)&_ZN8S11969C63v34Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v35Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v36Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v37Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v38Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v39Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v40Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v41Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v42Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v43Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v44Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v45Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v46Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v47Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v48Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v49Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v50Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v51Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v52Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v53Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v54Ev,
};
extern VTBL_ENTRY _ZTI9S11969C47[];
extern  VTBL_ENTRY _ZTV9S11969C47[];
Class_Descriptor cd_S11969C47 = {  "S11969C47", // class name
  bases_S11969C47, 2,
  &(vtc_S11969C47[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1088,820), // object size
  NSPAIRA(_ZTI9S11969C47),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S11969C47),62, //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  S11969C46  {
  ::S11969C47 s11969c46f0;
  ::S11969C24_nt s11969c46f1;
  void  mf11969c46(); // _ZN9S11969C4610mf11969c46Ev
};
//SIG(-1 S11969C46) C1{ m FC2{ BC3{ vd v28 v29 v30 v31 v32 v33 FC4{ m Fp[4]}} BC5{ vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} 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 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FC10{ m FL[2]}} FC9 FC9 FC9}} FC6 FC11{ BC7 FC9} FC6 FC12{ BC7 FC13{ m FC14{ m FL}}} FC11 FC12 FC11 FC6 FC11 FC11 FC11 FC12 FC11 FC15{ BC7 Fi} FC16{ BC7 FC17{ m FC18{ m Fp[2]} FC19{ m Fp}}} FC16 FC11} FC20{ BC21{ BC22{ vd v55} vd v56 Fp[2] FC23{ m FC24{ m Fp Fi[2] FC25{ m}}} FC18} vd FC26{ m FC27{ Fs[2] Fc[2] Fs}[12] Fi FC28{ Fs[2]}[4] Fi FC29{ m Fp[2]}}}}


void  S11969C46 ::mf11969c46(){}

static void Test_S11969C46()
{
  {
    init_simple_test("S11969C46");
    S11969C46 lv;
    check2(sizeof(lv), ABISELECT(1288,984), "sizeof(S11969C46)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C46)");
    check_field_offset(lv, s11969c46f0, 0, "S11969C46.s11969c46f0");
    check_field_offset(lv, s11969c46f1, ABISELECT(1088,820), "S11969C46.s11969c46f1");
  }
}
static Arrange_To_Call_Me vS11969C46(Test_S11969C46, "S11969C46", ABISELECT(1288,984));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C49  : S11969C4_nt , S11969C37_nt {
  ::S11969C20_nt s11969c49f0;
  ::S11969C20_nt s11969c49f1;
  virtual void  v99(); // _ZN9S11969C493v99Ev
  virtual void  v100(); // _ZN9S11969C494v100Ev
  virtual void  v101(); // _ZN9S11969C494v101Ev
  virtual void  v102(); // _ZN9S11969C494v102Ev
  virtual void  v103(); // _ZN9S11969C494v103Ev
  virtual void  v104(); // _ZN9S11969C494v104Ev
  virtual void  v105(); // _ZN9S11969C494v105Ev
  virtual void  v106(); // _ZN9S11969C494v106Ev
  virtual void  v107(); // _ZN9S11969C494v107Ev
  virtual void  v108(); // _ZN9S11969C494v108Ev
  ~S11969C49(); // tgen
  S11969C49(); // tgen
};
//SIG(-1 S11969C49) C1{ BC2{ vd v11 v12 v13 v14 v15 v16 FC3{ m Fp[4]}} BC4{ vd v17 v18 v19 v20} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m Fp[2]} FC9{ m Fp}}} FC5}


void  S11969C49 ::v99(){vfunc_called(this, "_ZN9S11969C493v99Ev");}
void  S11969C49 ::v100(){vfunc_called(this, "_ZN9S11969C494v100Ev");}
void  S11969C49 ::v101(){vfunc_called(this, "_ZN9S11969C494v101Ev");}
void  S11969C49 ::v102(){vfunc_called(this, "_ZN9S11969C494v102Ev");}
void  S11969C49 ::v103(){vfunc_called(this, "_ZN9S11969C494v103Ev");}
void  S11969C49 ::v104(){vfunc_called(this, "_ZN9S11969C494v104Ev");}
void  S11969C49 ::v105(){vfunc_called(this, "_ZN9S11969C494v105Ev");}
void  S11969C49 ::v106(){vfunc_called(this, "_ZN9S11969C494v106Ev");}
void  S11969C49 ::v107(){vfunc_called(this, "_ZN9S11969C494v107Ev");}
void  S11969C49 ::v108(){vfunc_called(this, "_ZN9S11969C494v108Ev");}
S11969C49 ::~S11969C49(){ note_dtor("S11969C49", this);} // tgen
S11969C49 ::S11969C49(){ note_ctor("S11969C49", this);} // tgen

static void Test_S11969C49()
{
  extern Class_Descriptor cd_S11969C49;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,23)];
    init_test(&cd_S11969C49, buf);
    S11969C49 *dp, &lv = *(dp=new (buf) S11969C49());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S11969C49)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C49)");
    check_base_class_offset(lv, (S11969C4_nt*), 0, "S11969C49");
    check_base_class_offset(lv, (S11969C37_nt*), ABISELECT(40,20), "S11969C49");
    check_field_offset(lv, s11969c49f0, ABISELECT(48,24), "S11969C49.s11969c49f0");
    check_field_offset(lv, s11969c49f1, ABISELECT(104,56), "S11969C49.s11969c49f1");
    test_class_info(&lv, &cd_S11969C49);
    dp->~S11969C49();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS11969C49(Test_S11969C49, "S11969C49", ABISELECT(160,88));

#else // __cplusplus

extern void _ZN9S11969C49C1Ev();
extern void _ZN9S11969C49D1Ev();
Name_Map name_map_S11969C49[] = {
  NSPAIR(_ZN9S11969C49C1Ev),
  NSPAIR(_ZN9S11969C49D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C4_nt;
extern VTBL_ENTRY _ZTI11S11969C4_nt[];
extern  VTBL_ENTRY _ZTV11S11969C4_nt[];
extern Class_Descriptor cd_S11969C37_nt;
extern VTBL_ENTRY _ZTI12S11969C37_nt[];
extern  VTBL_ENTRY _ZTV12S11969C37_nt[];
static Base_Class bases_S11969C49[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S11969C37_nt,    ABISELECT(40,20), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S11969C49[];
extern void _ZN9S11969C49D1Ev();
extern void _ZN9S11969C49D0Ev();
extern void _ZN11S11969C4_nt3v28Ev();
extern void _ZN11S11969C4_nt3v29Ev();
extern void _ZN11S11969C4_nt3v30Ev();
extern void _ZN11S11969C4_nt3v31Ev();
extern void _ZN11S11969C4_nt3v32Ev();
extern void _ZN11S11969C4_nt3v33Ev();
extern void _ZN9S11969C493v99Ev();
extern void _ZN9S11969C494v100Ev();
extern void _ZN9S11969C494v101Ev();
extern void _ZN9S11969C494v102Ev();
extern void _ZN9S11969C494v103Ev();
extern void _ZN9S11969C494v104Ev();
extern void _ZN9S11969C494v105Ev();
extern void _ZN9S11969C494v106Ev();
extern void _ZN9S11969C494v107Ev();
extern void _ZN9S11969C494v108Ev();
extern void ABISELECT(_ZThn40_N9S11969C49D1Ev,_ZThn20_N9S11969C49D1Ev)();
extern void ABISELECT(_ZThn40_N9S11969C49D0Ev,_ZThn20_N9S11969C49D0Ev)();
extern void _ZN12S11969C37_nt3v67Ev();
extern void _ZN12S11969C37_nt3v68Ev();
extern void _ZN12S11969C37_nt3v69Ev();
extern void _ZN12S11969C37_nt3v70Ev();
static  VTBL_ENTRY vtc_S11969C49[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S11969C49[0]),
  (VTBL_ENTRY)&_ZN9S11969C49D1Ev,
  (VTBL_ENTRY)&_ZN9S11969C49D0Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN9S11969C493v99Ev,
  (VTBL_ENTRY)&_ZN9S11969C494v100Ev,
  (VTBL_ENTRY)&_ZN9S11969C494v101Ev,
  (VTBL_ENTRY)&_ZN9S11969C494v102Ev,
  (VTBL_ENTRY)&_ZN9S11969C494v103Ev,
  (VTBL_ENTRY)&_ZN9S11969C494v104Ev,
  (VTBL_ENTRY)&_ZN9S11969C494v105Ev,
  (VTBL_ENTRY)&_ZN9S11969C494v106Ev,
  (VTBL_ENTRY)&_ZN9S11969C494v107Ev,
  (VTBL_ENTRY)&_ZN9S11969C494v108Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S11969C49[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S11969C49D1Ev,_ZThn20_N9S11969C49D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S11969C49D0Ev,_ZThn20_N9S11969C49D0Ev),
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v67Ev,
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v68Ev,
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v69Ev,
  (VTBL_ENTRY)&_ZN12S11969C37_nt3v70Ev,
};
extern VTBL_ENTRY _ZTI9S11969C49[];
extern  VTBL_ENTRY _ZTV9S11969C49[];
Class_Descriptor cd_S11969C49 = {  "S11969C49", // class name
  bases_S11969C49, 2,
  &(vtc_S11969C49[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,88), // object size
  NSPAIRA(_ZTI9S11969C49),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S11969C49),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  S11969C48  {
  ::S11969C49 s11969c48f0;
  ::S11969C38_nt s11969c48f1;
  void  mf11969c48(); // _ZN9S11969C4810mf11969c48Ev
};
//SIG(-1 S11969C48) C1{ m FC2{ BC3{ vd v11 v12 v13 v14 v15 v16 FC4{ m Fp[4]}} BC5{ vd v17 v18 v19 v20} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m Fp[2]} FC10{ m Fp}}} FC6} FC11{ BC12{ BC13{ vd v21} vd v22 Fp[2] FC14{ m FC15{ m Fp Fi[2] FC16{ m}}} FC17{ m Fp[2]}} vd FC18{ m Fp Fi FC19{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC17}}}


void  S11969C48 ::mf11969c48(){}

static void Test_S11969C48()
{
  {
    init_simple_test("S11969C48");
    static S11969C48 lv;
    check2(sizeof(lv), ABISELECT(264,148), "sizeof(S11969C48)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C48)");
    check_field_offset(lv, s11969c48f0, 0, "S11969C48.s11969c48f0");
    check_field_offset(lv, s11969c48f1, ABISELECT(160,88), "S11969C48.s11969c48f1");
  }
}
static Arrange_To_Call_Me vS11969C48(Test_S11969C48, "S11969C48", ABISELECT(264,148));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C53  : S11969C4_nt , S11969C6 {
  ::S11969C7_nt s11969c53f0;
  ::S11969C7_nt s11969c53f1;
  ::S11969C12_nt s11969c53f2;
  ::S11969C7_nt s11969c53f3;
  ::S11969C12_nt s11969c53f4;
  ::S11969C15_nt s11969c53f5;
  ::S11969C12_nt s11969c53f6;
  ::S11969C12_nt s11969c53f7;
  ::S11969C12_nt s11969c53f8;
  ::S11969C19_nt s11969c53f9;
  ::S11969C12_nt s11969c53f10;
  ::S11969C19_nt s11969c53f11;
  ::S11969C20_nt s11969c53f12;
  ::S11969C12_nt s11969c53f13;
  virtual void  v136(); // _ZN9S11969C534v136Ev
  virtual void  v137(); // _ZN9S11969C534v137Ev
  virtual void  v138(); // _ZN9S11969C534v138Ev
  virtual void  v139(); // _ZN9S11969C534v139Ev
  virtual void  v140(); // _ZN9S11969C534v140Ev
  virtual void  v141(); // _ZN9S11969C534v141Ev
  virtual void  v142(); // _ZN9S11969C534v142Ev
  virtual void  v143(); // _ZN9S11969C534v143Ev
  virtual void  v144(); // _ZN9S11969C534v144Ev
  virtual void  v145(); // _ZN9S11969C534v145Ev
  virtual void  v146(); // _ZN9S11969C534v146Ev
  virtual void  v147(); // _ZN9S11969C534v147Ev
  virtual void  v148(); // _ZN9S11969C534v148Ev
  virtual void  v149(); // _ZN9S11969C534v149Ev
  virtual void  v150(); // _ZN9S11969C534v150Ev
  virtual void  v151(); // _ZN9S11969C534v151Ev
  virtual void  v152(); // _ZN9S11969C534v152Ev
  virtual void  v153(); // _ZN9S11969C534v153Ev
  virtual void  v154(); // _ZN9S11969C534v154Ev
  virtual void  v155(); // _ZN9S11969C534v155Ev
  virtual void  v156(); // _ZN9S11969C534v156Ev
  virtual void  v157(); // _ZN9S11969C534v157Ev
  virtual void  v158(); // _ZN9S11969C534v158Ev
  virtual void  v159(); // _ZN9S11969C534v159Ev
  virtual void  v160(); // _ZN9S11969C534v160Ev
  virtual void  v161(); // _ZN9S11969C534v161Ev
  virtual void  v162(); // _ZN9S11969C534v162Ev
  ~S11969C53(); // tgen
  S11969C53(); // tgen
};
//SIG(-1 S11969C53) C1{ BC2{ vd v28 v29 v30 v31 v32 v33 FC3{ m Fp[4]}} BC4{ vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} 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 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FC9{ m FL[2]}} FC8 FC8 FC8}} FC5 FC10{ BC6 FC8} FC5 FC10 FC11{ BC6 FC12{ m FC13{ m FL}}} FC10 FC10 FC10 FC14{ BC6 Fi} FC10 FC14 FC15{ BC6 FC16{ m FC17{ m Fp[2]} FC18{ m Fp}}} FC10}


void  S11969C53 ::v136(){vfunc_called(this, "_ZN9S11969C534v136Ev");}
void  S11969C53 ::v137(){vfunc_called(this, "_ZN9S11969C534v137Ev");}
void  S11969C53 ::v138(){vfunc_called(this, "_ZN9S11969C534v138Ev");}
void  S11969C53 ::v139(){vfunc_called(this, "_ZN9S11969C534v139Ev");}
void  S11969C53 ::v140(){vfunc_called(this, "_ZN9S11969C534v140Ev");}
void  S11969C53 ::v141(){vfunc_called(this, "_ZN9S11969C534v141Ev");}
void  S11969C53 ::v142(){vfunc_called(this, "_ZN9S11969C534v142Ev");}
void  S11969C53 ::v143(){vfunc_called(this, "_ZN9S11969C534v143Ev");}
void  S11969C53 ::v144(){vfunc_called(this, "_ZN9S11969C534v144Ev");}
void  S11969C53 ::v145(){vfunc_called(this, "_ZN9S11969C534v145Ev");}
void  S11969C53 ::v146(){vfunc_called(this, "_ZN9S11969C534v146Ev");}
void  S11969C53 ::v147(){vfunc_called(this, "_ZN9S11969C534v147Ev");}
void  S11969C53 ::v148(){vfunc_called(this, "_ZN9S11969C534v148Ev");}
void  S11969C53 ::v149(){vfunc_called(this, "_ZN9S11969C534v149Ev");}
void  S11969C53 ::v150(){vfunc_called(this, "_ZN9S11969C534v150Ev");}
void  S11969C53 ::v151(){vfunc_called(this, "_ZN9S11969C534v151Ev");}
void  S11969C53 ::v152(){vfunc_called(this, "_ZN9S11969C534v152Ev");}
void  S11969C53 ::v153(){vfunc_called(this, "_ZN9S11969C534v153Ev");}
void  S11969C53 ::v154(){vfunc_called(this, "_ZN9S11969C534v154Ev");}
void  S11969C53 ::v155(){vfunc_called(this, "_ZN9S11969C534v155Ev");}
void  S11969C53 ::v156(){vfunc_called(this, "_ZN9S11969C534v156Ev");}
void  S11969C53 ::v157(){vfunc_called(this, "_ZN9S11969C534v157Ev");}
void  S11969C53 ::v158(){vfunc_called(this, "_ZN9S11969C534v158Ev");}
void  S11969C53 ::v159(){vfunc_called(this, "_ZN9S11969C534v159Ev");}
void  S11969C53 ::v160(){vfunc_called(this, "_ZN9S11969C534v160Ev");}
void  S11969C53 ::v161(){vfunc_called(this, "_ZN9S11969C534v161Ev");}
void  S11969C53 ::v162(){vfunc_called(this, "_ZN9S11969C534v162Ev");}
S11969C53 ::~S11969C53(){ note_dtor("S11969C53", this);} // tgen
S11969C53 ::S11969C53(){ note_ctor("S11969C53", this);} // tgen

static void Test_S11969C53()
{
  extern Class_Descriptor cd_S11969C53;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(107,160)];
    init_test(&cd_S11969C53, buf);
    S11969C53 *dp, &lv = *(dp=new (buf) S11969C53());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,636), "sizeof(S11969C53)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C53)");
    check_base_class_offset(lv, (S11969C4_nt*), 0, "S11969C53");
    check_base_class_offset(lv, (S11969C6*), ABISELECT(40,20), "S11969C53");
    check_field_offset(lv, s11969c53f0, ABISELECT(48,24), "S11969C53.s11969c53f0");
    check_field_offset(lv, s11969c53f1, ABISELECT(144,108), "S11969C53.s11969c53f1");
    check_field_offset(lv, s11969c53f2, ABISELECT(240,192), "S11969C53.s11969c53f2");
    check_field_offset(lv, s11969c53f3, ABISELECT(288,228), "S11969C53.s11969c53f3");
    check_field_offset(lv, s11969c53f4, ABISELECT(384,312), "S11969C53.s11969c53f4");
    check_field_offset(lv, s11969c53f5, ABISELECT(432,348), "S11969C53.s11969c53f5");
    check_field_offset(lv, s11969c53f6, ABISELECT(472,376), "S11969C53.s11969c53f6");
    check_field_offset(lv, s11969c53f7, ABISELECT(520,412), "S11969C53.s11969c53f7");
    check_field_offset(lv, s11969c53f8, ABISELECT(568,448), "S11969C53.s11969c53f8");
    check_field_offset(lv, s11969c53f9, ABISELECT(616,484), "S11969C53.s11969c53f9");
    check_field_offset(lv, s11969c53f10, ABISELECT(656,508), "S11969C53.s11969c53f10");
    check_field_offset(lv, s11969c53f11, ABISELECT(704,544), "S11969C53.s11969c53f11");
    check_field_offset(lv, s11969c53f12, ABISELECT(744,568), "S11969C53.s11969c53f12");
    check_field_offset(lv, s11969c53f13, ABISELECT(800,600), "S11969C53.s11969c53f13");
    test_class_info(&lv, &cd_S11969C53);
    dp->~S11969C53();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS11969C53(Test_S11969C53, "S11969C53", ABISELECT(848,636));

#else // __cplusplus

extern void _ZN9S11969C53C1Ev();
extern void _ZN9S11969C53D1Ev();
Name_Map name_map_S11969C53[] = {
  NSPAIR(_ZN9S11969C53C1Ev),
  NSPAIR(_ZN9S11969C53D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C4_nt;
extern VTBL_ENTRY _ZTI11S11969C4_nt[];
extern  VTBL_ENTRY _ZTV11S11969C4_nt[];
extern Class_Descriptor cd_S11969C6;
extern VTBL_ENTRY _ZTI8S11969C6[];
extern  VTBL_ENTRY _ZTV8S11969C6[];
static Base_Class bases_S11969C53[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S11969C6,    ABISELECT(40,20), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S11969C53[];
extern void _ZN9S11969C53D1Ev();
extern void _ZN9S11969C53D0Ev();
extern void _ZN11S11969C4_nt3v28Ev();
extern void _ZN11S11969C4_nt3v29Ev();
extern void _ZN11S11969C4_nt3v30Ev();
extern void _ZN11S11969C4_nt3v31Ev();
extern void _ZN11S11969C4_nt3v32Ev();
extern void _ZN11S11969C4_nt3v33Ev();
extern void _ZN9S11969C534v136Ev();
extern void _ZN9S11969C534v137Ev();
extern void _ZN9S11969C534v138Ev();
extern void _ZN9S11969C534v139Ev();
extern void _ZN9S11969C534v140Ev();
extern void _ZN9S11969C534v141Ev();
extern void _ZN9S11969C534v142Ev();
extern void _ZN9S11969C534v143Ev();
extern void _ZN9S11969C534v144Ev();
extern void _ZN9S11969C534v145Ev();
extern void _ZN9S11969C534v146Ev();
extern void _ZN9S11969C534v147Ev();
extern void _ZN9S11969C534v148Ev();
extern void _ZN9S11969C534v149Ev();
extern void _ZN9S11969C534v150Ev();
extern void _ZN9S11969C534v151Ev();
extern void _ZN9S11969C534v152Ev();
extern void _ZN9S11969C534v153Ev();
extern void _ZN9S11969C534v154Ev();
extern void _ZN9S11969C534v155Ev();
extern void _ZN9S11969C534v156Ev();
extern void _ZN9S11969C534v157Ev();
extern void _ZN9S11969C534v158Ev();
extern void _ZN9S11969C534v159Ev();
extern void _ZN9S11969C534v160Ev();
extern void _ZN9S11969C534v161Ev();
extern void _ZN9S11969C534v162Ev();
extern void ABISELECT(_ZThn40_N9S11969C53D1Ev,_ZThn20_N9S11969C53D1Ev)();
extern void ABISELECT(_ZThn40_N9S11969C53D0Ev,_ZThn20_N9S11969C53D0Ev)();
extern void _ZN8S11969C63v34Ev();
extern void _ZN8S11969C63v35Ev();
extern void _ZN8S11969C63v36Ev();
extern void _ZN8S11969C63v37Ev();
extern void _ZN8S11969C63v38Ev();
extern void _ZN8S11969C63v39Ev();
extern void _ZN8S11969C63v40Ev();
extern void _ZN8S11969C63v41Ev();
extern void _ZN8S11969C63v42Ev();
extern void _ZN8S11969C63v43Ev();
extern void _ZN8S11969C63v44Ev();
extern void _ZN8S11969C63v45Ev();
extern void _ZN8S11969C63v46Ev();
extern void _ZN8S11969C63v47Ev();
extern void _ZN8S11969C63v48Ev();
extern void _ZN8S11969C63v49Ev();
extern void _ZN8S11969C63v50Ev();
extern void _ZN8S11969C63v51Ev();
extern void _ZN8S11969C63v52Ev();
extern void _ZN8S11969C63v53Ev();
extern void _ZN8S11969C63v54Ev();
static  VTBL_ENTRY vtc_S11969C53[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S11969C53[0]),
  (VTBL_ENTRY)&_ZN9S11969C53D1Ev,
  (VTBL_ENTRY)&_ZN9S11969C53D0Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN11S11969C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v136Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v137Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v138Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v139Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v140Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v141Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v142Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v143Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v144Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v145Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v146Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v147Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v148Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v149Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v150Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v151Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v152Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v153Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v154Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v155Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v156Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v157Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v158Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v159Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v160Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v161Ev,
  (VTBL_ENTRY)&_ZN9S11969C534v162Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S11969C53[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S11969C53D1Ev,_ZThn20_N9S11969C53D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S11969C53D0Ev,_ZThn20_N9S11969C53D0Ev),
  (VTBL_ENTRY)&_ZN8S11969C63v34Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v35Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v36Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v37Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v38Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v39Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v40Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v41Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v42Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v43Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v44Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v45Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v46Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v47Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v48Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v49Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v50Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v51Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v52Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v53Ev,
  (VTBL_ENTRY)&_ZN8S11969C63v54Ev,
};
extern VTBL_ENTRY _ZTI9S11969C53[];
extern  VTBL_ENTRY _ZTV9S11969C53[];
Class_Descriptor cd_S11969C53 = {  "S11969C53", // class name
  bases_S11969C53, 2,
  &(vtc_S11969C53[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(848,636), // object size
  NSPAIRA(_ZTI9S11969C53),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S11969C53),62, //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  S11969C52  {
  ::S11969C53 s11969c52f0;
  ::S11969C24_nt s11969c52f1;
  void  mf11969c52(); // _ZN9S11969C5210mf11969c52Ev
};
//SIG(-1 S11969C52) C1{ m FC2{ BC3{ vd v28 v29 v30 v31 v32 v33 FC4{ m Fp[4]}} BC5{ vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} 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 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FC10{ m FL[2]}} FC9 FC9 FC9}} FC6 FC11{ BC7 FC9} FC6 FC11 FC12{ BC7 FC13{ m FC14{ m FL}}} FC11 FC11 FC11 FC15{ BC7 Fi} FC11 FC15 FC16{ BC7 FC17{ m FC18{ m Fp[2]} FC19{ m Fp}}} FC11} FC20{ BC21{ BC22{ vd v55} vd v56 Fp[2] FC23{ m FC24{ m Fp Fi[2] FC25{ m}}} FC18} vd FC26{ m FC27{ Fs[2] Fc[2] Fs}[12] Fi FC28{ Fs[2]}[4] Fi FC29{ m Fp[2]}}}}


void  S11969C52 ::mf11969c52(){}

static void Test_S11969C52()
{
  {
    init_simple_test("S11969C52");
    S11969C52 lv;
    check2(sizeof(lv), ABISELECT(1048,800), "sizeof(S11969C52)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C52)");
    check_field_offset(lv, s11969c52f0, 0, "S11969C52.s11969c52f0");
    check_field_offset(lv, s11969c52f1, ABISELECT(848,636), "S11969C52.s11969c52f1");
  }
}
static Arrange_To_Call_Me vS11969C52(Test_S11969C52, "S11969C52", ABISELECT(1048,800));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11969C1  {
  ::S11969C2 s11969c1f0;
  ::S11969C35 s11969c1f1;
  ::S11969C46 s11969c1f2;
  ::S11969C48 s11969c1f3;
  ::S11969C46 s11969c1f4;
  ::S11969C52 s11969c1f5;
  ::S11969C35 s11969c1f6;
};
//SIG(1 S11969C1) C1{ FC2{ m FC3{ BC4{ vd v28 v29 v30 v31 v32 v33 FC5{ m Fp[4]}} BC6{ vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54} 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 FC7{ BC8{ m Fp Fi Fp Fi[2]} FC9{ m FC10{ m FC11{ m FL[2]}} FC10 FC10 FC10}} FC7 FC12{ BC8 FC10} FC7 FC13{ BC8 FC14{ m FC15{ m FL}}} FC12 FC13 FC12 FC12 FC12 FC12 FC12 FC13 FC16{ BC8 Fi} FC12 FC16 FC17{ BC8 FC18{ m FC19{ m Fp[2]} FC20{ m Fp}}} FC17 FC12} FC21{ BC22{ BC23{ vd v55} vd v56 Fp[2] FC24{ m FC25{ m Fp Fi[2] FC26{ m}}} FC19} vd FC27{ m FC28{ Fs[2] Fc[2] Fs}[12] Fi FC29{ Fs[2]}[4] Fi FC30{ m Fp[2]}}}} FC31{ m FC32{ BC4 BC33{ vd v67 v68 v69 v70} v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 FC17} FC34{ BC35{ BC23 vd v71 Fp[2] FC24 FC30} vd FC36{ m Fp Fi FC37{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC30}}} FC38{ m FC39{ BC4 BC6 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 FC7 FC7 FC12 FC7 FC13 FC12 FC13 FC12 FC7 FC12 FC12 FC12 FC13 FC12 FC16 FC17 FC17 FC12} FC21} FC40{ m FC41{ BC4 BC33 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 FC17 FC17} FC34} FC38 FC42{ m FC43{ BC4 BC6 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 FC7 FC7 FC12 FC7 FC12 FC13 FC12 FC12 FC12 FC16 FC12 FC16 FC17 FC12} FC21} FC31}



static void Test_S11969C1()
{
  {
    init_simple_test("S11969C1");
    static S11969C1 lv;
    check2(sizeof(lv), ABISELECT(5584,4108), "sizeof(S11969C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11969C1)");
    check_field_offset(lv, s11969c1f0, 0, "S11969C1.s11969c1f0");
    check_field_offset(lv, s11969c1f1, ABISELECT(1280,960), "S11969C1.s11969c1f1");
    check_field_offset(lv, s11969c1f2, ABISELECT(1488,1076), "S11969C1.s11969c1f2");
    check_field_offset(lv, s11969c1f3, ABISELECT(2776,2060), "S11969C1.s11969c1f3");
    check_field_offset(lv, s11969c1f4, ABISELECT(3040,2208), "S11969C1.s11969c1f4");
    check_field_offset(lv, s11969c1f5, ABISELECT(4328,3192), "S11969C1.s11969c1f5");
    check_field_offset(lv, s11969c1f6, ABISELECT(5376,3992), "S11969C1.s11969c1f6");
  }
}
static Arrange_To_Call_Me vS11969C1(Test_S11969C1, "S11969C1", ABISELECT(5584,4108));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C8_nt  {
  void  mf2405c8(); // _ZN10S2405C8_nt8mf2405c8Ev
};
//SIG(-1 S2405C8_nt) C1{ m}


void  S2405C8_nt ::mf2405c8(){}

//skip512 S2405C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C6_nt  {
  void *s2405c6f0;
  int s2405c6f1;
  ::S11969C29_nt s2405c6f2;
  ::S2405C8_nt s2405c6f3;
  void  mf2405c6(); // _ZN10S2405C6_nt8mf2405c6Ev
};
//SIG(-1 S2405C6_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S2405C6_nt ::mf2405c6(){}

//skip512 S2405C6_nt

#else // __cplusplus

Class_Descriptor cd_S2405C6_nt = {  "S2405C6_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  S2405C5_nt  : S2405C6_nt {
};
//SIG(-1 S2405C5_nt) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



//skip512 S2405C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S2405C6_nt;
static Base_Class bases_S2405C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2405C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S2405C4_nt  {
  void *s2405c4f0;
  int s2405c4f1;
  ::S2405C5_nt s2405c4f2;
  ::S2405C5_nt s2405c4f3;
  int s2405c4f4;
  virtual  ~S2405C4_nt(); // _ZN10S2405C4_ntD1Ev
  virtual void  v6(); // _ZN10S2405C4_nt2v6Ev
  virtual void  v7(); // _ZN10S2405C4_nt2v7Ev
  virtual void  v8(); // _ZN10S2405C4_nt2v8Ev
  virtual void  v9(); // _ZN10S2405C4_nt2v9Ev
  virtual void  v10(); // _ZN10S2405C4_nt3v10Ev
  virtual void  v11(); // _ZN10S2405C4_nt3v11Ev
  virtual void  v12(); // _ZN10S2405C4_nt3v12Ev
  virtual void  v13(); // _ZN10S2405C4_nt3v13Ev
  virtual void  v14(); // _ZN10S2405C4_nt3v14Ev
  virtual void  v15(); // _ZN10S2405C4_nt3v15Ev
  virtual void  v16(); // _ZN10S2405C4_nt3v16Ev
  virtual void  v17(); // _ZN10S2405C4_nt3v17Ev
  virtual void  v18(); // _ZN10S2405C4_nt3v18Ev
  virtual void  v19(); // _ZN10S2405C4_nt3v19Ev
  virtual void  v20(); // _ZN10S2405C4_nt3v20Ev
  virtual void  v21(); // _ZN10S2405C4_nt3v21Ev
  virtual void  v22(); // _ZN10S2405C4_nt3v22Ev
  virtual void  v23(); // _ZN10S2405C4_nt3v23Ev
  virtual void  v24(); // _ZN10S2405C4_nt3v24Ev
  virtual void  v25(); // _ZN10S2405C4_nt3v25Ev
  virtual void  v26(); // _ZN10S2405C4_nt3v26Ev
  virtual void  v27(); // _ZN10S2405C4_nt3v27Ev
  virtual void  v28(); // _ZN10S2405C4_nt3v28Ev
  S2405C4_nt(); // tgen
};
//SIG(-1 S2405C4_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp Fi FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}} FC2 Fi}


 S2405C4_nt ::~S2405C4_nt(){ note_dtor("S2405C4_nt", this);}
void  S2405C4_nt ::v6(){vfunc_called(this, "_ZN10S2405C4_nt2v6Ev");}
void  S2405C4_nt ::v7(){vfunc_called(this, "_ZN10S2405C4_nt2v7Ev");}
void  S2405C4_nt ::v8(){vfunc_called(this, "_ZN10S2405C4_nt2v8Ev");}
void  S2405C4_nt ::v9(){vfunc_called(this, "_ZN10S2405C4_nt2v9Ev");}
void  S2405C4_nt ::v10(){vfunc_called(this, "_ZN10S2405C4_nt3v10Ev");}
void  S2405C4_nt ::v11(){vfunc_called(this, "_ZN10S2405C4_nt3v11Ev");}
void  S2405C4_nt ::v12(){vfunc_called(this, "_ZN10S2405C4_nt3v12Ev");}
void  S2405C4_nt ::v13(){vfunc_called(this, "_ZN10S2405C4_nt3v13Ev");}
void  S2405C4_nt ::v14(){vfunc_called(this, "_ZN10S2405C4_nt3v14Ev");}
void  S2405C4_nt ::v15(){vfunc_called(this, "_ZN10S2405C4_nt3v15Ev");}
void  S2405C4_nt ::v16(){vfunc_called(this, "_ZN10S2405C4_nt3v16Ev");}
void  S2405C4_nt ::v17(){vfunc_called(this, "_ZN10S2405C4_nt3v17Ev");}
void  S2405C4_nt ::v18(){vfunc_called(this, "_ZN10S2405C4_nt3v18Ev");}
void  S2405C4_nt ::v19(){vfunc_called(this, "_ZN10S2405C4_nt3v19Ev");}
void  S2405C4_nt ::v20(){vfunc_called(this, "_ZN10S2405C4_nt3v20Ev");}
void  S2405C4_nt ::v21(){vfunc_called(this, "_ZN10S2405C4_nt3v21Ev");}
void  S2405C4_nt ::v22(){vfunc_called(this, "_ZN10S2405C4_nt3v22Ev");}
void  S2405C4_nt ::v23(){vfunc_called(this, "_ZN10S2405C4_nt3v23Ev");}
void  S2405C4_nt ::v24(){vfunc_called(this, "_ZN10S2405C4_nt3v24Ev");}
void  S2405C4_nt ::v25(){vfunc_called(this, "_ZN10S2405C4_nt3v25Ev");}
void  S2405C4_nt ::v26(){vfunc_called(this, "_ZN10S2405C4_nt3v26Ev");}
void  S2405C4_nt ::v27(){vfunc_called(this, "_ZN10S2405C4_nt3v27Ev");}
void  S2405C4_nt ::v28(){vfunc_called(this, "_ZN10S2405C4_nt3v28Ev");}
S2405C4_nt ::S2405C4_nt(){ note_ctor("S2405C4_nt", this);} // tgen

//skip512 S2405C4_nt

#else // __cplusplus

extern void _ZN10S2405C4_ntC1Ev();
extern void _ZN10S2405C4_ntD1Ev();
Name_Map name_map_S2405C4_nt[] = {
  NSPAIR(_ZN10S2405C4_ntC1Ev),
  NSPAIR(_ZN10S2405C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2405C4_nt[];
extern void _ZN10S2405C4_ntD1Ev();
extern void _ZN10S2405C4_ntD0Ev();
extern void _ZN10S2405C4_nt2v6Ev();
extern void _ZN10S2405C4_nt2v7Ev();
extern void _ZN10S2405C4_nt2v8Ev();
extern void _ZN10S2405C4_nt2v9Ev();
extern void _ZN10S2405C4_nt3v10Ev();
extern void _ZN10S2405C4_nt3v11Ev();
extern void _ZN10S2405C4_nt3v12Ev();
extern void _ZN10S2405C4_nt3v13Ev();
extern void _ZN10S2405C4_nt3v14Ev();
extern void _ZN10S2405C4_nt3v15Ev();
extern void _ZN10S2405C4_nt3v16Ev();
extern void _ZN10S2405C4_nt3v17Ev();
extern void _ZN10S2405C4_nt3v18Ev();
extern void _ZN10S2405C4_nt3v19Ev();
extern void _ZN10S2405C4_nt3v20Ev();
extern void _ZN10S2405C4_nt3v21Ev();
extern void _ZN10S2405C4_nt3v22Ev();
extern void _ZN10S2405C4_nt3v23Ev();
extern void _ZN10S2405C4_nt3v24Ev();
extern void _ZN10S2405C4_nt3v25Ev();
extern void _ZN10S2405C4_nt3v26Ev();
extern void _ZN10S2405C4_nt3v27Ev();
extern void _ZN10S2405C4_nt3v28Ev();
static  VTBL_ENTRY vtc_S2405C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2405C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2405C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v28Ev,
};
extern VTBL_ENTRY _ZTI10S2405C4_nt[];
VTBL_ENTRY *P__ZTI10S2405C4_nt = _ZTI10S2405C4_nt; 
extern  VTBL_ENTRY _ZTV10S2405C4_nt[];
Class_Descriptor cd_S2405C4_nt = {  "S2405C4_nt", // class name
  0,0,//no base classes
  &(vtc_S2405C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI10S2405C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2405C4_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  S2405C15_nt  {
  ::S11969C11_nt s2405c15f0;
  void  mf2405c15(); // _ZN11S2405C15_nt9mf2405c15Ev
};
//SIG(-1 S2405C15_nt) C1{ m FC2{ m FL[2]}}


void  S2405C15_nt ::mf2405c15(){}

//skip512 S2405C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C17_nt  {
  ::S11969C10_nt s2405c17f0;
  void  mf2405c17(); // _ZN11S2405C17_nt9mf2405c17Ev
};
//SIG(-1 S2405C17_nt) C1{ m FC2{ m FC3{ m FL[2]}}}


void  S2405C17_nt ::mf2405c17(){}

//skip512 S2405C17_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C20_nt  {
  void *s2405c20f0;
  int s2405c20f1;
  ::S2405C8_nt s2405c20f2;
  void  mf2405c20(); // _ZN11S2405C20_nt9mf2405c20Ev
};
//SIG(-1 S2405C20_nt) C1{ m Fp Fi FC2{ m}}


void  S2405C20_nt ::mf2405c20(){}

//skip512 S2405C20_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C19_nt  {
  ::S2405C20_nt s2405c19f0;
  int s2405c19f1;
  void  mf2405c19(); // _ZN11S2405C19_nt9mf2405c19Ev
};
//SIG(-1 S2405C19_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S2405C19_nt ::mf2405c19(){}

//skip512 S2405C19_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C23  {
  void  mf2405c23(); // _ZN8S2405C239mf2405c23Ev
};
//SIG(-1 S2405C23) C1{ m}


void  S2405C23 ::mf2405c23(){}

static void Test_S2405C23()
{
  {
    init_simple_test("S2405C23");
    S2405C23 lv;
    check2(sizeof(lv), 1, "sizeof(S2405C23)");
    check2(__alignof__(lv), 1, "__alignof__(S2405C23)");
  }
}
static Arrange_To_Call_Me vS2405C23(Test_S2405C23, "S2405C23", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C22  {
  void *s2405c22f0;
  int s2405c22f1;
  ::S2405C23 s2405c22f2;
  ::S2405C23 s2405c22f3;
  void  mf2405c22(); // _ZN8S2405C229mf2405c22Ev
};
//SIG(-1 S2405C22) C1{ m Fp Fi FC2{ m} FC2}


void  S2405C22 ::mf2405c22(){}

static void Test_S2405C22()
{
  {
    init_simple_test("S2405C22");
    S2405C22 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2405C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2405C22)");
    check_field_offset(lv, s2405c22f0, 0, "S2405C22.s2405c22f0");
    check_field_offset(lv, s2405c22f1, ABISELECT(8,4), "S2405C22.s2405c22f1");
    check_field_offset(lv, s2405c22f2, ABISELECT(12,8), "S2405C22.s2405c22f2");
    check_field_offset(lv, s2405c22f3, ABISELECT(13,9), "S2405C22.s2405c22f3");
  }
}
static Arrange_To_Call_Me vS2405C22(Test_S2405C22, "S2405C22", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C27  {
  void  mf2405c27(); // _ZN8S2405C279mf2405c27Ev
};
//SIG(-1 S2405C27) C1{ m}


void  S2405C27 ::mf2405c27(){}

static void Test_S2405C27()
{
  {
    init_simple_test("S2405C27");
    S2405C27 lv;
    check2(sizeof(lv), 1, "sizeof(S2405C27)");
    check2(__alignof__(lv), 1, "__alignof__(S2405C27)");
  }
}
static Arrange_To_Call_Me vS2405C27(Test_S2405C27, "S2405C27", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C26  {
  void *s2405c26f0;
  int s2405c26f1;
  ::S2405C27 s2405c26f2;
  ::S2405C27 s2405c26f3;
  void  mf2405c26(); // _ZN8S2405C269mf2405c26Ev
};
//SIG(-1 S2405C26) C1{ m Fp Fi FC2{ m} FC2}


void  S2405C26 ::mf2405c26(){}

static void Test_S2405C26()
{
  {
    init_simple_test("S2405C26");
    S2405C26 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2405C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2405C26)");
    check_field_offset(lv, s2405c26f0, 0, "S2405C26.s2405c26f0");
    check_field_offset(lv, s2405c26f1, ABISELECT(8,4), "S2405C26.s2405c26f1");
    check_field_offset(lv, s2405c26f2, ABISELECT(12,8), "S2405C26.s2405c26f2");
    check_field_offset(lv, s2405c26f3, ABISELECT(13,9), "S2405C26.s2405c26f3");
  }
}
static Arrange_To_Call_Me vS2405C26(Test_S2405C26, "S2405C26", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S2405C25()
{
  extern Class_Descriptor cd_S2405C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2405C25, buf);
    S2405C25 &lv = *(new (buf) S2405C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2405C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2405C25)");
    check_base_class_offset(lv, (S2405C26*), 0, "S2405C25");
    test_class_info(&lv, &cd_S2405C25);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2405C25(Test_S2405C25, "S2405C25", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S2405C26;
static Base_Class bases_S2405C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2405C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2405C25 = {  "S2405C25", // class name
  bases_S2405C25, 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  S2405C36  {
  void  mf2405c36(); // _ZN8S2405C369mf2405c36Ev
};
//SIG(-1 S2405C36) C1{ m}


void  S2405C36 ::mf2405c36(){}

static void Test_S2405C36()
{
  {
    init_simple_test("S2405C36");
    S2405C36 lv;
    check2(sizeof(lv), 1, "sizeof(S2405C36)");
    check2(__alignof__(lv), 1, "__alignof__(S2405C36)");
  }
}
static Arrange_To_Call_Me vS2405C36(Test_S2405C36, "S2405C36", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C35_nt  {
  void *s2405c35f0;
  int s2405c35f1[2];
  ::S2405C36 s2405c35f2;
  void  mf2405c35(); // _ZN11S2405C35_nt9mf2405c35Ev
};
//SIG(-1 S2405C35_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S2405C35_nt ::mf2405c35(){}

//skip512 S2405C35_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C3_nt  : S2405C4_nt {
  ::S11969C10_nt s2405c3f0;
  ::S11969C10_nt s2405c3f1;
  ::S11969C10_nt s2405c3f2;
  ::S2405C15_nt s2405c3f3;
  ::S2405C17_nt s2405c3f4;
  ::S11969C9_nt s2405c3f5;
  ::S11969C9_nt s2405c3f6;
  ::S11969C10_nt s2405c3f7;
  ::S11969C10_nt s2405c3f8;
  ::S11969C10_nt s2405c3f9;
  void *s2405c3f10;
  ::S2405C17_nt s2405c3f11;
  ::S2405C19_nt s2405c3f12;
  int s2405c3f13;
  void *s2405c3f14[7];
  ::S2405C22 s2405c3f15;
  int s2405c3f16:8;
  int s2405c3f17:8;
  int s2405c3f18:16;
  int s2405c3f19:16;
  int s2405c3f20:8;
  int s2405c3f21:8;
  int s2405c3f22:8;
  int s2405c3f23:32;
  int s2405c3f24:8;
  int s2405c3f25:4;
  int s2405c3f26:4;
  int s2405c3f27:4;
  int s2405c3f28:4;
  int s2405c3f29:4;
  int s2405c3f30:4;
  int s2405c3f31:4;
  int s2405c3f32:4;
  int s2405c3f33:4;
  int s2405c3f34:4;
  unsigned char s2405c3f35:1;
  unsigned char s2405c3f36:1;
  unsigned char s2405c3f37:1;
  unsigned char s2405c3f38:1;
  unsigned char s2405c3f39:1;
  unsigned char s2405c3f40:1;
  unsigned char s2405c3f41:1;
  unsigned char s2405c3f42:1;
  unsigned char s2405c3f43:1;
  unsigned char s2405c3f44:1;
  unsigned char s2405c3f45:1;
  unsigned char s2405c3f46:1;
  unsigned char s2405c3f47:1;
  unsigned char s2405c3f48:1;
  unsigned char s2405c3f49:1;
  unsigned char s2405c3f50:1;
  unsigned char s2405c3f51:1;
  unsigned char s2405c3f52:1;
  unsigned char s2405c3f53:1;
  unsigned char s2405c3f54:1;
  unsigned char s2405c3f55:1;
  unsigned char s2405c3f56:1;
  unsigned char s2405c3f57:1;
  unsigned char s2405c3f58:1;
  unsigned char s2405c3f59:1;
  unsigned char s2405c3f60:1;
  unsigned char s2405c3f61:1;
  unsigned char s2405c3f62:1;
  unsigned char s2405c3f63:1;
  unsigned char s2405c3f64:1;
  unsigned char s2405c3f65:1;
  unsigned char s2405c3f66:1;
  unsigned char s2405c3f67:1;
  unsigned char s2405c3f68:1;
  unsigned char s2405c3f69:1;
  unsigned char s2405c3f70:1;
  unsigned char s2405c3f71:1;
  unsigned char s2405c3f72:1;
  unsigned char s2405c3f73:1;
  unsigned char s2405c3f74:1;
  unsigned char s2405c3f75:1;
  int s2405c3f76[7];
  void *s2405c3f77[6];
  int s2405c3f78:8;
  int s2405c3f79:8;
  int s2405c3f80:8;
  int s2405c3f81:8;
  int s2405c3f82:8;
  int s2405c3f83:8;
  ::S2405C25 s2405c3f84;
  void *s2405c3f85[4];
  int s2405c3f86:8;
  int s2405c3f87:8;
  int s2405c3f88:8;
  int s2405c3f89:8;
  int s2405c3f90:8;
  int s2405c3f91:16;
  int s2405c3f92:16;
  int s2405c3f93:16;
  int s2405c3f94:4;
  int s2405c3f95:4;
  int s2405c3f96:4;
  int s2405c3f97:4;
  int s2405c3f98:4;
  int s2405c3f99:4;
  int s2405c3f100:4;
  int s2405c3f101:4;
  int s2405c3f102:4;
  int s2405c3f103:4;
  int s2405c3f104:4;
  int s2405c3f105:4;
  int s2405c3f106:8;
  int s2405c3f107:8;
  int s2405c3f108:8;
  void *s2405c3f109[7];
  ::S11969C28_nt s2405c3f110;
  void *s2405c3f111[2];
  int s2405c3f112:16;
  int s2405c3f113:16;
  ::S2405C25 s2405c3f114;
  ::S2405C35_nt s2405c3f115;
  ::S2405C35_nt s2405c3f116;
  void *s2405c3f117[2];
  int s2405c3f118:24;
  int s2405c3f119:8;
  void *s2405c3f120;
  virtual  ~S2405C3_nt(); // _ZN10S2405C3_ntD1Ev
  virtual void  v29(); // _ZN10S2405C3_nt3v29Ev
  virtual void  v30(); // _ZN10S2405C3_nt3v30Ev
  virtual void  v31(); // _ZN10S2405C3_nt3v31Ev
  virtual void  v32(); // _ZN10S2405C3_nt3v32Ev
  virtual void  v33(); // _ZN10S2405C3_nt3v33Ev
  virtual void  v34(); // _ZN10S2405C3_nt3v34Ev
  virtual void  v35(); // _ZN10S2405C3_nt3v35Ev
  virtual void  v36(); // _ZN10S2405C3_nt3v36Ev
  virtual void  v37(); // _ZN10S2405C3_nt3v37Ev
  virtual void  v38(); // _ZN10S2405C3_nt3v38Ev
  virtual void  v39(); // _ZN10S2405C3_nt3v39Ev
  virtual void  v40(); // _ZN10S2405C3_nt3v40Ev
  virtual void  v41(); // _ZN10S2405C3_nt3v41Ev
  virtual void  v42(); // _ZN10S2405C3_nt3v42Ev
  virtual void  v43(); // _ZN10S2405C3_nt3v43Ev
  virtual void  v44(); // _ZN10S2405C3_nt3v44Ev
  virtual void  v45(); // _ZN10S2405C3_nt3v45Ev
  virtual void  v46(); // _ZN10S2405C3_nt3v46Ev
  virtual void  v47(); // _ZN10S2405C3_nt3v47Ev
  virtual void  v48(); // _ZN10S2405C3_nt3v48Ev
  virtual void  v49(); // _ZN10S2405C3_nt3v49Ev
  virtual void  v50(); // _ZN10S2405C3_nt3v50Ev
  virtual void  v51(); // _ZN10S2405C3_nt3v51Ev
  virtual void  v52(); // _ZN10S2405C3_nt3v52Ev
  virtual void  v53(); // _ZN10S2405C3_nt3v53Ev
  virtual void  v54(); // _ZN10S2405C3_nt3v54Ev
  virtual void  v55(); // _ZN10S2405C3_nt3v55Ev
  virtual void  v56(); // _ZN10S2405C3_nt3v56Ev
  virtual void  v57(); // _ZN10S2405C3_nt3v57Ev
  virtual void  v58(); // _ZN10S2405C3_nt3v58Ev
  virtual void  v59(); // _ZN10S2405C3_nt3v59Ev
  virtual void  v60(); // _ZN10S2405C3_nt3v60Ev
  virtual void  v61(); // _ZN10S2405C3_nt3v61Ev
  virtual void  v62(); // _ZN10S2405C3_nt3v62Ev
  virtual void  v63(); // _ZN10S2405C3_nt3v63Ev
  virtual void  v64(); // _ZN10S2405C3_nt3v64Ev
  virtual void  v65(); // _ZN10S2405C3_nt3v65Ev
  virtual void  v66(); // _ZN10S2405C3_nt3v66Ev
  virtual void  v67(); // _ZN10S2405C3_nt3v67Ev
  virtual void  v68(); // _ZN10S2405C3_nt3v68Ev
  virtual void  v69(); // _ZN10S2405C3_nt3v69Ev
  virtual void  v70(); // _ZN10S2405C3_nt3v70Ev
  virtual void  v71(); // _ZN10S2405C3_nt3v71Ev
  virtual void  v72(); // _ZN10S2405C3_nt3v72Ev
  virtual void  v73(); // _ZN10S2405C3_nt3v73Ev
  virtual void  v74(); // _ZN10S2405C3_nt3v74Ev
  virtual void  v75(); // _ZN10S2405C3_nt3v75Ev
  virtual void  v76(); // _ZN10S2405C3_nt3v76Ev
  virtual void  v77(); // _ZN10S2405C3_nt3v77Ev
  virtual void  v78(); // _ZN10S2405C3_nt3v78Ev
  virtual void  v79(); // _ZN10S2405C3_nt3v79Ev
  virtual void  v80(); // _ZN10S2405C3_nt3v80Ev
  virtual void  v81(); // _ZN10S2405C3_nt3v81Ev
  virtual void  v82(); // _ZN10S2405C3_nt3v82Ev
  virtual void  v83(); // _ZN10S2405C3_nt3v83Ev
  virtual void  v84(); // _ZN10S2405C3_nt3v84Ev
  virtual void  v85(); // _ZN10S2405C3_nt3v85Ev
  virtual void  v86(); // _ZN10S2405C3_nt3v86Ev
  virtual void  v87(); // _ZN10S2405C3_nt3v87Ev
  virtual void  v88(); // _ZN10S2405C3_nt3v88Ev
  virtual void  v89(); // _ZN10S2405C3_nt3v89Ev
  virtual void  v90(); // _ZN10S2405C3_nt3v90Ev
  virtual void  v91(); // _ZN10S2405C3_nt3v91Ev
  virtual void  v92(); // _ZN10S2405C3_nt3v92Ev
  virtual void  v93(); // _ZN10S2405C3_nt3v93Ev
  virtual void  v94(); // _ZN10S2405C3_nt3v94Ev
  virtual void  v95(); // _ZN10S2405C3_nt3v95Ev
  virtual void  v96(); // _ZN10S2405C3_nt3v96Ev
  virtual void  v97(); // _ZN10S2405C3_nt3v97Ev
  virtual void  v98(); // _ZN10S2405C3_nt3v98Ev
  virtual void  v99(); // _ZN10S2405C3_nt3v99Ev
  virtual void  v100(); // _ZN10S2405C3_nt4v100Ev
  virtual void  v101(); // _ZN10S2405C3_nt4v101Ev
  virtual void  v102(); // _ZN10S2405C3_nt4v102Ev
  virtual void  v103(); // _ZN10S2405C3_nt4v103Ev
  virtual void  v104(); // _ZN10S2405C3_nt4v104Ev
  virtual void  v105(); // _ZN10S2405C3_nt4v105Ev
  virtual void  v106(); // _ZN10S2405C3_nt4v106Ev
  S2405C3_nt(); // tgen
};
//SIG(-1 S2405C3_nt) C1{ BC2{ vd v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 Fp Fi FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}} FC3 Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 FC7{ m FC8{ m FL[2]}} FC7 FC7 FC9{ m FC8} FC10{ m FC7} FC11{ m FC7 FC7 FC7 FC7} FC11 FC7 FC7 FC7 Fp FC10 FC12{ m FC13{ m Fp Fi FC6} Fi} Fi Fp[7] FC14{ m Fp Fi FC15{ m} FC15} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC16{ BC17{ m Fp Fi FC18{ m} FC18}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC19{ m Fp Fi[2] FC5} Fp[2] Fi:16 Fi:16 FC16 FC20{ m Fp Fi[2] FC21{ m}} FC20 Fp[2] Fi:24 Fi:8 Fp}


 S2405C3_nt ::~S2405C3_nt(){ note_dtor("S2405C3_nt", this);}
void  S2405C3_nt ::v29(){vfunc_called(this, "_ZN10S2405C3_nt3v29Ev");}
void  S2405C3_nt ::v30(){vfunc_called(this, "_ZN10S2405C3_nt3v30Ev");}
void  S2405C3_nt ::v31(){vfunc_called(this, "_ZN10S2405C3_nt3v31Ev");}
void  S2405C3_nt ::v32(){vfunc_called(this, "_ZN10S2405C3_nt3v32Ev");}
void  S2405C3_nt ::v33(){vfunc_called(this, "_ZN10S2405C3_nt3v33Ev");}
void  S2405C3_nt ::v34(){vfunc_called(this, "_ZN10S2405C3_nt3v34Ev");}
void  S2405C3_nt ::v35(){vfunc_called(this, "_ZN10S2405C3_nt3v35Ev");}
void  S2405C3_nt ::v36(){vfunc_called(this, "_ZN10S2405C3_nt3v36Ev");}
void  S2405C3_nt ::v37(){vfunc_called(this, "_ZN10S2405C3_nt3v37Ev");}
void  S2405C3_nt ::v38(){vfunc_called(this, "_ZN10S2405C3_nt3v38Ev");}
void  S2405C3_nt ::v39(){vfunc_called(this, "_ZN10S2405C3_nt3v39Ev");}
void  S2405C3_nt ::v40(){vfunc_called(this, "_ZN10S2405C3_nt3v40Ev");}
void  S2405C3_nt ::v41(){vfunc_called(this, "_ZN10S2405C3_nt3v41Ev");}
void  S2405C3_nt ::v42(){vfunc_called(this, "_ZN10S2405C3_nt3v42Ev");}
void  S2405C3_nt ::v43(){vfunc_called(this, "_ZN10S2405C3_nt3v43Ev");}
void  S2405C3_nt ::v44(){vfunc_called(this, "_ZN10S2405C3_nt3v44Ev");}
void  S2405C3_nt ::v45(){vfunc_called(this, "_ZN10S2405C3_nt3v45Ev");}
void  S2405C3_nt ::v46(){vfunc_called(this, "_ZN10S2405C3_nt3v46Ev");}
void  S2405C3_nt ::v47(){vfunc_called(this, "_ZN10S2405C3_nt3v47Ev");}
void  S2405C3_nt ::v48(){vfunc_called(this, "_ZN10S2405C3_nt3v48Ev");}
void  S2405C3_nt ::v49(){vfunc_called(this, "_ZN10S2405C3_nt3v49Ev");}
void  S2405C3_nt ::v50(){vfunc_called(this, "_ZN10S2405C3_nt3v50Ev");}
void  S2405C3_nt ::v51(){vfunc_called(this, "_ZN10S2405C3_nt3v51Ev");}
void  S2405C3_nt ::v52(){vfunc_called(this, "_ZN10S2405C3_nt3v52Ev");}
void  S2405C3_nt ::v53(){vfunc_called(this, "_ZN10S2405C3_nt3v53Ev");}
void  S2405C3_nt ::v54(){vfunc_called(this, "_ZN10S2405C3_nt3v54Ev");}
void  S2405C3_nt ::v55(){vfunc_called(this, "_ZN10S2405C3_nt3v55Ev");}
void  S2405C3_nt ::v56(){vfunc_called(this, "_ZN10S2405C3_nt3v56Ev");}
void  S2405C3_nt ::v57(){vfunc_called(this, "_ZN10S2405C3_nt3v57Ev");}
void  S2405C3_nt ::v58(){vfunc_called(this, "_ZN10S2405C3_nt3v58Ev");}
void  S2405C3_nt ::v59(){vfunc_called(this, "_ZN10S2405C3_nt3v59Ev");}
void  S2405C3_nt ::v60(){vfunc_called(this, "_ZN10S2405C3_nt3v60Ev");}
void  S2405C3_nt ::v61(){vfunc_called(this, "_ZN10S2405C3_nt3v61Ev");}
void  S2405C3_nt ::v62(){vfunc_called(this, "_ZN10S2405C3_nt3v62Ev");}
void  S2405C3_nt ::v63(){vfunc_called(this, "_ZN10S2405C3_nt3v63Ev");}
void  S2405C3_nt ::v64(){vfunc_called(this, "_ZN10S2405C3_nt3v64Ev");}
void  S2405C3_nt ::v65(){vfunc_called(this, "_ZN10S2405C3_nt3v65Ev");}
void  S2405C3_nt ::v66(){vfunc_called(this, "_ZN10S2405C3_nt3v66Ev");}
void  S2405C3_nt ::v67(){vfunc_called(this, "_ZN10S2405C3_nt3v67Ev");}
void  S2405C3_nt ::v68(){vfunc_called(this, "_ZN10S2405C3_nt3v68Ev");}
void  S2405C3_nt ::v69(){vfunc_called(this, "_ZN10S2405C3_nt3v69Ev");}
void  S2405C3_nt ::v70(){vfunc_called(this, "_ZN10S2405C3_nt3v70Ev");}
void  S2405C3_nt ::v71(){vfunc_called(this, "_ZN10S2405C3_nt3v71Ev");}
void  S2405C3_nt ::v72(){vfunc_called(this, "_ZN10S2405C3_nt3v72Ev");}
void  S2405C3_nt ::v73(){vfunc_called(this, "_ZN10S2405C3_nt3v73Ev");}
void  S2405C3_nt ::v74(){vfunc_called(this, "_ZN10S2405C3_nt3v74Ev");}
void  S2405C3_nt ::v75(){vfunc_called(this, "_ZN10S2405C3_nt3v75Ev");}
void  S2405C3_nt ::v76(){vfunc_called(this, "_ZN10S2405C3_nt3v76Ev");}
void  S2405C3_nt ::v77(){vfunc_called(this, "_ZN10S2405C3_nt3v77Ev");}
void  S2405C3_nt ::v78(){vfunc_called(this, "_ZN10S2405C3_nt3v78Ev");}
void  S2405C3_nt ::v79(){vfunc_called(this, "_ZN10S2405C3_nt3v79Ev");}
void  S2405C3_nt ::v80(){vfunc_called(this, "_ZN10S2405C3_nt3v80Ev");}
void  S2405C3_nt ::v81(){vfunc_called(this, "_ZN10S2405C3_nt3v81Ev");}
void  S2405C3_nt ::v82(){vfunc_called(this, "_ZN10S2405C3_nt3v82Ev");}
void  S2405C3_nt ::v83(){vfunc_called(this, "_ZN10S2405C3_nt3v83Ev");}
void  S2405C3_nt ::v84(){vfunc_called(this, "_ZN10S2405C3_nt3v84Ev");}
void  S2405C3_nt ::v85(){vfunc_called(this, "_ZN10S2405C3_nt3v85Ev");}
void  S2405C3_nt ::v86(){vfunc_called(this, "_ZN10S2405C3_nt3v86Ev");}
void  S2405C3_nt ::v87(){vfunc_called(this, "_ZN10S2405C3_nt3v87Ev");}
void  S2405C3_nt ::v88(){vfunc_called(this, "_ZN10S2405C3_nt3v88Ev");}
void  S2405C3_nt ::v89(){vfunc_called(this, "_ZN10S2405C3_nt3v89Ev");}
void  S2405C3_nt ::v90(){vfunc_called(this, "_ZN10S2405C3_nt3v90Ev");}
void  S2405C3_nt ::v91(){vfunc_called(this, "_ZN10S2405C3_nt3v91Ev");}
void  S2405C3_nt ::v92(){vfunc_called(this, "_ZN10S2405C3_nt3v92Ev");}
void  S2405C3_nt ::v93(){vfunc_called(this, "_ZN10S2405C3_nt3v93Ev");}
void  S2405C3_nt ::v94(){vfunc_called(this, "_ZN10S2405C3_nt3v94Ev");}
void  S2405C3_nt ::v95(){vfunc_called(this, "_ZN10S2405C3_nt3v95Ev");}
void  S2405C3_nt ::v96(){vfunc_called(this, "_ZN10S2405C3_nt3v96Ev");}
void  S2405C3_nt ::v97(){vfunc_called(this, "_ZN10S2405C3_nt3v97Ev");}
void  S2405C3_nt ::v98(){vfunc_called(this, "_ZN10S2405C3_nt3v98Ev");}
void  S2405C3_nt ::v99(){vfunc_called(this, "_ZN10S2405C3_nt3v99Ev");}
void  S2405C3_nt ::v100(){vfunc_called(this, "_ZN10S2405C3_nt4v100Ev");}
void  S2405C3_nt ::v101(){vfunc_called(this, "_ZN10S2405C3_nt4v101Ev");}
void  S2405C3_nt ::v102(){vfunc_called(this, "_ZN10S2405C3_nt4v102Ev");}
void  S2405C3_nt ::v103(){vfunc_called(this, "_ZN10S2405C3_nt4v103Ev");}
void  S2405C3_nt ::v104(){vfunc_called(this, "_ZN10S2405C3_nt4v104Ev");}
void  S2405C3_nt ::v105(){vfunc_called(this, "_ZN10S2405C3_nt4v105Ev");}
void  S2405C3_nt ::v106(){vfunc_called(this, "_ZN10S2405C3_nt4v106Ev");}
S2405C3_nt ::S2405C3_nt(){ note_ctor("S2405C3_nt", this);} // tgen

//skip512 S2405C3_nt

#else // __cplusplus

extern void _ZN10S2405C3_ntC1Ev();
extern void _ZN10S2405C3_ntD1Ev();
Name_Map name_map_S2405C3_nt[] = {
  NSPAIR(_ZN10S2405C3_ntC1Ev),
  NSPAIR(_ZN10S2405C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2405C4_nt;
extern VTBL_ENTRY _ZTI10S2405C4_nt[];
extern  VTBL_ENTRY _ZTV10S2405C4_nt[];
static Base_Class bases_S2405C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2405C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2405C3_nt[];
extern void _ZN10S2405C3_ntD1Ev();
extern void _ZN10S2405C3_ntD0Ev();
extern void _ZN10S2405C4_nt2v6Ev();
extern void _ZN10S2405C4_nt2v7Ev();
extern void _ZN10S2405C4_nt2v8Ev();
extern void _ZN10S2405C4_nt2v9Ev();
extern void _ZN10S2405C4_nt3v10Ev();
extern void _ZN10S2405C4_nt3v11Ev();
extern void _ZN10S2405C4_nt3v12Ev();
extern void _ZN10S2405C4_nt3v13Ev();
extern void _ZN10S2405C4_nt3v14Ev();
extern void _ZN10S2405C4_nt3v15Ev();
extern void _ZN10S2405C4_nt3v16Ev();
extern void _ZN10S2405C4_nt3v17Ev();
extern void _ZN10S2405C4_nt3v18Ev();
extern void _ZN10S2405C4_nt3v19Ev();
extern void _ZN10S2405C4_nt3v20Ev();
extern void _ZN10S2405C4_nt3v21Ev();
extern void _ZN10S2405C4_nt3v22Ev();
extern void _ZN10S2405C4_nt3v23Ev();
extern void _ZN10S2405C4_nt3v24Ev();
extern void _ZN10S2405C4_nt3v25Ev();
extern void _ZN10S2405C4_nt3v26Ev();
extern void _ZN10S2405C4_nt3v27Ev();
extern void _ZN10S2405C4_nt3v28Ev();
extern void _ZN10S2405C3_nt3v29Ev();
extern void _ZN10S2405C3_nt3v30Ev();
extern void _ZN10S2405C3_nt3v31Ev();
extern void _ZN10S2405C3_nt3v32Ev();
extern void _ZN10S2405C3_nt3v33Ev();
extern void _ZN10S2405C3_nt3v34Ev();
extern void _ZN10S2405C3_nt3v35Ev();
extern void _ZN10S2405C3_nt3v36Ev();
extern void _ZN10S2405C3_nt3v37Ev();
extern void _ZN10S2405C3_nt3v38Ev();
extern void _ZN10S2405C3_nt3v39Ev();
extern void _ZN10S2405C3_nt3v40Ev();
extern void _ZN10S2405C3_nt3v41Ev();
extern void _ZN10S2405C3_nt3v42Ev();
extern void _ZN10S2405C3_nt3v43Ev();
extern void _ZN10S2405C3_nt3v44Ev();
extern void _ZN10S2405C3_nt3v45Ev();
extern void _ZN10S2405C3_nt3v46Ev();
extern void _ZN10S2405C3_nt3v47Ev();
extern void _ZN10S2405C3_nt3v48Ev();
extern void _ZN10S2405C3_nt3v49Ev();
extern void _ZN10S2405C3_nt3v50Ev();
extern void _ZN10S2405C3_nt3v51Ev();
extern void _ZN10S2405C3_nt3v52Ev();
extern void _ZN10S2405C3_nt3v53Ev();
extern void _ZN10S2405C3_nt3v54Ev();
extern void _ZN10S2405C3_nt3v55Ev();
extern void _ZN10S2405C3_nt3v56Ev();
extern void _ZN10S2405C3_nt3v57Ev();
extern void _ZN10S2405C3_nt3v58Ev();
extern void _ZN10S2405C3_nt3v59Ev();
extern void _ZN10S2405C3_nt3v60Ev();
extern void _ZN10S2405C3_nt3v61Ev();
extern void _ZN10S2405C3_nt3v62Ev();
extern void _ZN10S2405C3_nt3v63Ev();
extern void _ZN10S2405C3_nt3v64Ev();
extern void _ZN10S2405C3_nt3v65Ev();
extern void _ZN10S2405C3_nt3v66Ev();
extern void _ZN10S2405C3_nt3v67Ev();
extern void _ZN10S2405C3_nt3v68Ev();
extern void _ZN10S2405C3_nt3v69Ev();
extern void _ZN10S2405C3_nt3v70Ev();
extern void _ZN10S2405C3_nt3v71Ev();
extern void _ZN10S2405C3_nt3v72Ev();
extern void _ZN10S2405C3_nt3v73Ev();
extern void _ZN10S2405C3_nt3v74Ev();
extern void _ZN10S2405C3_nt3v75Ev();
extern void _ZN10S2405C3_nt3v76Ev();
extern void _ZN10S2405C3_nt3v77Ev();
extern void _ZN10S2405C3_nt3v78Ev();
extern void _ZN10S2405C3_nt3v79Ev();
extern void _ZN10S2405C3_nt3v80Ev();
extern void _ZN10S2405C3_nt3v81Ev();
extern void _ZN10S2405C3_nt3v82Ev();
extern void _ZN10S2405C3_nt3v83Ev();
extern void _ZN10S2405C3_nt3v84Ev();
extern void _ZN10S2405C3_nt3v85Ev();
extern void _ZN10S2405C3_nt3v86Ev();
extern void _ZN10S2405C3_nt3v87Ev();
extern void _ZN10S2405C3_nt3v88Ev();
extern void _ZN10S2405C3_nt3v89Ev();
extern void _ZN10S2405C3_nt3v90Ev();
extern void _ZN10S2405C3_nt3v91Ev();
extern void _ZN10S2405C3_nt3v92Ev();
extern void _ZN10S2405C3_nt3v93Ev();
extern void _ZN10S2405C3_nt3v94Ev();
extern void _ZN10S2405C3_nt3v95Ev();
extern void _ZN10S2405C3_nt3v96Ev();
extern void _ZN10S2405C3_nt3v97Ev();
extern void _ZN10S2405C3_nt3v98Ev();
extern void _ZN10S2405C3_nt3v99Ev();
extern void _ZN10S2405C3_nt4v100Ev();
extern void _ZN10S2405C3_nt4v101Ev();
extern void _ZN10S2405C3_nt4v102Ev();
extern void _ZN10S2405C3_nt4v103Ev();
extern void _ZN10S2405C3_nt4v104Ev();
extern void _ZN10S2405C3_nt4v105Ev();
extern void _ZN10S2405C3_nt4v106Ev();
static  VTBL_ENTRY vtc_S2405C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2405C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S2405C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v106Ev,
};
extern VTBL_ENTRY _ZTI10S2405C3_nt[];
VTBL_ENTRY *P__ZTI10S2405C3_nt = _ZTI10S2405C3_nt; 
extern  VTBL_ENTRY _ZTV10S2405C3_nt[];
Class_Descriptor cd_S2405C3_nt = {  "S2405C3_nt", // class name
  bases_S2405C3_nt, 1,
  &(vtc_S2405C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,632), // object size
  NSPAIRA(_ZTI10S2405C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2405C3_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  S2405C2_nt  : S2405C3_nt {
  void *s2405c2f0;
  virtual  ~S2405C2_nt(); // _ZN10S2405C2_ntD1Ev
  virtual void  v107(); // _ZN10S2405C2_nt4v107Ev
  virtual void  v108(); // _ZN10S2405C2_nt4v108Ev
  virtual void  v109(); // _ZN10S2405C2_nt4v109Ev
  virtual void  v110(); // _ZN10S2405C2_nt4v110Ev
  virtual void  v111(); // _ZN10S2405C2_nt4v111Ev
  virtual void  v112(); // _ZN10S2405C2_nt4v112Ev
  virtual void  v113(); // _ZN10S2405C2_nt4v113Ev
  virtual void  v114(); // _ZN10S2405C2_nt4v114Ev
  virtual void  v115(); // _ZN10S2405C2_nt4v115Ev
  virtual void  v116(); // _ZN10S2405C2_nt4v116Ev
  S2405C2_nt(); // tgen
};
//SIG(-1 S2405C2_nt) C1{ BC2{ BC3{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp Fi FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}} FC4 Fi} vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 FC8{ m FC9{ m FL[2]}} FC8 FC8 FC10{ m FC9} FC11{ m FC8} FC12{ m FC8 FC8 FC8 FC8} FC12 FC8 FC8 FC8 Fp FC11 FC13{ m FC14{ m Fp Fi FC7} Fi} Fi Fp[7] FC15{ m Fp Fi FC16{ m} FC16} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC17{ BC18{ m Fp Fi FC19{ m} FC19}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC20{ m Fp Fi[2] FC6} Fp[2] Fi:16 Fi:16 FC17 FC21{ m Fp Fi[2] FC22{ m}} FC21 Fp[2] Fi:24 Fi:8 Fp} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp}


 S2405C2_nt ::~S2405C2_nt(){ note_dtor("S2405C2_nt", this);}
void  S2405C2_nt ::v107(){vfunc_called(this, "_ZN10S2405C2_nt4v107Ev");}
void  S2405C2_nt ::v108(){vfunc_called(this, "_ZN10S2405C2_nt4v108Ev");}
void  S2405C2_nt ::v109(){vfunc_called(this, "_ZN10S2405C2_nt4v109Ev");}
void  S2405C2_nt ::v110(){vfunc_called(this, "_ZN10S2405C2_nt4v110Ev");}
void  S2405C2_nt ::v111(){vfunc_called(this, "_ZN10S2405C2_nt4v111Ev");}
void  S2405C2_nt ::v112(){vfunc_called(this, "_ZN10S2405C2_nt4v112Ev");}
void  S2405C2_nt ::v113(){vfunc_called(this, "_ZN10S2405C2_nt4v113Ev");}
void  S2405C2_nt ::v114(){vfunc_called(this, "_ZN10S2405C2_nt4v114Ev");}
void  S2405C2_nt ::v115(){vfunc_called(this, "_ZN10S2405C2_nt4v115Ev");}
void  S2405C2_nt ::v116(){vfunc_called(this, "_ZN10S2405C2_nt4v116Ev");}
S2405C2_nt ::S2405C2_nt(){ note_ctor("S2405C2_nt", this);} // tgen

//skip512 S2405C2_nt

#else // __cplusplus

extern void _ZN10S2405C2_ntC1Ev();
extern void _ZN10S2405C2_ntD1Ev();
Name_Map name_map_S2405C2_nt[] = {
  NSPAIR(_ZN10S2405C2_ntC1Ev),
  NSPAIR(_ZN10S2405C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2405C4_nt;
extern VTBL_ENTRY _ZTI10S2405C4_nt[];
extern  VTBL_ENTRY _ZTV10S2405C4_nt[];
extern Class_Descriptor cd_S2405C3_nt;
extern VTBL_ENTRY _ZTI10S2405C3_nt[];
extern  VTBL_ENTRY _ZTV10S2405C3_nt[];
static Base_Class bases_S2405C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2405C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2405C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S2405C2_nt[];
extern void _ZN10S2405C2_ntD1Ev();
extern void _ZN10S2405C2_ntD0Ev();
extern void _ZN10S2405C4_nt2v6Ev();
extern void _ZN10S2405C4_nt2v7Ev();
extern void _ZN10S2405C4_nt2v8Ev();
extern void _ZN10S2405C4_nt2v9Ev();
extern void _ZN10S2405C4_nt3v10Ev();
extern void _ZN10S2405C4_nt3v11Ev();
extern void _ZN10S2405C4_nt3v12Ev();
extern void _ZN10S2405C4_nt3v13Ev();
extern void _ZN10S2405C4_nt3v14Ev();
extern void _ZN10S2405C4_nt3v15Ev();
extern void _ZN10S2405C4_nt3v16Ev();
extern void _ZN10S2405C4_nt3v17Ev();
extern void _ZN10S2405C4_nt3v18Ev();
extern void _ZN10S2405C4_nt3v19Ev();
extern void _ZN10S2405C4_nt3v20Ev();
extern void _ZN10S2405C4_nt3v21Ev();
extern void _ZN10S2405C4_nt3v22Ev();
extern void _ZN10S2405C4_nt3v23Ev();
extern void _ZN10S2405C4_nt3v24Ev();
extern void _ZN10S2405C4_nt3v25Ev();
extern void _ZN10S2405C4_nt3v26Ev();
extern void _ZN10S2405C4_nt3v27Ev();
extern void _ZN10S2405C4_nt3v28Ev();
extern void _ZN10S2405C3_nt3v29Ev();
extern void _ZN10S2405C3_nt3v30Ev();
extern void _ZN10S2405C3_nt3v31Ev();
extern void _ZN10S2405C3_nt3v32Ev();
extern void _ZN10S2405C3_nt3v33Ev();
extern void _ZN10S2405C3_nt3v34Ev();
extern void _ZN10S2405C3_nt3v35Ev();
extern void _ZN10S2405C3_nt3v36Ev();
extern void _ZN10S2405C3_nt3v37Ev();
extern void _ZN10S2405C3_nt3v38Ev();
extern void _ZN10S2405C3_nt3v39Ev();
extern void _ZN10S2405C3_nt3v40Ev();
extern void _ZN10S2405C3_nt3v41Ev();
extern void _ZN10S2405C3_nt3v42Ev();
extern void _ZN10S2405C3_nt3v43Ev();
extern void _ZN10S2405C3_nt3v44Ev();
extern void _ZN10S2405C3_nt3v45Ev();
extern void _ZN10S2405C3_nt3v46Ev();
extern void _ZN10S2405C3_nt3v47Ev();
extern void _ZN10S2405C3_nt3v48Ev();
extern void _ZN10S2405C3_nt3v49Ev();
extern void _ZN10S2405C3_nt3v50Ev();
extern void _ZN10S2405C3_nt3v51Ev();
extern void _ZN10S2405C3_nt3v52Ev();
extern void _ZN10S2405C3_nt3v53Ev();
extern void _ZN10S2405C3_nt3v54Ev();
extern void _ZN10S2405C3_nt3v55Ev();
extern void _ZN10S2405C3_nt3v56Ev();
extern void _ZN10S2405C3_nt3v57Ev();
extern void _ZN10S2405C3_nt3v58Ev();
extern void _ZN10S2405C3_nt3v59Ev();
extern void _ZN10S2405C3_nt3v60Ev();
extern void _ZN10S2405C3_nt3v61Ev();
extern void _ZN10S2405C3_nt3v62Ev();
extern void _ZN10S2405C3_nt3v63Ev();
extern void _ZN10S2405C3_nt3v64Ev();
extern void _ZN10S2405C3_nt3v65Ev();
extern void _ZN10S2405C3_nt3v66Ev();
extern void _ZN10S2405C3_nt3v67Ev();
extern void _ZN10S2405C3_nt3v68Ev();
extern void _ZN10S2405C3_nt3v69Ev();
extern void _ZN10S2405C3_nt3v70Ev();
extern void _ZN10S2405C3_nt3v71Ev();
extern void _ZN10S2405C3_nt3v72Ev();
extern void _ZN10S2405C3_nt3v73Ev();
extern void _ZN10S2405C3_nt3v74Ev();
extern void _ZN10S2405C3_nt3v75Ev();
extern void _ZN10S2405C3_nt3v76Ev();
extern void _ZN10S2405C3_nt3v77Ev();
extern void _ZN10S2405C3_nt3v78Ev();
extern void _ZN10S2405C3_nt3v79Ev();
extern void _ZN10S2405C3_nt3v80Ev();
extern void _ZN10S2405C3_nt3v81Ev();
extern void _ZN10S2405C3_nt3v82Ev();
extern void _ZN10S2405C3_nt3v83Ev();
extern void _ZN10S2405C3_nt3v84Ev();
extern void _ZN10S2405C3_nt3v85Ev();
extern void _ZN10S2405C3_nt3v86Ev();
extern void _ZN10S2405C3_nt3v87Ev();
extern void _ZN10S2405C3_nt3v88Ev();
extern void _ZN10S2405C3_nt3v89Ev();
extern void _ZN10S2405C3_nt3v90Ev();
extern void _ZN10S2405C3_nt3v91Ev();
extern void _ZN10S2405C3_nt3v92Ev();
extern void _ZN10S2405C3_nt3v93Ev();
extern void _ZN10S2405C3_nt3v94Ev();
extern void _ZN10S2405C3_nt3v95Ev();
extern void _ZN10S2405C3_nt3v96Ev();
extern void _ZN10S2405C3_nt3v97Ev();
extern void _ZN10S2405C3_nt3v98Ev();
extern void _ZN10S2405C3_nt3v99Ev();
extern void _ZN10S2405C3_nt4v100Ev();
extern void _ZN10S2405C3_nt4v101Ev();
extern void _ZN10S2405C3_nt4v102Ev();
extern void _ZN10S2405C3_nt4v103Ev();
extern void _ZN10S2405C3_nt4v104Ev();
extern void _ZN10S2405C3_nt4v105Ev();
extern void _ZN10S2405C3_nt4v106Ev();
extern void _ZN10S2405C2_nt4v107Ev();
extern void _ZN10S2405C2_nt4v108Ev();
extern void _ZN10S2405C2_nt4v109Ev();
extern void _ZN10S2405C2_nt4v110Ev();
extern void _ZN10S2405C2_nt4v111Ev();
extern void _ZN10S2405C2_nt4v112Ev();
extern void _ZN10S2405C2_nt4v113Ev();
extern void _ZN10S2405C2_nt4v114Ev();
extern void _ZN10S2405C2_nt4v115Ev();
extern void _ZN10S2405C2_nt4v116Ev();
static  VTBL_ENTRY vtc_S2405C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2405C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S2405C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v116Ev,
};
extern VTBL_ENTRY _ZTI10S2405C2_nt[];
VTBL_ENTRY *P__ZTI10S2405C2_nt = _ZTI10S2405C2_nt; 
extern  VTBL_ENTRY _ZTV10S2405C2_nt[];
Class_Descriptor cd_S2405C2_nt = {  "S2405C2_nt", // class name
  bases_S2405C2_nt, 2,
  &(vtc_S2405C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(840,636), // object size
  NSPAIRA(_ZTI10S2405C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2405C2_nt),115, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2405C1  : S2405C2_nt {
  void *s2405c1f0;
  int s2405c1f1[4];
  virtual  ~S2405C1(); // _ZN7S2405C1D1Ev
  virtual void  v1(); // _ZN7S2405C12v1Ev
  virtual void  v2(); // _ZN7S2405C12v2Ev
  virtual void  v3(); // _ZN7S2405C12v3Ev
  virtual void  v4(); // _ZN7S2405C12v4Ev
  virtual void  v5(); // _ZN7S2405C12v5Ev
  S2405C1(); // tgen
};
//SIG(1 S2405C1) 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 Fp Fi FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}} FC5 Fi} 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 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 FC9{ m FC10{ m FL[2]}} FC9 FC9 FC11{ m FC10} FC12{ m FC9} FC13{ m FC9 FC9 FC9 FC9} FC13 FC9 FC9 FC9 Fp FC12 FC14{ m FC15{ m Fp Fi FC8} Fi} Fi Fp[7] FC16{ m Fp Fi FC17{ m} FC17} 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 FC18{ BC19{ m Fp Fi FC20{ m} FC20}} 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] FC21{ m Fp Fi[2] FC7} Fp[2] Fi:16 Fi:16 FC18 FC22{ m Fp Fi[2] FC23{ m}} FC22 Fp[2] Fi:24 Fi:8 Fp} vd v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 Fp} vd v1 v2 v3 v4 v5 Fp Fi[4]}


 S2405C1 ::~S2405C1(){ note_dtor("S2405C1", this);}
void  S2405C1 ::v1(){vfunc_called(this, "_ZN7S2405C12v1Ev");}
void  S2405C1 ::v2(){vfunc_called(this, "_ZN7S2405C12v2Ev");}
void  S2405C1 ::v3(){vfunc_called(this, "_ZN7S2405C12v3Ev");}
void  S2405C1 ::v4(){vfunc_called(this, "_ZN7S2405C12v4Ev");}
void  S2405C1 ::v5(){vfunc_called(this, "_ZN7S2405C12v5Ev");}
S2405C1 ::S2405C1(){ note_ctor("S2405C1", this);} // tgen

static void Test_S2405C1()
{
  extern Class_Descriptor cd_S2405C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(109,165)];
    init_test(&cd_S2405C1, buf);
    S2405C1 *dp, &lv = *(dp=new (buf) S2405C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(864,656), "sizeof(S2405C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2405C1)");
    check_base_class_offset(lv, (S2405C4_nt*)(S2405C3_nt*)(S2405C2_nt*), 0, "S2405C1");
    check_base_class_offset(lv, (S2405C3_nt*)(S2405C2_nt*), 0, "S2405C1");
    check_base_class_offset(lv, (S2405C2_nt*), 0, "S2405C1");
    check_field_offset(lv, s2405c1f0, ABISELECT(840,636), "S2405C1.s2405c1f0");
    check_field_offset(lv, s2405c1f1, ABISELECT(848,640), "S2405C1.s2405c1f1");
    test_class_info(&lv, &cd_S2405C1);
    dp->~S2405C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2405C1(Test_S2405C1, "S2405C1", ABISELECT(864,656));

#else // __cplusplus

extern void _ZN7S2405C1C1Ev();
extern void _ZN7S2405C1D1Ev();
Name_Map name_map_S2405C1[] = {
  NSPAIR(_ZN7S2405C1C1Ev),
  NSPAIR(_ZN7S2405C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2405C4_nt;
extern VTBL_ENTRY _ZTI10S2405C4_nt[];
extern  VTBL_ENTRY _ZTV10S2405C4_nt[];
extern Class_Descriptor cd_S2405C3_nt;
extern VTBL_ENTRY _ZTI10S2405C3_nt[];
extern  VTBL_ENTRY _ZTV10S2405C3_nt[];
extern Class_Descriptor cd_S2405C2_nt;
extern VTBL_ENTRY _ZTI10S2405C2_nt[];
extern  VTBL_ENTRY _ZTV10S2405C2_nt[];
static Base_Class bases_S2405C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2405C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2405C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2405C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2405C1[];
extern void _ZN7S2405C1D1Ev();
extern void _ZN7S2405C1D0Ev();
extern void _ZN10S2405C4_nt2v6Ev();
extern void _ZN10S2405C4_nt2v7Ev();
extern void _ZN10S2405C4_nt2v8Ev();
extern void _ZN10S2405C4_nt2v9Ev();
extern void _ZN10S2405C4_nt3v10Ev();
extern void _ZN10S2405C4_nt3v11Ev();
extern void _ZN10S2405C4_nt3v12Ev();
extern void _ZN10S2405C4_nt3v13Ev();
extern void _ZN10S2405C4_nt3v14Ev();
extern void _ZN10S2405C4_nt3v15Ev();
extern void _ZN10S2405C4_nt3v16Ev();
extern void _ZN10S2405C4_nt3v17Ev();
extern void _ZN10S2405C4_nt3v18Ev();
extern void _ZN10S2405C4_nt3v19Ev();
extern void _ZN10S2405C4_nt3v20Ev();
extern void _ZN10S2405C4_nt3v21Ev();
extern void _ZN10S2405C4_nt3v22Ev();
extern void _ZN10S2405C4_nt3v23Ev();
extern void _ZN10S2405C4_nt3v24Ev();
extern void _ZN10S2405C4_nt3v25Ev();
extern void _ZN10S2405C4_nt3v26Ev();
extern void _ZN10S2405C4_nt3v27Ev();
extern void _ZN10S2405C4_nt3v28Ev();
extern void _ZN10S2405C3_nt3v29Ev();
extern void _ZN10S2405C3_nt3v30Ev();
extern void _ZN10S2405C3_nt3v31Ev();
extern void _ZN10S2405C3_nt3v32Ev();
extern void _ZN10S2405C3_nt3v33Ev();
extern void _ZN10S2405C3_nt3v34Ev();
extern void _ZN10S2405C3_nt3v35Ev();
extern void _ZN10S2405C3_nt3v36Ev();
extern void _ZN10S2405C3_nt3v37Ev();
extern void _ZN10S2405C3_nt3v38Ev();
extern void _ZN10S2405C3_nt3v39Ev();
extern void _ZN10S2405C3_nt3v40Ev();
extern void _ZN10S2405C3_nt3v41Ev();
extern void _ZN10S2405C3_nt3v42Ev();
extern void _ZN10S2405C3_nt3v43Ev();
extern void _ZN10S2405C3_nt3v44Ev();
extern void _ZN10S2405C3_nt3v45Ev();
extern void _ZN10S2405C3_nt3v46Ev();
extern void _ZN10S2405C3_nt3v47Ev();
extern void _ZN10S2405C3_nt3v48Ev();
extern void _ZN10S2405C3_nt3v49Ev();
extern void _ZN10S2405C3_nt3v50Ev();
extern void _ZN10S2405C3_nt3v51Ev();
extern void _ZN10S2405C3_nt3v52Ev();
extern void _ZN10S2405C3_nt3v53Ev();
extern void _ZN10S2405C3_nt3v54Ev();
extern void _ZN10S2405C3_nt3v55Ev();
extern void _ZN10S2405C3_nt3v56Ev();
extern void _ZN10S2405C3_nt3v57Ev();
extern void _ZN10S2405C3_nt3v58Ev();
extern void _ZN10S2405C3_nt3v59Ev();
extern void _ZN10S2405C3_nt3v60Ev();
extern void _ZN10S2405C3_nt3v61Ev();
extern void _ZN10S2405C3_nt3v62Ev();
extern void _ZN10S2405C3_nt3v63Ev();
extern void _ZN10S2405C3_nt3v64Ev();
extern void _ZN10S2405C3_nt3v65Ev();
extern void _ZN10S2405C3_nt3v66Ev();
extern void _ZN10S2405C3_nt3v67Ev();
extern void _ZN10S2405C3_nt3v68Ev();
extern void _ZN10S2405C3_nt3v69Ev();
extern void _ZN10S2405C3_nt3v70Ev();
extern void _ZN10S2405C3_nt3v71Ev();
extern void _ZN10S2405C3_nt3v72Ev();
extern void _ZN10S2405C3_nt3v73Ev();
extern void _ZN10S2405C3_nt3v74Ev();
extern void _ZN10S2405C3_nt3v75Ev();
extern void _ZN10S2405C3_nt3v76Ev();
extern void _ZN10S2405C3_nt3v77Ev();
extern void _ZN10S2405C3_nt3v78Ev();
extern void _ZN10S2405C3_nt3v79Ev();
extern void _ZN10S2405C3_nt3v80Ev();
extern void _ZN10S2405C3_nt3v81Ev();
extern void _ZN10S2405C3_nt3v82Ev();
extern void _ZN10S2405C3_nt3v83Ev();
extern void _ZN10S2405C3_nt3v84Ev();
extern void _ZN10S2405C3_nt3v85Ev();
extern void _ZN10S2405C3_nt3v86Ev();
extern void _ZN10S2405C3_nt3v87Ev();
extern void _ZN10S2405C3_nt3v88Ev();
extern void _ZN10S2405C3_nt3v89Ev();
extern void _ZN10S2405C3_nt3v90Ev();
extern void _ZN10S2405C3_nt3v91Ev();
extern void _ZN10S2405C3_nt3v92Ev();
extern void _ZN10S2405C3_nt3v93Ev();
extern void _ZN10S2405C3_nt3v94Ev();
extern void _ZN10S2405C3_nt3v95Ev();
extern void _ZN10S2405C3_nt3v96Ev();
extern void _ZN10S2405C3_nt3v97Ev();
extern void _ZN10S2405C3_nt3v98Ev();
extern void _ZN10S2405C3_nt3v99Ev();
extern void _ZN10S2405C3_nt4v100Ev();
extern void _ZN10S2405C3_nt4v101Ev();
extern void _ZN10S2405C3_nt4v102Ev();
extern void _ZN10S2405C3_nt4v103Ev();
extern void _ZN10S2405C3_nt4v104Ev();
extern void _ZN10S2405C3_nt4v105Ev();
extern void _ZN10S2405C3_nt4v106Ev();
extern void _ZN10S2405C2_nt4v107Ev();
extern void _ZN10S2405C2_nt4v108Ev();
extern void _ZN10S2405C2_nt4v109Ev();
extern void _ZN10S2405C2_nt4v110Ev();
extern void _ZN10S2405C2_nt4v111Ev();
extern void _ZN10S2405C2_nt4v112Ev();
extern void _ZN10S2405C2_nt4v113Ev();
extern void _ZN10S2405C2_nt4v114Ev();
extern void _ZN10S2405C2_nt4v115Ev();
extern void _ZN10S2405C2_nt4v116Ev();
extern void _ZN7S2405C12v1Ev();
extern void _ZN7S2405C12v2Ev();
extern void _ZN7S2405C12v3Ev();
extern void _ZN7S2405C12v4Ev();
extern void _ZN7S2405C12v5Ev();
static  VTBL_ENTRY vtc_S2405C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2405C1[0]),
  (VTBL_ENTRY)&_ZN7S2405C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2405C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2405C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S2405C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S2405C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN7S2405C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2405C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2405C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2405C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2405C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S2405C1[];
extern  VTBL_ENTRY _ZTV7S2405C1[];
Class_Descriptor cd_S2405C1 = {  "S2405C1", // class name
  bases_S2405C1, 3,
  &(vtc_S2405C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(864,656), // object size
  NSPAIRA(_ZTI7S2405C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2405C1),120, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C5  {
  void *s3572c5f0;
  short s3572c5f1;
  int s3572c5f2;
  void *s3572c5f3;
  long s3572c5f4[2];
  void  mf3572c5(); // _ZN7S3572C58mf3572c5Ev
};
//SIG(-1 S3572C5) C1{ m Fp Fs Fi Fp Fl[2]}


void  S3572C5 ::mf3572c5(){}

static void Test_S3572C5()
{
  {
    init_simple_test("S3572C5");
    S3572C5 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S3572C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3572C5)");
    check_field_offset(lv, s3572c5f0, 0, "S3572C5.s3572c5f0");
    check_field_offset(lv, s3572c5f1, ABISELECT(8,4), "S3572C5.s3572c5f1");
    check_field_offset(lv, s3572c5f2, ABISELECT(12,8), "S3572C5.s3572c5f2");
    check_field_offset(lv, s3572c5f3, ABISELECT(16,12), "S3572C5.s3572c5f3");
    check_field_offset(lv, s3572c5f4, ABISELECT(24,16), "S3572C5.s3572c5f4");
  }
}
static Arrange_To_Call_Me vS3572C5(Test_S3572C5, "S3572C5", ABISELECT(40,24));

#else // __cplusplus

extern VTBL_ENTRY _ZTI7S3572C5[];
VTBL_ENTRY *P__ZTI7S3572C5 = _ZTI7S3572C5; 
Class_Descriptor cd_S3572C5 = {  "S3572C5", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S3572C5),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  S3572C6_nt  {
};
//SIG(-1 S3572C6_nt) C1{}



//skip512 S3572C6_nt

#else // __cplusplus

Class_Descriptor cd_S3572C6_nt = {  "S3572C6_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  S3572C4  {
  ::S3572C5 s3572c4f0;
  ::S3572C6_nt s3572c4f1;
  void  mf3572c4(); // _ZN7S3572C48mf3572c4Ev
  virtual  ~S3572C4(); // _ZN7S3572C4D1Ev
  S3572C4(); // tgen
};
//SIG(-1 S3572C4) C1{ vd m FC2{ m Fp Fs Fi Fp Fl[2]} FC3{}}


void  S3572C4 ::mf3572c4(){}
 S3572C4 ::~S3572C4(){ note_dtor("S3572C4", this);}
S3572C4 ::S3572C4(){ note_ctor("S3572C4", this);} // tgen

static void Test_S3572C4()
{
  extern Class_Descriptor cd_S3572C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S3572C4, buf);
    S3572C4 *dp, &lv = *(dp=new (buf) S3572C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S3572C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3572C4)");
    check_field_offset(lv, s3572c4f0, ABISELECT(8,4), "S3572C4.s3572c4f0");
    check_field_offset(lv, s3572c4f1, ABISELECT(48,28), "S3572C4.s3572c4f1");
    test_class_info(&lv, &cd_S3572C4);
    dp->~S3572C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C4(Test_S3572C4, "S3572C4", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S3572C4C1Ev();
extern void _ZN7S3572C4D1Ev();
Name_Map name_map_S3572C4[] = {
  NSPAIR(_ZN7S3572C4C1Ev),
  NSPAIR(_ZN7S3572C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3572C4[];
extern void _ZN7S3572C4D1Ev();
extern void _ZN7S3572C4D0Ev();
static  VTBL_ENTRY vtc_S3572C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C4[0]),
  (VTBL_ENTRY)&_ZN7S3572C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C4D0Ev,
};
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
Class_Descriptor cd_S3572C4 = {  "S3572C4", // class name
  0,0,//no base classes
  &(vtc_S3572C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S3572C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3572C4),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  S3572C7  : virtual S3572C5 , virtual S3572C4 {
  unsigned char s3572c7f0:1;
  void *s3572c7f1[3];
  ~S3572C7(); // tgen
  S3572C7(); // tgen
};
//SIG(-1 S3572C7) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} Fc:1 Fp[3]}


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

static void Test_S3572C7()
{
  extern Class_Descriptor cd_S3572C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S3572C7, buf);
    S3572C7 *dp, &lv = *(dp=new (buf) S3572C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S3572C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3572C7)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(40,20), "S3572C7");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(80,44), "S3572C7");
    set_bf_and_test(lv, s3572c7f0, ABISELECT(8,4), 0, 1, 1, "S3572C7");
    check_field_offset(lv, s3572c7f1, ABISELECT(16,8), "S3572C7.s3572c7f1");
    test_class_info(&lv, &cd_S3572C7);
    dp->~S3572C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C7(Test_S3572C7, "S3572C7", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN7S3572C7C1Ev();
extern void _ZN7S3572C7D1Ev();
Name_Map name_map_S3572C7[] = {
  NSPAIR(_ZN7S3572C7C1Ev),
  NSPAIR(_ZN7S3572C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
static Base_Class bases_S3572C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(80,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3572C7[];
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S3572C7D1Ev,_ZThn44_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S3572C7D0Ev,_ZThn44_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C7[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S3572C7[];
static  VTT_ENTRY vtt_S3572C7[] = {
  {&(_ZTV7S3572C7[4]),  4,11},
  {&(_ZTV7S3572C7[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3572C7D0Ev,_ZThn44_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3572C7D1Ev,_ZThn44_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C7 = {  "S3572C7", // class name
  bases_S3572C7, 2,
  &(vtc_S3572C7[0]), // expected_vtbl_contents
  &(vtt_S3572C7[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI7S3572C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3572C7),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3572C7),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C8  : virtual S3572C5 , virtual S3572C4 , S3572C7 {
  char s3572c8f0;
  int s3572c8f1[3];
  void *s3572c8f2;
  short s3572c8f3:16;
  int s3572c8f4;
  void *s3572c8f5[2];
  int s3572c8f6;
  ::S3572C5 s3572c8f7[9];
  int s3572c8f8;
  virtual  ~S3572C8(); // _ZN7S3572C8D2Ev
  S3572C8(); // tgen
};
//SIG(-1 S3572C8) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC2[9] Fi}


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

static void Test_S3572C8()
{
  extern Class_Descriptor cd_S3572C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(71,85)];
    init_test(&cd_S3572C8, buf);
    S3572C8 *dp, &lv = *(dp=new (buf) S3572C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,336), "sizeof(S3572C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3572C8)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(464,280), "S3572C8");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(464,280), "S3572C8");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(504,304), "S3572C8");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(504,304), "S3572C8");
    check_base_class_offset(lv, (S3572C7*), 0, "S3572C8");
    check_field_offset(lv, s3572c8f0, ABISELECT(40,20), "S3572C8.s3572c8f0");
    check_field_offset(lv, s3572c8f1, ABISELECT(44,24), "S3572C8.s3572c8f1");
    check_field_offset(lv, s3572c8f2, ABISELECT(56,36), "S3572C8.s3572c8f2");
    set_bf_and_test(lv, s3572c8f3, ABISELECT(64,40), 0, 16, 1, "S3572C8");
    set_bf_and_test(lv, s3572c8f3, ABISELECT(64,40), 0, 16, hide_sll(1LL<<15), "S3572C8");
    check_field_offset(lv, s3572c8f4, ABISELECT(68,44), "S3572C8.s3572c8f4");
    check_field_offset(lv, s3572c8f5, ABISELECT(72,48), "S3572C8.s3572c8f5");
    check_field_offset(lv, s3572c8f6, ABISELECT(88,56), "S3572C8.s3572c8f6");
    check_field_offset(lv, s3572c8f7, ABISELECT(96,60), "S3572C8.s3572c8f7");
    check_field_offset(lv, s3572c8f8, ABISELECT(456,276), "S3572C8.s3572c8f8");
    test_class_info(&lv, &cd_S3572C8);
    dp->~S3572C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C8(Test_S3572C8, "S3572C8", ABISELECT(560,336));

#else // __cplusplus

extern void _ZN7S3572C8C1Ev();
extern void _ZN7S3572C8D2Ev();
Name_Map name_map_S3572C8[] = {
  NSPAIR(_ZN7S3572C8C1Ev),
  NSPAIR(_ZN7S3572C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
static Base_Class bases_S3572C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(464,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(504,304), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3572C8[];
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZThn504_N7S3572C8D1Ev,_ZThn304_N7S3572C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
extern void ABISELECT(_ZThn504_N7S3572C8D0Ev,_ZThn304_N7S3572C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C8[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S3572C8[];
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C8[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn504_N7S3572C7D1Ev,_ZThn304_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn504_N7S3572C7D0Ev,_ZThn304_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__7S3572C8[] = {
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
static  VTT_ENTRY vtt_S3572C8[] = {
  {&(_ZTV7S3572C8[4]),  4,11},
  {&(_tg__ZTV7S3572C7__7S3572C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__7S3572C8[3]),  3,5},
  {&(_ZTV7S3572C8[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3572C7D0Ev,_ZThn304_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3572C7D1Ev,_ZThn304_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3572C8D0Ev,_ZThn304_N7S3572C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3572C8D1Ev,_ZThn304_N7S3572C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C8 = {  "S3572C8", // class name
  bases_S3572C8, 3,
  &(vtc_S3572C8[0]), // expected_vtbl_contents
  &(vtt_S3572C8[0]), // expected_vtt_contents
  ABISELECT(560,336), // object size
  NSPAIRA(_ZTI7S3572C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3572C8),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3572C8),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C9  : virtual S3572C5 , S3572C4 , S3572C7 {
  char s3572c9f0;
  void *s3572c9f1[7];
  long double s3572c9f2;
  void *s3572c9f3[4];
  int s3572c9f4;
  char s3572c9f5;
  void *s3572c9f6;
  virtual  ~S3572C9(); // _ZN7S3572C9D2Ev
  virtual void  v1(); // _ZN7S3572C92v1Ev
  S3572C9(); // tgen
};
//SIG(-1 S3572C9) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} BC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}


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

static void Test_S3572C9()
{
  extern Class_Descriptor cd_S3572C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,46)];
    init_test(&cd_S3572C9, buf);
    S3572C9 *dp, &lv = *(dp=new (buf) S3572C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,180), "sizeof(S3572C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C9)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(224,124), "S3572C9");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(224,124), "S3572C9");
    /*is_ambiguous_... S3572C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S3572C9");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(264,148), "S3572C9");
    check_base_class_offset(lv, (S3572C7*), ABISELECT(56,32), "S3572C9");
    check_field_offset(lv, s3572c9f0, ABISELECT(96,52), "S3572C9.s3572c9f0");
    check_field_offset(lv, s3572c9f1, ABISELECT(104,56), "S3572C9.s3572c9f1");
    check_field_offset(lv, s3572c9f2, ABISELECT(160,84), "S3572C9.s3572c9f2");
    check_field_offset(lv, s3572c9f3, ABISELECT(176,96), "S3572C9.s3572c9f3");
    check_field_offset(lv, s3572c9f4, ABISELECT(208,112), "S3572C9.s3572c9f4");
    check_field_offset(lv, s3572c9f5, ABISELECT(212,116), "S3572C9.s3572c9f5");
    check_field_offset(lv, s3572c9f6, ABISELECT(216,120), "S3572C9.s3572c9f6");
    test_class_info(&lv, &cd_S3572C9);
    dp->~S3572C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C9(Test_S3572C9, "S3572C9", ABISELECT(320,180));

#else // __cplusplus

extern void _ZN7S3572C9C1Ev();
extern void _ZN7S3572C9D2Ev();
Name_Map name_map_S3572C9[] = {
  NSPAIR(_ZN7S3572C9C1Ev),
  NSPAIR(_ZN7S3572C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
static Base_Class bases_S3572C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(224,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
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3572C4,    ABISELECT(264,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3572C7,    ABISELECT(56,32), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3572C9[];
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn264_N7S3572C9D1Ev,_ZThn148_N7S3572C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
extern void ABISELECT(_ZThn264_N7S3572C9D0Ev,_ZThn148_N7S3572C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C9[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S3572C9[];
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S3572C7D1Ev,_ZThn116_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S3572C7D0Ev,_ZThn116_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__7S3572C9[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
static  VTT_ENTRY vtt_S3572C9[] = {
  {&(_ZTV7S3572C9[4]),  4,18},
  {&(_tg__ZTV7S3572C7__7S3572C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__7S3572C9[3]),  3,5},
  {&(_ZTV7S3572C9[11]),  11,18},
  {&(_ZTV7S3572C9[16]),  16,18},
};
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3572C7D0Ev,_ZThn116_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3572C7D1Ev,_ZThn116_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3572C9D0Ev,_ZThn148_N7S3572C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3572C9D1Ev,_ZThn148_N7S3572C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C9 = {  "S3572C9", // class name
  bases_S3572C9, 4,
  &(vtc_S3572C9[0]), // expected_vtbl_contents
  &(vtt_S3572C9[0]), // expected_vtt_contents
  ABISELECT(320,180), // object size
  NSPAIRA(_ZTI7S3572C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3572C9),18, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3572C9),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C3  : virtual S3572C4 , S3572C7 , virtual S3572C8 {
  ::S3572C9 s3572c3f0;
  virtual  ~S3572C3(); // _ZN7S3572C3D2Ev
  S3572C3(); // tgen
};
//SIG(-1 S3572C3) C1{ VBC2{ vd m FC3{ m Fp Fs Fi Fp Fl[2]} FC4{}} BC5{ VBC3 VBC2 Fc:1 Fp[3]} VBC6{ VBC3 VBC2 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC7{ VBC3 BC2 BC5 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}}


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

static void Test_S3572C3()
{
  extern Class_Descriptor cd_S3572C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,135)];
    init_test(&cd_S3572C3, buf);
    S3572C3 *dp, &lv = *(dp=new (buf) S3572C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,536), "sizeof(S3572C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C3)");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(368,200), "S3572C3");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(368,200), "S3572C3");
    check_base_class_offset(lv, (S3572C4*)(S3572C8*), ABISELECT(368,200), "S3572C3");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*), ABISELECT(368,200), "S3572C3");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(424,232), "S3572C3");
    check_base_class_offset(lv, (S3572C5*)(S3572C8*), ABISELECT(424,232), "S3572C3");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*), ABISELECT(424,232), "S3572C3");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*), 0, "S3572C3");
    check_base_class_offset(lv, (S3572C7*)(S3572C8*), ABISELECT(464,256), "S3572C3");
    check_base_class_offset(lv, (S3572C8*), ABISELECT(464,256), "S3572C3");
    check_field_offset(lv, s3572c3f0, ABISELECT(48,20), "S3572C3.s3572c3f0");
    test_class_info(&lv, &cd_S3572C3);
    dp->~S3572C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C3(Test_S3572C3, "S3572C3", ABISELECT(928,536));

#else // __cplusplus

extern void _ZN7S3572C3C1Ev();
extern void _ZN7S3572C3D2Ev();
Name_Map name_map_S3572C3[] = {
  NSPAIR(_ZN7S3572C3C1Ev),
  NSPAIR(_ZN7S3572C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
static Base_Class bases_S3572C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(368,200), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C5,    ABISELECT(424,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C7,    ABISELECT(464,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(464,256), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3572C3[];
extern void _ZN7S3572C3D1Ev();
extern void _ZN7S3572C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn368_N7S3572C3D1Ev,_ZThn200_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn368_N7S3572C3D0Ev,_ZThn200_N7S3572C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn464_N7S3572C3D1Ev,_ZThn256_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn464_N7S3572C3D0Ev,_ZThn256_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C3[] = {
  ABISELECT(464,256),
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&_ZN7S3572C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C3D0Ev,
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev),
  ABISELECT(-464,-256),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S3572C3[];
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C3[] = {
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn368_N7S3572C7D1Ev,_ZThn200_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn368_N7S3572C7D0Ev,_ZThn200_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__7S3572C3[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C8__A1__7S3572C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C8__A1__7S3572C3[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C8__7S3572C3[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
static  VTT_ENTRY vtt_S3572C3[] = {
  {&(_ZTV7S3572C3[5]),  5,19},
  {&(_tg__ZTV7S3572C7__7S3572C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__7S3572C3[3]),  3,5},
  {&(_ZTV7S3572C3[10]),  10,19},
  {&(_ZTV7S3572C3[17]),  17,19},
  {&(_tg__ZTV7S3572C8__7S3572C3[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C8__A1__7S3572C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C8__A1__7S3572C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C8__7S3572C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3572C3[];
extern  VTBL_ENTRY _ZTV7S3572C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C3[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3572C7D0Ev,_ZThn200_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3572C7D1Ev,_ZThn200_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3572C3D0Ev,_ZThn256_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3572C3D1Ev,_ZThn256_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3572C3D0Ev,_ZThn200_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3572C3D1Ev,_ZThn200_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C3 = {  "S3572C3", // class name
  bases_S3572C3, 5,
  &(vtc_S3572C3[0]), // expected_vtbl_contents
  &(vtt_S3572C3[0]), // expected_vtt_contents
  ABISELECT(928,536), // object size
  NSPAIRA(_ZTI7S3572C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3572C3),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3572C3),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C10  : virtual S3572C5 , virtual S3572C7 {
  short s3572c10f0;
  int s3572c10f1[2];
  char s3572c10f2;
  __tsi64 s3572c10f3;
  int s3572c10f4;
  ::S3572C6_nt s3572c10f5;
  void *s3572c10f6;
  char s3572c10f7;
  short s3572c10f8;
  ::S3572C4 s3572c10f9;
  int s3572c10f10[2];
  __tsi64 s3572c10f11;
  virtual  ~S3572C10(); // _ZN8S3572C10D2Ev
  S3572C10(); // tgen
};
//SIG(-1 S3572C10) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ VBC2 VBC4{ vd m FC2 FC5{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL}


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

static void Test_S3572C10()
{
  extern Class_Descriptor cd_S3572C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,43)];
    init_test(&cd_S3572C10, buf);
    S3572C10 *dp, &lv = *(dp=new (buf) S3572C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,168), "sizeof(S3572C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3572C10)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(128,92), "S3572C10");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(128,92), "S3572C10");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(208,136), "S3572C10");
    check_base_class_offset(lv, (S3572C7*), ABISELECT(168,116), "S3572C10");
    check_field_offset(lv, s3572c10f0, ABISELECT(8,4), "S3572C10.s3572c10f0");
    check_field_offset(lv, s3572c10f1, ABISELECT(12,8), "S3572C10.s3572c10f1");
    check_field_offset(lv, s3572c10f2, ABISELECT(20,16), "S3572C10.s3572c10f2");
    check_field_offset(lv, s3572c10f3, ABISELECT(24,20), "S3572C10.s3572c10f3");
    check_field_offset(lv, s3572c10f4, ABISELECT(32,28), "S3572C10.s3572c10f4");
    check_field_offset(lv, s3572c10f5, ABISELECT(36,32), "S3572C10.s3572c10f5");
    check_field_offset(lv, s3572c10f6, ABISELECT(40,36), "S3572C10.s3572c10f6");
    check_field_offset(lv, s3572c10f7, ABISELECT(48,40), "S3572C10.s3572c10f7");
    check_field_offset(lv, s3572c10f8, ABISELECT(50,42), "S3572C10.s3572c10f8");
    check_field_offset(lv, s3572c10f9, ABISELECT(56,44), "S3572C10.s3572c10f9");
    check_field_offset(lv, s3572c10f10, ABISELECT(112,76), "S3572C10.s3572c10f10");
    check_field_offset(lv, s3572c10f11, ABISELECT(120,84), "S3572C10.s3572c10f11");
    test_class_info(&lv, &cd_S3572C10);
    dp->~S3572C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C10(Test_S3572C10, "S3572C10", ABISELECT(264,168));

#else // __cplusplus

extern void _ZN8S3572C10C1Ev();
extern void _ZN8S3572C10D2Ev();
Name_Map name_map_S3572C10[] = {
  NSPAIR(_ZN8S3572C10C1Ev),
  NSPAIR(_ZN8S3572C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
static Base_Class bases_S3572C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(208,136), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C7,    ABISELECT(168,116), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C10[];
extern void _ZN8S3572C10D1Ev();
extern void _ZN8S3572C10D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S3572C10D1Ev,_ZThn116_N8S3572C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S3572C10D0Ev,_ZThn116_N8S3572C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S3572C10D1Ev,_ZThn136_N8S3572C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S3572C10D0Ev,_ZThn136_N8S3572C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C10[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&_ZN8S3572C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C10D0Ev,
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C10[];
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C10[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S3572C7D1Ev,_ZThn20_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn40_N7S3572C7D0Ev,_ZThn20_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__8S3572C10[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
static  VTT_ENTRY vtt_S3572C10[] = {
  {&(_ZTV8S3572C10[5]),  5,19},
  {&(_ZTV8S3572C10[12]),  12,19},
  {&(_ZTV8S3572C10[17]),  17,19},
  {&(_tg__ZTV7S3572C7__8S3572C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__8S3572C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C10[];
extern  VTBL_ENTRY _ZTV8S3572C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C10[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3572C7D0Ev,_ZThn20_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3572C7D1Ev,_ZThn20_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3572C10D0Ev,_ZThn136_N8S3572C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3572C10D1Ev,_ZThn136_N8S3572C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3572C10D0Ev,_ZThn116_N8S3572C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3572C10D1Ev,_ZThn116_N8S3572C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C10 = {  "S3572C10", // class name
  bases_S3572C10, 3,
  &(vtc_S3572C10[0]), // expected_vtbl_contents
  &(vtt_S3572C10[0]), // expected_vtt_contents
  ABISELECT(264,168), // object size
  NSPAIRA(_ZTI8S3572C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3572C10),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C10),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C2  : S3572C3 , virtual S3572C10 , virtual S3572C9 {
  int s3572c2f0;
  __tsi64 s3572c2f1[3];
  int s3572c2f2[9];
  void *s3572c2f3;
  int s3572c2f4;
  __tsi64 s3572c2f5;
  int s3572c2f6[2];
  __tsi64 s3572c2f7;
  int s3572c2f8;
  void *s3572c2f9[2];
  virtual  ~S3572C2(); // _ZN7S3572C2D2Ev
  S3572C2(); // tgen
};
//SIG(-1 S3572C2) C1{ BC2{ VBC3{ vd m FC4{ m Fp Fs Fi Fp Fl[2]} FC5{}} BC6{ VBC4 VBC3 Fc:1 Fp[3]} VBC7{ VBC4 VBC3 BC6 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC8{ VBC4 BC3 BC6 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} VBC9{ VBC4 VBC6 vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC3 Fi[2] FL} VBC8 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}


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

static void Test_S3572C2()
{
  extern Class_Descriptor cd_S3572C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(92,221)];
    init_test(&cd_S3572C2, buf);
    S3572C2 *dp, &lv = *(dp=new (buf) S3572C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1456,880), "sizeof(S3572C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C2)");
    check_base_class_offset(lv, (S3572C4*)(S3572C3*), ABISELECT(504,308), "S3572C2");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C3*), ABISELECT(504,308), "S3572C2");
    check_base_class_offset(lv, (S3572C4*)(S3572C8*), ABISELECT(504,308), "S3572C2");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*), ABISELECT(504,308), "S3572C2");
    /*is_ambiguous_... S3572C2::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(504,308), "S3572C2");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(504,308), "S3572C2");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C3*), ABISELECT(560,340), "S3572C2");
    check_base_class_offset(lv, (S3572C5*)(S3572C8*), ABISELECT(560,340), "S3572C2");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*), ABISELECT(560,340), "S3572C2");
    check_base_class_offset(lv, (S3572C5*)(S3572C10*), ABISELECT(560,340), "S3572C2");
    /*is_ambiguous_... S3572C2::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(560,340), "S3572C2");
    check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(560,340), "S3572C2");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(560,340), "S3572C2");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C3*), 0, "S3572C2");
    check_base_class_offset(lv, (S3572C7*)(S3572C8*), ABISELECT(600,364), "S3572C2");
    check_base_class_offset(lv, (S3572C8*)(S3572C3*), ABISELECT(600,364), "S3572C2");
    check_base_class_offset(lv, (S3572C3*), 0, "S3572C2");
    check_base_class_offset(lv, (S3572C7*)(S3572C10*), ABISELECT(1192,736), "S3572C2");
    check_base_class_offset(lv, (S3572C10*), ABISELECT(1064,644), "S3572C2");
    /*is_ambiguous_... S3572C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(1232,756), "S3572C2");
    check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(1288,788), "S3572C2");
    check_base_class_offset(lv, (S3572C9*), ABISELECT(1232,756), "S3572C2");
    check_field_offset(lv, s3572c2f0, ABISELECT(368,200), "S3572C2.s3572c2f0");
    check_field_offset(lv, s3572c2f1, ABISELECT(376,204), "S3572C2.s3572c2f1");
    check_field_offset(lv, s3572c2f2, ABISELECT(400,228), "S3572C2.s3572c2f2");
    check_field_offset(lv, s3572c2f3, ABISELECT(440,264), "S3572C2.s3572c2f3");
    check_field_offset(lv, s3572c2f4, ABISELECT(448,268), "S3572C2.s3572c2f4");
    check_field_offset(lv, s3572c2f5, ABISELECT(456,272), "S3572C2.s3572c2f5");
    check_field_offset(lv, s3572c2f6, ABISELECT(464,280), "S3572C2.s3572c2f6");
    check_field_offset(lv, s3572c2f7, ABISELECT(472,288), "S3572C2.s3572c2f7");
    check_field_offset(lv, s3572c2f8, ABISELECT(480,296), "S3572C2.s3572c2f8");
    check_field_offset(lv, s3572c2f9, ABISELECT(488,300), "S3572C2.s3572c2f9");
    test_class_info(&lv, &cd_S3572C2);
    dp->~S3572C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C2(Test_S3572C2, "S3572C2", ABISELECT(1456,880));

#else // __cplusplus

extern void _ZN7S3572C2C1Ev();
extern void _ZN7S3572C2D2Ev();
Name_Map name_map_S3572C2[] = {
  NSPAIR(_ZN7S3572C2C1Ev),
  NSPAIR(_ZN7S3572C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
extern Class_Descriptor cd_S3572C3;
extern VTBL_ENTRY _ZTI7S3572C3[];
extern  VTBL_ENTRY _ZTV7S3572C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C3[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C10;
extern VTBL_ENTRY _ZTI8S3572C10[];
extern  VTBL_ENTRY _ZTV8S3572C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
static Base_Class bases_S3572C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(504,308), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C5,    ABISELECT(560,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(600,364), //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
    4, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(600,364), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3572C3,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C7,    ABISELECT(1192,736), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3572C10,    ABISELECT(1064,644), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(1232,756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(1288,788), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(1232,756), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3572C2[];
extern void _ZN7S3572C2D1Ev();
extern void _ZN7S3572C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3572C2D1Ev,_ZTv0_n12_N7S3572C2D1Ev)();
extern void ABISELECT(_ZThn504_N7S3572C2D1Ev,_ZThn308_N7S3572C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C2D0Ev,_ZTv0_n12_N7S3572C2D0Ev)();
extern void ABISELECT(_ZThn504_N7S3572C2D0Ev,_ZThn308_N7S3572C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev)();
extern void ABISELECT(_ZThn600_N7S3572C2D1Ev,_ZThn364_N7S3572C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev)();
extern void ABISELECT(_ZThn600_N7S3572C2D0Ev,_ZThn364_N7S3572C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3572C2D1Ev,_ZTv0_n24_N7S3572C2D1Ev)();
extern void ABISELECT(_ZThn1064_N7S3572C2D1Ev,_ZThn644_N7S3572C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3572C2D0Ev,_ZTv0_n24_N7S3572C2D0Ev)();
extern void ABISELECT(_ZThn1064_N7S3572C2D0Ev,_ZThn644_N7S3572C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev)();
extern void ABISELECT(_ZThn1192_N7S3572C2D1Ev,_ZThn736_N7S3572C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev)();
extern void ABISELECT(_ZThn1192_N7S3572C2D0Ev,_ZThn736_N7S3572C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev)();
extern void ABISELECT(_ZThn1232_N7S3572C2D1Ev,_ZThn756_N7S3572C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev)();
extern void ABISELECT(_ZThn1232_N7S3572C2D0Ev,_ZThn756_N7S3572C2D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N7S3572C2D1Ev,_ZTvn32_n20_N7S3572C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S3572C2D0Ev,_ZTvn32_n20_N7S3572C2D0Ev)();
static  VTBL_ENTRY vtc_S3572C2[] = {
  ABISELECT(1232,756),
  ABISELECT(1192,736),
  ABISELECT(1064,644),
  ABISELECT(600,364),
  ABISELECT(504,308),
  ABISELECT(560,340),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&_ZN7S3572C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C2D0Ev,
  ABISELECT(-504,-308),
  ABISELECT(-504,-308),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C2D1Ev,_ZTv0_n12_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C2D0Ev,_ZTv0_n12_N7S3572C2D0Ev),
  ABISELECT(-600,-364),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-600,-364),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev),
  ABISELECT(-1064,-644),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(-1064,-644),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C2D1Ev,_ZTv0_n24_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C2D0Ev,_ZTv0_n24_N7S3572C2D0Ev),
  ABISELECT(-1192,-736),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-1192,-736),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev),
  0,
  ABISELECT(-1232,-756),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(-1232,-756),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-1288,-788),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3572C2D1Ev,_ZTvn32_n20_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3572C2D0Ev,_ZTvn32_n20_N7S3572C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S3572C2[];
extern void _ZN7S3572C3D1Ev();
extern void _ZN7S3572C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C3__7S3572C2[] = {
  ABISELECT(600,364),
  ABISELECT(504,308),
  ABISELECT(560,340),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&_ZN7S3572C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C3D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C3__7S3572C2[] = {
  ABISELECT(504,308),
  ABISELECT(560,340),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn504_N7S3572C7D1Ev,_ZThn308_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn504_N7S3572C7D0Ev,_ZThn308_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C3__7S3572C2[] = {
  ABISELECT(-504,-308),
  ABISELECT(-504,-308),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn504_N7S3572C3D1Ev,_ZThn308_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn504_N7S3572C3D0Ev,_ZThn308_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C3__7S3572C2[] = {
  ABISELECT(-504,-308),
  ABISELECT(-504,-308),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn600_N7S3572C3D1Ev,_ZThn364_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn600_N7S3572C3D0Ev,_ZThn364_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C3__7S3572C2[] = {
  ABISELECT(-600,-364),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-600,-364),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C8__A1__7S3572C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C8__A1__7S3572C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C8__7S3572C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
extern void _ZN8S3572C10D1Ev();
extern void _ZN8S3572C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C10__7S3572C2[] = {
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&_ZN8S3572C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S3572C10D1Ev,_ZThn92_N8S3572C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S3572C10D0Ev,_ZThn92_N8S3572C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C10__7S3572C2[] = {
  ABISELECT(-128,-92),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C10__7S3572C2[] = {
  ABISELECT(560,336),
  ABISELECT(560,336),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev),
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__A2__7S3572C2[] = {
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__A2__7S3572C2[] = {
  ABISELECT(688,428),
  ABISELECT(688,428),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__7S3572C2[] = {
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__7S3572C2[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__A3__7S3572C2[] = {
  ABISELECT(784,480),
  ABISELECT(784,480),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__7S3572C2[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__7S3572C2[] = {
  ABISELECT(728,448),
  ABISELECT(728,448),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
static  VTT_ENTRY vtt_S3572C2[] = {
  {&(_ZTV7S3572C2[8]),  8,52},
  {&(_tg__ZTV7S3572C3__7S3572C2[5]),  5,7},
  {&(_tg__ZTV7S3572C77S3572C3__7S3572C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C3__7S3572C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C3__7S3572C2[3]),  3,5},
  {&(_tg__ZTV7S3572C8__7S3572C3__7S3572C2[5]),  5,7},
  {&(_ZTV7S3572C2[13]),  13,52},
  {&(_ZTV7S3572C2[20]),  20,52},
  {&(_ZTV7S3572C2[28]),  28,52},
  {&(_ZTV7S3572C2[35]),  35,52},
  {&(_ZTV7S3572C2[43]),  43,52},
  {&(_ZTV7S3572C2[50]),  50,52},
  {&(_tg__ZTV7S3572C8__7S3572C2[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C8__A1__7S3572C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C8__A1__7S3572C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C8__7S3572C2[3]),  3,5},
  {&(_tg__ZTV8S3572C10__7S3572C2[5]),  5,7},
  {&(_tg__ZTV7S3572C7__8S3572C10__7S3572C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C10__7S3572C2[3]),  3,5},
  {&(_tg__ZTV7S3572C7__A2__7S3572C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__A2__7S3572C2[3]),  3,5},
  {&(_tg__ZTV7S3572C9__7S3572C2[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A3__7S3572C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__A3__7S3572C2[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__7S3572C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__7S3572C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3572C2[];
extern  VTBL_ENTRY _ZTV7S3572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C2[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3572C10D0Ev,_ZThn92_N8S3572C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3572C10D1Ev,_ZThn92_N8S3572C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn600_N7S3572C3D0Ev,_ZThn364_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn600_N7S3572C3D1Ev,_ZThn364_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3572C3D0Ev,_ZThn308_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3572C3D1Ev,_ZThn308_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3572C7D0Ev,_ZThn308_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3572C7D1Ev,_ZThn308_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3572C2D0Ev,_ZTv0_n24_N7S3572C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N7S3572C2D0Ev,_ZThn644_N7S3572C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3572C2D1Ev,_ZTv0_n24_N7S3572C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N7S3572C2D1Ev,_ZThn644_N7S3572C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N7S3572C2D0Ev,_ZThn756_N7S3572C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N7S3572C2D0Ev,_ZThn736_N7S3572C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn600_N7S3572C2D0Ev,_ZThn364_N7S3572C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N7S3572C2D1Ev,_ZThn756_N7S3572C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N7S3572C2D1Ev,_ZThn736_N7S3572C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn600_N7S3572C2D1Ev,_ZThn364_N7S3572C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C2D0Ev,_ZTv0_n12_N7S3572C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3572C2D0Ev,_ZThn308_N7S3572C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C2D1Ev,_ZTv0_n12_N7S3572C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3572C2D1Ev,_ZThn308_N7S3572C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C2 = {  "S3572C2", // class name
  bases_S3572C2, 11,
  &(vtc_S3572C2[0]), // expected_vtbl_contents
  &(vtt_S3572C2[0]), // expected_vtt_contents
  ABISELECT(1456,880), // object size
  NSPAIRA(_ZTI7S3572C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3572C2),52, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3572C2),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C14  : virtual S3572C10 , S3572C4 , S3572C3 {
  int s3572c14f0[6];
  void *s3572c14f1[8];
  virtual  ~S3572C14(); // _ZN8S3572C14D2Ev
  S3572C14(); // tgen
};
//SIG(-1 S3572C14) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ VBC3 VBC5{ vd m FC3 FC6{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} BC5 BC7{ VBC5 BC4 VBC8{ VBC3 VBC5 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC9{ VBC3 BC5 BC4 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]}


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

static void Test_S3572C14()
{
  extern Class_Descriptor cd_S3572C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(79,185)];
    init_test(&cd_S3572C14, buf);
    S3572C14 *dp, &lv = *(dp=new (buf) S3572C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1248,736), "sizeof(S3572C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C14)");
    check_base_class_offset(lv, (S3572C5*)(S3572C10*), ABISELECT(648,380), "S3572C14");
    /*is_ambiguous_... S3572C14::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(648,380), "S3572C14");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C3*), ABISELECT(648,380), "S3572C14");
    check_base_class_offset(lv, (S3572C5*)(S3572C8*), ABISELECT(648,380), "S3572C14");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*), ABISELECT(648,380), "S3572C14");
    /*is_ambiguous_... S3572C14::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(728,424), "S3572C14");
    check_base_class_offset(lv, (S3572C4*)(S3572C3*), ABISELECT(728,424), "S3572C14");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C3*), ABISELECT(728,424), "S3572C14");
    check_base_class_offset(lv, (S3572C4*)(S3572C8*), ABISELECT(728,424), "S3572C14");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*), ABISELECT(728,424), "S3572C14");
    check_base_class_offset(lv, (S3572C7*)(S3572C10*), ABISELECT(688,404), "S3572C14");
    check_base_class_offset(lv, (S3572C10*), ABISELECT(520,288), "S3572C14");
    /*is_ambiguous_... S3572C14::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S3572C14");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C3*), ABISELECT(64,32), "S3572C14");
    check_base_class_offset(lv, (S3572C7*)(S3572C8*), ABISELECT(784,456), "S3572C14");
    check_base_class_offset(lv, (S3572C8*)(S3572C3*), ABISELECT(784,456), "S3572C14");
    check_base_class_offset(lv, (S3572C3*), ABISELECT(64,32), "S3572C14");
    check_field_offset(lv, s3572c14f0, ABISELECT(432,232), "S3572C14.s3572c14f0");
    check_field_offset(lv, s3572c14f1, ABISELECT(456,256), "S3572C14.s3572c14f1");
    test_class_info(&lv, &cd_S3572C14);
    dp->~S3572C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C14(Test_S3572C14, "S3572C14", ABISELECT(1248,736));

#else // __cplusplus

extern void _ZN8S3572C14C1Ev();
extern void _ZN8S3572C14D2Ev();
Name_Map name_map_S3572C14[] = {
  NSPAIR(_ZN8S3572C14C1Ev),
  NSPAIR(_ZN8S3572C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C10;
extern VTBL_ENTRY _ZTI8S3572C10[];
extern  VTBL_ENTRY _ZTV8S3572C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
extern Class_Descriptor cd_S3572C3;
extern VTBL_ENTRY _ZTI7S3572C3[];
extern  VTBL_ENTRY _ZTV7S3572C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C3[];
static Base_Class bases_S3572C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(648,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(728,424), //bcp->offset
    31, //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
    2, //immediately_derived
  0, 1},
  {&cd_S3572C7,    ABISELECT(688,404), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3572C10,    ABISELECT(520,288), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C7,    ABISELECT(64,32), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(784,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(784,456), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3572C3,    ABISELECT(64,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C14[];
extern void _ZN8S3572C14D1Ev();
extern void _ZN8S3572C14D0Ev();
extern void ABISELECT(_ZThn64_N8S3572C14D1Ev,_ZThn32_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C14D0Ev,_ZThn32_N8S3572C14D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn520_N8S3572C14D1Ev,_ZThn288_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn520_N8S3572C14D0Ev,_ZThn288_N8S3572C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn688_N8S3572C14D1Ev,_ZThn404_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn688_N8S3572C14D0Ev,_ZThn404_N8S3572C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn728_N8S3572C14D1Ev,_ZThn424_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn728_N8S3572C14D0Ev,_ZThn424_N8S3572C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn784_N8S3572C14D1Ev,_ZThn456_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn784_N8S3572C14D0Ev,_ZThn456_N8S3572C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C14[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&_ZN8S3572C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C14D0Ev,
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C14D1Ev,_ZThn32_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C14D0Ev,_ZThn32_N8S3572C14D0Ev),
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev),
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev),
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev),
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C14[];
extern void _ZN7S3572C3D1Ev();
extern void _ZN7S3572C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C3__8S3572C14[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&_ZN7S3572C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C3D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C3__A1__8S3572C14[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn664_N7S3572C7D1Ev,_ZThn392_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn664_N7S3572C7D0Ev,_ZThn392_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C3__A1__8S3572C14[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn664_N7S3572C3D1Ev,_ZThn392_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn664_N7S3572C3D0Ev,_ZThn392_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C3__8S3572C14[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn720_N7S3572C3D1Ev,_ZThn424_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn720_N7S3572C3D0Ev,_ZThn424_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C3__8S3572C14[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev),
};
extern void _ZN8S3572C10D1Ev();
extern void _ZN8S3572C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C14[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&_ZN8S3572C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S3572C10D1Ev,_ZThn116_N8S3572C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S3572C10D0Ev,_ZThn116_N8S3572C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C10__8S3572C14[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S3572C10D1Ev,_ZThn136_N8S3572C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S3572C10D0Ev,_ZThn136_N8S3572C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C10__8S3572C14[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev),
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C14[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S3572C7D1Ev,_ZThn20_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn40_N7S3572C7D0Ev,_ZThn20_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__8S3572C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C8__A2__8S3572C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C8__A2__8S3572C14[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C8__8S3572C14[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
static  VTT_ENTRY vtt_S3572C14[] = {
  {&(_ZTV8S3572C14[7]),  7,43},
  {&(_tg__ZTV7S3572C3__8S3572C14[5]),  5,7},
  {&(_tg__ZTV7S3572C77S3572C3__A1__8S3572C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C3__A1__8S3572C14[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C3__8S3572C14[3]),  3,5},
  {&(_tg__ZTV7S3572C8__7S3572C3__8S3572C14[5]),  5,7},
  {&(_ZTV8S3572C14[22]),  22,43},
  {&(_ZTV8S3572C14[29]),  29,43},
  {&(_ZTV8S3572C14[34]),  34,43},
  {&(_ZTV8S3572C14[14]),  14,43},
  {&(_ZTV8S3572C14[41]),  41,43},
  {&(_tg__ZTV8S3572C10__8S3572C14[5]),  5,7},
  {&(_tg__ZTV7S3572C7__8S3572C10__8S3572C14[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C10__8S3572C14[3]),  3,5},
  {&(_tg__ZTV7S3572C7__8S3572C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__8S3572C14[3]),  3,5},
  {&(_tg__ZTV7S3572C8__8S3572C14[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C8__A2__8S3572C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C8__A2__8S3572C14[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C8__8S3572C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C14[];
extern  VTBL_ENTRY _ZTV8S3572C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C14[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3572C10D0Ev,_ZThn136_N8S3572C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3572C10D1Ev,_ZThn136_N8S3572C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3572C10D0Ev,_ZThn116_N8S3572C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3572C10D1Ev,_ZThn116_N8S3572C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S3572C3D0Ev,_ZThn424_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S3572C3D1Ev,_ZThn424_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3572C3D0Ev,_ZThn392_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3572C3D1Ev,_ZThn392_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3572C7D0Ev,_ZThn20_N7S3572C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3572C7D0Ev,_ZThn392_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3572C7D1Ev,_ZThn20_N7S3572C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3572C7D1Ev,_ZThn392_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S3572C14D0Ev,_ZThn424_N8S3572C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S3572C14D1Ev,_ZThn424_N8S3572C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S3572C14D0Ev,_ZThn456_N8S3572C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S3572C14D0Ev,_ZThn404_N8S3572C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S3572C14D1Ev,_ZThn456_N8S3572C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S3572C14D1Ev,_ZThn404_N8S3572C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3572C14D0Ev,_ZThn288_N8S3572C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3572C14D1Ev,_ZThn288_N8S3572C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C14 = {  "S3572C14", // class name
  bases_S3572C14, 9,
  &(vtc_S3572C14[0]), // expected_vtbl_contents
  &(vtt_S3572C14[0]), // expected_vtt_contents
  ABISELECT(1248,736), // object size
  NSPAIRA(_ZTI8S3572C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3572C14),43, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C14),20, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C15  : virtual S3572C9 {
  int s3572c15f0;
  void *s3572c15f1;
  int s3572c15f2:2;
  long double s3572c15f3;
  void *s3572c15f4;
  virtual  ~S3572C15(); // _ZN8S3572C15D2Ev
  virtual void  v2(); // _ZN8S3572C152v2Ev
  S3572C15(); // tgen
};
//SIG(-1 S3572C15) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} BC4{ vd m FC3 FC5{}} BC6{ VBC3 VBC4 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v1 Fi Fp Fi:2 FD Fp}


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

static void Test_S3572C15()
{
  extern Class_Descriptor cd_S3572C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,54)];
    init_test(&cd_S3572C15, buf);
    S3572C15 *dp, &lv = *(dp=new (buf) S3572C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,212), "sizeof(S3572C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C15)");
    check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(288,156), "S3572C15");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(288,156), "S3572C15");
    /*is_ambiguous_... S3572C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(64,32), "S3572C15");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(328,180), "S3572C15");
    check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(120,64), "S3572C15");
    check_base_class_offset(lv, (S3572C9*), ABISELECT(64,32), "S3572C15");
    check_field_offset(lv, s3572c15f0, ABISELECT(8,4), "S3572C15.s3572c15f0");
    check_field_offset(lv, s3572c15f1, ABISELECT(16,8), "S3572C15.s3572c15f1");
    set_bf_and_test(lv, s3572c15f2, ABISELECT(24,12), 0, 2, 1, "S3572C15");
    set_bf_and_test(lv, s3572c15f2, ABISELECT(24,12), 0, 2, hide_sll(1LL<<1), "S3572C15");
    check_field_offset(lv, s3572c15f3, ABISELECT(32,16), "S3572C15.s3572c15f3");
    check_field_offset(lv, s3572c15f4, ABISELECT(48,28), "S3572C15.s3572c15f4");
    test_class_info(&lv, &cd_S3572C15);
    dp->~S3572C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C15(Test_S3572C15, "S3572C15", ABISELECT(384,212));

#else // __cplusplus

extern void _ZN8S3572C15C1Ev();
extern void _ZN8S3572C15D2Ev();
Name_Map name_map_S3572C15[] = {
  NSPAIR(_ZN8S3572C15C1Ev),
  NSPAIR(_ZN8S3572C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
static Base_Class bases_S3572C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(288,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_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(328,180), //bcp->offset
    23, //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_S3572C7,    ABISELECT(120,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(64,32), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C15[];
extern void _ZN8S3572C15D1Ev();
extern void _ZN8S3572C15D0Ev();
extern void _ZN8S3572C152v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C15D1Ev,_ZThn32_N8S3572C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev)();
extern void ABISELECT(_ZThn64_N8S3572C15D0Ev,_ZThn32_N8S3572C15D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev)();
extern void ABISELECT(_ZThn328_N8S3572C15D1Ev,_ZThn180_N8S3572C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev)();
extern void ABISELECT(_ZThn328_N8S3572C15D0Ev,_ZThn180_N8S3572C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C15[] = {
  ABISELECT(328,180),
  ABISELECT(288,156),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&_ZN8S3572C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  0,
  ABISELECT(-64,-32),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev),
  ABISELECT(-328,-180),
  ABISELECT(-328,-180),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C15[];
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C15[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C15[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S3572C7D1Ev,_ZThn116_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S3572C7D0Ev,_ZThn116_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__8S3572C15[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__8S3572C15[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn264_N7S3572C9D1Ev,_ZThn148_N7S3572C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
extern void ABISELECT(_ZThn264_N7S3572C9D0Ev,_ZThn148_N7S3572C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__8S3572C15[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
static  VTT_ENTRY vtt_S3572C15[] = {
  {&(_ZTV8S3572C15[5]),  5,28},
  {&(_ZTV8S3572C15[14]),  14,28},
  {&(_ZTV8S3572C15[21]),  21,28},
  {&(_ZTV8S3572C15[26]),  26,28},
  {&(_tg__ZTV7S3572C9__8S3572C15[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C15[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__8S3572C15[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__8S3572C15[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__8S3572C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C15[];
extern  VTBL_ENTRY _ZTV8S3572C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C15[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3572C9D0Ev,_ZThn148_N7S3572C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3572C9D1Ev,_ZThn148_N7S3572C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3572C7D0Ev,_ZThn116_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3572C7D1Ev,_ZThn116_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S3572C15D0Ev,_ZThn180_N8S3572C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S3572C15D1Ev,_ZThn180_N8S3572C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3572C15D0Ev,_ZThn32_N8S3572C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3572C15D1Ev,_ZThn32_N8S3572C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C15 = {  "S3572C15", // class name
  bases_S3572C15, 5,
  &(vtc_S3572C15[0]), // expected_vtbl_contents
  &(vtt_S3572C15[0]), // expected_vtt_contents
  ABISELECT(384,212), // object size
  NSPAIRA(_ZTI8S3572C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S3572C15),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C15),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C16  : S3572C7 , virtual S3572C9 {
  int s3572c16f0;
  void *s3572c16f1;
  virtual  ~S3572C16(); // _ZN8S3572C16D2Ev
  S3572C16(); // tgen
};
//SIG(-1 S3572C16) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} VBC6{ VBC3 BC4 BC2 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp}


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

static void Test_S3572C16()
{
  extern Class_Descriptor cd_S3572C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,53)];
    init_test(&cd_S3572C16, buf);
    S3572C16 *dp, &lv = *(dp=new (buf) S3572C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,208), "sizeof(S3572C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C16)");
    /*is_ambiguous_... S3572C16::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(56,28), "S3572C16");
    check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(56,28), "S3572C16");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(56,28), "S3572C16");
    /*is_ambiguous_... S3572C16::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(96,52), "S3572C16");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(96,52), "S3572C16");
    /*is_ambiguous_... S3572C16::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*), 0, "S3572C16");
    /*is_ambiguous_... S3572C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(160,84), "S3572C16");
    check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(216,116), "S3572C16");
    check_base_class_offset(lv, (S3572C9*), ABISELECT(160,84), "S3572C16");
    check_field_offset(lv, s3572c16f0, ABISELECT(40,20), "S3572C16.s3572c16f0");
    check_field_offset(lv, s3572c16f1, ABISELECT(48,24), "S3572C16.s3572c16f1");
    test_class_info(&lv, &cd_S3572C16);
    dp->~S3572C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C16(Test_S3572C16, "S3572C16", ABISELECT(384,208));

#else // __cplusplus

extern void _ZN8S3572C16C1Ev();
extern void _ZN8S3572C16D2Ev();
Name_Map name_map_S3572C16[] = {
  NSPAIR(_ZN8S3572C16C1Ev),
  NSPAIR(_ZN8S3572C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
static Base_Class bases_S3572C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(96,52), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C4,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(216,116), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(160,84), //bcp->offset
    12, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C16[];
extern void _ZN8S3572C16D1Ev();
extern void _ZN8S3572C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev)();
extern void ABISELECT(_ZThn96_N8S3572C16D1Ev,_ZThn52_N8S3572C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev)();
extern void ABISELECT(_ZThn96_N8S3572C16D0Ev,_ZThn52_N8S3572C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZThn160_N8S3572C16D1Ev,_ZThn84_N8S3572C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev)();
extern void ABISELECT(_ZThn160_N8S3572C16D0Ev,_ZThn84_N8S3572C16D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev)();
static  VTBL_ENTRY vtc_S3572C16[] = {
  ABISELECT(160,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&_ZN8S3572C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C16D0Ev,
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev),
  0,
  ABISELECT(-160,-84),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C16[];
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C16[] = {
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S3572C7D1Ev,_ZThn52_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S3572C7D0Ev,_ZThn52_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__8S3572C16[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C16[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C16[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__A1__8S3572C16[] = {
  ABISELECT(120,64),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__8S3572C16[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__8S3572C16[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
static  VTT_ENTRY vtt_S3572C16[] = {
  {&(_ZTV8S3572C16[5]),  5,27},
  {&(_tg__ZTV7S3572C7__8S3572C16[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__8S3572C16[3]),  3,5},
  {&(_ZTV8S3572C16[10]),  10,27},
  {&(_ZTV8S3572C16[18]),  18,27},
  {&(_ZTV8S3572C16[25]),  25,27},
  {&(_tg__ZTV7S3572C9__8S3572C16[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C16[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__A1__8S3572C16[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__8S3572C16[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__8S3572C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C16[];
extern  VTBL_ENTRY _ZTV8S3572C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C16[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3572C7D0Ev,_ZThn52_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3572C7D1Ev,_ZThn52_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3572C16D0Ev,_ZThn84_N8S3572C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3572C16D1Ev,_ZThn84_N8S3572C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3572C16D0Ev,_ZThn52_N8S3572C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3572C16D1Ev,_ZThn52_N8S3572C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C16 = {  "S3572C16", // class name
  bases_S3572C16, 6,
  &(vtc_S3572C16[0]), // expected_vtbl_contents
  &(vtt_S3572C16[0]), // expected_vtt_contents
  ABISELECT(384,208), // object size
  NSPAIRA(_ZTI8S3572C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3572C16),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C16),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C13  : virtual S3572C14 , S3572C15 , S3572C9 {
  int s3572c13f0;
  __tsi64 s3572c13f1;
  int s3572c13f2:6;
  ::S3572C16 s3572c13f3;
  long s3572c13f4;
  int s3572c13f5;
  void *s3572c13f6;
  ::S3572C2 s3572c13f7;
  virtual  ~S3572C13(); // _ZN8S3572C13D2Ev
  virtual void  v3(); // _ZN8S3572C132v3Ev
  S3572C13(); // tgen
};
//SIG(-1 S3572C13) C1{ VBC2{ VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ VBC4 VBC6{ vd m FC4 FC7{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} BC6 BC8{ VBC6 BC5 VBC9{ VBC4 VBC6 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC10{ VBC4 BC6 BC5 vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC11{ VBC10 vd v3 Fi Fp Fi:2 FD Fp} BC10 vd v1 Fi FL Fi:6 FC12{ BC5 VBC10 vd Fi Fp} Fl Fi Fp FC13{ BC8 VBC3 VBC10 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}}


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

static void Test_S3572C13()
{
  extern Class_Descriptor cd_S3572C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(230,534)];
    init_test(&cd_S3572C13, buf);
    S3572C13 *dp, &lv = *(dp=new (buf) S3572C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3664,2132), "sizeof(S3572C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C13)");
    check_base_class_offset(lv, (S3572C5*)(S3572C10*), ABISELECT(2840,1652), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(2840,1652), "S3572C13");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(2840,1652), "S3572C13");
    check_base_class_offset(lv, (S3572C5*)(S3572C8*), ABISELECT(2840,1652), "S3572C13");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*), ABISELECT(2840,1652), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(2840,1652), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(2840,1652), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(2840,1652), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(2840,1652), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(2920,1696), "S3572C13");
    check_base_class_offset(lv, (S3572C4*)(S3572C3*)(S3572C14*), ABISELECT(2920,1696), "S3572C13");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(2920,1696), "S3572C13");
    check_base_class_offset(lv, (S3572C4*)(S3572C8*), ABISELECT(2920,1696), "S3572C13");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*), ABISELECT(2920,1696), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(2920,1696), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(2920,1696), "S3572C13");
    check_base_class_offset(lv, (S3572C7*)(S3572C10*), ABISELECT(2880,1676), "S3572C13");
    check_base_class_offset(lv, (S3572C10*)(S3572C14*), ABISELECT(2712,1560), "S3572C13");
    /*is_ambiguous_... S3572C14::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C14*), ABISELECT(2192,1272), "S3572C13");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(2256,1304), "S3572C13");
    check_base_class_offset(lv, (S3572C7*)(S3572C8*), ABISELECT(2976,1728), "S3572C13");
    check_base_class_offset(lv, (S3572C8*)(S3572C3*)(S3572C14*), ABISELECT(2976,1728), "S3572C13");
    check_base_class_offset(lv, (S3572C3*)(S3572C14*), ABISELECT(2256,1304), "S3572C13");
    check_base_class_offset(lv, (S3572C14*), ABISELECT(2192,1272), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(3440,2008), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(3496,2040), "S3572C13");
    check_base_class_offset(lv, (S3572C9*)(S3572C15*), ABISELECT(3440,2008), "S3572C13");
    check_base_class_offset(lv, (S3572C15*), 0, "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(64,32), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(120,64), "S3572C13");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C9*), ABISELECT(64,32), "S3572C13");
    check_field_offset(lv, s3572c13f0, ABISELECT(288,156), "S3572C13.s3572c13f0");
    check_field_offset(lv, s3572c13f1, ABISELECT(296,160), "S3572C13.s3572c13f1");
    set_bf_and_test(lv, s3572c13f2, ABISELECT(304,168), 0, 6, 1, "S3572C13");
    set_bf_and_test(lv, s3572c13f2, ABISELECT(304,168), 0, 6, hide_sll(1LL<<5), "S3572C13");
    check_field_offset(lv, s3572c13f3, ABISELECT(320,172), "S3572C13.s3572c13f3");
    check_field_offset(lv, s3572c13f4, ABISELECT(704,380), "S3572C13.s3572c13f4");
    check_field_offset(lv, s3572c13f5, ABISELECT(712,384), "S3572C13.s3572c13f5");
    check_field_offset(lv, s3572c13f6, ABISELECT(720,388), "S3572C13.s3572c13f6");
    check_field_offset(lv, s3572c13f7, ABISELECT(736,392), "S3572C13.s3572c13f7");
    test_class_info(&lv, &cd_S3572C13);
    dp->~S3572C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C13(Test_S3572C13, "S3572C13", ABISELECT(3664,2132));

#else // __cplusplus

extern void _ZN8S3572C13C1Ev();
extern void _ZN8S3572C13D2Ev();
Name_Map name_map_S3572C13[] = {
  NSPAIR(_ZN8S3572C13C1Ev),
  NSPAIR(_ZN8S3572C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C10;
extern VTBL_ENTRY _ZTI8S3572C10[];
extern  VTBL_ENTRY _ZTV8S3572C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
extern Class_Descriptor cd_S3572C3;
extern VTBL_ENTRY _ZTI7S3572C3[];
extern  VTBL_ENTRY _ZTV7S3572C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C3[];
extern Class_Descriptor cd_S3572C14;
extern VTBL_ENTRY _ZTI8S3572C14[];
extern  VTBL_ENTRY _ZTV8S3572C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C15;
extern VTBL_ENTRY _ZTI8S3572C15[];
extern  VTBL_ENTRY _ZTV8S3572C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C15[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
static Base_Class bases_S3572C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(2840,1652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2920,1696), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C7,    ABISELECT(2880,1676), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3572C10,    ABISELECT(2712,1560), //bcp->offset
    43, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2192,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(2256,1304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(2976,1728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(2976,1728), //bcp->offset
    63, //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
    8, //immediately_derived
  0, 1},
  {&cd_S3572C3,    ABISELECT(2256,1304), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3572C14,    ABISELECT(2192,1272), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(3440,2008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(3496,2040), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(3440,2008), //bcp->offset
    70, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3572C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(120,64), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C13[];
extern void _ZN8S3572C13D1Ev();
extern void _ZN8S3572C13D0Ev();
extern void _ZN8S3572C152v2Ev();
extern void _ZN8S3572C132v3Ev();
extern void ABISELECT(_ZThn64_N8S3572C13D1Ev,_ZThn32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C13D0Ev,_ZThn32_N8S3572C13D0Ev)();
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZThn120_N8S3572C13D1Ev,_ZThn64_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn120_N8S3572C13D0Ev,_ZThn64_N8S3572C13D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2192_N8S3572C13D1Ev,_ZThn1272_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2192_N8S3572C13D0Ev,_ZThn1272_N8S3572C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S3572C13D1Ev,_ZTvn32_n32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3572C13D0Ev,_ZTvn32_n32_N8S3572C13D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3572C13D1Ev,_ZTv0_n24_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2712_N8S3572C13D1Ev,_ZThn1560_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C13D0Ev,_ZTv0_n24_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2712_N8S3572C13D0Ev,_ZThn1560_N8S3572C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2880_N8S3572C13D1Ev,_ZThn1676_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2880_N8S3572C13D0Ev,_ZThn1676_N8S3572C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C13D1Ev,_ZTv0_n12_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2920_N8S3572C13D1Ev,_ZThn1696_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C13D0Ev,_ZTv0_n12_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2920_N8S3572C13D0Ev,_ZThn1696_N8S3572C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2976_N8S3572C13D1Ev,_ZThn1728_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2976_N8S3572C13D0Ev,_ZThn1728_N8S3572C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn3440_N8S3572C13D1Ev,_ZThn2008_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn3440_N8S3572C13D0Ev,_ZThn2008_N8S3572C13D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3572C13D1Ev,_ZTvn32_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C13D0Ev,_ZTvn32_n20_N8S3572C13D0Ev)();
static  VTBL_ENTRY vtc_S3572C13[] = {
  ABISELECT(2976,1728),
  ABISELECT(2880,1676),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(2920,1696),
  ABISELECT(2840,1652),
  ABISELECT(3440,2008),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&_ZN8S3572C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3572C132v3Ev,
  ABISELECT(2856,1664),
  ABISELECT(2776,1620),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C13D1Ev,_ZThn32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C13D0Ev,_ZThn32_N8S3572C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3572C13D1Ev,_ZThn64_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3572C13D0Ev,_ZThn64_N8S3572C13D0Ev),
  ABISELECT(-2192,-1272),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev),
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-2256,-1304),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C13D1Ev,_ZTvn32_n32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C13D0Ev,_ZTvn32_n32_N8S3572C13D0Ev),
  ABISELECT(-2712,-1560),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-2712,-1560),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C13D1Ev,_ZTv0_n24_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C13D0Ev,_ZTv0_n24_N8S3572C13D0Ev),
  ABISELECT(-2880,-1676),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-2880,-1676),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
  ABISELECT(-2920,-1696),
  ABISELECT(-2920,-1696),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C13D1Ev,_ZTv0_n12_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C13D0Ev,_ZTv0_n12_N8S3572C13D0Ev),
  ABISELECT(-2976,-1728),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-2976,-1728),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
  0,
  ABISELECT(-3440,-2008),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2008),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2040),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C13D1Ev,_ZTvn32_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C13D0Ev,_ZTvn32_n20_N8S3572C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C13[];
extern void _ZN8S3572C15D1Ev();
extern void _ZN8S3572C15D0Ev();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C15__8S3572C13[] = {
  ABISELECT(2920,1696),
  ABISELECT(2840,1652),
  ABISELECT(3440,2008),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&_ZN8S3572C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZThn3440_N8S3572C15D1Ev,_ZThn2008_N8S3572C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev)();
extern void ABISELECT(_ZThn3440_N8S3572C15D0Ev,_ZThn2008_N8S3572C15D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C15__8S3572C13[] = {
  0,
  ABISELECT(-3440,-2008),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2008),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C15__8S3572C13[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2040),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev)();
extern void ABISELECT(_ZThn2920_N8S3572C15D1Ev,_ZThn1696_N8S3572C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev)();
extern void ABISELECT(_ZThn2920_N8S3572C15D0Ev,_ZThn1696_N8S3572C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C15__8S3572C13[] = {
  ABISELECT(-2920,-1696),
  ABISELECT(-2920,-1696),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__A__8S3572C13[] = {
  ABISELECT(2856,1664),
  ABISELECT(2776,1620),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A4__8S3572C13[] = {
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn2800_N7S3572C7D1Ev,_ZThn1632_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn2800_N7S3572C7D0Ev,_ZThn1632_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__A4__8S3572C13[] = {
  ABISELECT(-2800,-1632),
  ABISELECT(-2800,-1632),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__A__8S3572C13[] = {
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn2856_N7S3572C9D1Ev,_ZThn1664_N7S3572C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
extern void ABISELECT(_ZThn2856_N7S3572C9D0Ev,_ZThn1664_N7S3572C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__A__8S3572C13[] = {
  ABISELECT(-2856,-1664),
  ABISELECT(-2856,-1664),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void _ZN8S3572C14D1Ev();
extern void _ZN8S3572C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C14__8S3572C13[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&_ZN8S3572C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C14D0Ev,
};
extern void _ZN7S3572C3D1Ev();
extern void _ZN7S3572C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C38S3572C14__8S3572C13[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&_ZN7S3572C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C3D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C38S3572C14__A1__8S3572C13[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn664_N7S3572C7D1Ev,_ZThn392_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn664_N7S3572C7D0Ev,_ZThn392_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C38S3572C14__A1__8S3572C13[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn664_N7S3572C3D1Ev,_ZThn392_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn664_N7S3572C3D0Ev,_ZThn392_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C38S3572C14__8S3572C13[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn720_N7S3572C3D1Ev,_ZThn424_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn720_N7S3572C3D0Ev,_ZThn424_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C38S3572C14__8S3572C13[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn520_N8S3572C14D1Ev,_ZThn288_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn520_N8S3572C14D0Ev,_ZThn288_N8S3572C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C14__8S3572C13[] = {
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn688_N8S3572C14D1Ev,_ZThn404_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn688_N8S3572C14D0Ev,_ZThn404_N8S3572C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C14__8S3572C13[] = {
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn728_N8S3572C14D1Ev,_ZThn424_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn728_N8S3572C14D0Ev,_ZThn424_N8S3572C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C14__8S3572C13[] = {
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3572C14D1Ev,_ZThn32_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C14D0Ev,_ZThn32_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C3__8S3572C14__8S3572C13[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C14D1Ev,_ZThn32_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C14D0Ev,_ZThn32_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn784_N8S3572C14D1Ev,_ZThn456_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn784_N8S3572C14D0Ev,_ZThn456_N8S3572C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C14__8S3572C13[] = {
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev),
};
extern void _ZN8S3572C10D1Ev();
extern void _ZN8S3572C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C13[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&_ZN8S3572C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S3572C10D1Ev,_ZThn116_N8S3572C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S3572C10D0Ev,_ZThn116_N8S3572C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C10__8S3572C13[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S3572C10D1Ev,_ZThn136_N8S3572C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S3572C10D0Ev,_ZThn136_N8S3572C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C10__8S3572C13[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev),
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C13[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S3572C7D1Ev,_ZThn20_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn40_N7S3572C7D0Ev,_ZThn20_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__8S3572C13[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C13[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C8__A2__8S3572C13[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C8__A2__8S3572C13[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C8__8S3572C13[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C13[] = {
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__8S3572C13[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__A3__8S3572C13[] = {
  ABISELECT(576,344),
  ABISELECT(576,344),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__8S3572C13[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__8S3572C13[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
static  VTT_ENTRY vtt_S3572C13[] = {
  {&(_ZTV8S3572C13[9]),  9,85},
  {&(_tg__ZTV8S3572C15__8S3572C13[5]),  5,8},
  {&(_tg__ZTV7S3572C9__8S3572C15__8S3572C13[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C15__8S3572C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C15__8S3572C13[3]),  3,5},
  {&(_tg__ZTV7S3572C9__A__8S3572C13[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A4__8S3572C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__A4__8S3572C13[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__A__8S3572C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__A__8S3572C13[3]),  3,5},
  {&(_ZTV8S3572C13[34]),  34,85},
  {&(_ZTV8S3572C13[49]),  49,85},
  {&(_ZTV8S3572C13[56]),  56,85},
  {&(_ZTV8S3572C13[61]),  61,85},
  {&(_ZTV8S3572C13[41]),  41,85},
  {&(_ZTV8S3572C13[68]),  68,85},
  {&(_ZTV8S3572C13[76]),  76,85},
  {&(_ZTV8S3572C13[83]),  83,85},
  {&(_ZTV8S3572C13[17]),  17,85},
  {&(_ZTV8S3572C13[24]),  24,85},
  {&(_tg__ZTV8S3572C14__8S3572C13[7]),  7,9},
  {&(_tg__ZTV7S3572C38S3572C14__8S3572C13[5]),  5,7},
  {&(_tg__ZTV7S3572C77S3572C38S3572C14__A1__8S3572C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C38S3572C14__A1__8S3572C13[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C38S3572C14__8S3572C13[3]),  3,5},
  {&(_tg__ZTV7S3572C8__7S3572C38S3572C14__8S3572C13[5]),  5,7},
  {&(_tg__ZTV8S3572C10__8S3572C14__8S3572C13[6]),  6,8},
  {&(_tg__ZTV7S3572C7__8S3572C14__8S3572C13[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C14__8S3572C13[3]),  3,5},
  {&(_tg__ZTV7S3572C3__8S3572C14__8S3572C13[5]),  5,7},
  {&(_tg__ZTV7S3572C8__8S3572C14__8S3572C13[5]),  5,7},
  {&(_tg__ZTV8S3572C10__8S3572C13[5]),  5,7},
  {&(_tg__ZTV7S3572C7__8S3572C10__8S3572C13[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C10__8S3572C13[3]),  3,5},
  {&(_tg__ZTV7S3572C7__8S3572C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__8S3572C13[3]),  3,5},
  {&(_tg__ZTV7S3572C8__8S3572C13[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C8__A2__8S3572C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C8__A2__8S3572C13[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C8__8S3572C13[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C13[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A3__8S3572C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__A3__8S3572C13[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__8S3572C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__8S3572C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C13[];
extern  VTBL_ENTRY _ZTV8S3572C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C13[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3572C10D0Ev,_ZThn136_N8S3572C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3572C10D1Ev,_ZThn136_N8S3572C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3572C10D0Ev,_ZThn116_N8S3572C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3572C10D1Ev,_ZThn116_N8S3572C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S3572C14D0Ev,_ZThn424_N8S3572C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S3572C14D1Ev,_ZThn424_N8S3572C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S3572C14D0Ev,_ZThn456_N8S3572C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S3572C14D0Ev,_ZThn404_N8S3572C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S3572C14D1Ev,_ZThn456_N8S3572C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S3572C14D1Ev,_ZThn404_N8S3572C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3572C14D0Ev,_ZThn288_N8S3572C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3572C14D1Ev,_ZThn288_N8S3572C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S3572C3D0Ev,_ZThn424_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S3572C3D1Ev,_ZThn424_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3572C3D0Ev,_ZThn392_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3572C3D1Ev,_ZThn392_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N7S3572C9D0Ev,_ZThn1664_N7S3572C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N7S3572C9D1Ev,_ZThn1664_N7S3572C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3572C7D0Ev,_ZThn20_N7S3572C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3572C7D0Ev,_ZThn392_N7S3572C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N7S3572C7D0Ev,_ZThn1632_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3572C7D1Ev,_ZThn20_N7S3572C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3572C7D1Ev,_ZThn392_N7S3572C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N7S3572C7D1Ev,_ZThn1632_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S3572C15D0Ev,_ZThn1696_N8S3572C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S3572C15D1Ev,_ZThn1696_N8S3572C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S3572C15D0Ev,_ZThn2008_N8S3572C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S3572C15D1Ev,_ZThn2008_N8S3572C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C13D0Ev,_ZTv0_n12_N8S3572C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S3572C13D0Ev,_ZThn1696_N8S3572C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C13D1Ev,_ZTv0_n12_N8S3572C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S3572C13D1Ev,_ZThn1696_N8S3572C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S3572C13D0Ev,_ZThn2008_N8S3572C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3572C13D0Ev,_ZThn1728_N8S3572C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S3572C13D0Ev,_ZThn1676_N8S3572C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S3572C13D1Ev,_ZThn2008_N8S3572C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3572C13D1Ev,_ZThn1728_N8S3572C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S3572C13D1Ev,_ZThn1676_N8S3572C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C13D0Ev,_ZTv0_n24_N8S3572C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3572C13D0Ev,_ZThn1560_N8S3572C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C13D1Ev,_ZTv0_n24_N8S3572C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3572C13D1Ev,_ZThn1560_N8S3572C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3572C13D0Ev,_ZThn1272_N8S3572C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3572C13D1Ev,_ZThn1272_N8S3572C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C13 = {  "S3572C13", // class name
  bases_S3572C13, 17,
  &(vtc_S3572C13[0]), // expected_vtbl_contents
  &(vtt_S3572C13[0]), // expected_vtt_contents
  ABISELECT(3664,2132), // object size
  NSPAIRA(_ZTI8S3572C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3572C13),85, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C13),45, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C17  {
  ::S3572C10 s3572c17f0;
  ::S3572C8 s3572c17f1;
  void *s3572c17f2;
  int s3572c17f3;
  void *s3572c17f4;
  __tsi64 s3572c17f5;
  long double s3572c17f6;
  short s3572c17f7;
  void *s3572c17f8;
  __tsi64 s3572c17f9;
  int s3572c17f10;
  void  mf3572c17(); // _ZN8S3572C179mf3572c17Ev
  virtual  ~S3572C17(); // _ZN8S3572C17D1Ev
  S3572C17(); // tgen
};
//SIG(-1 S3572C17) C1{ vd m FC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ VBC3 VBC5{ vd m FC3 FC6{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} FC7{ VBC3 VBC5 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi}


void  S3572C17 ::mf3572c17(){}
 S3572C17 ::~S3572C17(){ note_dtor("S3572C17", this);}
S3572C17 ::S3572C17(){ note_ctor("S3572C17", this);} // tgen

static void Test_S3572C17()
{
  extern Class_Descriptor cd_S3572C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,141)];
    init_test(&cd_S3572C17, buf);
    S3572C17 *dp, &lv = *(dp=new (buf) S3572C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,560), "sizeof(S3572C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C17)");
    check_field_offset(lv, s3572c17f0, ABISELECT(8,4), "S3572C17.s3572c17f0");
    check_field_offset(lv, s3572c17f1, ABISELECT(272,172), "S3572C17.s3572c17f1");
    check_field_offset(lv, s3572c17f2, ABISELECT(832,508), "S3572C17.s3572c17f2");
    check_field_offset(lv, s3572c17f3, ABISELECT(840,512), "S3572C17.s3572c17f3");
    check_field_offset(lv, s3572c17f4, ABISELECT(848,516), "S3572C17.s3572c17f4");
    check_field_offset(lv, s3572c17f5, ABISELECT(856,520), "S3572C17.s3572c17f5");
    check_field_offset(lv, s3572c17f6, ABISELECT(864,528), "S3572C17.s3572c17f6");
    check_field_offset(lv, s3572c17f7, ABISELECT(880,540), "S3572C17.s3572c17f7");
    check_field_offset(lv, s3572c17f8, ABISELECT(888,544), "S3572C17.s3572c17f8");
    check_field_offset(lv, s3572c17f9, ABISELECT(896,548), "S3572C17.s3572c17f9");
    check_field_offset(lv, s3572c17f10, ABISELECT(904,556), "S3572C17.s3572c17f10");
    test_class_info(&lv, &cd_S3572C17);
    dp->~S3572C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C17(Test_S3572C17, "S3572C17", ABISELECT(912,560));

#else // __cplusplus

extern void _ZN8S3572C17C1Ev();
extern void _ZN8S3572C17D1Ev();
Name_Map name_map_S3572C17[] = {
  NSPAIR(_ZN8S3572C17C1Ev),
  NSPAIR(_ZN8S3572C17D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3572C17[];
extern void _ZN8S3572C17D1Ev();
extern void _ZN8S3572C17D0Ev();
static  VTBL_ENTRY vtc_S3572C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C17[0]),
  (VTBL_ENTRY)&_ZN8S3572C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C17D0Ev,
};
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
Class_Descriptor cd_S3572C17 = {  "S3572C17", // class name
  0,0,//no base classes
  &(vtc_S3572C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(912,560), // object size
  NSPAIRA(_ZTI8S3572C17),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3572C17),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  S3572C18  : S3572C7 , S3572C8 {
  int s3572c18f0;
  int s3572c18f1:2;
  long double s3572c18f2;
  void *s3572c18f3[2];
  virtual  ~S3572C18(); // _ZN8S3572C18D2Ev
  virtual void  v4(); // _ZN8S3572C182v4Ev
  virtual void  v5(); // _ZN8S3572C182v5Ev
  virtual void  v6(); // _ZN8S3572C182v6Ev
  S3572C18(); // tgen
};
//SIG(-1 S3572C18) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} BC6{ VBC3 VBC4 BC2 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd v1 v2 v3 Fi Fi:2 FD Fp[2]}


 S3572C18 ::~S3572C18(){ note_dtor("S3572C18", this);}
void  S3572C18 ::v4(){vfunc_called(this, "_ZN8S3572C182v4Ev");}
void  S3572C18 ::v5(){vfunc_called(this, "_ZN8S3572C182v5Ev");}
void  S3572C18 ::v6(){vfunc_called(this, "_ZN8S3572C182v6Ev");}
S3572C18 ::S3572C18(){ note_ctor("S3572C18", this);} // tgen

static void Test_S3572C18()
{
  extern Class_Descriptor cd_S3572C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,97)];
    init_test(&cd_S3572C18, buf);
    S3572C18 *dp, &lv = *(dp=new (buf) S3572C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,384), "sizeof(S3572C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C18)");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(544,328), "S3572C18");
    check_base_class_offset(lv, (S3572C5*)(S3572C8*), ABISELECT(544,328), "S3572C18");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*), ABISELECT(544,328), "S3572C18");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(584,352), "S3572C18");
    check_base_class_offset(lv, (S3572C4*)(S3572C8*), ABISELECT(584,352), "S3572C18");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*), ABISELECT(584,352), "S3572C18");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*), 0, "S3572C18");
    check_base_class_offset(lv, (S3572C7*)(S3572C8*), ABISELECT(40,20), "S3572C18");
    check_base_class_offset(lv, (S3572C8*), ABISELECT(40,20), "S3572C18");
    check_field_offset(lv, s3572c18f0, ABISELECT(500,300), "S3572C18.s3572c18f0");
    set_bf_and_test(lv, s3572c18f1, ABISELECT(504,304), 0, 2, 1, "S3572C18");
    set_bf_and_test(lv, s3572c18f1, ABISELECT(504,304), 0, 2, hide_sll(1LL<<1), "S3572C18");
    check_field_offset(lv, s3572c18f2, ABISELECT(512,308), "S3572C18.s3572c18f2");
    check_field_offset(lv, s3572c18f3, ABISELECT(528,320), "S3572C18.s3572c18f3");
    test_class_info(&lv, &cd_S3572C18);
    dp->~S3572C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C18(Test_S3572C18, "S3572C18", ABISELECT(640,384));

#else // __cplusplus

extern void _ZN8S3572C18C1Ev();
extern void _ZN8S3572C18D2Ev();
Name_Map name_map_S3572C18[] = {
  NSPAIR(_ZN8S3572C18C1Ev),
  NSPAIR(_ZN8S3572C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
static Base_Class bases_S3572C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(544,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(584,352), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C7,    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_S3572C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(40,20), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C18[];
extern void _ZN8S3572C18D1Ev();
extern void _ZN8S3572C18D0Ev();
extern void _ZN8S3572C182v4Ev();
extern void _ZN8S3572C182v5Ev();
extern void _ZN8S3572C182v6Ev();
extern void ABISELECT(_ZThn40_N8S3572C18D1Ev,_ZThn20_N8S3572C18D1Ev)();
extern void ABISELECT(_ZThn40_N8S3572C18D0Ev,_ZThn20_N8S3572C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C18D1Ev,_ZTv0_n12_N8S3572C18D1Ev)();
extern void ABISELECT(_ZThn584_N8S3572C18D1Ev,_ZThn352_N8S3572C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C18D0Ev,_ZTv0_n12_N8S3572C18D0Ev)();
extern void ABISELECT(_ZThn584_N8S3572C18D0Ev,_ZThn352_N8S3572C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C18[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&_ZN8S3572C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C18D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v6Ev,
  ABISELECT(544,332),
  ABISELECT(504,308),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3572C18D1Ev,_ZThn20_N8S3572C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3572C18D0Ev,_ZThn20_N8S3572C18D0Ev),
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C18D1Ev,_ZTv0_n12_N8S3572C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C18D0Ev,_ZTv0_n12_N8S3572C18D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C18[];
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C18[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn584_N7S3572C7D1Ev,_ZThn352_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn584_N7S3572C7D0Ev,_ZThn352_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__8S3572C18[] = {
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C18[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C8__A1__8S3572C18[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn544_N7S3572C7D1Ev,_ZThn332_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn544_N7S3572C7D0Ev,_ZThn332_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C8__A1__8S3572C18[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZThn544_N7S3572C8D1Ev,_ZThn332_N7S3572C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
extern void ABISELECT(_ZThn544_N7S3572C8D0Ev,_ZThn332_N7S3572C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C8__8S3572C18[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
static  VTT_ENTRY vtt_S3572C18[] = {
  {&(_ZTV8S3572C18[4]),  4,20},
  {&(_tg__ZTV7S3572C7__8S3572C18[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__8S3572C18[3]),  3,5},
  {&(_tg__ZTV7S3572C8__8S3572C18[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C8__A1__8S3572C18[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C8__A1__8S3572C18[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C8__8S3572C18[3]),  3,5},
  {&(_ZTV8S3572C18[18]),  18,20},
  {&(_ZTV8S3572C18[13]),  13,20},
};
extern VTBL_ENTRY _ZTI8S3572C18[];
extern  VTBL_ENTRY _ZTV8S3572C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C18[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S3572C8D0Ev,_ZThn332_N7S3572C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S3572C8D1Ev,_ZThn332_N7S3572C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S3572C7D0Ev,_ZThn332_N7S3572C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3572C7D0Ev,_ZThn352_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S3572C7D1Ev,_ZThn332_N7S3572C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3572C7D1Ev,_ZThn352_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C18D0Ev,_ZTv0_n12_N8S3572C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S3572C18D0Ev,_ZThn352_N8S3572C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C18D1Ev,_ZTv0_n12_N8S3572C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S3572C18D1Ev,_ZThn352_N8S3572C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C18 = {  "S3572C18", // class name
  bases_S3572C18, 5,
  &(vtc_S3572C18[0]), // expected_vtbl_contents
  &(vtt_S3572C18[0]), // expected_vtt_contents
  ABISELECT(640,384), // object size
  NSPAIRA(_ZTI8S3572C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3572C18),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C18),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C12  : virtual S3572C7 , virtual S3572C13 , S3572C17 , virtual S3572C18 , virtual S3572C15 {
  int s3572c12f0;
  __tsi64 s3572c12f1;
  ::S3572C16 s3572c12f2;
  virtual  ~S3572C12(); // _ZN8S3572C12D2Ev
  S3572C12(); // tgen
};
//SIG(-1 S3572C12) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} VBC6{ VBC7{ VBC8{ VBC3 VBC2 vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL} BC4 BC9{ VBC4 BC2 VBC10{ VBC3 VBC4 BC2 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC11{ VBC3 BC4 BC2 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC12{ VBC11 vd v2 Fi Fp Fi:2 FD Fp} BC11 vd v3 Fi FL Fi:6 FC13{ BC2 VBC11 vd Fi Fp} Fl Fi Fp FC14{ BC9 VBC8 VBC11 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC15{ vd m FC8 FC10 Fp Fi Fp FL FD Fs Fp FL Fi} VBC16{ BC2 BC10 vd v4 v5 v6 Fi Fi:2 FD Fp[2]} VBC12 vd Fi FL FC13}


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

static void Test_S3572C12()
{
  extern Class_Descriptor cd_S3572C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(351,819)];
    init_test(&cd_S3572C12, buf);
    S3572C12 *dp, &lv = *(dp=new (buf) S3572C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(5600,3272), "sizeof(S3572C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C12)");
    /*is_ambiguous_... S3572C12::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(1352,800), "S3572C12");
    check_base_class_offset(lv, (S3572C5*)(S3572C10*), ABISELECT(1352,800), "S3572C12");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(1352,800), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C8*), ABISELECT(1352,800), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*), ABISELECT(1352,800), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(1352,800), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(1352,800), "S3572C12");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*)(S3572C13*), ABISELECT(1352,800), "S3572C12");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*)(S3572C13*), ABISELECT(1352,800), "S3572C12");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C18*), ABISELECT(1352,800), "S3572C12");
    check_base_class_offset(lv, (S3572C5*)(S3572C8*)(S3572C18*), ABISELECT(1352,800), "S3572C12");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*)(S3572C18*), ABISELECT(1352,800), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(1392,824), "S3572C12");
    check_base_class_offset(lv, (S3572C4*)(S3572C3*)(S3572C14*), ABISELECT(1392,824), "S3572C12");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(1392,824), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C8*), ABISELECT(1392,824), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*), ABISELECT(1392,824), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(1392,824), "S3572C12");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*)(S3572C13*), ABISELECT(1392,824), "S3572C12");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C18*), ABISELECT(1392,824), "S3572C12");
    check_base_class_offset(lv, (S3572C4*)(S3572C8*)(S3572C18*), ABISELECT(1392,824), "S3572C12");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*)(S3572C18*), ABISELECT(1392,824), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*), ABISELECT(1312,780), "S3572C12");
    check_base_class_offset(lv, (S3572C7*)(S3572C10*), ABISELECT(1312,780), "S3572C12");
    check_base_class_offset(lv, (S3572C10*)(S3572C14*), ABISELECT(4168,2416), "S3572C12");
    /*is_ambiguous_... S3572C14::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C14*), ABISELECT(3648,2128), "S3572C12");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(3712,2160), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C8*), ABISELECT(4296,2508), "S3572C12");
    check_base_class_offset(lv, (S3572C8*)(S3572C3*)(S3572C14*), ABISELECT(4296,2508), "S3572C12");
    check_base_class_offset(lv, (S3572C3*)(S3572C14*), ABISELECT(3712,2160), "S3572C12");
    check_base_class_offset(lv, (S3572C14*)(S3572C13*), ABISELECT(3648,2128), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(4768,2788), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(4824,2820), "S3572C12");
    check_base_class_offset(lv, (S3572C9*)(S3572C15*)(S3572C13*), ABISELECT(4768,2788), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C15 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C15*), ABISELECT(4768,2788), "S3572C12");
    check_base_class_offset(lv, (S3572C15*)(S3572C13*), ABISELECT(1456,856), "S3572C12");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*)(S3572C13*), ABISELECT(1520,888), "S3572C12");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*)(S3572C13*), ABISELECT(1576,920), "S3572C12");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C13*), ABISELECT(1520,888), "S3572C12");
    check_base_class_offset(lv, (S3572C13*), ABISELECT(1456,856), "S3572C12");
    check_base_class_offset(lv, (S3572C17*), 0, "S3572C12");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C18*), ABISELECT(4992,2912), "S3572C12");
    check_base_class_offset(lv, (S3572C7*)(S3572C8*)(S3572C18*), ABISELECT(5032,2932), "S3572C12");
    check_base_class_offset(lv, (S3572C8*)(S3572C18*), ABISELECT(5032,2932), "S3572C12");
    check_base_class_offset(lv, (S3572C18*), ABISELECT(4992,2912), "S3572C12");
    /*is_ambiguous_... S3572C12::S3572C15 */ AMB_check_base_class_offset(lv, (S3572C15*), ABISELECT(5536,3240), "S3572C12");
    check_field_offset(lv, s3572c12f0, ABISELECT(908,560), "S3572C12.s3572c12f0");
    check_field_offset(lv, s3572c12f1, ABISELECT(912,564), "S3572C12.s3572c12f1");
    check_field_offset(lv, s3572c12f2, ABISELECT(928,572), "S3572C12.s3572c12f2");
    test_class_info(&lv, &cd_S3572C12);
    dp->~S3572C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C12(Test_S3572C12, "S3572C12", ABISELECT(5600,3272));

#else // __cplusplus

extern void _ZN8S3572C12C1Ev();
extern void _ZN8S3572C12D2Ev();
Name_Map name_map_S3572C12[] = {
  NSPAIR(_ZN8S3572C12C1Ev),
  NSPAIR(_ZN8S3572C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C10;
extern VTBL_ENTRY _ZTI8S3572C10[];
extern  VTBL_ENTRY _ZTV8S3572C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
extern Class_Descriptor cd_S3572C3;
extern VTBL_ENTRY _ZTI7S3572C3[];
extern  VTBL_ENTRY _ZTV7S3572C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C3[];
extern Class_Descriptor cd_S3572C14;
extern VTBL_ENTRY _ZTI8S3572C14[];
extern  VTBL_ENTRY _ZTV8S3572C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C15;
extern VTBL_ENTRY _ZTI8S3572C15[];
extern  VTBL_ENTRY _ZTV8S3572C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C15[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C13;
extern VTBL_ENTRY _ZTI8S3572C13[];
extern  VTBL_ENTRY _ZTV8S3572C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C13[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
extern Class_Descriptor cd_S3572C18;
extern VTBL_ENTRY _ZTI8S3572C18[];
extern  VTBL_ENTRY _ZTV8S3572C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C18[];
extern Class_Descriptor cd_S3572C15;
extern VTBL_ENTRY _ZTI8S3572C15[];
extern  VTBL_ENTRY _ZTV8S3572C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C15[];
static Base_Class bases_S3572C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(1352,800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1392,824), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C7,    ABISELECT(1312,780), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C10,    ABISELECT(4168,2416), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3648,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
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(3712,2160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(4296,2508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(4296,2508), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3572C3,    ABISELECT(3712,2160), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3572C14,    ABISELECT(3648,2128), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(4768,2788), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(4824,2820), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(4768,2788), //bcp->offset
    88, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3572C15,    ABISELECT(1456,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
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1520,888), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(1576,920), //bcp->offset
    50, //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(1520,888), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C13,    ABISELECT(1456,856), //bcp->offset
    26, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3572C7,    ABISELECT(4992,2912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(5032,2932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(5032,2932), //bcp->offset
    116, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3572C18,    ABISELECT(4992,2912), //bcp->offset
    103, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C15,    ABISELECT(5536,3240), //bcp->offset
    122, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C12[];
extern void _ZN8S3572C12D1Ev();
extern void _ZN8S3572C12D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn1312_N8S3572C12D1Ev,_ZThn780_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn1312_N8S3572C12D0Ev,_ZThn780_N8S3572C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C12D1Ev,_ZTv0_n12_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn1392_N8S3572C12D1Ev,_ZThn824_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C12D0Ev,_ZTv0_n12_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn1392_N8S3572C12D0Ev,_ZThn824_N8S3572C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3572C12D1Ev,_ZTv0_n40_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn1456_N8S3572C12D1Ev,_ZThn856_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3572C12D0Ev,_ZTv0_n40_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn1456_N8S3572C12D0Ev,_ZThn856_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
extern void _ZN8S3572C132v3Ev();
extern void ABISELECT(_ZTvn64_n80_N8S3572C12D1Ev,_ZTvn32_n40_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S3572C12D0Ev,_ZTvn32_n40_N8S3572C12D0Ev)();
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn120_n80_N8S3572C12D1Ev,_ZTvn64_n40_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S3572C12D0Ev,_ZTvn64_n40_N8S3572C12D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S3572C12D1Ev,_ZTv0_n32_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn3648_N8S3572C12D1Ev,_ZThn2128_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3572C12D0Ev,_ZTv0_n32_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn3648_N8S3572C12D0Ev,_ZThn2128_N8S3572C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S3572C12D1Ev,_ZTvn32_n32_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3572C12D0Ev,_ZTvn32_n32_N8S3572C12D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn4168_N8S3572C12D1Ev,_ZThn2416_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn4168_N8S3572C12D0Ev,_ZThn2416_N8S3572C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn4296_N8S3572C12D1Ev,_ZThn2508_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn4296_N8S3572C12D0Ev,_ZThn2508_N8S3572C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn4768_N8S3572C12D1Ev,_ZThn2788_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn4768_N8S3572C12D0Ev,_ZThn2788_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3572C12D1Ev,_ZTvn32_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C12D0Ev,_ZTvn32_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn4992_N8S3572C12D1Ev,_ZThn2912_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn4992_N8S3572C12D0Ev,_ZThn2912_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN8S3572C182v4Ev();
extern void _ZN8S3572C182v5Ev();
extern void _ZN8S3572C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N8S3572C12D1Ev,_ZTvn20_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S3572C12D0Ev,_ZTvn20_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn5536_N8S3572C12D1Ev,_ZThn3240_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn5536_N8S3572C12D0Ev,_ZThn3240_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY vtc_S3572C12[] = {
  ABISELECT(5536,3240),
  ABISELECT(4992,2912),
  ABISELECT(4768,2788),
  ABISELECT(4296,2508),
  ABISELECT(4168,2416),
  ABISELECT(3648,2128),
  ABISELECT(1456,856),
  ABISELECT(1392,824),
  ABISELECT(1352,800),
  ABISELECT(1312,780),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&_ZN8S3572C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C12D0Ev,
  ABISELECT(-1312,-780),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1312,-780),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
  ABISELECT(-1392,-824),
  ABISELECT(-1392,-824),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C12D1Ev,_ZTv0_n12_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C12D0Ev,_ZTv0_n12_N8S3572C12D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1456,-856),
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  ABISELECT(-1456,-856),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3572C12D1Ev,_ZTv0_n40_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3572C12D0Ev,_ZTv0_n40_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3572C132v3Ev,
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1520,-888),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3572C12D1Ev,_ZTvn32_n40_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3572C12D0Ev,_ZTvn32_n40_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1576,-920),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3572C12D1Ev,_ZTvn64_n40_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3572C12D0Ev,_ZTvn64_n40_N8S3572C12D0Ev),
  ABISELECT(-3648,-2128),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-3648,-2128),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C12D1Ev,_ZTv0_n32_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C12D0Ev,_ZTv0_n32_N8S3572C12D0Ev),
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-3712,-2160),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C12D1Ev,_ZTvn32_n32_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C12D0Ev,_ZTvn32_n32_N8S3572C12D0Ev),
  ABISELECT(-4168,-2416),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-4168,-2416),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev),
  ABISELECT(-4296,-2508),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-4296,-2508),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
  0,
  ABISELECT(-4768,-2788),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-4768,-2788),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-4824,-2820),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C12D1Ev,_ZTvn32_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C12D0Ev,_ZTvn32_n20_N8S3572C12D0Ev),
  0,
  0,
  0,
  ABISELECT(-4992,-2912),
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  ABISELECT(-4992,-2912),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v6Ev,
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-5032,-2932),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3572C12D1Ev,_ZTvn20_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3572C12D0Ev,_ZTvn20_n20_N8S3572C12D0Ev),
  0,
  ABISELECT(-5536,-3240),
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  ABISELECT(-5536,-3240),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern VTBL_ENTRY _ZTV8S3572C12[];
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C12[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S3572C7D1Ev,_ZThn44_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S3572C7D0Ev,_ZThn44_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__8S3572C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN8S3572C13D1Ev();
extern void _ZN8S3572C13D0Ev();
extern void _ZN8S3572C152v2Ev();
extern void _ZN8S3572C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C13__8S3572C12[] = {
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&_ZN8S3572C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3572C132v3Ev,
};
extern void _ZN8S3572C15D1Ev();
extern void _ZN8S3572C15D0Ev();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C158S3572C13__8S3572C12[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&_ZN8S3572C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZThn3312_N8S3572C15D1Ev,_ZThn1932_N8S3572C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev)();
extern void ABISELECT(_ZThn3312_N8S3572C15D0Ev,_ZThn1932_N8S3572C15D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C158S3572C13__8S3572C12[] = {
  0,
  ABISELECT(-3312,-1932),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-3312,-1932),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C158S3572C13__8S3572C12[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-3368,-1964),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C158S3572C13__8S3572C12[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C98S3572C13__A1__8S3572C12[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C13__A4__8S3572C12[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C98S3572C13__A4__8S3572C12[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C98S3572C13__A1__8S3572C12[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C98S3572C13__A1__8S3572C12[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2192_N8S3572C13D1Ev,_ZThn1272_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2192_N8S3572C13D0Ev,_ZThn1272_N8S3572C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C14__8S3572C13__8S3572C12[] = {
  ABISELECT(-2192,-1272),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C13D1Ev,_ZTv0_n24_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2712_N8S3572C13D1Ev,_ZThn1560_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C13D0Ev,_ZTv0_n24_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2712_N8S3572C13D0Ev,_ZThn1560_N8S3572C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C13__8S3572C12[] = {
  ABISELECT(-2712,-1560),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-2712,-1560),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C13D1Ev,_ZTv0_n24_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C13D0Ev,_ZTv0_n24_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C13__8S3572C12[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C13D1Ev,_ZTv0_n12_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C13D0Ev,_ZTv0_n12_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C13__8S3572C12[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C13D1Ev,_ZTv0_n12_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C13D0Ev,_ZTv0_n12_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3572C13D1Ev,_ZTvn32_n32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3572C13D0Ev,_ZTvn32_n32_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C38S3572C14__8S3572C13__8S3572C12[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-2256,-1304),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C13D1Ev,_ZTvn32_n32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C13D0Ev,_ZTvn32_n32_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2840_N8S3572C13D1Ev,_ZThn1652_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2840_N8S3572C13D0Ev,_ZThn1652_N8S3572C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C13__8S3572C12[] = {
  ABISELECT(-2840,-1652),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-2840,-1652),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn3312_N8S3572C13D1Ev,_ZThn1932_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn3312_N8S3572C13D0Ev,_ZThn1932_N8S3572C13D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C13__8S3572C12[] = {
  0,
  ABISELECT(-3312,-1932),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-3312,-1932),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C13D1Ev,_ZTvn32_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C13D0Ev,_ZTvn32_n20_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__8S3572C13__8S3572C12[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-3368,-1964),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C13D1Ev,_ZTvn32_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C13D0Ev,_ZTvn32_n20_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3572C13D1Ev,_ZThn32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C13D0Ev,_ZThn32_N8S3572C13D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__A__8S3572C13__8S3572C12[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C13D1Ev,_ZThn32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C13D0Ev,_ZThn32_N8S3572C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZThn120_N8S3572C13D1Ev,_ZThn64_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn120_N8S3572C13D0Ev,_ZThn64_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A4__8S3572C13__8S3572C12[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3572C13D1Ev,_ZThn64_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3572C13D0Ev,_ZThn64_N8S3572C13D0Ev),
};
extern void _ZN8S3572C14D1Ev();
extern void _ZN8S3572C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C14__8S3572C12[] = {
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&_ZN8S3572C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C14D0Ev,
};
extern void _ZN7S3572C3D1Ev();
extern void _ZN7S3572C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C38S3572C14__8S3572C12[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&_ZN7S3572C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C3D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C38S3572C14__A1__8S3572C12[] = {
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C38S3572C14__A1__8S3572C12[] = {
  ABISELECT(2320,1336),
  ABISELECT(2320,1336),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C38S3572C14__8S3572C12[] = {
  ABISELECT(2320,1336),
  ABISELECT(2320,1336),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn584_N7S3572C3D1Ev,_ZThn348_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn584_N7S3572C3D0Ev,_ZThn348_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C38S3572C14__8S3572C12[] = {
  ABISELECT(-584,-348),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-584,-348),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn520_N8S3572C14D1Ev,_ZThn288_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn520_N8S3572C14D0Ev,_ZThn288_N8S3572C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C14__8S3572C12[] = {
  ABISELECT(-520,-288),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C14__8S3572C12[] = {
  ABISELECT(2336,1348),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2336,1348),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C14__8S3572C12[] = {
  ABISELECT(2256,1304),
  ABISELECT(2256,1304),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3572C14D1Ev,_ZThn32_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C14D0Ev,_ZThn32_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C3__8S3572C14__8S3572C12[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C14D1Ev,_ZThn32_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C14D0Ev,_ZThn32_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn648_N8S3572C14D1Ev,_ZThn380_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn648_N8S3572C14D0Ev,_ZThn380_N8S3572C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C14__8S3572C12[] = {
  ABISELECT(-648,-380),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-648,-380),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev),
};
extern void _ZN8S3572C10D1Ev();
extern void _ZN8S3572C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C12[] = {
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&_ZN8S3572C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C10__8S3572C12[] = {
  ABISELECT(2856,1636),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2856,1636),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C10__8S3572C12[] = {
  ABISELECT(2776,1592),
  ABISELECT(2776,1592),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C12[] = {
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C8__A2__8S3572C12[] = {
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C8__A2__8S3572C12[] = {
  ABISELECT(2904,1684),
  ABISELECT(2904,1684),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C8__8S3572C12[] = {
  ABISELECT(2904,1684),
  ABISELECT(2904,1684),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C12[] = {
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__8S3572C12[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__A3__8S3572C12[] = {
  ABISELECT(3432,1996),
  ABISELECT(3432,1996),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__8S3572C12[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__8S3572C12[] = {
  ABISELECT(3376,1964),
  ABISELECT(3376,1964),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void _ZN8S3572C18D1Ev();
extern void _ZN8S3572C18D0Ev();
extern void _ZN8S3572C182v4Ev();
extern void _ZN8S3572C182v5Ev();
extern void _ZN8S3572C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C18__8S3572C12[] = {
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&_ZN8S3572C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C18D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v6Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C78S3572C18__A5__8S3572C12[] = {
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C78S3572C18__A5__8S3572C12[] = {
  ABISELECT(3600,2088),
  ABISELECT(3600,2088),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C88S3572C18__A1__8S3572C12[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C88S3572C18__A6__8S3572C12[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C88S3572C18__A6__8S3572C12[] = {
  ABISELECT(3640,2108),
  ABISELECT(3640,2108),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C88S3572C18__A1__8S3572C12[] = {
  ABISELECT(3640,2108),
  ABISELECT(3640,2108),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C18D1Ev,_ZTv0_n12_N8S3572C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C18D0Ev,_ZTv0_n12_N8S3572C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C18__8S3572C12[] = {
  ABISELECT(3600,2088),
  ABISELECT(3600,2088),
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C18D1Ev,_ZTv0_n12_N8S3572C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C18D0Ev,_ZTv0_n12_N8S3572C18D0Ev),
};
extern void ABISELECT(_ZThn40_N8S3572C18D1Ev,_ZThn20_N8S3572C18D1Ev)();
extern void ABISELECT(_ZThn40_N8S3572C18D0Ev,_ZThn20_N8S3572C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C18__8S3572C12[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3572C18D1Ev,_ZThn20_N8S3572C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3572C18D0Ev,_ZThn20_N8S3572C18D0Ev),
};
extern void _ZN8S3572C15D1Ev();
extern void _ZN8S3572C15D0Ev();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C15__A1__8S3572C12[] = {
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&_ZN8S3572C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C15__A1__8S3572C12[] = {
  0,
  ABISELECT(768,452),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(768,452),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C15__A1__8S3572C12[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(712,420),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C15__A1__8S3572C12[] = {
  ABISELECT(4144,2416),
  ABISELECT(4144,2416),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev),
};
static  VTT_ENTRY vtt_S3572C12[] = {
  {&(_ZTV8S3572C12[12]),  12,132},
  {&(_ZTV8S3572C12[19]),  19,132},
  {&(_ZTV8S3572C12[24]),  24,132},
  {&(_ZTV8S3572C12[39]),  39,132},
  {&(_ZTV8S3572C12[64]),  64,132},
  {&(_ZTV8S3572C12[79]),  79,132},
  {&(_ZTV8S3572C12[71]),  71,132},
  {&(_ZTV8S3572C12[86]),  86,132},
  {&(_ZTV8S3572C12[94]),  94,132},
  {&(_ZTV8S3572C12[101]),  101,132},
  {&(_ZTV8S3572C12[47]),  47,132},
  {&(_ZTV8S3572C12[54]),  54,132},
  {&(_ZTV8S3572C12[111]),  111,132},
  {&(_ZTV8S3572C12[120]),  120,132},
  {&(_ZTV8S3572C12[129]),  129,132},
  {&(_tg__ZTV7S3572C7__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__8S3572C12[3]),  3,5},
  {&(_tg__ZTV8S3572C13__8S3572C12[9]),  9,13},
  {&(_tg__ZTV8S3572C158S3572C13__8S3572C12[5]),  5,8},
  {&(_tg__ZTV7S3572C9__8S3572C158S3572C13__8S3572C12[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C158S3572C13__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C158S3572C13__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C98S3572C13__A1__8S3572C12[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C98S3572C13__A4__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C98S3572C13__A4__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C98S3572C13__A1__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C98S3572C13__A1__8S3572C12[3]),  3,5},
  {&(_tg__ZTV8S3572C14__8S3572C13__8S3572C12[8]),  8,10},
  {&(_tg__ZTV8S3572C10__8S3572C13__8S3572C12[6]),  6,8},
  {&(_tg__ZTV7S3572C7__8S3572C13__8S3572C12[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C13__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C38S3572C14__8S3572C13__8S3572C12[5]),  5,7},
  {&(_tg__ZTV7S3572C8__8S3572C13__8S3572C12[5]),  5,7},
  {&(_tg__ZTV7S3572C9__8S3572C13__8S3572C12[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A3__8S3572C13__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C9__A__8S3572C13__8S3572C12[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A4__8S3572C13__8S3572C12[4]),  4,6},
  {&(_tg__ZTV8S3572C14__8S3572C12[7]),  7,9},
  {&(_tg__ZTV7S3572C38S3572C14__8S3572C12[5]),  5,7},
  {&(_tg__ZTV7S3572C77S3572C38S3572C14__A1__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C38S3572C14__A1__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C38S3572C14__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C8__7S3572C38S3572C14__8S3572C12[5]),  5,7},
  {&(_tg__ZTV8S3572C10__8S3572C14__8S3572C12[6]),  6,8},
  {&(_tg__ZTV7S3572C7__8S3572C14__8S3572C12[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C14__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C3__8S3572C14__8S3572C12[5]),  5,7},
  {&(_tg__ZTV7S3572C8__8S3572C14__8S3572C12[5]),  5,7},
  {&(_tg__ZTV8S3572C10__8S3572C12[5]),  5,7},
  {&(_tg__ZTV7S3572C7__8S3572C10__8S3572C12[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C10__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C8__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C8__A2__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C8__A2__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C8__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C12[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A3__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__A3__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__8S3572C12[3]),  3,5},
  {&(_tg__ZTV8S3572C18__8S3572C12[4]),  4,9},
  {&(_tg__ZTV7S3572C78S3572C18__A5__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C78S3572C18__A5__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C88S3572C18__A1__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C88S3572C18__A6__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C88S3572C18__A6__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C88S3572C18__A1__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3572C18__8S3572C12[3]),  3,5},
  {&(_tg__ZTV7S3572C8__8S3572C18__8S3572C12[4]),  4,6},
  {&(_tg__ZTV8S3572C15__A1__8S3572C12[5]),  5,8},
  {&(_tg__ZTV7S3572C9__8S3572C15__A1__8S3572C12[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C15__A1__8S3572C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C15__A1__8S3572C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C12[];
extern  VTBL_ENTRY _ZTV8S3572C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C12[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S3572C14D0Ev,_ZThn380_N8S3572C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S3572C14D1Ev,_ZThn380_N8S3572C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3572C14D0Ev,_ZThn288_N8S3572C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3572C14D1Ev,_ZThn288_N8S3572C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3572C3D0Ev,_ZThn348_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3572C3D1Ev,_ZThn348_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3572C13D0Ev,_ZThn1932_N8S3572C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S3572C13D0Ev,_ZThn1652_N8S3572C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3572C13D1Ev,_ZThn1932_N8S3572C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S3572C13D1Ev,_ZThn1652_N8S3572C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C13D0Ev,_ZTv0_n24_N8S3572C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3572C13D0Ev,_ZThn1560_N8S3572C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C13D1Ev,_ZTv0_n24_N8S3572C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3572C13D1Ev,_ZThn1560_N8S3572C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3572C13D0Ev,_ZThn1272_N8S3572C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3572C13D1Ev,_ZThn1272_N8S3572C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3572C15D0Ev,_ZThn1932_N8S3572C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3572C15D1Ev,_ZThn1932_N8S3572C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3572C7D0Ev,_ZThn44_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3572C7D1Ev,_ZThn44_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S3572C12D0Ev,_ZThn3240_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4168_N8S3572C12D0Ev,_ZThn2416_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S3572C12D1Ev,_ZThn3240_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4168_N8S3572C12D1Ev,_ZThn2416_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C12D0Ev,_ZTv0_n32_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3648_N8S3572C12D0Ev,_ZThn2128_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C12D1Ev,_ZTv0_n32_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3648_N8S3572C12D1Ev,_ZThn2128_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3572C12D0Ev,_ZTv0_n40_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S3572C12D0Ev,_ZThn856_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3572C12D1Ev,_ZTv0_n40_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S3572C12D1Ev,_ZThn856_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C12D0Ev,_ZTv0_n12_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S3572C12D0Ev,_ZThn824_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C12D1Ev,_ZTv0_n12_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S3572C12D1Ev,_ZThn824_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4992_N8S3572C12D0Ev,_ZThn2912_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N8S3572C12D0Ev,_ZThn2788_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4296_N8S3572C12D0Ev,_ZThn2508_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S3572C12D0Ev,_ZThn780_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4992_N8S3572C12D1Ev,_ZThn2912_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N8S3572C12D1Ev,_ZThn2788_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4296_N8S3572C12D1Ev,_ZThn2508_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S3572C12D1Ev,_ZThn780_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C12 = {  "S3572C12", // class name
  bases_S3572C12, 24,
  &(vtc_S3572C12[0]), // expected_vtbl_contents
  &(vtt_S3572C12[0]), // expected_vtt_contents
  ABISELECT(5600,3272), // object size
  NSPAIRA(_ZTI8S3572C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3572C12),132, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C12),73, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C21  {
  long double s3572c21f0;
  void  mf3572c21(); // _ZN8S3572C219mf3572c21Ev
  virtual  ~S3572C21(); // _ZN8S3572C21D1Ev
  S3572C21(); // tgen
};
//SIG(-1 S3572C21) C1{ vd m FD}


void  S3572C21 ::mf3572c21(){}
 S3572C21 ::~S3572C21(){ note_dtor("S3572C21", this);}
S3572C21 ::S3572C21(){ note_ctor("S3572C21", this);} // tgen

static void Test_S3572C21()
{
  extern Class_Descriptor cd_S3572C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S3572C21, buf);
    S3572C21 *dp, &lv = *(dp=new (buf) S3572C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S3572C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C21)");
    check_field_offset(lv, s3572c21f0, ABISELECT(16,4), "S3572C21.s3572c21f0");
    test_class_info(&lv, &cd_S3572C21);
    dp->~S3572C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C21(Test_S3572C21, "S3572C21", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S3572C21C1Ev();
extern void _ZN8S3572C21D1Ev();
Name_Map name_map_S3572C21[] = {
  NSPAIR(_ZN8S3572C21C1Ev),
  NSPAIR(_ZN8S3572C21D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3572C21[];
extern void _ZN8S3572C21D1Ev();
extern void _ZN8S3572C21D0Ev();
static  VTBL_ENTRY vtc_S3572C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C21[0]),
  (VTBL_ENTRY)&_ZN8S3572C21D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C21D0Ev,
};
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
Class_Descriptor cd_S3572C21 = {  "S3572C21", // class name
  0,0,//no base classes
  &(vtc_S3572C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S3572C21),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3572C21),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  S3572C23  {
  __tsi64 s3572c23f0;
  int s3572c23f1;
  int s3572c23f2;
  void *s3572c23f3[10];
  long double s3572c23f4;
  void *s3572c23f5;
  short s3572c23f6;
  int s3572c23f7:27;
  long double s3572c23f8;
  __tsi64 s3572c23f9;
  void  mf3572c23(); // _ZN8S3572C239mf3572c23Ev
};
//SIG(1 S3572C23) U1{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}

#endif // __cplusplus
#ifdef __cplusplus

struct  S3572C22  {
  void *s3572c22f0;
  int s3572c22f1[2];
  ::S3572C23 s3572c22f2;
  void  mf3572c22(); // _ZN8S3572C229mf3572c22Ev
};
//SIG(-1 S3572C22) C1{ m Fp Fi[2] FU2{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}}


void  S3572C22 ::mf3572c22(){}

static void Test_S3572C22()
{
  {
    init_simple_test("S3572C22");
    S3572C22 lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S3572C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C22)");
    check_field_offset(lv, s3572c22f0, 0, "S3572C22.s3572c22f0");
    check_field_offset(lv, s3572c22f1, ABISELECT(8,4), "S3572C22.s3572c22f1");
    check_field_offset(lv, s3572c22f2, ABISELECT(16,12), "S3572C22.s3572c22f2");
  }
}
static Arrange_To_Call_Me vS3572C22(Test_S3572C22, "S3572C22", ABISELECT(96,52));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S3572C22[];
VTBL_ENTRY *P__ZTI8S3572C22 = _ZTI8S3572C22; 
Class_Descriptor cd_S3572C22 = {  "S3572C22", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S3572C22),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  S3572C20  : virtual S3572C21 , virtual S3572C9 , S3572C22 , S3572C5 {
  char s3572c20f0[7];
  void *s3572c20f1;
  long double s3572c20f2;
  ::S3572C8 s3572c20f3;
  __tsi64 s3572c20f4;
  __tsi64 s3572c20f5;
  long s3572c20f6;
  int s3572c20f7;
  int s3572c20f8;
  __tsi64 s3572c20f9[3];
  long double s3572c20f10;
  virtual  ~S3572C20(); // _ZN8S3572C20D2Ev
  virtual void  v7(); // _ZN8S3572C202v7Ev
  S3572C20(); // tgen
};
//SIG(-1 S3572C20) C1{ VBC2{ vd m FD} VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} BC5{ vd m FC4 FC6{}} BC7{ VBC4 VBC5 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} BC8{ m Fp Fi[2] FU9{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v1 Fc[7] Fp FD FC10{ VBC4 VBC5 BC7 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} FL FL Fl Fi Fi FL[3] FD}


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

static void Test_S3572C20()
{
  extern Class_Descriptor cd_S3572C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(75,176)];
    init_test(&cd_S3572C20, buf);
    S3572C20 *dp, &lv = *(dp=new (buf) S3572C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1184,700), "sizeof(S3572C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C20)");
    check_base_class_offset(lv, (S3572C21*), ABISELECT(832,504), "S3572C20");
    check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(1088,644), "S3572C20");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(1088,644), "S3572C20");
    /*is_ambiguous_... S3572C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(864,520), "S3572C20");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(1128,668), "S3572C20");
    check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(920,552), "S3572C20");
    check_base_class_offset(lv, (S3572C9*), ABISELECT(864,520), "S3572C20");
    check_base_class_offset(lv, (S3572C22*), ABISELECT(16,4), "S3572C20");
    /*is_ambiguous_... S3572C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*), ABISELECT(112,56), "S3572C20");
    check_field_offset(lv, s3572c20f0, ABISELECT(152,80), "S3572C20.s3572c20f0");
    check_field_offset(lv, s3572c20f1, ABISELECT(160,88), "S3572C20.s3572c20f1");
    check_field_offset(lv, s3572c20f2, ABISELECT(176,92), "S3572C20.s3572c20f2");
    check_field_offset(lv, s3572c20f3, ABISELECT(192,104), "S3572C20.s3572c20f3");
    check_field_offset(lv, s3572c20f4, ABISELECT(752,440), "S3572C20.s3572c20f4");
    check_field_offset(lv, s3572c20f5, ABISELECT(760,448), "S3572C20.s3572c20f5");
    check_field_offset(lv, s3572c20f6, ABISELECT(768,456), "S3572C20.s3572c20f6");
    check_field_offset(lv, s3572c20f7, ABISELECT(776,460), "S3572C20.s3572c20f7");
    check_field_offset(lv, s3572c20f8, ABISELECT(780,464), "S3572C20.s3572c20f8");
    check_field_offset(lv, s3572c20f9, ABISELECT(784,468), "S3572C20.s3572c20f9");
    check_field_offset(lv, s3572c20f10, ABISELECT(816,492), "S3572C20.s3572c20f10");
    test_class_info(&lv, &cd_S3572C20);
    dp->~S3572C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C20(Test_S3572C20, "S3572C20", ABISELECT(1184,700));

#else // __cplusplus

extern void _ZN8S3572C20C1Ev();
extern void _ZN8S3572C20D2Ev();
Name_Map name_map_S3572C20[] = {
  NSPAIR(_ZN8S3572C20C1Ev),
  NSPAIR(_ZN8S3572C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
static Base_Class bases_S3572C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    ABISELECT(832,504), //bcp->offset
    9, //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_S3572C5,    ABISELECT(1088,644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(864,520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1128,668), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3572C7,    ABISELECT(920,552), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(864,520), //bcp->offset
    14, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C22,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C5,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C20[];
extern void _ZN8S3572C20D1Ev();
extern void _ZN8S3572C20D0Ev();
extern void _ZN8S3572C202v7Ev();
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZThn832_N8S3572C20D1Ev,_ZThn504_N8S3572C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
extern void ABISELECT(_ZThn832_N8S3572C20D0Ev,_ZThn504_N8S3572C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZThn864_N8S3572C20D1Ev,_ZThn520_N8S3572C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev)();
extern void ABISELECT(_ZThn864_N8S3572C20D0Ev,_ZThn520_N8S3572C20D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZThn1128_N8S3572C20D1Ev,_ZThn668_N8S3572C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
extern void ABISELECT(_ZThn1128_N8S3572C20D0Ev,_ZThn668_N8S3572C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C20[] = {
  ABISELECT(1128,668),
  ABISELECT(1088,644),
  ABISELECT(864,520),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&_ZN8S3572C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
  0,
  ABISELECT(-864,-520),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-864,-520),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-920,-552),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev),
  ABISELECT(-1128,-668),
  ABISELECT(-1128,-668),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C20[];
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C20[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C20[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S3572C7D1Ev,_ZThn116_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S3572C7D0Ev,_ZThn116_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__8S3572C20[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__8S3572C20[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn264_N7S3572C9D1Ev,_ZThn148_N7S3572C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
extern void ABISELECT(_ZThn264_N7S3572C9D0Ev,_ZThn148_N7S3572C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__8S3572C20[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
static  VTT_ENTRY vtt_S3572C20[] = {
  {&(_ZTV8S3572C20[6]),  6,34},
  {&(_ZTV8S3572C20[12]),  12,34},
  {&(_ZTV8S3572C20[20]),  20,34},
  {&(_ZTV8S3572C20[27]),  27,34},
  {&(_ZTV8S3572C20[32]),  32,34},
  {&(_tg__ZTV7S3572C9__8S3572C20[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C20[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__8S3572C20[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__8S3572C20[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__8S3572C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C20[];
extern  VTBL_ENTRY _ZTV8S3572C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C20[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3572C9D0Ev,_ZThn148_N7S3572C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3572C9D1Ev,_ZThn148_N7S3572C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3572C7D0Ev,_ZThn116_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3572C7D1Ev,_ZThn116_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S3572C20D0Ev,_ZThn520_N8S3572C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S3572C20D1Ev,_ZThn520_N8S3572C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N8S3572C20D0Ev,_ZThn668_N8S3572C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3572C20D0Ev,_ZThn504_N8S3572C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N8S3572C20D1Ev,_ZThn668_N8S3572C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3572C20D1Ev,_ZThn504_N8S3572C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C20 = {  "S3572C20", // class name
  bases_S3572C20, 8,
  &(vtc_S3572C20[0]), // expected_vtbl_contents
  &(vtt_S3572C20[0]), // expected_vtt_contents
  ABISELECT(1184,700), // object size
  NSPAIRA(_ZTI8S3572C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3572C20),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C20),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C24  {
  int s3572c24f0[4];
  __tsi64 s3572c24f1;
  int s3572c24f2;
  ::S3572C7 s3572c24f3;
  int s3572c24f4;
  long double s3572c24f5;
  int s3572c24f6;
  int s3572c24f7;
  __tsi64 s3572c24f8;
  __tsi64 s3572c24f9;
  short s3572c24f10;
  void  mf3572c24(); // _ZN8S3572C249mf3572c24Ev
  virtual  ~S3572C24(); // _ZN8S3572C24D1Ev
  S3572C24(); // tgen
};
//SIG(-1 S3572C24) C1{ vd m Fi[4] FL Fi FC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} Fi FD Fi[2] FL[2] Fs}


void  S3572C24 ::mf3572c24(){}
 S3572C24 ::~S3572C24(){ note_dtor("S3572C24", this);}
S3572C24 ::S3572C24(){ note_ctor("S3572C24", this);} // tgen

static void Test_S3572C24()
{
  extern Class_Descriptor cd_S3572C24;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,39)];
    init_test(&cd_S3572C24, buf);
    S3572C24 *dp, &lv = *(dp=new (buf) S3572C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,152), "sizeof(S3572C24)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C24)");
    check_field_offset(lv, s3572c24f0, ABISELECT(8,4), "S3572C24.s3572c24f0");
    check_field_offset(lv, s3572c24f1, ABISELECT(24,20), "S3572C24.s3572c24f1");
    check_field_offset(lv, s3572c24f2, ABISELECT(32,28), "S3572C24.s3572c24f2");
    check_field_offset(lv, s3572c24f3, ABISELECT(40,32), "S3572C24.s3572c24f3");
    check_field_offset(lv, s3572c24f4, ABISELECT(176,108), "S3572C24.s3572c24f4");
    check_field_offset(lv, s3572c24f5, ABISELECT(192,112), "S3572C24.s3572c24f5");
    check_field_offset(lv, s3572c24f6, ABISELECT(208,124), "S3572C24.s3572c24f6");
    check_field_offset(lv, s3572c24f7, ABISELECT(212,128), "S3572C24.s3572c24f7");
    check_field_offset(lv, s3572c24f8, ABISELECT(216,132), "S3572C24.s3572c24f8");
    check_field_offset(lv, s3572c24f9, ABISELECT(224,140), "S3572C24.s3572c24f9");
    check_field_offset(lv, s3572c24f10, ABISELECT(232,148), "S3572C24.s3572c24f10");
    test_class_info(&lv, &cd_S3572C24);
    dp->~S3572C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C24(Test_S3572C24, "S3572C24", ABISELECT(240,152));

#else // __cplusplus

extern void _ZN8S3572C24C1Ev();
extern void _ZN8S3572C24D1Ev();
Name_Map name_map_S3572C24[] = {
  NSPAIR(_ZN8S3572C24C1Ev),
  NSPAIR(_ZN8S3572C24D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3572C24[];
extern void _ZN8S3572C24D1Ev();
extern void _ZN8S3572C24D0Ev();
static  VTBL_ENTRY vtc_S3572C24[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C24[0]),
  (VTBL_ENTRY)&_ZN8S3572C24D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C24D0Ev,
};
extern VTBL_ENTRY _ZTI8S3572C24[];
extern  VTBL_ENTRY _ZTV8S3572C24[];
Class_Descriptor cd_S3572C24 = {  "S3572C24", // class name
  0,0,//no base classes
  &(vtc_S3572C24[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,152), // object size
  NSPAIRA(_ZTI8S3572C24),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3572C24),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  S3572C19  : S3572C20 {
  ::S3572C3 s3572c19f0;
  int s3572c19f1:7;
  ::S3572C3 s3572c19f2;
  ::S3572C24 s3572c19f3;
  virtual  ~S3572C19(); // _ZN8S3572C19D2Ev
  virtual void  v8(); // _ZN8S3572C192v8Ev
  S3572C19(); // tgen
};
//SIG(-1 S3572C19) C1{ BC2{ VBC3{ vd m FD} VBC4{ VBC5{ m Fp Fs Fi Fp Fl[2]} BC6{ vd m FC5 FC7{}} BC8{ VBC5 VBC6 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} BC9{ m Fp Fi[2] FU10{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC5 vd v3 Fc[7] Fp FD FC11{ VBC5 VBC6 BC8 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} FL FL Fl Fi Fi FL[3] FD} vd v1 FC12{ VBC6 BC8 VBC11 vd FC4} Fi:7 FC12 FC13{ vd m Fi[4] FL Fi FC8 Fi FD Fi Fi FL FL Fs}}


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

static void Test_S3572C19()
{
  extern Class_Descriptor cd_S3572C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(207,483)];
    init_test(&cd_S3572C19, buf);
    S3572C19 *dp, &lv = *(dp=new (buf) S3572C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3296,1928), "sizeof(S3572C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C19)");
    check_base_class_offset(lv, (S3572C21*)(S3572C20*), ABISELECT(2944,1732), "S3572C19");
    check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(3200,1872), "S3572C19");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(3200,1872), "S3572C19");
    /*is_ambiguous_... S3572C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(2976,1748), "S3572C19");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(3240,1896), "S3572C19");
    check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(3032,1780), "S3572C19");
    check_base_class_offset(lv, (S3572C9*)(S3572C20*), ABISELECT(2976,1748), "S3572C19");
    check_base_class_offset(lv, (S3572C22*)(S3572C20*), ABISELECT(16,4), "S3572C19");
    /*is_ambiguous_... S3572C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C20*), ABISELECT(112,56), "S3572C19");
    check_base_class_offset(lv, (S3572C20*), 0, "S3572C19");
    check_field_offset(lv, s3572c19f0, ABISELECT(832,504), "S3572C19.s3572c19f0");
    set_bf_and_test(lv, s3572c19f1, ABISELECT(1760,1040), 0, 7, 1, "S3572C19");
    set_bf_and_test(lv, s3572c19f1, ABISELECT(1760,1040), 0, 7, hide_sll(1LL<<6), "S3572C19");
    check_field_offset(lv, s3572c19f2, ABISELECT(1776,1044), "S3572C19.s3572c19f2");
    check_field_offset(lv, s3572c19f3, ABISELECT(2704,1580), "S3572C19.s3572c19f3");
    test_class_info(&lv, &cd_S3572C19);
    dp->~S3572C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C19(Test_S3572C19, "S3572C19", ABISELECT(3296,1928));

#else // __cplusplus

extern void _ZN8S3572C19C1Ev();
extern void _ZN8S3572C19D2Ev();
Name_Map name_map_S3572C19[] = {
  NSPAIR(_ZN8S3572C19C1Ev),
  NSPAIR(_ZN8S3572C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C20;
extern VTBL_ENTRY _ZTI8S3572C20[];
extern  VTBL_ENTRY _ZTV8S3572C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C20[];
static Base_Class bases_S3572C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    ABISELECT(2944,1732), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3572C5,    ABISELECT(3200,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
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2976,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(3240,1896), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3572C7,    ABISELECT(3032,1780), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(2976,1748), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3572C5,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3572C20,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C19[];
extern void _ZN8S3572C19D1Ev();
extern void _ZN8S3572C19D0Ev();
extern void _ZN8S3572C202v7Ev();
extern void _ZN8S3572C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C19D1Ev,_ZThn1732_N8S3572C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C19D0Ev,_ZThn1732_N8S3572C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C19D1Ev,_ZTv0_n20_N8S3572C19D1Ev)();
extern void ABISELECT(_ZThn2976_N8S3572C19D1Ev,_ZThn1748_N8S3572C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C19D0Ev,_ZTv0_n20_N8S3572C19D0Ev)();
extern void ABISELECT(_ZThn2976_N8S3572C19D0Ev,_ZThn1748_N8S3572C19D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3572C19D1Ev,_ZTvn32_n20_N8S3572C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C19D0Ev,_ZTvn32_n20_N8S3572C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev)();
extern void ABISELECT(_ZThn3240_N8S3572C19D1Ev,_ZThn1896_N8S3572C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev)();
extern void ABISELECT(_ZThn3240_N8S3572C19D0Ev,_ZThn1896_N8S3572C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C19[] = {
  ABISELECT(3240,1896),
  ABISELECT(3200,1872),
  ABISELECT(2976,1748),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&_ZN8S3572C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C19D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3572C192v8Ev,
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev),
  0,
  ABISELECT(-2976,-1748),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-2976,-1748),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C19D1Ev,_ZTv0_n20_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C19D0Ev,_ZTv0_n20_N8S3572C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-3032,-1780),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C19D1Ev,_ZTvn32_n20_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C19D0Ev,_ZTvn32_n20_N8S3572C19D0Ev),
  ABISELECT(-3240,-1896),
  ABISELECT(-3240,-1896),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C19[];
extern void _ZN8S3572C20D1Ev();
extern void _ZN8S3572C20D0Ev();
extern void _ZN8S3572C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C20__8S3572C19[] = {
  ABISELECT(3240,1896),
  ABISELECT(3200,1872),
  ABISELECT(2976,1748),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&_ZN8S3572C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C20D1Ev,_ZThn1732_N8S3572C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C20D0Ev,_ZThn1732_N8S3572C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3572C20__8S3572C19[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZThn2976_N8S3572C20D1Ev,_ZThn1748_N8S3572C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev)();
extern void ABISELECT(_ZThn2976_N8S3572C20D0Ev,_ZThn1748_N8S3572C20D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C20__8S3572C19[] = {
  0,
  ABISELECT(-2976,-1748),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-2976,-1748),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C20__8S3572C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-3032,-1780),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZThn3240_N8S3572C20D1Ev,_ZThn1896_N8S3572C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
extern void ABISELECT(_ZThn3240_N8S3572C20D0Ev,_ZThn1896_N8S3572C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C20__8S3572C19[] = {
  ABISELECT(-3240,-1896),
  ABISELECT(-3240,-1896),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C19[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S3572C7D1Ev,_ZThn116_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S3572C7D0Ev,_ZThn116_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__8S3572C19[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__8S3572C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn264_N7S3572C9D1Ev,_ZThn148_N7S3572C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
extern void ABISELECT(_ZThn264_N7S3572C9D0Ev,_ZThn148_N7S3572C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__8S3572C19[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
static  VTT_ENTRY vtt_S3572C19[] = {
  {&(_ZTV8S3572C19[6]),  6,35},
  {&(_tg__ZTV8S3572C20__8S3572C19[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3572C20__8S3572C19[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C20__8S3572C19[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C20__8S3572C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C20__8S3572C19[3]),  3,5},
  {&(_ZTV8S3572C19[13]),  13,35},
  {&(_ZTV8S3572C19[21]),  21,35},
  {&(_ZTV8S3572C19[28]),  28,35},
  {&(_ZTV8S3572C19[33]),  33,35},
  {&(_tg__ZTV7S3572C9__8S3572C19[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__8S3572C19[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__8S3572C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__8S3572C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C19[];
extern  VTBL_ENTRY _ZTV8S3572C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C19[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3572C9D0Ev,_ZThn148_N7S3572C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3572C9D1Ev,_ZThn148_N7S3572C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3572C7D0Ev,_ZThn116_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3572C7D1Ev,_ZThn116_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3572C20D0Ev,_ZThn1748_N8S3572C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3572C20D1Ev,_ZThn1748_N8S3572C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N8S3572C20D0Ev,_ZThn1896_N8S3572C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C20D0Ev,_ZThn1732_N8S3572C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N8S3572C20D1Ev,_ZThn1896_N8S3572C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C20D1Ev,_ZThn1732_N8S3572C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C19D0Ev,_ZTv0_n20_N8S3572C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3572C19D0Ev,_ZThn1748_N8S3572C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C19D1Ev,_ZTv0_n20_N8S3572C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3572C19D1Ev,_ZThn1748_N8S3572C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N8S3572C19D0Ev,_ZThn1896_N8S3572C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C19D0Ev,_ZThn1732_N8S3572C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N8S3572C19D1Ev,_ZThn1896_N8S3572C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C19D1Ev,_ZThn1732_N8S3572C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C19 = {  "S3572C19", // class name
  bases_S3572C19, 9,
  &(vtc_S3572C19[0]), // expected_vtbl_contents
  &(vtt_S3572C19[0]), // expected_vtt_contents
  ABISELECT(3296,1928), // object size
  NSPAIRA(_ZTI8S3572C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3572C19),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C19),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C11  : S3572C12 , virtual S3572C19 {
  __tsi64 s3572c11f0;
  int s3572c11f1;
  char s3572c11f2;
  virtual void  v9(); // _ZN8S3572C112v9Ev
  ~S3572C11(); // tgen
  S3572C11(); // tgen
};
//SIG(-1 S3572C11) C1{ BC2{ VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ vd m FC4 FC6{}} Fc:1 Fp[3]} VBC7{ VBC8{ VBC9{ VBC4 VBC3 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} BC5 BC10{ VBC5 BC3 VBC11{ VBC4 VBC5 BC3 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC12{ VBC4 BC5 BC3 vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC13{ VBC12 vd v3 Fi Fp Fi:2 FD Fp} BC12 vd v4 Fi FL Fi:6 FC14{ BC3 VBC12 vd Fi Fp} Fl Fi Fp FC15{ BC10 VBC9 VBC12 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC16{ vd m FC9 FC11 Fp Fi Fp FL FD Fs Fp FL Fi} VBC17{ BC3 BC11 vd v5 v6 v7 Fi Fi:2 FD Fp[2]} VBC13 vd Fi FL FC14} VBC18{ BC19{ VBC20{ vd m FD} VBC12 BC21{ m Fp Fi[2] FU22{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v8 Fc[7] Fp FD FC11 FL FL Fl Fi Fi FL[3] FD} vd v9 FC10 Fi:7 FC10 FC23{ vd m Fi[4] FL Fi FC3 Fi FD Fi Fi FL FL Fs}} v1 FL Fi Fc}


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

static void Test_S3572C11()
{
  extern Class_Descriptor cd_S3572C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(538,1260)];
    init_test(&cd_S3572C11, buf);
    S3572C11 *dp, &lv = *(dp=new (buf) S3572C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8592,5036), "sizeof(S3572C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C11)");
    /*is_ambiguous_... S3572C11::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(1368,816), "S3572C11");
    check_base_class_offset(lv, (S3572C5*)(S3572C10*), ABISELECT(1368,816), "S3572C11");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(1368,816), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C8*), ABISELECT(1368,816), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*), ABISELECT(1368,816), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(1368,816), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(1368,816), "S3572C11");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*)(S3572C13*), ABISELECT(1368,816), "S3572C11");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*)(S3572C13*), ABISELECT(1368,816), "S3572C11");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C18*), ABISELECT(1368,816), "S3572C11");
    check_base_class_offset(lv, (S3572C5*)(S3572C8*)(S3572C18*), ABISELECT(1368,816), "S3572C11");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*)(S3572C18*), ABISELECT(1368,816), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(1408,840), "S3572C11");
    check_base_class_offset(lv, (S3572C4*)(S3572C3*)(S3572C14*), ABISELECT(1408,840), "S3572C11");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(1408,840), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C8*), ABISELECT(1408,840), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*), ABISELECT(1408,840), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(1408,840), "S3572C11");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*)(S3572C13*), ABISELECT(1408,840), "S3572C11");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C18*), ABISELECT(1408,840), "S3572C11");
    check_base_class_offset(lv, (S3572C4*)(S3572C8*)(S3572C18*), ABISELECT(1408,840), "S3572C11");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*)(S3572C18*), ABISELECT(1408,840), "S3572C11");
    /*is_ambiguous_... S3572C12::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C12*), ABISELECT(1328,796), "S3572C11");
    check_base_class_offset(lv, (S3572C7*)(S3572C10*), ABISELECT(1328,796), "S3572C11");
    check_base_class_offset(lv, (S3572C10*)(S3572C14*), ABISELECT(4184,2432), "S3572C11");
    /*is_ambiguous_... S3572C14::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C14*), ABISELECT(3664,2144), "S3572C11");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(3728,2176), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C8*), ABISELECT(4312,2524), "S3572C11");
    check_base_class_offset(lv, (S3572C8*)(S3572C3*)(S3572C14*), ABISELECT(4312,2524), "S3572C11");
    check_base_class_offset(lv, (S3572C3*)(S3572C14*), ABISELECT(3728,2176), "S3572C11");
    check_base_class_offset(lv, (S3572C14*)(S3572C13*), ABISELECT(3664,2144), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(4784,2804), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(4840,2836), "S3572C11");
    check_base_class_offset(lv, (S3572C9*)(S3572C15*)(S3572C13*), ABISELECT(4784,2804), "S3572C11");
    /*is_ambiguous_... S3572C11::S3572C15 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C15*), ABISELECT(4784,2804), "S3572C11");
    check_base_class_offset(lv, (S3572C9*)(S3572C20*)(S3572C19*), ABISELECT(4784,2804), "S3572C11");
    check_base_class_offset(lv, (S3572C15*)(S3572C13*), ABISELECT(1472,872), "S3572C11");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*)(S3572C13*), ABISELECT(1536,904), "S3572C11");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*)(S3572C13*), ABISELECT(1592,936), "S3572C11");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C13*), ABISELECT(1536,904), "S3572C11");
    check_base_class_offset(lv, (S3572C13*)(S3572C12*), ABISELECT(1472,872), "S3572C11");
    check_base_class_offset(lv, (S3572C17*)(S3572C12*), 0, "S3572C11");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C18*), ABISELECT(5008,2928), "S3572C11");
    check_base_class_offset(lv, (S3572C7*)(S3572C8*)(S3572C18*), ABISELECT(5048,2948), "S3572C11");
    check_base_class_offset(lv, (S3572C8*)(S3572C18*), ABISELECT(5048,2948), "S3572C11");
    check_base_class_offset(lv, (S3572C18*)(S3572C12*), ABISELECT(5008,2928), "S3572C11");
    /*is_ambiguous_... S3572C12::S3572C15 */ AMB_check_base_class_offset(lv, (S3572C15*)(S3572C12*), ABISELECT(5552,3256), "S3572C11");
    check_base_class_offset(lv, (S3572C12*), 0, "S3572C11");
    check_base_class_offset(lv, (S3572C21*)(S3572C20*)(S3572C19*), ABISELECT(8560,5020), "S3572C11");
    check_base_class_offset(lv, (S3572C22*)(S3572C20*)(S3572C19*), ABISELECT(5632,3292), "S3572C11");
    /*is_ambiguous_... S3572C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C20*)(S3572C19*), ABISELECT(5728,3344), "S3572C11");
    check_base_class_offset(lv, (S3572C20*)(S3572C19*), ABISELECT(5616,3288), "S3572C11");
    check_base_class_offset(lv, (S3572C19*), ABISELECT(5616,3288), "S3572C11");
    check_field_offset(lv, s3572c11f0, ABISELECT(1312,780), "S3572C11.s3572c11f0");
    check_field_offset(lv, s3572c11f1, ABISELECT(1320,788), "S3572C11.s3572c11f1");
    check_field_offset(lv, s3572c11f2, ABISELECT(1324,792), "S3572C11.s3572c11f2");
    test_class_info(&lv, &cd_S3572C11);
    dp->~S3572C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C11(Test_S3572C11, "S3572C11", ABISELECT(8592,5036));

#else // __cplusplus

extern void _ZN8S3572C11C1Ev();
extern void _ZN8S3572C11D1Ev();
Name_Map name_map_S3572C11[] = {
  NSPAIR(_ZN8S3572C11C1Ev),
  NSPAIR(_ZN8S3572C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C10;
extern VTBL_ENTRY _ZTI8S3572C10[];
extern  VTBL_ENTRY _ZTV8S3572C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
extern Class_Descriptor cd_S3572C3;
extern VTBL_ENTRY _ZTI7S3572C3[];
extern  VTBL_ENTRY _ZTV7S3572C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C3[];
extern Class_Descriptor cd_S3572C14;
extern VTBL_ENTRY _ZTI8S3572C14[];
extern  VTBL_ENTRY _ZTV8S3572C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C15;
extern VTBL_ENTRY _ZTI8S3572C15[];
extern  VTBL_ENTRY _ZTV8S3572C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C15[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C13;
extern VTBL_ENTRY _ZTI8S3572C13[];
extern  VTBL_ENTRY _ZTV8S3572C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C13[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
extern Class_Descriptor cd_S3572C18;
extern VTBL_ENTRY _ZTI8S3572C18[];
extern  VTBL_ENTRY _ZTV8S3572C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C18[];
extern Class_Descriptor cd_S3572C15;
extern VTBL_ENTRY _ZTI8S3572C15[];
extern  VTBL_ENTRY _ZTV8S3572C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C15[];
extern Class_Descriptor cd_S3572C12;
extern VTBL_ENTRY _ZTI8S3572C12[];
extern  VTBL_ENTRY _ZTV8S3572C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C12[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C20;
extern VTBL_ENTRY _ZTI8S3572C20[];
extern  VTBL_ENTRY _ZTV8S3572C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C20[];
extern Class_Descriptor cd_S3572C19;
extern VTBL_ENTRY _ZTI8S3572C19[];
extern  VTBL_ENTRY _ZTV8S3572C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C19[];
static Base_Class bases_S3572C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(1368,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
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1408,840), //bcp->offset
    24, //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_S3572C7,    ABISELECT(1328,796), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3572C10,    ABISELECT(4184,2432), //bcp->offset
    76, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3664,2144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(3728,2176), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(4312,2524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(4312,2524), //bcp->offset
    84, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3572C3,    ABISELECT(3728,2176), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3572C14,    ABISELECT(3664,2144), //bcp->offset
    59, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(4784,2804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(4840,2836), //bcp->offset
    100, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(4784,2804), //bcp->offset
    91, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3572C15,    ABISELECT(1472,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1536,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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(1592,936), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(1536,904), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C13,    ABISELECT(1472,872), //bcp->offset
    29, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3572C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(5008,2928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(5048,2948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(5048,2948), //bcp->offset
    119, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3572C18,    ABISELECT(5008,2928), //bcp->offset
    106, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3572C15,    ABISELECT(5552,3256), //bcp->offset
    125, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3572C12,    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
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C21,    ABISELECT(8560,5020), //bcp->offset
    148, //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
    28, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(5632,3292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(5728,3344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C20,    ABISELECT(5616,3288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3572C19,    ABISELECT(5616,3288), //bcp->offset
    135, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C11[];
extern void _ZN8S3572C11D1Ev();
extern void _ZN8S3572C11D0Ev();
extern void _ZN8S3572C112v9Ev();
extern void ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn1328_N8S3572C11D1Ev,_ZThn796_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn1328_N8S3572C11D0Ev,_ZThn796_N8S3572C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C11D1Ev,_ZTv0_n12_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn1408_N8S3572C11D1Ev,_ZThn840_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C11D0Ev,_ZTv0_n12_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn1408_N8S3572C11D0Ev,_ZThn840_N8S3572C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3572C11D1Ev,_ZTv0_n40_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn1472_N8S3572C11D1Ev,_ZThn872_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3572C11D0Ev,_ZTv0_n40_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn1472_N8S3572C11D0Ev,_ZThn872_N8S3572C11D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
extern void _ZN8S3572C132v3Ev();
extern void ABISELECT(_ZTvn64_n80_N8S3572C11D1Ev,_ZTvn32_n40_N8S3572C11D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S3572C11D0Ev,_ZTvn32_n40_N8S3572C11D0Ev)();
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn120_n80_N8S3572C11D1Ev,_ZTvn64_n40_N8S3572C11D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S3572C11D0Ev,_ZTvn64_n40_N8S3572C11D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S3572C11D1Ev,_ZTv0_n32_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn3664_N8S3572C11D1Ev,_ZThn2144_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3572C11D0Ev,_ZTv0_n32_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn3664_N8S3572C11D0Ev,_ZThn2144_N8S3572C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S3572C11D1Ev,_ZTvn32_n32_N8S3572C11D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3572C11D0Ev,_ZTvn32_n32_N8S3572C11D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3572C11D1Ev,_ZTv0_n24_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn4184_N8S3572C11D1Ev,_ZThn2432_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C11D0Ev,_ZTv0_n24_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn4184_N8S3572C11D0Ev,_ZThn2432_N8S3572C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn4312_N8S3572C11D1Ev,_ZThn2524_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn4312_N8S3572C11D0Ev,_ZThn2524_N8S3572C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn4784_N8S3572C11D1Ev,_ZThn2804_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn4784_N8S3572C11D0Ev,_ZThn2804_N8S3572C11D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3572C11D1Ev,_ZTvn32_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C11D0Ev,_ZTvn32_n20_N8S3572C11D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn5008_N8S3572C11D1Ev,_ZThn2928_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn5008_N8S3572C11D0Ev,_ZThn2928_N8S3572C11D0Ev)() __attribute__((weak));
extern void _ZN8S3572C182v4Ev();
extern void _ZN8S3572C182v5Ev();
extern void _ZN8S3572C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N8S3572C11D1Ev,_ZTvn20_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S3572C11D0Ev,_ZTvn20_n20_N8S3572C11D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3572C11D1Ev,_ZTv0_n24_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn5552_N8S3572C11D1Ev,_ZThn3256_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C11D0Ev,_ZTv0_n24_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn5552_N8S3572C11D0Ev,_ZThn3256_N8S3572C11D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3572C11D1Ev,_ZTv0_n28_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn5616_N8S3572C11D1Ev,_ZThn3288_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3572C11D0Ev,_ZTv0_n28_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn5616_N8S3572C11D0Ev,_ZThn3288_N8S3572C11D0Ev)() __attribute__((weak));
extern void _ZN8S3572C202v7Ev();
extern void _ZN8S3572C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N8S3572C11D1Ev,_ZTv0_n12_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn8560_N8S3572C11D1Ev,_ZThn5020_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C11D0Ev,_ZTv0_n12_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn8560_N8S3572C11D0Ev,_ZThn5020_N8S3572C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C11[] = {
  ABISELECT(8560,5020),
  ABISELECT(5616,3288),
  ABISELECT(5552,3256),
  ABISELECT(5008,2928),
  ABISELECT(4784,2804),
  ABISELECT(4312,2524),
  ABISELECT(4184,2432),
  ABISELECT(3664,2144),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&_ZN8S3572C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C11D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C112v9Ev,
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev),
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C11D1Ev,_ZTv0_n12_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C11D0Ev,_ZTv0_n12_N8S3572C11D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3572C11D1Ev,_ZTv0_n40_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3572C11D0Ev,_ZTv0_n40_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3572C132v3Ev,
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3572C11D1Ev,_ZTvn32_n40_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3572C11D0Ev,_ZTvn32_n40_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3572C11D1Ev,_ZTvn64_n40_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3572C11D0Ev,_ZTvn64_n40_N8S3572C11D0Ev),
  ABISELECT(-3664,-2144),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-3664,-2144),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C11D1Ev,_ZTv0_n32_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C11D0Ev,_ZTv0_n32_N8S3572C11D0Ev),
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-3728,-2176),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C11D1Ev,_ZTvn32_n32_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C11D0Ev,_ZTvn32_n32_N8S3572C11D0Ev),
  ABISELECT(-4184,-2432),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-4184,-2432),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C11D1Ev,_ZTv0_n24_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C11D0Ev,_ZTv0_n24_N8S3572C11D0Ev),
  ABISELECT(-4312,-2524),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-4312,-2524),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev),
  0,
  ABISELECT(-4784,-2804),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-4784,-2804),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-4840,-2836),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C11D1Ev,_ZTvn32_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C11D0Ev,_ZTvn32_n20_N8S3572C11D0Ev),
  0,
  0,
  0,
  ABISELECT(-5008,-2928),
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  ABISELECT(-5008,-2928),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v6Ev,
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-5048,-2948),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3572C11D1Ev,_ZTvn20_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3572C11D0Ev,_ZTvn20_n20_N8S3572C11D0Ev),
  0,
  ABISELECT(-5552,-3256),
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3256),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C11D1Ev,_ZTv0_n24_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C11D0Ev,_ZTv0_n24_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  0,
  0,
  ABISELECT(-5616,-3288),
  ABISELECT(-4208,-2448),
  ABISELECT(-4248,-2472),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  ABISELECT(-5616,-3288),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C11D1Ev,_ZTv0_n28_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C11D0Ev,_ZTv0_n28_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3572C192v8Ev,
  ABISELECT(-8560,-5020),
  ABISELECT(-8560,-5020),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C11D1Ev,_ZTv0_n12_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C11D0Ev,_ZTv0_n12_N8S3572C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C11[];
extern void _ZN8S3572C12D1Ev();
extern void _ZN8S3572C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C12__8S3572C11[] = {
  ABISELECT(5552,3256),
  ABISELECT(5008,2928),
  ABISELECT(4784,2804),
  ABISELECT(4312,2524),
  ABISELECT(4184,2432),
  ABISELECT(3664,2144),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&_ZN8S3572C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C12D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn1328_N8S3572C12D1Ev,_ZThn796_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn1328_N8S3572C12D0Ev,_ZThn796_N8S3572C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C12__8S3572C11[] = {
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C12D1Ev,_ZTv0_n12_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn1408_N8S3572C12D1Ev,_ZThn840_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C12D0Ev,_ZTv0_n12_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn1408_N8S3572C12D0Ev,_ZThn840_N8S3572C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C12__8S3572C11[] = {
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C12D1Ev,_ZTv0_n12_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C12D0Ev,_ZTv0_n12_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S3572C12D1Ev,_ZTv0_n40_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn1472_N8S3572C12D1Ev,_ZThn872_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3572C12D0Ev,_ZTv0_n40_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn1472_N8S3572C12D0Ev,_ZThn872_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
extern void _ZN8S3572C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C13__8S3572C12__8S3572C11[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3572C12D1Ev,_ZTv0_n40_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3572C12D0Ev,_ZTv0_n40_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3572C132v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S3572C12D1Ev,_ZTv0_n32_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn3664_N8S3572C12D1Ev,_ZThn2144_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3572C12D0Ev,_ZTv0_n32_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn3664_N8S3572C12D0Ev,_ZThn2144_N8S3572C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C14__8S3572C12__8S3572C11[] = {
  ABISELECT(-3664,-2144),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-3664,-2144),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C12D1Ev,_ZTv0_n32_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C12D0Ev,_ZTv0_n32_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn4184_N8S3572C12D1Ev,_ZThn2432_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn4184_N8S3572C12D0Ev,_ZThn2432_N8S3572C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C12__8S3572C11[] = {
  ABISELECT(-4184,-2432),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-4184,-2432),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3572C12D1Ev,_ZTvn32_n32_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3572C12D0Ev,_ZTvn32_n32_N8S3572C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C38S3572C14__8S3572C12__8S3572C11[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-3728,-2176),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C12D1Ev,_ZTvn32_n32_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C12D0Ev,_ZTvn32_n32_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn4312_N8S3572C12D1Ev,_ZThn2524_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn4312_N8S3572C12D0Ev,_ZThn2524_N8S3572C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C12__8S3572C11[] = {
  ABISELECT(-4312,-2524),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-4312,-2524),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn4784_N8S3572C12D1Ev,_ZThn2804_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn4784_N8S3572C12D0Ev,_ZThn2804_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C12__8S3572C11[] = {
  0,
  ABISELECT(-4784,-2804),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-4784,-2804),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C12D1Ev,_ZTvn32_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C12D0Ev,_ZTvn32_n20_N8S3572C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__8S3572C12__8S3572C11[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-4840,-2836),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C12D1Ev,_ZTvn32_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C12D0Ev,_ZTvn32_n20_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S3572C12D1Ev,_ZTvn32_n40_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S3572C12D0Ev,_ZTvn32_n40_N8S3572C12D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C98S3572C13__A1__8S3572C12__8S3572C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3572C12D1Ev,_ZTvn32_n40_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3572C12D0Ev,_ZTvn32_n40_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S3572C12D1Ev,_ZTvn64_n40_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S3572C12D0Ev,_ZTvn64_n40_N8S3572C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C13__A4__8S3572C12__8S3572C11[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3572C12D1Ev,_ZTvn64_n40_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3572C12D0Ev,_ZTvn64_n40_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn5008_N8S3572C12D1Ev,_ZThn2928_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn5008_N8S3572C12D0Ev,_ZThn2928_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN8S3572C182v4Ev();
extern void _ZN8S3572C182v5Ev();
extern void _ZN8S3572C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C18__8S3572C12__8S3572C11[] = {
  0,
  0,
  0,
  ABISELECT(-5008,-2928),
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  ABISELECT(-5008,-2928),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S3572C12D1Ev,_ZTvn20_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S3572C12D0Ev,_ZTvn20_n20_N8S3572C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C88S3572C18__A1__8S3572C12__8S3572C11[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-5048,-2948),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3572C12D1Ev,_ZTvn20_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3572C12D0Ev,_ZTvn20_n20_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn5552_N8S3572C12D1Ev,_ZThn3256_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn5552_N8S3572C12D0Ev,_ZThn3256_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C15__A1__8S3572C12__8S3572C11[] = {
  0,
  ABISELECT(-5552,-3256),
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3256),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C11[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S3572C7D1Ev,_ZThn44_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S3572C7D0Ev,_ZThn44_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__8S3572C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN8S3572C13D1Ev();
extern void _ZN8S3572C13D0Ev();
extern void _ZN8S3572C152v2Ev();
extern void _ZN8S3572C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C13__8S3572C11[] = {
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&_ZN8S3572C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3572C132v3Ev,
};
extern void _ZN8S3572C15D1Ev();
extern void _ZN8S3572C15D0Ev();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C158S3572C13__8S3572C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&_ZN8S3572C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZThn3312_N8S3572C15D1Ev,_ZThn1932_N8S3572C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev)();
extern void ABISELECT(_ZThn3312_N8S3572C15D0Ev,_ZThn1932_N8S3572C15D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C158S3572C13__8S3572C11[] = {
  0,
  ABISELECT(-3312,-1932),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-3312,-1932),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C158S3572C13__8S3572C11[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-3368,-1964),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C158S3572C13__8S3572C11[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C98S3572C13__A1__8S3572C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C13__A4__8S3572C11[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C98S3572C13__A4__8S3572C11[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C98S3572C13__A1__8S3572C11[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C98S3572C13__A1__8S3572C11[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2192_N8S3572C13D1Ev,_ZThn1272_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2192_N8S3572C13D0Ev,_ZThn1272_N8S3572C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C14__8S3572C13__8S3572C11[] = {
  ABISELECT(-2192,-1272),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C13D1Ev,_ZTv0_n24_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2712_N8S3572C13D1Ev,_ZThn1560_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C13D0Ev,_ZTv0_n24_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2712_N8S3572C13D0Ev,_ZThn1560_N8S3572C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C13__8S3572C11[] = {
  ABISELECT(-2712,-1560),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-2712,-1560),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C13D1Ev,_ZTv0_n24_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C13D0Ev,_ZTv0_n24_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C13__8S3572C11[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C13D1Ev,_ZTv0_n12_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C13D0Ev,_ZTv0_n12_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C13__8S3572C11[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C13D1Ev,_ZTv0_n12_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C13D0Ev,_ZTv0_n12_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3572C13D1Ev,_ZTvn32_n32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3572C13D0Ev,_ZTvn32_n32_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C38S3572C14__8S3572C13__8S3572C11[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-2256,-1304),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C13D1Ev,_ZTvn32_n32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C13D0Ev,_ZTvn32_n32_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2840_N8S3572C13D1Ev,_ZThn1652_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2840_N8S3572C13D0Ev,_ZThn1652_N8S3572C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C13__8S3572C11[] = {
  ABISELECT(-2840,-1652),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-2840,-1652),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn3312_N8S3572C13D1Ev,_ZThn1932_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn3312_N8S3572C13D0Ev,_ZThn1932_N8S3572C13D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C13__8S3572C11[] = {
  0,
  ABISELECT(-3312,-1932),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-3312,-1932),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C13D1Ev,_ZTvn32_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C13D0Ev,_ZTvn32_n20_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__8S3572C13__8S3572C11[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-3368,-1964),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C13D1Ev,_ZTvn32_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C13D0Ev,_ZTvn32_n20_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3572C13D1Ev,_ZThn32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C13D0Ev,_ZThn32_N8S3572C13D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__A__8S3572C13__8S3572C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C13D1Ev,_ZThn32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C13D0Ev,_ZThn32_N8S3572C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZThn120_N8S3572C13D1Ev,_ZThn64_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn120_N8S3572C13D0Ev,_ZThn64_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A4__8S3572C13__8S3572C11[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3572C13D1Ev,_ZThn64_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3572C13D0Ev,_ZThn64_N8S3572C13D0Ev),
};
extern void _ZN8S3572C14D1Ev();
extern void _ZN8S3572C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C14__8S3572C11[] = {
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&_ZN8S3572C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C14D0Ev,
};
extern void _ZN7S3572C3D1Ev();
extern void _ZN7S3572C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C38S3572C14__8S3572C11[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&_ZN7S3572C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C3D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C38S3572C14__A1__8S3572C11[] = {
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C38S3572C14__A1__8S3572C11[] = {
  ABISELECT(2320,1336),
  ABISELECT(2320,1336),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C38S3572C14__8S3572C11[] = {
  ABISELECT(2320,1336),
  ABISELECT(2320,1336),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn584_N7S3572C3D1Ev,_ZThn348_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn584_N7S3572C3D0Ev,_ZThn348_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C38S3572C14__8S3572C11[] = {
  ABISELECT(-584,-348),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-584,-348),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn520_N8S3572C14D1Ev,_ZThn288_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn520_N8S3572C14D0Ev,_ZThn288_N8S3572C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C14__8S3572C11[] = {
  ABISELECT(-520,-288),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C14__8S3572C11[] = {
  ABISELECT(2336,1348),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2336,1348),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C14__8S3572C11[] = {
  ABISELECT(2256,1304),
  ABISELECT(2256,1304),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3572C14D1Ev,_ZThn32_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C14D0Ev,_ZThn32_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C3__8S3572C14__8S3572C11[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C14D1Ev,_ZThn32_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C14D0Ev,_ZThn32_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn648_N8S3572C14D1Ev,_ZThn380_N8S3572C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev)();
extern void ABISELECT(_ZThn648_N8S3572C14D0Ev,_ZThn380_N8S3572C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C14__8S3572C11[] = {
  ABISELECT(-648,-380),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-648,-380),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev),
};
extern void _ZN8S3572C10D1Ev();
extern void _ZN8S3572C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C11[] = {
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&_ZN8S3572C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C10__8S3572C11[] = {
  ABISELECT(2856,1636),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2856,1636),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C10__8S3572C11[] = {
  ABISELECT(2776,1592),
  ABISELECT(2776,1592),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C11[] = {
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C8__A2__8S3572C11[] = {
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C8__A2__8S3572C11[] = {
  ABISELECT(2904,1684),
  ABISELECT(2904,1684),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C8__8S3572C11[] = {
  ABISELECT(2904,1684),
  ABISELECT(2904,1684),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C11[] = {
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__8S3572C11[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__A3__8S3572C11[] = {
  ABISELECT(3432,1996),
  ABISELECT(3432,1996),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__8S3572C11[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__8S3572C11[] = {
  ABISELECT(3376,1964),
  ABISELECT(3376,1964),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void _ZN8S3572C18D1Ev();
extern void _ZN8S3572C18D0Ev();
extern void _ZN8S3572C182v4Ev();
extern void _ZN8S3572C182v5Ev();
extern void _ZN8S3572C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C18__8S3572C11[] = {
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&_ZN8S3572C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C18D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v6Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C78S3572C18__A5__8S3572C11[] = {
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C78S3572C18__A5__8S3572C11[] = {
  ABISELECT(3600,2088),
  ABISELECT(3600,2088),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C88S3572C18__A1__8S3572C11[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C88S3572C18__A6__8S3572C11[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C88S3572C18__A6__8S3572C11[] = {
  ABISELECT(3640,2108),
  ABISELECT(3640,2108),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C88S3572C18__A1__8S3572C11[] = {
  ABISELECT(3640,2108),
  ABISELECT(3640,2108),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C18D1Ev,_ZTv0_n12_N8S3572C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C18D0Ev,_ZTv0_n12_N8S3572C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C18__8S3572C11[] = {
  ABISELECT(3600,2088),
  ABISELECT(3600,2088),
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C18D1Ev,_ZTv0_n12_N8S3572C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C18D0Ev,_ZTv0_n12_N8S3572C18D0Ev),
};
extern void ABISELECT(_ZThn40_N8S3572C18D1Ev,_ZThn20_N8S3572C18D1Ev)();
extern void ABISELECT(_ZThn40_N8S3572C18D0Ev,_ZThn20_N8S3572C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C18__8S3572C11[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3572C18D1Ev,_ZThn20_N8S3572C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3572C18D0Ev,_ZThn20_N8S3572C18D0Ev),
};
extern void _ZN8S3572C15D1Ev();
extern void _ZN8S3572C15D0Ev();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C15__A1__8S3572C11[] = {
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&_ZN8S3572C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C15__A1__8S3572C11[] = {
  0,
  ABISELECT(768,452),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(768,452),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C15__A1__8S3572C11[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(712,420),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C15__A1__8S3572C11[] = {
  ABISELECT(4144,2416),
  ABISELECT(4144,2416),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev),
};
extern void _ZN8S3572C19D1Ev();
extern void _ZN8S3572C19D0Ev();
extern void _ZN8S3572C202v7Ev();
extern void _ZN8S3572C192v8Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C19__8S3572C11[] = {
  ABISELECT(-4208,-2448),
  ABISELECT(-4248,-2472),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&_ZN8S3572C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C19D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3572C192v8Ev,
};
extern void _ZN8S3572C20D1Ev();
extern void _ZN8S3572C20D0Ev();
extern void _ZN8S3572C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C208S3572C19__8S3572C11[] = {
  ABISELECT(-4208,-2448),
  ABISELECT(-4248,-2472),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&_ZN8S3572C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C20D1Ev,_ZThn1732_N8S3572C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C20D0Ev,_ZThn1732_N8S3572C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3572C208S3572C19__8S3572C11[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C208S3572C19__8S3572C11[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C208S3572C19__8S3572C11[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C208S3572C19__8S3572C11[] = {
  ABISELECT(4208,2448),
  ABISELECT(4208,2448),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C19D1Ev,_ZThn1732_N8S3572C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C19D0Ev,_ZThn1732_N8S3572C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3572C19__8S3572C11[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C19D1Ev,_ZTv0_n20_N8S3572C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C19D0Ev,_ZTv0_n20_N8S3572C19D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C19__8S3572C11[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C19D1Ev,_ZTv0_n20_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C19D0Ev,_ZTv0_n20_N8S3572C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C19D1Ev,_ZTvn32_n20_N8S3572C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C19D0Ev,_ZTvn32_n20_N8S3572C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C19__8S3572C11[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C19D1Ev,_ZTvn32_n20_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C19D0Ev,_ZTvn32_n20_N8S3572C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C19__8S3572C11[] = {
  ABISELECT(4208,2448),
  ABISELECT(4208,2448),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev),
};
static  VTT_ENTRY vtt_S3572C11[] = {
  {&(_ZTV8S3572C11[14]),  14,153},
  {&(_tg__ZTV8S3572C12__8S3572C11[12]),  12,14},
  {&(_tg__ZTV7S3572C7__8S3572C12__8S3572C11[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C12__8S3572C11[3]),  3,5},
  {&(_tg__ZTV8S3572C13__8S3572C12__8S3572C11[13]),  13,17},
  {&(_tg__ZTV8S3572C14__8S3572C12__8S3572C11[8]),  8,10},
  {&(_tg__ZTV8S3572C10__8S3572C12__8S3572C11[6]),  6,8},
  {&(_tg__ZTV7S3572C38S3572C14__8S3572C12__8S3572C11[5]),  5,7},
  {&(_tg__ZTV7S3572C8__8S3572C12__8S3572C11[5]),  5,7},
  {&(_tg__ZTV7S3572C9__8S3572C12__8S3572C11[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A3__8S3572C12__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C98S3572C13__A1__8S3572C12__8S3572C11[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C98S3572C13__A4__8S3572C12__8S3572C11[4]),  4,6},
  {&(_tg__ZTV8S3572C18__8S3572C12__8S3572C11[8]),  8,13},
  {&(_tg__ZTV7S3572C88S3572C18__A1__8S3572C12__8S3572C11[4]),  4,6},
  {&(_tg__ZTV8S3572C15__A1__8S3572C12__8S3572C11[7]),  7,10},
  {&(_ZTV8S3572C11[22]),  22,153},
  {&(_ZTV8S3572C11[27]),  27,153},
  {&(_ZTV8S3572C11[42]),  42,153},
  {&(_ZTV8S3572C11[67]),  67,153},
  {&(_ZTV8S3572C11[82]),  82,153},
  {&(_ZTV8S3572C11[74]),  74,153},
  {&(_ZTV8S3572C11[89]),  89,153},
  {&(_ZTV8S3572C11[97]),  97,153},
  {&(_ZTV8S3572C11[104]),  104,153},
  {&(_ZTV8S3572C11[50]),  50,153},
  {&(_ZTV8S3572C11[57]),  57,153},
  {&(_ZTV8S3572C11[114]),  114,153},
  {&(_ZTV8S3572C11[123]),  123,153},
  {&(_ZTV8S3572C11[132]),  132,153},
  {&(_ZTV8S3572C11[144]),  144,153},
  {&(_ZTV8S3572C11[151]),  151,153},
  {&(_tg__ZTV7S3572C7__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__8S3572C11[3]),  3,5},
  {&(_tg__ZTV8S3572C13__8S3572C11[9]),  9,13},
  {&(_tg__ZTV8S3572C158S3572C13__8S3572C11[5]),  5,8},
  {&(_tg__ZTV7S3572C9__8S3572C158S3572C13__8S3572C11[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C158S3572C13__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C158S3572C13__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C98S3572C13__A1__8S3572C11[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C98S3572C13__A4__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C98S3572C13__A4__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C98S3572C13__A1__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C98S3572C13__A1__8S3572C11[3]),  3,5},
  {&(_tg__ZTV8S3572C14__8S3572C13__8S3572C11[8]),  8,10},
  {&(_tg__ZTV8S3572C10__8S3572C13__8S3572C11[6]),  6,8},
  {&(_tg__ZTV7S3572C7__8S3572C13__8S3572C11[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C13__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C38S3572C14__8S3572C13__8S3572C11[5]),  5,7},
  {&(_tg__ZTV7S3572C8__8S3572C13__8S3572C11[5]),  5,7},
  {&(_tg__ZTV7S3572C9__8S3572C13__8S3572C11[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A3__8S3572C13__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C9__A__8S3572C13__8S3572C11[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A4__8S3572C13__8S3572C11[4]),  4,6},
  {&(_tg__ZTV8S3572C14__8S3572C11[7]),  7,9},
  {&(_tg__ZTV7S3572C38S3572C14__8S3572C11[5]),  5,7},
  {&(_tg__ZTV7S3572C77S3572C38S3572C14__A1__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C38S3572C14__A1__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C38S3572C14__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C8__7S3572C38S3572C14__8S3572C11[5]),  5,7},
  {&(_tg__ZTV8S3572C10__8S3572C14__8S3572C11[6]),  6,8},
  {&(_tg__ZTV7S3572C7__8S3572C14__8S3572C11[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C14__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C3__8S3572C14__8S3572C11[5]),  5,7},
  {&(_tg__ZTV7S3572C8__8S3572C14__8S3572C11[5]),  5,7},
  {&(_tg__ZTV8S3572C10__8S3572C11[5]),  5,7},
  {&(_tg__ZTV7S3572C7__8S3572C10__8S3572C11[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C10__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C8__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C8__A2__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C8__A2__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C8__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C11[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A3__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__A3__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__8S3572C11[3]),  3,5},
  {&(_tg__ZTV8S3572C18__8S3572C11[4]),  4,9},
  {&(_tg__ZTV7S3572C78S3572C18__A5__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C78S3572C18__A5__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C88S3572C18__A1__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C88S3572C18__A6__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C88S3572C18__A6__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C88S3572C18__A1__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3572C18__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C8__8S3572C18__8S3572C11[4]),  4,6},
  {&(_tg__ZTV8S3572C15__A1__8S3572C11[5]),  5,8},
  {&(_tg__ZTV7S3572C9__8S3572C15__A1__8S3572C11[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C15__A1__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C15__A1__8S3572C11[3]),  3,5},
  {&(_tg__ZTV8S3572C19__8S3572C11[6]),  6,10},
  {&(_tg__ZTV8S3572C208S3572C19__8S3572C11[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3572C208S3572C19__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C208S3572C19__8S3572C11[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C208S3572C19__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C208S3572C19__8S3572C11[3]),  3,5},
  {&(_tg__ZTV8S3572C21__8S3572C19__8S3572C11[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C19__8S3572C11[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C19__8S3572C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C19__8S3572C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C11[];
extern  VTBL_ENTRY _ZTV8S3572C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C11[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C19D0Ev,_ZThn1732_N8S3572C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C19D1Ev,_ZThn1732_N8S3572C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C20D0Ev,_ZThn1732_N8S3572C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C20D1Ev,_ZThn1732_N8S3572C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S3572C14D0Ev,_ZThn380_N8S3572C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S3572C14D1Ev,_ZThn380_N8S3572C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3572C14D0Ev,_ZThn288_N8S3572C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3572C14D1Ev,_ZThn288_N8S3572C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3572C3D0Ev,_ZThn348_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3572C3D1Ev,_ZThn348_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3572C13D0Ev,_ZThn1932_N8S3572C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S3572C13D0Ev,_ZThn1652_N8S3572C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3572C13D1Ev,_ZThn1932_N8S3572C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S3572C13D1Ev,_ZThn1652_N8S3572C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C13D0Ev,_ZTv0_n24_N8S3572C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3572C13D0Ev,_ZThn1560_N8S3572C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C13D1Ev,_ZTv0_n24_N8S3572C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3572C13D1Ev,_ZThn1560_N8S3572C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3572C13D0Ev,_ZThn1272_N8S3572C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3572C13D1Ev,_ZThn1272_N8S3572C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3572C15D0Ev,_ZThn1932_N8S3572C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3572C15D1Ev,_ZThn1932_N8S3572C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3572C7D0Ev,_ZThn44_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3572C7D1Ev,_ZThn44_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S3572C12D0Ev,_ZThn3256_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S3572C12D0Ev,_ZThn2432_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S3572C12D1Ev,_ZThn3256_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S3572C12D1Ev,_ZThn2432_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C12D0Ev,_ZTv0_n32_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S3572C12D0Ev,_ZThn2144_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C12D1Ev,_ZTv0_n32_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S3572C12D1Ev,_ZThn2144_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3572C12D0Ev,_ZTv0_n40_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S3572C12D0Ev,_ZThn872_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3572C12D1Ev,_ZTv0_n40_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S3572C12D1Ev,_ZThn872_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C12D0Ev,_ZTv0_n12_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S3572C12D0Ev,_ZThn840_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C12D1Ev,_ZTv0_n12_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S3572C12D1Ev,_ZThn840_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S3572C12D0Ev,_ZThn2928_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S3572C12D0Ev,_ZThn2804_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S3572C12D0Ev,_ZThn2524_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S3572C12D0Ev,_ZThn796_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S3572C12D1Ev,_ZThn2928_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S3572C12D1Ev,_ZThn2804_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S3572C12D1Ev,_ZThn2524_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S3572C12D1Ev,_ZThn796_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C11D0Ev,_ZTv0_n28_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S3572C11D0Ev,_ZThn3288_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C11D1Ev,_ZTv0_n28_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S3572C11D1Ev,_ZThn3288_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C11D0Ev,_ZTv0_n24_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S3572C11D0Ev,_ZThn3256_N8S3572C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S3572C11D0Ev,_ZThn2432_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C11D1Ev,_ZTv0_n24_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S3572C11D1Ev,_ZThn3256_N8S3572C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S3572C11D1Ev,_ZThn2432_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C11D0Ev,_ZTv0_n32_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S3572C11D0Ev,_ZThn2144_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C11D1Ev,_ZTv0_n32_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S3572C11D1Ev,_ZThn2144_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3572C11D0Ev,_ZTv0_n40_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S3572C11D0Ev,_ZThn872_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3572C11D1Ev,_ZTv0_n40_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S3572C11D1Ev,_ZThn872_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C11D0Ev,_ZTv0_n12_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S3572C11D0Ev,_ZThn5020_N8S3572C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S3572C11D0Ev,_ZThn840_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C11D1Ev,_ZTv0_n12_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S3572C11D1Ev,_ZThn5020_N8S3572C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S3572C11D1Ev,_ZThn840_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S3572C11D0Ev,_ZThn2928_N8S3572C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S3572C11D0Ev,_ZThn2804_N8S3572C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S3572C11D0Ev,_ZThn2524_N8S3572C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S3572C11D0Ev,_ZThn796_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S3572C11D1Ev,_ZThn2928_N8S3572C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S3572C11D1Ev,_ZThn2804_N8S3572C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S3572C11D1Ev,_ZThn2524_N8S3572C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S3572C11D1Ev,_ZThn796_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C11 = {  "S3572C11", // class name
  bases_S3572C11, 30,
  &(vtc_S3572C11[0]), // expected_vtbl_contents
  &(vtt_S3572C11[0]), // expected_vtt_contents
  ABISELECT(8592,5036), // object size
  NSPAIRA(_ZTI8S3572C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3572C11),153, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C11),100, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C27  : virtual S3572C16 , S3572C9 {
  ::S3572C17 s3572c27f0;
  void *s3572c27f1;
  int s3572c27f2;
  long double s3572c27f3;
  long double s3572c27f4;
  __tsi64 s3572c27f5;
  int s3572c27f6;
  ~S3572C27(); // tgen
  S3572C27(); // tgen
};
//SIG(-1 S3572C27) C1{ VBC2{ BC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ vd m FC4 FC6{}} Fc:1 Fp[3]} VBC7{ VBC4 BC5 BC3 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} BC7 FC8{ vd m FC9{ VBC4 VBC3 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} FC10{ VBC4 VBC5 BC3 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} Fp Fi FD[2] FL Fi}


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

static void Test_S3572C27()
{
  extern Class_Descriptor cd_S3572C27;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(100,235)];
    init_test(&cd_S3572C27, buf);
    S3572C27 *dp, &lv = *(dp=new (buf) S3572C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1584,936), "sizeof(S3572C27)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C27)");
    /*is_ambiguous_... S3572C16::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C16*), ABISELECT(1256,756), "S3572C27");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(1256,756), "S3572C27");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(1256,756), "S3572C27");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(1256,756), "S3572C27");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(1256,756), "S3572C27");
    /*is_ambiguous_... S3572C16::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C16*), ABISELECT(1296,780), "S3572C27");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(1296,780), "S3572C27");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(1296,780), "S3572C27");
    /*is_ambiguous_... S3572C16::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C16*), ABISELECT(1200,728), "S3572C27");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(1360,812), "S3572C27");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(1416,844), "S3572C27");
    check_base_class_offset(lv, (S3572C9*)(S3572C16*), ABISELECT(1360,812), "S3572C27");
    check_base_class_offset(lv, (S3572C16*), ABISELECT(1200,728), "S3572C27");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), 0, "S3572C27");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(56,32), "S3572C27");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C9*), 0, "S3572C27");
    check_field_offset(lv, s3572c27f0, ABISELECT(224,124), "S3572C27.s3572c27f0");
    check_field_offset(lv, s3572c27f1, ABISELECT(1136,684), "S3572C27.s3572c27f1");
    check_field_offset(lv, s3572c27f2, ABISELECT(1144,688), "S3572C27.s3572c27f2");
    check_field_offset(lv, s3572c27f3, ABISELECT(1152,692), "S3572C27.s3572c27f3");
    check_field_offset(lv, s3572c27f4, ABISELECT(1168,704), "S3572C27.s3572c27f4");
    check_field_offset(lv, s3572c27f5, ABISELECT(1184,716), "S3572C27.s3572c27f5");
    check_field_offset(lv, s3572c27f6, ABISELECT(1192,724), "S3572C27.s3572c27f6");
    test_class_info(&lv, &cd_S3572C27);
    dp->~S3572C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C27(Test_S3572C27, "S3572C27", ABISELECT(1584,936));

#else // __cplusplus

extern void _ZN8S3572C27C1Ev();
extern void _ZN8S3572C27D1Ev();
Name_Map name_map_S3572C27[] = {
  NSPAIR(_ZN8S3572C27C1Ev),
  NSPAIR(_ZN8S3572C27D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C16;
extern VTBL_ENTRY _ZTI8S3572C16[];
extern  VTBL_ENTRY _ZTV8S3572C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C16[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
static Base_Class bases_S3572C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(1256,756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1296,780), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C7,    ABISELECT(1200,728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1360,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(1416,844), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(1360,812), //bcp->offset
    28, //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
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3572C16,    ABISELECT(1200,728), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(56,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3572C9,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C27[];
extern void _ZN8S3572C27D1Ev();
extern void _ZN8S3572C27D0Ev();
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZThn56_N8S3572C27D1Ev,_ZThn32_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn56_N8S3572C27D0Ev,_ZThn32_N8S3572C27D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn1200_N8S3572C27D1Ev,_ZThn728_N8S3572C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev)();
extern void ABISELECT(_ZThn1200_N8S3572C27D0Ev,_ZThn728_N8S3572C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C27D1Ev,_ZTv0_n12_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn1296_N8S3572C27D1Ev,_ZThn780_N8S3572C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C27D0Ev,_ZTv0_n12_N8S3572C27D0Ev)();
extern void ABISELECT(_ZThn1296_N8S3572C27D0Ev,_ZThn780_N8S3572C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C27D1Ev,_ZTv0_n20_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn1360_N8S3572C27D1Ev,_ZThn812_N8S3572C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C27D0Ev,_ZTv0_n20_N8S3572C27D0Ev)();
extern void ABISELECT(_ZThn1360_N8S3572C27D0Ev,_ZThn812_N8S3572C27D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3572C27D1Ev,_ZTvn32_n20_N8S3572C27D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C27D0Ev,_ZTvn32_n20_N8S3572C27D0Ev)();
static  VTBL_ENTRY vtc_S3572C27[] = {
  ABISELECT(1360,812),
  ABISELECT(1200,728),
  ABISELECT(1296,780),
  ABISELECT(1256,756),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&_ZN8S3572C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C27D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(1240,748),
  ABISELECT(1200,724),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3572C27D1Ev,_ZThn32_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3572C27D0Ev,_ZThn32_N8S3572C27D0Ev),
  ABISELECT(-1200,-728),
  ABISELECT(160,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  ABISELECT(-1200,-728),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev),
  ABISELECT(-1296,-780),
  ABISELECT(-1296,-780),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C27D1Ev,_ZTv0_n12_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C27D0Ev,_ZTv0_n12_N8S3572C27D0Ev),
  0,
  ABISELECT(-1360,-812),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-1360,-812),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C27D1Ev,_ZTv0_n20_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C27D0Ev,_ZTv0_n20_N8S3572C27D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-1416,-844),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C27D1Ev,_ZTvn32_n20_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C27D0Ev,_ZTvn32_n20_N8S3572C27D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C27[];
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__A__8S3572C27[] = {
  ABISELECT(1296,780),
  ABISELECT(1256,756),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A2__8S3572C27[] = {
  ABISELECT(1240,748),
  ABISELECT(1200,724),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn1240_N7S3572C7D1Ev,_ZThn748_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn1240_N7S3572C7D0Ev,_ZThn748_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__A2__8S3572C27[] = {
  ABISELECT(-1240,-748),
  ABISELECT(-1240,-748),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__A__8S3572C27[] = {
  ABISELECT(1240,748),
  ABISELECT(1200,724),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn1296_N7S3572C9D1Ev,_ZThn780_N7S3572C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
extern void ABISELECT(_ZThn1296_N7S3572C9D0Ev,_ZThn780_N7S3572C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__A__8S3572C27[] = {
  ABISELECT(-1296,-780),
  ABISELECT(-1296,-780),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void _ZN8S3572C16D1Ev();
extern void _ZN8S3572C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C16__8S3572C27[] = {
  ABISELECT(160,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&_ZN8S3572C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C16D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C78S3572C16__8S3572C27[] = {
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S3572C7D1Ev,_ZThn52_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S3572C7D0Ev,_ZThn52_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C78S3572C16__8S3572C27[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev)();
extern void ABISELECT(_ZThn96_N8S3572C16D1Ev,_ZThn52_N8S3572C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev)();
extern void ABISELECT(_ZThn96_N8S3572C16D0Ev,_ZThn52_N8S3572C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C16__8S3572C27[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZThn160_N8S3572C16D1Ev,_ZThn84_N8S3572C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev)();
extern void ABISELECT(_ZThn160_N8S3572C16D0Ev,_ZThn84_N8S3572C16D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C16__8S3572C27[] = {
  0,
  ABISELECT(-160,-84),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C16__8S3572C27[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C27[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C27[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__A1__8S3572C27[] = {
  ABISELECT(120,64),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__8S3572C27[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__8S3572C27[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
static  VTT_ENTRY vtt_S3572C27[] = {
  {&(_ZTV8S3572C27[6]),  6,43},
  {&(_tg__ZTV7S3572C9__A__8S3572C27[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A2__8S3572C27[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__A2__8S3572C27[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__A__8S3572C27[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__A__8S3572C27[3]),  3,5},
  {&(_ZTV8S3572C27[21]),  21,43},
  {&(_ZTV8S3572C27[26]),  26,43},
  {&(_ZTV8S3572C27[34]),  34,43},
  {&(_ZTV8S3572C27[41]),  41,43},
  {&(_ZTV8S3572C27[13]),  13,43},
  {&(_tg__ZTV8S3572C16__8S3572C27[5]),  5,7},
  {&(_tg__ZTV7S3572C78S3572C16__8S3572C27[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C78S3572C16__8S3572C27[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3572C16__8S3572C27[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C16__8S3572C27[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C16__8S3572C27[4]),  4,6},
  {&(_tg__ZTV7S3572C9__8S3572C27[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C27[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__A1__8S3572C27[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__8S3572C27[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__8S3572C27[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C27[];
extern  VTBL_ENTRY _ZTV8S3572C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C27[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3572C16D0Ev,_ZThn84_N8S3572C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3572C16D1Ev,_ZThn84_N8S3572C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3572C16D0Ev,_ZThn52_N8S3572C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3572C16D1Ev,_ZThn52_N8S3572C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N7S3572C9D0Ev,_ZThn780_N7S3572C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N7S3572C9D1Ev,_ZThn780_N7S3572C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3572C7D0Ev,_ZThn52_N7S3572C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1240_N7S3572C7D0Ev,_ZThn748_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3572C7D1Ev,_ZThn52_N7S3572C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1240_N7S3572C7D1Ev,_ZThn748_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C27D0Ev,_ZTv0_n20_N8S3572C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1360_N8S3572C27D0Ev,_ZThn812_N8S3572C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C27D1Ev,_ZTv0_n20_N8S3572C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1360_N8S3572C27D1Ev,_ZThn812_N8S3572C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C27D0Ev,_ZTv0_n12_N8S3572C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S3572C27D0Ev,_ZThn780_N8S3572C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C27D1Ev,_ZTv0_n12_N8S3572C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S3572C27D1Ev,_ZThn780_N8S3572C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N8S3572C27D0Ev,_ZThn728_N8S3572C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N8S3572C27D1Ev,_ZThn728_N8S3572C27D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C27 = {  "S3572C27", // class name
  bases_S3572C27, 10,
  &(vtc_S3572C27[0]), // expected_vtbl_contents
  &(vtt_S3572C27[0]), // expected_vtt_contents
  ABISELECT(1584,936), // object size
  NSPAIRA(_ZTI8S3572C27),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3572C27),43, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C27),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C26  : S3572C21 , S3572C27 , S3572C15 , virtual S3572C20 {
  int s3572c26f0;
  void *s3572c26f1;
  ~S3572C26(); // tgen
  S3572C26(); // tgen
};
//SIG(-1 S3572C26) C1{ BC2{ vd m FD} BC3{ VBC4{ BC5{ VBC6{ m Fp Fs Fi Fp Fl[2]} VBC7{ vd m FC6 FC8{}} Fc:1 Fp[3]} VBC9{ VBC6 BC7 BC5 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} BC9 FC10{ vd m FC11{ VBC6 VBC5 vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} FC12{ VBC6 VBC7 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC6[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} Fp Fi FD[2] FL Fi} BC13{ VBC9 vd v2 Fi Fp Fi:2 FD Fp} VBC14{ VBC2 VBC9 BC15{ m Fp Fi[2] FU16{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC6 vd v3 Fc[7] Fp FD FC12 FL FL Fl Fi Fi FL[3] FD} Fi Fp}


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

static void Test_S3572C26()
{
  extern Class_Descriptor cd_S3572C26;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(160,379)];
    init_test(&cd_S3572C26, buf);
    S3572C26 *dp, &lv = *(dp=new (buf) S3572C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2544,1512), "sizeof(S3572C26)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C26)");
    /*is_ambiguous_... S3572C26::S3572C21 */ AMB_check_base_class_offset(lv, (S3572C21*), 0, "S3572C26");
    /*is_ambiguous_... S3572C16::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C16*), ABISELECT(1360,812), "S3572C26");
    /*is_ambiguous_... S3572C26::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(1360,812), "S3572C26");
    /*is_ambiguous_... S3572C26::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(1360,812), "S3572C26");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*)(S3572C27*), ABISELECT(1360,812), "S3572C26");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*)(S3572C27*), ABISELECT(1360,812), "S3572C26");
    /*is_ambiguous_... S3572C16::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C16*), ABISELECT(1400,836), "S3572C26");
    /*is_ambiguous_... S3572C26::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(1400,836), "S3572C26");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*)(S3572C27*), ABISELECT(1400,836), "S3572C26");
    /*is_ambiguous_... S3572C16::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C16*), ABISELECT(1304,784), "S3572C26");
    /*is_ambiguous_... S3572C26::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(1456,868), "S3572C26");
    /*is_ambiguous_... S3572C26::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(1512,900), "S3572C26");
    check_base_class_offset(lv, (S3572C9*)(S3572C16*), ABISELECT(1456,868), "S3572C26");
    check_base_class_offset(lv, (S3572C9*)(S3572C15*), ABISELECT(1456,868), "S3572C26");
    check_base_class_offset(lv, (S3572C9*)(S3572C20*), ABISELECT(1456,868), "S3572C26");
    check_base_class_offset(lv, (S3572C16*)(S3572C27*), ABISELECT(1304,784), "S3572C26");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*)(S3572C27*), ABISELECT(32,16), "S3572C26");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*)(S3572C27*), ABISELECT(88,48), "S3572C26");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C27*), ABISELECT(32,16), "S3572C26");
    check_base_class_offset(lv, (S3572C27*), ABISELECT(32,16), "S3572C26");
    check_base_class_offset(lv, (S3572C15*), ABISELECT(1232,744), "S3572C26");
    check_base_class_offset(lv, (S3572C21*)(S3572C20*), ABISELECT(2512,1496), "S3572C26");
    check_base_class_offset(lv, (S3572C22*)(S3572C20*), ABISELECT(1696,996), "S3572C26");
    /*is_ambiguous_... S3572C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C20*), ABISELECT(1792,1048), "S3572C26");
    check_base_class_offset(lv, (S3572C20*), ABISELECT(1680,992), "S3572C26");
    check_field_offset(lv, s3572c26f0, ABISELECT(1288,776), "S3572C26.s3572c26f0");
    check_field_offset(lv, s3572c26f1, ABISELECT(1296,780), "S3572C26.s3572c26f1");
    test_class_info(&lv, &cd_S3572C26);
    dp->~S3572C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C26(Test_S3572C26, "S3572C26", ABISELECT(2544,1512));

#else // __cplusplus

extern void _ZN8S3572C26C1Ev();
extern void _ZN8S3572C26D1Ev();
Name_Map name_map_S3572C26[] = {
  NSPAIR(_ZN8S3572C26C1Ev),
  NSPAIR(_ZN8S3572C26D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C16;
extern VTBL_ENTRY _ZTI8S3572C16[];
extern  VTBL_ENTRY _ZTV8S3572C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C16[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C27;
extern VTBL_ENTRY _ZTI8S3572C27[];
extern  VTBL_ENTRY _ZTV8S3572C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C27[];
extern Class_Descriptor cd_S3572C15;
extern VTBL_ENTRY _ZTI8S3572C15[];
extern  VTBL_ENTRY _ZTV8S3572C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C15[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C20;
extern VTBL_ENTRY _ZTI8S3572C20[];
extern  VTBL_ENTRY _ZTV8S3572C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C20[];
static Base_Class bases_S3572C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3572C5,    ABISELECT(1360,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
    3, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1400,836), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3572C7,    ABISELECT(1304,784), //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
    7, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1456,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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(1512,900), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(1456,868), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3572C16,    ABISELECT(1304,784), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(88,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3572C27,    ABISELECT(32,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C15,    ABISELECT(1232,744), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C21,    ABISELECT(2512,1496), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(1696,996), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3572C5,    ABISELECT(1792,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
    16, //immediately_derived
  0, 0},
  {&cd_S3572C20,    ABISELECT(1680,992), //bcp->offset
    61, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C26[];
extern void _ZN8S3572C26D1Ev();
extern void _ZN8S3572C26D0Ev();
extern void ABISELECT(_ZThn32_N8S3572C26D1Ev,_ZThn16_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn32_N8S3572C26D0Ev,_ZThn16_N8S3572C26D0Ev)();
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZThn88_N8S3572C26D1Ev,_ZThn48_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn88_N8S3572C26D0Ev,_ZThn48_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn1232_N8S3572C26D1Ev,_ZThn744_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn1232_N8S3572C26D0Ev,_ZThn744_N8S3572C26D0Ev)();
extern void _ZN8S3572C152v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3572C26D1Ev,_ZTv0_n24_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn1304_N8S3572C26D1Ev,_ZThn784_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C26D0Ev,_ZTv0_n24_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn1304_N8S3572C26D0Ev,_ZThn784_N8S3572C26D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn1400_N8S3572C26D1Ev,_ZThn836_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn1400_N8S3572C26D0Ev,_ZThn836_N8S3572C26D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C26D1Ev,_ZTv0_n20_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn1456_N8S3572C26D1Ev,_ZThn868_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C26D0Ev,_ZTv0_n20_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn1456_N8S3572C26D0Ev,_ZThn868_N8S3572C26D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3572C26D1Ev,_ZTvn32_n20_N8S3572C26D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C26D0Ev,_ZTvn32_n20_N8S3572C26D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3572C26D1Ev,_ZTv0_n28_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn1680_N8S3572C26D1Ev,_ZThn992_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3572C26D0Ev,_ZTv0_n28_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn1680_N8S3572C26D0Ev,_ZThn992_N8S3572C26D0Ev)() __attribute__((weak));
extern void _ZN8S3572C202v7Ev();
extern void ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn2512_N8S3572C26D1Ev,_ZThn1496_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn2512_N8S3572C26D0Ev,_ZThn1496_N8S3572C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C26[] = {
  ABISELECT(2512,1496),
  ABISELECT(1680,992),
  ABISELECT(1456,868),
  ABISELECT(1400,836),
  ABISELECT(1360,812),
  ABISELECT(1304,784),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&_ZN8S3572C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C26D0Ev,
  ABISELECT(1424,852),
  ABISELECT(1272,768),
  ABISELECT(1368,820),
  ABISELECT(1328,796),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3572C26D1Ev,_ZThn16_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3572C26D0Ev,_ZThn16_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(1312,788),
  ABISELECT(1272,764),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3572C26D1Ev,_ZThn48_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3572C26D0Ev,_ZThn48_N8S3572C26D0Ev),
  ABISELECT(168,92),
  ABISELECT(128,68),
  ABISELECT(224,124),
  ABISELECT(-1232,-744),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3572C26D1Ev,_ZThn744_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3572C26D0Ev,_ZThn744_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  ABISELECT(-1304,-784),
  ABISELECT(152,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  ABISELECT(-1304,-784),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C26D1Ev,_ZTv0_n24_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C26D0Ev,_ZTv0_n24_N8S3572C26D0Ev),
  ABISELECT(-1400,-836),
  ABISELECT(-1400,-836),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev),
  0,
  ABISELECT(-1456,-868),
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  ABISELECT(-1456,-868),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C26D1Ev,_ZTv0_n20_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C26D0Ev,_ZTv0_n20_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(-1512,-900),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C26D1Ev,_ZTvn32_n20_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C26D0Ev,_ZTvn32_n20_N8S3572C26D0Ev),
  0,
  ABISELECT(-1680,-992),
  ABISELECT(-280,-156),
  ABISELECT(-320,-180),
  ABISELECT(-224,-124),
  ABISELECT(832,504),
  ABISELECT(-1680,-992),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C26D1Ev,_ZTv0_n28_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C26D0Ev,_ZTv0_n28_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
  ABISELECT(-2512,-1496),
  ABISELECT(-2512,-1496),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C26[];
extern void _ZN8S3572C27D1Ev();
extern void _ZN8S3572C27D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C27__8S3572C26[] = {
  ABISELECT(1424,852),
  ABISELECT(1272,768),
  ABISELECT(1368,820),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&_ZN8S3572C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C27D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C98S3572C27__A1__8S3572C26[] = {
  ABISELECT(1368,820),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C27__A2__8S3572C26[] = {
  ABISELECT(1312,788),
  ABISELECT(1272,764),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn1312_N7S3572C7D1Ev,_ZThn788_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn1312_N7S3572C7D0Ev,_ZThn788_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C98S3572C27__A2__8S3572C26[] = {
  ABISELECT(-1312,-788),
  ABISELECT(-1312,-788),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C98S3572C27__A1__8S3572C26[] = {
  ABISELECT(1312,788),
  ABISELECT(1272,764),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn1368_N7S3572C9D1Ev,_ZThn820_N7S3572C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
extern void ABISELECT(_ZThn1368_N7S3572C9D0Ev,_ZThn820_N7S3572C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C98S3572C27__A1__8S3572C26[] = {
  ABISELECT(-1368,-820),
  ABISELECT(-1368,-820),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn1272_N8S3572C27D1Ev,_ZThn768_N8S3572C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev)();
extern void ABISELECT(_ZThn1272_N8S3572C27D0Ev,_ZThn768_N8S3572C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C16__8S3572C27__8S3572C26[] = {
  ABISELECT(-1272,-768),
  ABISELECT(152,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  ABISELECT(-1272,-768),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C27D1Ev,_ZTv0_n12_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn1368_N8S3572C27D1Ev,_ZThn820_N8S3572C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C27D0Ev,_ZTv0_n12_N8S3572C27D0Ev)();
extern void ABISELECT(_ZThn1368_N8S3572C27D0Ev,_ZThn820_N8S3572C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C27__8S3572C26[] = {
  ABISELECT(-1368,-820),
  ABISELECT(-1368,-820),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C27D1Ev,_ZTv0_n12_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C27D0Ev,_ZTv0_n12_N8S3572C27D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C27D1Ev,_ZTv0_n20_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn1424_N8S3572C27D1Ev,_ZThn852_N8S3572C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C27D0Ev,_ZTv0_n20_N8S3572C27D0Ev)();
extern void ABISELECT(_ZThn1424_N8S3572C27D0Ev,_ZThn852_N8S3572C27D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C27__8S3572C26[] = {
  0,
  ABISELECT(-1424,-852),
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  ABISELECT(-1424,-852),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C27D1Ev,_ZTv0_n20_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C27D0Ev,_ZTv0_n20_N8S3572C27D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C27D1Ev,_ZTvn32_n20_N8S3572C27D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C27D0Ev,_ZTvn32_n20_N8S3572C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C27__8S3572C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(-1480,-884),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C27D1Ev,_ZTvn32_n20_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C27D0Ev,_ZTvn32_n20_N8S3572C27D0Ev),
};
extern void ABISELECT(_ZThn56_N8S3572C27D1Ev,_ZThn32_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn56_N8S3572C27D0Ev,_ZThn32_N8S3572C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A2__8S3572C27__8S3572C26[] = {
  ABISELECT(1312,788),
  ABISELECT(1272,764),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3572C27D1Ev,_ZThn32_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3572C27D0Ev,_ZThn32_N8S3572C27D0Ev),
};
extern void _ZN8S3572C15D1Ev();
extern void _ZN8S3572C15D0Ev();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C15__8S3572C26[] = {
  ABISELECT(168,92),
  ABISELECT(128,68),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&_ZN8S3572C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZThn224_N8S3572C15D1Ev,_ZThn124_N8S3572C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev)();
extern void ABISELECT(_ZThn224_N8S3572C15D0Ev,_ZThn124_N8S3572C15D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C15__8S3572C26[] = {
  0,
  ABISELECT(-224,-124),
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C15__8S3572C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(-280,-156),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev)();
extern void ABISELECT(_ZThn168_N8S3572C15D1Ev,_ZThn92_N8S3572C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev)();
extern void ABISELECT(_ZThn168_N8S3572C15D0Ev,_ZThn92_N8S3572C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C15__8S3572C26[] = {
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev),
};
extern void _ZN8S3572C16D1Ev();
extern void _ZN8S3572C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C16__8S3572C26[] = {
  ABISELECT(152,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&_ZN8S3572C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C16D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C78S3572C16__8S3572C26[] = {
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S3572C7D1Ev,_ZThn52_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S3572C7D0Ev,_ZThn52_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C78S3572C16__8S3572C26[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev)();
extern void ABISELECT(_ZThn96_N8S3572C16D1Ev,_ZThn52_N8S3572C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev)();
extern void ABISELECT(_ZThn96_N8S3572C16D0Ev,_ZThn52_N8S3572C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C16__8S3572C26[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZThn152_N8S3572C16D1Ev,_ZThn84_N8S3572C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev)();
extern void ABISELECT(_ZThn152_N8S3572C16D0Ev,_ZThn84_N8S3572C16D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C16__8S3572C26[] = {
  0,
  ABISELECT(-152,-84),
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C16__8S3572C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C26[] = {
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__A1__8S3572C26[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__8S3572C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__8S3572C26[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void _ZN8S3572C20D1Ev();
extern void _ZN8S3572C20D0Ev();
extern void _ZN8S3572C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C20__8S3572C26[] = {
  ABISELECT(-280,-156),
  ABISELECT(-320,-180),
  ABISELECT(-224,-124),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&_ZN8S3572C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZThn832_N8S3572C20D1Ev,_ZThn504_N8S3572C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
extern void ABISELECT(_ZThn832_N8S3572C20D0Ev,_ZThn504_N8S3572C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3572C20__8S3572C26[] = {
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C20__8S3572C26[] = {
  0,
  ABISELECT(224,124),
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C20__8S3572C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(168,92),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C20__8S3572C26[] = {
  ABISELECT(280,156),
  ABISELECT(280,156),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
static  VTT_ENTRY vtt_S3572C26[] = {
  {&(_ZTV8S3572C26[8]),  8,77},
  {&(_tg__ZTV8S3572C27__8S3572C26[6]),  6,9},
  {&(_tg__ZTV7S3572C98S3572C27__A1__8S3572C26[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C98S3572C27__A2__8S3572C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C98S3572C27__A2__8S3572C26[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C98S3572C27__A1__8S3572C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C98S3572C27__A1__8S3572C26[3]),  3,5},
  {&(_tg__ZTV8S3572C16__8S3572C27__8S3572C26[6]),  6,8},
  {&(_tg__ZTV7S3572C4__8S3572C27__8S3572C26[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C27__8S3572C26[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C27__8S3572C26[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C9__A2__8S3572C27__8S3572C26[4]),  4,6},
  {&(_tg__ZTV8S3572C15__8S3572C26[5]),  5,8},
  {&(_tg__ZTV7S3572C9__8S3572C15__8S3572C26[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C15__8S3572C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C15__8S3572C26[3]),  3,5},
  {&(_ZTV8S3572C26[16]),  16,77},
  {&(_ZTV8S3572C26[39]),  39,77},
  {&(_ZTV8S3572C26[44]),  44,77},
  {&(_ZTV8S3572C26[52]),  52,77},
  {&(_ZTV8S3572C26[59]),  59,77},
  {&(_ZTV8S3572C26[23]),  23,77},
  {&(_ZTV8S3572C26[30]),  30,77},
  {&(_ZTV8S3572C26[69]),  69,77},
  {&(_ZTV8S3572C26[75]),  75,77},
  {&(_tg__ZTV8S3572C16__8S3572C26[5]),  5,7},
  {&(_tg__ZTV7S3572C78S3572C16__8S3572C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C78S3572C16__8S3572C26[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3572C16__8S3572C26[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C16__8S3572C26[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C16__8S3572C26[4]),  4,6},
  {&(_tg__ZTV7S3572C9__8S3572C26[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__A1__8S3572C26[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__8S3572C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__8S3572C26[3]),  3,5},
  {&(_tg__ZTV8S3572C20__8S3572C26[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3572C20__8S3572C26[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C20__8S3572C26[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C20__8S3572C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C20__8S3572C26[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C26[];
extern  VTBL_ENTRY _ZTV8S3572C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C26[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3572C20D0Ev,_ZThn504_N8S3572C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3572C20D1Ev,_ZThn504_N8S3572C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S3572C16D0Ev,_ZThn84_N8S3572C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S3572C16D1Ev,_ZThn84_N8S3572C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3572C16D0Ev,_ZThn52_N8S3572C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3572C16D1Ev,_ZThn52_N8S3572C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3572C15D0Ev,_ZThn92_N8S3572C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3572C15D1Ev,_ZThn92_N8S3572C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3572C15D0Ev,_ZThn124_N8S3572C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3572C15D1Ev,_ZThn124_N8S3572C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C27D0Ev,_ZTv0_n20_N8S3572C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N8S3572C27D0Ev,_ZThn852_N8S3572C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C27D1Ev,_ZTv0_n20_N8S3572C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N8S3572C27D1Ev,_ZThn852_N8S3572C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C27D0Ev,_ZTv0_n12_N8S3572C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S3572C27D0Ev,_ZThn820_N8S3572C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C27D1Ev,_ZTv0_n12_N8S3572C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S3572C27D1Ev,_ZThn820_N8S3572C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N8S3572C27D0Ev,_ZThn768_N8S3572C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N8S3572C27D1Ev,_ZThn768_N8S3572C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N7S3572C9D0Ev,_ZThn820_N7S3572C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N7S3572C9D1Ev,_ZThn820_N7S3572C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3572C7D0Ev,_ZThn52_N7S3572C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N7S3572C7D0Ev,_ZThn788_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3572C7D1Ev,_ZThn52_N7S3572C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N7S3572C7D1Ev,_ZThn788_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C26D0Ev,_ZTv0_n28_N8S3572C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1680_N8S3572C26D0Ev,_ZThn992_N8S3572C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C26D1Ev,_ZTv0_n28_N8S3572C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1680_N8S3572C26D1Ev,_ZThn992_N8S3572C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C26D0Ev,_ZTv0_n20_N8S3572C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S3572C26D0Ev,_ZThn868_N8S3572C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C26D1Ev,_ZTv0_n20_N8S3572C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S3572C26D1Ev,_ZThn868_N8S3572C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2512_N8S3572C26D0Ev,_ZThn1496_N8S3572C26D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N8S3572C26D0Ev,_ZThn836_N8S3572C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2512_N8S3572C26D1Ev,_ZThn1496_N8S3572C26D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N8S3572C26D1Ev,_ZThn836_N8S3572C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C26D0Ev,_ZTv0_n24_N8S3572C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1304_N8S3572C26D0Ev,_ZThn784_N8S3572C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C26D1Ev,_ZTv0_n24_N8S3572C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1304_N8S3572C26D1Ev,_ZThn784_N8S3572C26D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C26 = {  "S3572C26", // class name
  bases_S3572C26, 17,
  &(vtc_S3572C26[0]), // expected_vtbl_contents
  &(vtt_S3572C26[0]), // expected_vtt_contents
  ABISELECT(2544,1512), // object size
  NSPAIRA(_ZTI8S3572C26),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3572C26),77, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C26),41, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S3572C28  {
  int s3572c28f0;
  int s3572c28f1[6];
  char s3572c28f2;
  int s3572c28f3;
  int s3572c28f4;
  void *s3572c28f5;
  void *s3572c28f6[5];
  int s3572c28f7;
  char s3572c28f8;
  __tsi64 s3572c28f9;
  void *s3572c28f10;
  void *s3572c28f11;
  void *s3572c28f12;
  void  mf3572c28(); // _ZN8S3572C289mf3572c28Ev
};
//SIG(1 S3572C28) U1{ m Fi Fi[6] Fc Fi Fi Fp Fp[5] Fi Fc FL Fp Fp Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S3572C25  : S3572C16 , virtual S3572C3 , S3572C26 {
  void *s3572c25f0[6];
  int s3572c25f1;
  ::S3572C16 s3572c25f2;
  int s3572c25f3;
  ::S3572C7 s3572c25f4;
  __tsi64 s3572c25f5;
  int s3572c25f6[10];
  int s3572c25f7;
  ::S3572C28 s3572c25f8[2];
  long double s3572c25f9;
  int s3572c25f10;
  int s3572c25f11:7;
  virtual void  v10(); // _ZN8S3572C253v10Ev
  virtual void  v11(); // _ZN8S3572C253v11Ev
  ~S3572C25(); // tgen
  S3572C25(); // tgen
};
//SIG(-1 S3572C25) C1{ BC2{ BC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ vd m FC4 FC6{}} Fc:1 Fp[3]} VBC7{ VBC4 BC5 BC3 vd v3 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} VBC8{ VBC5 BC3 VBC9{ VBC4 VBC5 BC3 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC7} BC10{ BC11{ vd m FD} BC12{ VBC2 BC7 FC13{ vd m FC14{ VBC4 VBC3 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} FC9 Fp Fi Fp FL FD Fs Fp FL Fi} Fp Fi FD[2] FL Fi} BC15{ VBC7 vd v4 Fi Fp Fi:2 FD Fp} VBC16{ VBC11 VBC7 BC17{ m Fp Fi[2] FU18{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v5 Fc[7] Fp FD FC9 FL FL Fl Fi Fi FL[3] FD} Fi Fp} v1 v2 Fp[6] Fi FC2 Fi FC3 FL Fi[10] Fi FU19{ m Fi Fi[6] Fc Fi Fi Fp Fp[5] Fi Fc FL Fp Fp Fp}[2] FD Fi Fi:7}


void  S3572C25 ::v10(){vfunc_called(this, "_ZN8S3572C253v10Ev");}
void  S3572C25 ::v11(){vfunc_called(this, "_ZN8S3572C253v11Ev");}
S3572C25 ::~S3572C25(){ note_dtor("S3572C25", this);} // tgen
S3572C25 ::S3572C25(){ note_ctor("S3572C25", this);} // tgen

static void Test_S3572C25()
{
  extern Class_Descriptor cd_S3572C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(264,615)];
    init_test(&cd_S3572C25, buf);
    S3572C25 *dp, &lv = *(dp=new (buf) S3572C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4208,2456), "sizeof(S3572C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C25)");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C16*), ABISELECT(2120,1248), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(2120,1248), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(2120,1248), "S3572C25");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C3*), ABISELECT(2120,1248), "S3572C25");
    check_base_class_offset(lv, (S3572C5*)(S3572C8*), ABISELECT(2120,1248), "S3572C25");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*), ABISELECT(2120,1248), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C16*), ABISELECT(2120,1248), "S3572C25");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*)(S3572C27*)(S3572C26*), ABISELECT(2120,1248), "S3572C25");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*)(S3572C27*)(S3572C26*), ABISELECT(2120,1248), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C16*), ABISELECT(2160,1272), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(2160,1272), "S3572C25");
    check_base_class_offset(lv, (S3572C4*)(S3572C3*), ABISELECT(2160,1272), "S3572C25");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C3*), ABISELECT(2160,1272), "S3572C25");
    check_base_class_offset(lv, (S3572C4*)(S3572C8*), ABISELECT(2160,1272), "S3572C25");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*), ABISELECT(2160,1272), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C16*), ABISELECT(2160,1272), "S3572C25");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*)(S3572C27*)(S3572C26*), ABISELECT(2160,1272), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C16*), 0, "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(2224,1304), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(2280,1336), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C16*), ABISELECT(2224,1304), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C16*), ABISELECT(2224,1304), "S3572C25");
    check_base_class_offset(lv, (S3572C9*)(S3572C15*)(S3572C26*), ABISELECT(2224,1304), "S3572C25");
    check_base_class_offset(lv, (S3572C9*)(S3572C20*), ABISELECT(2224,1304), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C16*), 0, "S3572C25");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C3*), ABISELECT(2448,1428), "S3572C25");
    check_base_class_offset(lv, (S3572C7*)(S3572C8*), ABISELECT(2816,1628), "S3572C25");
    check_base_class_offset(lv, (S3572C8*)(S3572C3*), ABISELECT(2816,1628), "S3572C25");
    check_base_class_offset(lv, (S3572C3*), ABISELECT(2448,1428), "S3572C25");
    /*is_ambiguous_... S3572C26::S3572C21 */ AMB_check_base_class_offset(lv, (S3572C21*)(S3572C26*), ABISELECT(64,28), "S3572C25");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C16*), ABISELECT(3280,1908), "S3572C25");
    check_base_class_offset(lv, (S3572C16*)(S3572C27*)(S3572C26*), ABISELECT(3280,1908), "S3572C25");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*)(S3572C27*)(S3572C26*), ABISELECT(96,44), "S3572C25");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*)(S3572C27*)(S3572C26*), ABISELECT(152,76), "S3572C25");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C27*)(S3572C26*), ABISELECT(96,44), "S3572C25");
    check_base_class_offset(lv, (S3572C27*)(S3572C26*), ABISELECT(96,44), "S3572C25");
    check_base_class_offset(lv, (S3572C15*)(S3572C26*), ABISELECT(1296,772), "S3572C25");
    check_base_class_offset(lv, (S3572C21*)(S3572C20*), ABISELECT(4176,2440), "S3572C25");
    check_base_class_offset(lv, (S3572C22*)(S3572C20*), ABISELECT(3360,1940), "S3572C25");
    /*is_ambiguous_... S3572C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C20*), ABISELECT(3456,1992), "S3572C25");
    check_base_class_offset(lv, (S3572C20*)(S3572C26*), ABISELECT(3344,1936), "S3572C25");
    check_base_class_offset(lv, (S3572C26*), ABISELECT(64,28), "S3572C25");
    check_field_offset(lv, s3572c25f0, ABISELECT(1368,812), "S3572C25.s3572c25f0");
    check_field_offset(lv, s3572c25f1, ABISELECT(1416,836), "S3572C25.s3572c25f1");
    check_field_offset(lv, s3572c25f2, ABISELECT(1424,840), "S3572C25.s3572c25f2");
    check_field_offset(lv, s3572c25f3, ABISELECT(1808,1048), "S3572C25.s3572c25f3");
    check_field_offset(lv, s3572c25f4, ABISELECT(1816,1052), "S3572C25.s3572c25f4");
    check_field_offset(lv, s3572c25f5, ABISELECT(1952,1128), "S3572C25.s3572c25f5");
    check_field_offset(lv, s3572c25f6, ABISELECT(1960,1136), "S3572C25.s3572c25f6");
    check_field_offset(lv, s3572c25f7, ABISELECT(2000,1176), "S3572C25.s3572c25f7");
    check_field_offset(lv, s3572c25f8, ABISELECT(2008,1180), "S3572C25.s3572c25f8");
    check_field_offset(lv, s3572c25f9, ABISELECT(2096,1228), "S3572C25.s3572c25f9");
    check_field_offset(lv, s3572c25f10, ABISELECT(2112,1240), "S3572C25.s3572c25f10");
    set_bf_and_test(lv, s3572c25f11, ABISELECT(2116,1244), 0, 7, 1, "S3572C25");
    set_bf_and_test(lv, s3572c25f11, ABISELECT(2116,1244), 0, 7, hide_sll(1LL<<6), "S3572C25");
    test_class_info(&lv, &cd_S3572C25);
    dp->~S3572C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C25(Test_S3572C25, "S3572C25", ABISELECT(4208,2456));

#else // __cplusplus

extern void _ZN8S3572C25C1Ev();
extern void _ZN8S3572C25D1Ev();
Name_Map name_map_S3572C25[] = {
  NSPAIR(_ZN8S3572C25C1Ev),
  NSPAIR(_ZN8S3572C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C16;
extern VTBL_ENTRY _ZTI8S3572C16[];
extern  VTBL_ENTRY _ZTV8S3572C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C16[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
extern Class_Descriptor cd_S3572C3;
extern VTBL_ENTRY _ZTI7S3572C3[];
extern  VTBL_ENTRY _ZTV7S3572C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C3[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C16;
extern VTBL_ENTRY _ZTI8S3572C16[];
extern  VTBL_ENTRY _ZTV8S3572C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C16[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C27;
extern VTBL_ENTRY _ZTI8S3572C27[];
extern  VTBL_ENTRY _ZTV8S3572C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C27[];
extern Class_Descriptor cd_S3572C15;
extern VTBL_ENTRY _ZTI8S3572C15[];
extern  VTBL_ENTRY _ZTV8S3572C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C15[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C20;
extern VTBL_ENTRY _ZTI8S3572C20[];
extern  VTBL_ENTRY _ZTV8S3572C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C20[];
extern Class_Descriptor cd_S3572C26;
extern VTBL_ENTRY _ZTI8S3572C26[];
extern  VTBL_ENTRY _ZTV8S3572C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C26[];
static Base_Class bases_S3572C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(2120,1248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2160,1272), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(2224,1304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(2280,1336), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(2224,1304), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3572C16,    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_S3572C7,    ABISELECT(2448,1428), //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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(2816,1628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(2816,1628), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3572C3,    ABISELECT(2448,1428), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C21,    ABISELECT(64,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(3280,1908), //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
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3572C16,    ABISELECT(3280,1908), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(152,76), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C27,    ABISELECT(96,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3572C15,    ABISELECT(1296,772), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3572C21,    ABISELECT(4176,2440), //bcp->offset
    101, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(3360,1940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3572C5,    ABISELECT(3456,1992), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C20,    ABISELECT(3344,1936), //bcp->offset
    90, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S3572C26,    ABISELECT(64,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3572C25[];
extern void _ZN8S3572C25D1Ev();
extern void _ZN8S3572C25D0Ev();
extern void _ZN8S3572C253v10Ev();
extern void _ZN8S3572C253v11Ev();
extern void ABISELECT(_ZThn64_N8S3572C25D1Ev,_ZThn28_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C25D0Ev,_ZThn28_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn96_N8S3572C25D1Ev,_ZThn44_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn96_N8S3572C25D0Ev,_ZThn44_N8S3572C25D0Ev)();
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZThn152_N8S3572C25D1Ev,_ZThn76_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn152_N8S3572C25D0Ev,_ZThn76_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn1296_N8S3572C25D1Ev,_ZThn772_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn1296_N8S3572C25D0Ev,_ZThn772_N8S3572C25D0Ev)();
extern void _ZN8S3572C152v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S3572C25D1Ev,_ZTv0_n12_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn2160_N8S3572C25D1Ev,_ZThn1272_N8S3572C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C25D0Ev,_ZTv0_n12_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn2160_N8S3572C25D0Ev,_ZThn1272_N8S3572C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C25D1Ev,_ZTv0_n20_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn2224_N8S3572C25D1Ev,_ZThn1304_N8S3572C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C25D0Ev,_ZTv0_n20_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn2224_N8S3572C25D0Ev,_ZThn1304_N8S3572C25D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3572C25D1Ev,_ZTvn32_n20_N8S3572C25D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C25D0Ev,_ZTvn32_n20_N8S3572C25D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3572C25D1Ev,_ZTv0_n24_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn2448_N8S3572C25D1Ev,_ZThn1428_N8S3572C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C25D0Ev,_ZTv0_n24_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn2448_N8S3572C25D0Ev,_ZThn1428_N8S3572C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C25D1Ev,_ZTv0_n20_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn2816_N8S3572C25D1Ev,_ZThn1628_N8S3572C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C25D0Ev,_ZTv0_n20_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn2816_N8S3572C25D0Ev,_ZThn1628_N8S3572C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C25D1Ev,_ZTv0_n24_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn3280_N8S3572C25D1Ev,_ZThn1908_N8S3572C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C25D0Ev,_ZTv0_n24_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn3280_N8S3572C25D0Ev,_ZThn1908_N8S3572C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3572C25D1Ev,_ZTv0_n28_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn3344_N8S3572C25D1Ev,_ZThn1936_N8S3572C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3572C25D0Ev,_ZTv0_n28_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn3344_N8S3572C25D0Ev,_ZThn1936_N8S3572C25D0Ev)() __attribute__((weak));
extern void _ZN8S3572C202v7Ev();
extern void ABISELECT(_ZTv0_n24_N8S3572C25D1Ev,_ZTv0_n12_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn4176_N8S3572C25D1Ev,_ZThn2440_N8S3572C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C25D0Ev,_ZTv0_n12_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn4176_N8S3572C25D0Ev,_ZThn2440_N8S3572C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3572C25[] = {
  ABISELECT(4176,2440),
  ABISELECT(3344,1936),
  ABISELECT(3280,1908),
  ABISELECT(2816,1628),
  ABISELECT(2448,1428),
  ABISELECT(2224,1304),
  ABISELECT(2160,1272),
  ABISELECT(2120,1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&_ZN8S3572C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C25D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C253v10Ev,
  (VTBL_ENTRY)&_ZN8S3572C253v11Ev,
  ABISELECT(4112,2412),
  ABISELECT(3280,1908),
  ABISELECT(2160,1276),
  ABISELECT(2096,1244),
  ABISELECT(2056,1220),
  ABISELECT(3216,1880),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C25D1Ev,_ZThn28_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C25D0Ev,_ZThn28_N8S3572C25D0Ev),
  ABISELECT(2128,1260),
  ABISELECT(3184,1864),
  ABISELECT(2064,1228),
  ABISELECT(2024,1204),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S3572C25D1Ev,_ZThn44_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S3572C25D0Ev,_ZThn44_N8S3572C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(2008,1196),
  ABISELECT(1968,1172),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N8S3572C25D1Ev,_ZThn76_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N8S3572C25D0Ev,_ZThn76_N8S3572C25D0Ev),
  ABISELECT(864,500),
  ABISELECT(824,476),
  ABISELECT(928,532),
  ABISELECT(-1296,-772),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1296_N8S3572C25D1Ev,_ZThn772_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1296_N8S3572C25D0Ev,_ZThn772_N8S3572C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  ABISELECT(-2160,-1272),
  ABISELECT(-2160,-1272),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C25D1Ev,_ZTv0_n12_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C25D0Ev,_ZTv0_n12_N8S3572C25D0Ev),
  0,
  ABISELECT(-2224,-1304),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-2224,-1304),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C25D1Ev,_ZTv0_n20_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C25D0Ev,_ZTv0_n20_N8S3572C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-2280,-1336),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C25D1Ev,_ZTvn32_n20_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C25D0Ev,_ZTvn32_n20_N8S3572C25D0Ev),
  ABISELECT(-2448,-1428),
  ABISELECT(368,200),
  ABISELECT(-288,-156),
  ABISELECT(-328,-180),
  ABISELECT(-2448,-1428),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C25D1Ev,_ZTv0_n24_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C25D0Ev,_ZTv0_n24_N8S3572C25D0Ev),
  ABISELECT(-2816,-1628),
  ABISELECT(-656,-356),
  ABISELECT(-696,-380),
  ABISELECT(-2816,-1628),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C25D1Ev,_ZTv0_n20_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C25D0Ev,_ZTv0_n20_N8S3572C25D0Ev),
  ABISELECT(-3280,-1908),
  ABISELECT(-1056,-604),
  ABISELECT(-1120,-636),
  ABISELECT(-1160,-660),
  ABISELECT(-3280,-1908),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C25D1Ev,_ZTv0_n24_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C25D0Ev,_ZTv0_n24_N8S3572C25D0Ev),
  0,
  ABISELECT(-3344,-1936),
  ABISELECT(-1184,-664),
  ABISELECT(-1224,-688),
  ABISELECT(-1120,-632),
  ABISELECT(832,504),
  ABISELECT(-3344,-1936),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C25D1Ev,_ZTv0_n28_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C25D0Ev,_ZTv0_n28_N8S3572C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
  ABISELECT(-4176,-2440),
  ABISELECT(-4176,-2440),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C25D1Ev,_ZTv0_n12_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C25D0Ev,_ZTv0_n12_N8S3572C25D0Ev),
};
extern VTBL_ENTRY _ZTV8S3572C25[];
extern void _ZN8S3572C16D1Ev();
extern void _ZN8S3572C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C16__A__8S3572C25[] = {
  ABISELECT(2224,1304),
  ABISELECT(2160,1272),
  ABISELECT(2120,1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&_ZN8S3572C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C16D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C78S3572C16__8S3572C25[] = {
  ABISELECT(2160,1272),
  ABISELECT(2120,1248),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn2160_N7S3572C7D1Ev,_ZThn1272_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn2160_N7S3572C7D0Ev,_ZThn1272_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C78S3572C16__8S3572C25[] = {
  ABISELECT(-2160,-1272),
  ABISELECT(-2160,-1272),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev)();
extern void ABISELECT(_ZThn2160_N8S3572C16D1Ev,_ZThn1272_N8S3572C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev)();
extern void ABISELECT(_ZThn2160_N8S3572C16D0Ev,_ZThn1272_N8S3572C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C16__A__8S3572C25[] = {
  ABISELECT(-2160,-1272),
  ABISELECT(-2160,-1272),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZThn2224_N8S3572C16D1Ev,_ZThn1304_N8S3572C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev)();
extern void ABISELECT(_ZThn2224_N8S3572C16D0Ev,_ZThn1304_N8S3572C16D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C16__A__8S3572C25[] = {
  0,
  ABISELECT(-2224,-1304),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-2224,-1304),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C16__A__8S3572C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-2280,-1336),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev),
};
extern void _ZN8S3572C26D1Ev();
extern void _ZN8S3572C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C26__8S3572C25[] = {
  ABISELECT(4112,2412),
  ABISELECT(3280,1908),
  ABISELECT(2160,1276),
  ABISELECT(2096,1244),
  ABISELECT(2056,1220),
  ABISELECT(3216,1880),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&_ZN8S3572C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C26D0Ev,
};
extern void _ZN8S3572C27D1Ev();
extern void _ZN8S3572C27D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C278S3572C26__8S3572C25[] = {
  ABISELECT(2128,1260),
  ABISELECT(3184,1864),
  ABISELECT(2064,1228),
  ABISELECT(2024,1204),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&_ZN8S3572C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C27D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C98S3572C278S3572C26__A1__8S3572C25[] = {
  ABISELECT(2064,1228),
  ABISELECT(2024,1204),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C278S3572C26__A5__8S3572C25[] = {
  ABISELECT(2008,1196),
  ABISELECT(1968,1172),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn2008_N7S3572C7D1Ev,_ZThn1196_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn2008_N7S3572C7D0Ev,_ZThn1196_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C98S3572C278S3572C26__A5__8S3572C25[] = {
  ABISELECT(-2008,-1196),
  ABISELECT(-2008,-1196),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C98S3572C278S3572C26__A1__8S3572C25[] = {
  ABISELECT(2008,1196),
  ABISELECT(1968,1172),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn2064_N7S3572C9D1Ev,_ZThn1228_N7S3572C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
extern void ABISELECT(_ZThn2064_N7S3572C9D0Ev,_ZThn1228_N7S3572C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C98S3572C278S3572C26__A1__8S3572C25[] = {
  ABISELECT(-2064,-1228),
  ABISELECT(-2064,-1228),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn3184_N8S3572C27D1Ev,_ZThn1864_N8S3572C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev)();
extern void ABISELECT(_ZThn3184_N8S3572C27D0Ev,_ZThn1864_N8S3572C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C16__8S3572C278S3572C26__8S3572C25[] = {
  ABISELECT(-3184,-1864),
  ABISELECT(-1056,-604),
  ABISELECT(-1120,-636),
  ABISELECT(-1160,-660),
  ABISELECT(-3184,-1864),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C27D1Ev,_ZTv0_n12_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn2064_N8S3572C27D1Ev,_ZThn1228_N8S3572C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C27D0Ev,_ZTv0_n12_N8S3572C27D0Ev)();
extern void ABISELECT(_ZThn2064_N8S3572C27D0Ev,_ZThn1228_N8S3572C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C278S3572C26__8S3572C25[] = {
  ABISELECT(-2064,-1228),
  ABISELECT(-2064,-1228),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C27D1Ev,_ZTv0_n12_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C27D0Ev,_ZTv0_n12_N8S3572C27D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C27D1Ev,_ZTv0_n20_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn2128_N8S3572C27D1Ev,_ZThn1260_N8S3572C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C27D0Ev,_ZTv0_n20_N8S3572C27D0Ev)();
extern void ABISELECT(_ZThn2128_N8S3572C27D0Ev,_ZThn1260_N8S3572C27D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C278S3572C26__8S3572C25[] = {
  0,
  ABISELECT(-2128,-1260),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-2128,-1260),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C27D1Ev,_ZTv0_n20_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C27D0Ev,_ZTv0_n20_N8S3572C27D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C27D1Ev,_ZTvn32_n20_N8S3572C27D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C27D0Ev,_ZTvn32_n20_N8S3572C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C278S3572C26__8S3572C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-2184,-1292),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C27D1Ev,_ZTvn32_n20_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C27D0Ev,_ZTvn32_n20_N8S3572C27D0Ev),
};
extern void ABISELECT(_ZThn56_N8S3572C27D1Ev,_ZThn32_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn56_N8S3572C27D0Ev,_ZThn32_N8S3572C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A2__8S3572C278S3572C26__8S3572C25[] = {
  ABISELECT(2008,1196),
  ABISELECT(1968,1172),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3572C27D1Ev,_ZThn32_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3572C27D0Ev,_ZThn32_N8S3572C27D0Ev),
};
extern void _ZN8S3572C15D1Ev();
extern void _ZN8S3572C15D0Ev();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C158S3572C26__8S3572C25[] = {
  ABISELECT(864,500),
  ABISELECT(824,476),
  ABISELECT(928,532),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&_ZN8S3572C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZThn928_N8S3572C15D1Ev,_ZThn532_N8S3572C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev)();
extern void ABISELECT(_ZThn928_N8S3572C15D0Ev,_ZThn532_N8S3572C15D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C158S3572C26__8S3572C25[] = {
  0,
  ABISELECT(-928,-532),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-928,-532),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C158S3572C26__8S3572C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-984,-564),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev)();
extern void ABISELECT(_ZThn864_N8S3572C15D1Ev,_ZThn500_N8S3572C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev)();
extern void ABISELECT(_ZThn864_N8S3572C15D0Ev,_ZThn500_N8S3572C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C158S3572C26__8S3572C25[] = {
  ABISELECT(-864,-500),
  ABISELECT(-864,-500),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZThn32_N8S3572C26D1Ev,_ZThn16_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn32_N8S3572C26D0Ev,_ZThn16_N8S3572C26D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C27__8S3572C26__8S3572C25[] = {
  ABISELECT(2128,1260),
  ABISELECT(3184,1864),
  ABISELECT(2064,1228),
  ABISELECT(2024,1204),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3572C26D1Ev,_ZThn16_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3572C26D0Ev,_ZThn16_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S3572C26D1Ev,_ZTv0_n24_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn3216_N8S3572C26D1Ev,_ZThn1880_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C26D0Ev,_ZTv0_n24_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn3216_N8S3572C26D0Ev,_ZThn1880_N8S3572C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C16__8S3572C26__8S3572C25[] = {
  ABISELECT(-3216,-1880),
  ABISELECT(-1056,-604),
  ABISELECT(-1120,-636),
  ABISELECT(-1160,-660),
  ABISELECT(-3216,-1880),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C26D1Ev,_ZTv0_n24_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C26D0Ev,_ZTv0_n24_N8S3572C26D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn2096_N8S3572C26D1Ev,_ZThn1244_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn2096_N8S3572C26D0Ev,_ZThn1244_N8S3572C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C26__8S3572C25[] = {
  ABISELECT(-2096,-1244),
  ABISELECT(-2096,-1244),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C26D1Ev,_ZTv0_n20_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn2160_N8S3572C26D1Ev,_ZThn1276_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C26D0Ev,_ZTv0_n20_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn2160_N8S3572C26D0Ev,_ZThn1276_N8S3572C26D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C26__8S3572C25[] = {
  0,
  ABISELECT(-2160,-1276),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-2160,-1276),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C26D1Ev,_ZTv0_n20_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C26D0Ev,_ZTv0_n20_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C26D1Ev,_ZTvn32_n20_N8S3572C26D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C26D0Ev,_ZTvn32_n20_N8S3572C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C26__8S3572C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-2216,-1308),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C26D1Ev,_ZTvn32_n20_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C26D0Ev,_ZTvn32_n20_N8S3572C26D0Ev),
};
extern void ABISELECT(_ZThn88_N8S3572C26D1Ev,_ZThn48_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn88_N8S3572C26D0Ev,_ZThn48_N8S3572C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C27__A2__8S3572C26__8S3572C25[] = {
  ABISELECT(2008,1196),
  ABISELECT(1968,1172),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3572C26D1Ev,_ZThn48_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3572C26D0Ev,_ZThn48_N8S3572C26D0Ev),
};
extern void ABISELECT(_ZThn1232_N8S3572C26D1Ev,_ZThn744_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn1232_N8S3572C26D0Ev,_ZThn744_N8S3572C26D0Ev)();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C15__8S3572C26__8S3572C25[] = {
  ABISELECT(864,500),
  ABISELECT(824,476),
  ABISELECT(928,532),
  ABISELECT(-1232,-744),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3572C26D1Ev,_ZThn744_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3572C26D0Ev,_ZThn744_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S3572C26D1Ev,_ZTv0_n28_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn3280_N8S3572C26D1Ev,_ZThn1908_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3572C26D0Ev,_ZTv0_n28_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn3280_N8S3572C26D0Ev,_ZThn1908_N8S3572C26D0Ev)() __attribute__((weak));
extern void _ZN8S3572C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C20__8S3572C26__8S3572C25[] = {
  0,
  ABISELECT(-3280,-1908),
  ABISELECT(-1184,-664),
  ABISELECT(-1224,-688),
  ABISELECT(-1120,-632),
  ABISELECT(832,504),
  ABISELECT(-3280,-1908),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C26D1Ev,_ZTv0_n28_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C26D0Ev,_ZTv0_n28_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn4112_N8S3572C26D1Ev,_ZThn2412_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn4112_N8S3572C26D0Ev,_ZThn2412_N8S3572C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__A1__8S3572C26__8S3572C25[] = {
  ABISELECT(-4112,-2412),
  ABISELECT(-4112,-2412),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C25[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__A1__8S3572C25[] = {
  ABISELECT(120,64),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__8S3572C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__8S3572C25[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void _ZN7S3572C3D1Ev();
extern void _ZN7S3572C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C3__8S3572C25[] = {
  ABISELECT(368,200),
  ABISELECT(-288,-156),
  ABISELECT(-328,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&_ZN7S3572C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C3D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C3__A2__8S3572C25[] = {
  ABISELECT(-288,-156),
  ABISELECT(-328,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C3__A2__8S3572C25[] = {
  ABISELECT(288,156),
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C3__8S3572C25[] = {
  ABISELECT(288,156),
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn368_N7S3572C3D1Ev,_ZThn200_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn368_N7S3572C3D0Ev,_ZThn200_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C3__8S3572C25[] = {
  ABISELECT(-368,-200),
  ABISELECT(-656,-356),
  ABISELECT(-696,-380),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C25[] = {
  ABISELECT(-656,-356),
  ABISELECT(-696,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C8__A3__8S3572C25[] = {
  ABISELECT(-656,-356),
  ABISELECT(-696,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C8__A3__8S3572C25[] = {
  ABISELECT(656,356),
  ABISELECT(656,356),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C8__8S3572C25[] = {
  ABISELECT(656,356),
  ABISELECT(656,356),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
extern void _ZN8S3572C16D1Ev();
extern void _ZN8S3572C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C16__A1__8S3572C25[] = {
  ABISELECT(-1056,-604),
  ABISELECT(-1120,-636),
  ABISELECT(-1160,-660),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&_ZN8S3572C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C16D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C78S3572C16__A4__8S3572C25[] = {
  ABISELECT(-1120,-636),
  ABISELECT(-1160,-660),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C78S3572C16__A4__8S3572C25[] = {
  ABISELECT(1120,636),
  ABISELECT(1120,636),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C16__A1__8S3572C25[] = {
  ABISELECT(1120,636),
  ABISELECT(1120,636),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C16__A1__8S3572C25[] = {
  0,
  ABISELECT(1056,604),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(1056,604),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C16__A1__8S3572C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(1000,572),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev),
};
extern void _ZN8S3572C20D1Ev();
extern void _ZN8S3572C20D0Ev();
extern void _ZN8S3572C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C20__8S3572C25[] = {
  ABISELECT(-1184,-664),
  ABISELECT(-1224,-688),
  ABISELECT(-1120,-632),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&_ZN8S3572C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZThn832_N8S3572C20D1Ev,_ZThn504_N8S3572C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
extern void ABISELECT(_ZThn832_N8S3572C20D0Ev,_ZThn504_N8S3572C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3572C20__8S3572C25[] = {
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C20__8S3572C25[] = {
  0,
  ABISELECT(1120,632),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(1120,632),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C20__8S3572C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(1064,600),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C20__8S3572C25[] = {
  ABISELECT(1184,664),
  ABISELECT(1184,664),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
static  VTT_ENTRY vtt_S3572C25[] = {
  {&(_ZTV8S3572C25[10]),  10,106},
  {&(_tg__ZTV8S3572C16__A__8S3572C25[5]),  5,7},
  {&(_tg__ZTV7S3572C78S3572C16__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C78S3572C16__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3572C16__A__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C16__A__8S3572C25[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C16__A__8S3572C25[4]),  4,6},
  {&(_tg__ZTV8S3572C26__8S3572C25[8]),  8,10},
  {&(_tg__ZTV8S3572C278S3572C26__8S3572C25[6]),  6,9},
  {&(_tg__ZTV7S3572C98S3572C278S3572C26__A1__8S3572C25[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C98S3572C278S3572C26__A5__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C98S3572C278S3572C26__A5__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C98S3572C278S3572C26__A1__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C98S3572C278S3572C26__A1__8S3572C25[3]),  3,5},
  {&(_tg__ZTV8S3572C16__8S3572C278S3572C26__8S3572C25[6]),  6,8},
  {&(_tg__ZTV7S3572C4__8S3572C278S3572C26__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C278S3572C26__8S3572C25[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C278S3572C26__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C9__A2__8S3572C278S3572C26__8S3572C25[4]),  4,6},
  {&(_tg__ZTV8S3572C158S3572C26__8S3572C25[5]),  5,8},
  {&(_tg__ZTV7S3572C9__8S3572C158S3572C26__8S3572C25[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C158S3572C26__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C158S3572C26__8S3572C25[3]),  3,5},
  {&(_tg__ZTV8S3572C27__8S3572C26__8S3572C25[6]),  6,9},
  {&(_tg__ZTV8S3572C16__8S3572C26__8S3572C25[6]),  6,8},
  {&(_tg__ZTV7S3572C4__8S3572C26__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C26__8S3572C25[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C26__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C98S3572C27__A2__8S3572C26__8S3572C25[4]),  4,6},
  {&(_tg__ZTV8S3572C15__8S3572C26__8S3572C25[5]),  5,8},
  {&(_tg__ZTV8S3572C20__8S3572C26__8S3572C25[8]),  8,11},
  {&(_tg__ZTV8S3572C21__A1__8S3572C26__8S3572C25[3]),  3,5},
  {&(_ZTV8S3572C25[50]),  50,106},
  {&(_ZTV8S3572C25[58]),  58,106},
  {&(_ZTV8S3572C25[65]),  65,106},
  {&(_ZTV8S3572C25[73]),  73,106},
  {&(_ZTV8S3572C25[80]),  80,106},
  {&(_ZTV8S3572C25[22]),  22,106},
  {&(_ZTV8S3572C25[30]),  30,106},
  {&(_ZTV8S3572C25[88]),  88,106},
  {&(_ZTV8S3572C25[37]),  37,106},
  {&(_ZTV8S3572C25[44]),  44,106},
  {&(_ZTV8S3572C25[98]),  98,106},
  {&(_ZTV8S3572C25[104]),  104,106},
  {&(_tg__ZTV7S3572C9__8S3572C25[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__A1__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C3__8S3572C25[5]),  5,7},
  {&(_tg__ZTV7S3572C77S3572C3__A2__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C3__A2__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C3__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C8__7S3572C3__8S3572C25[5]),  5,7},
  {&(_tg__ZTV7S3572C8__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C8__A3__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C8__A3__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C8__8S3572C25[3]),  3,5},
  {&(_tg__ZTV8S3572C16__A1__8S3572C25[5]),  5,7},
  {&(_tg__ZTV7S3572C78S3572C16__A4__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C78S3572C16__A4__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3572C16__A1__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C16__A1__8S3572C25[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C16__A1__8S3572C25[4]),  4,6},
  {&(_tg__ZTV8S3572C20__8S3572C25[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3572C20__8S3572C25[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C20__8S3572C25[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C20__8S3572C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C20__8S3572C25[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3572C25[];
extern  VTBL_ENTRY _ZTV8S3572C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C25[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3572C20D0Ev,_ZThn504_N8S3572C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3572C20D1Ev,_ZThn504_N8S3572C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3572C3D0Ev,_ZThn200_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3572C3D1Ev,_ZThn200_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C26D0Ev,_ZTv0_n28_N8S3572C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3280_N8S3572C26D0Ev,_ZThn1908_N8S3572C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C26D1Ev,_ZTv0_n28_N8S3572C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3280_N8S3572C26D1Ev,_ZThn1908_N8S3572C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C26D0Ev,_ZTv0_n20_N8S3572C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3572C26D0Ev,_ZThn1276_N8S3572C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C26D1Ev,_ZTv0_n20_N8S3572C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3572C26D1Ev,_ZThn1276_N8S3572C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4112_N8S3572C26D0Ev,_ZThn2412_N8S3572C26D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2096_N8S3572C26D0Ev,_ZThn1244_N8S3572C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4112_N8S3572C26D1Ev,_ZThn2412_N8S3572C26D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2096_N8S3572C26D1Ev,_ZThn1244_N8S3572C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C26D0Ev,_ZTv0_n24_N8S3572C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3216_N8S3572C26D0Ev,_ZThn1880_N8S3572C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C26D1Ev,_ZTv0_n24_N8S3572C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3216_N8S3572C26D1Ev,_ZThn1880_N8S3572C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S3572C15D0Ev,_ZThn500_N8S3572C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S3572C15D1Ev,_ZThn500_N8S3572C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S3572C15D0Ev,_ZThn532_N8S3572C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S3572C15D1Ev,_ZThn532_N8S3572C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C27D0Ev,_ZTv0_n20_N8S3572C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S3572C27D0Ev,_ZThn1260_N8S3572C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C27D1Ev,_ZTv0_n20_N8S3572C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S3572C27D1Ev,_ZThn1260_N8S3572C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C27D0Ev,_ZTv0_n12_N8S3572C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2064_N8S3572C27D0Ev,_ZThn1228_N8S3572C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C27D1Ev,_ZTv0_n12_N8S3572C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2064_N8S3572C27D1Ev,_ZThn1228_N8S3572C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N8S3572C27D0Ev,_ZThn1864_N8S3572C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N8S3572C27D1Ev,_ZThn1864_N8S3572C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2064_N7S3572C9D0Ev,_ZThn1228_N7S3572C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2064_N7S3572C9D1Ev,_ZThn1228_N7S3572C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S3572C16D0Ev,_ZThn1304_N8S3572C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S3572C16D1Ev,_ZThn1304_N8S3572C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3572C16D0Ev,_ZThn1272_N8S3572C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3572C16D1Ev,_ZThn1272_N8S3572C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2008_N7S3572C7D0Ev,_ZThn1196_N7S3572C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S3572C7D0Ev,_ZThn1272_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2008_N7S3572C7D1Ev,_ZThn1196_N7S3572C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S3572C7D1Ev,_ZThn1272_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C25D0Ev,_ZTv0_n28_N8S3572C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3344_N8S3572C25D0Ev,_ZThn1936_N8S3572C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C25D1Ev,_ZTv0_n28_N8S3572C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3344_N8S3572C25D1Ev,_ZThn1936_N8S3572C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C25D0Ev,_ZTv0_n24_N8S3572C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3280_N8S3572C25D0Ev,_ZThn1908_N8S3572C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2448_N8S3572C25D0Ev,_ZThn1428_N8S3572C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C25D1Ev,_ZTv0_n24_N8S3572C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3280_N8S3572C25D1Ev,_ZThn1908_N8S3572C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2448_N8S3572C25D1Ev,_ZThn1428_N8S3572C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C25D0Ev,_ZTv0_n20_N8S3572C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N8S3572C25D0Ev,_ZThn1628_N8S3572C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S3572C25D0Ev,_ZThn1304_N8S3572C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C25D1Ev,_ZTv0_n20_N8S3572C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N8S3572C25D1Ev,_ZThn1628_N8S3572C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S3572C25D1Ev,_ZThn1304_N8S3572C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C25D0Ev,_ZTv0_n12_N8S3572C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4176_N8S3572C25D0Ev,_ZThn2440_N8S3572C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3572C25D0Ev,_ZThn1272_N8S3572C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C25D1Ev,_ZTv0_n12_N8S3572C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4176_N8S3572C25D1Ev,_ZThn2440_N8S3572C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3572C25D1Ev,_ZThn1272_N8S3572C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C25 = {  "S3572C25", // class name
  bases_S3572C25, 24,
  &(vtc_S3572C25[0]), // expected_vtbl_contents
  &(vtt_S3572C25[0]), // expected_vtt_contents
  ABISELECT(4208,2456), // object size
  NSPAIRA(_ZTI8S3572C25),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3572C25),106, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3572C25),69, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3572C1  : S3572C2 , S3572C11 , virtual S3572C25 {
  char s3572c1f0;
  int s3572c1f1;
  int s3572c1f2;
  int s3572c1f3[2];
  short s3572c1f4[4];
  ~S3572C1(); // tgen
  S3572C1(); // tgen
};
//SIG(1 S3572C1) C1{ BC2{ BC3{ VBC4{ vd m FC5{ m Fp Fs Fi Fp Fl[2]} FC6{}} BC7{ VBC5 VBC4 Fc:1 Fp[3]} VBC8{ VBC5 VBC4 BC7 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd FC9{ VBC5 BC4 BC7 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} VBC10{ VBC5 VBC7 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC4 Fi[2] FL} VBC9 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]} BC11{ BC12{ VBC7 VBC13{ VBC14{ VBC10 BC4 BC3 vd Fi[6] Fp[8]} BC15{ VBC9 vd v2 Fi Fp Fi:2 FD Fp} BC9 vd v3 Fi FL Fi:6 FC16{ BC7 VBC9 vd Fi Fp} Fl Fi Fp FC2} BC17{ vd m FC10 FC8 Fp Fi Fp FL FD Fs Fp FL Fi} VBC18{ BC7 BC8 vd v4 v5 v6 Fi Fi:2 FD Fp[2]} VBC15 vd Fi FL FC16} VBC19{ BC20{ VBC21{ vd m FD} VBC9 BC22{ m Fp Fi[2] FU23{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC5 vd v7 Fc[7] Fp FD FC8 FL FL Fl Fi Fi FL[3] FD} vd v8 FC3 Fi:7 FC3 FC24{ vd m Fi[4] FL Fi FC7 Fi FD Fi Fi FL FL Fs}} v9 FL Fi Fc} VBC25{ BC16 VBC3 BC26{ BC21 BC27{ VBC16 BC9 FC17 Fp Fi FD FD FL Fi} BC15 VBC20 Fi Fp} v10 v11 Fp[6] Fi FC16 Fi FC7 FL Fi[10] Fi FU28{ m Fi Fi[6] Fc Fi Fi Fp Fp[5] Fi Fc FL Fp Fp Fp}[2] FD Fi Fi:7} Fc Fi Fi Fi[2] Fs[4]}


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

static void Test_S3572C1()
{
  extern Class_Descriptor cd_S3572C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(783,1838)];
    init_test(&cd_S3572C1, buf);
    S3572C1 *dp, &lv = *(dp=new (buf) S3572C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12512,7348), "sizeof(S3572C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3572C1)");
    check_base_class_offset(lv, (S3572C4*)(S3572C3*)(S3572C2*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C3*)(S3572C2*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C8*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*), ABISELECT(1864,1128), "S3572C1");
    check_base_class_offset(lv, (S3572C4*)(S3572C3*)(S3572C14*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*)(S3572C13*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C18*), ABISELECT(1864,1128), "S3572C1");
    check_base_class_offset(lv, (S3572C4*)(S3572C8*)(S3572C18*), ABISELECT(1864,1128), "S3572C1");
    check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C8*)(S3572C18*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C16*)(S3572C25*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C3 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C3*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C3 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C3*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C16*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C7*)(S3572C9*)(S3572C27*)(S3572C26*)(S3572C25*), ABISELECT(1864,1128), "S3572C1");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C3*)(S3572C2*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C8*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*), ABISELECT(1920,1160), "S3572C1");
    check_base_class_offset(lv, (S3572C5*)(S3572C10*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*)(S3572C13*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*)(S3572C13*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C18*), ABISELECT(1920,1160), "S3572C1");
    check_base_class_offset(lv, (S3572C5*)(S3572C8*)(S3572C18*), ABISELECT(1920,1160), "S3572C1");
    check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C8*)(S3572C18*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C16*)(S3572C25*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C3 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C3*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C16*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C9*)(S3572C27*)(S3572C26*)(S3572C25*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C7*)(S3572C9*)(S3572C27*)(S3572C26*)(S3572C25*), ABISELECT(1920,1160), "S3572C1");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C3*)(S3572C2*), 0, "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C8 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C8*), ABISELECT(1960,1184), "S3572C1");
    check_base_class_offset(lv, (S3572C8*)(S3572C3*)(S3572C2*), ABISELECT(1960,1184), "S3572C1");
    check_base_class_offset(lv, (S3572C8*)(S3572C3*)(S3572C14*), ABISELECT(1960,1184), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C3 */ AMB_check_base_class_offset(lv, (S3572C8*)(S3572C3*), ABISELECT(1960,1184), "S3572C1");
    check_base_class_offset(lv, (S3572C3*)(S3572C2*), 0, "S3572C1");
    check_base_class_offset(lv, (S3572C7*)(S3572C10*), ABISELECT(2552,1556), "S3572C1");
    /*is_ambiguous_... S3572C12::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C12*)(S3572C11*), ABISELECT(2552,1556), "S3572C1");
    check_base_class_offset(lv, (S3572C10*)(S3572C2*), ABISELECT(2424,1464), "S3572C1");
    check_base_class_offset(lv, (S3572C10*)(S3572C14*), ABISELECT(2424,1464), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*), ABISELECT(2592,1576), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*), ABISELECT(2648,1608), "S3572C1");
    check_base_class_offset(lv, (S3572C9*)(S3572C2*), ABISELECT(2592,1576), "S3572C1");
    check_base_class_offset(lv, (S3572C9*)(S3572C15*)(S3572C13*), ABISELECT(2592,1576), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C15 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C15*), ABISELECT(2592,1576), "S3572C1");
    check_base_class_offset(lv, (S3572C9*)(S3572C20*)(S3572C19*), ABISELECT(2592,1576), "S3572C1");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C16*)(S3572C25*), ABISELECT(2592,1576), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C16*), ABISELECT(2592,1576), "S3572C1");
    check_base_class_offset(lv, (S3572C9*)(S3572C15*)(S3572C26*)(S3572C25*), ABISELECT(2592,1576), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C20 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C20*), ABISELECT(2592,1576), "S3572C1");
    check_base_class_offset(lv, (S3572C2*), 0, "S3572C1");
    /*is_ambiguous_... S3572C14::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C14*), ABISELECT(5008,2972), "S3572C1");
    /*is_ambiguous_... S3572C3::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C3*)(S3572C14*), ABISELECT(5072,3004), "S3572C1");
    check_base_class_offset(lv, (S3572C3*)(S3572C14*), ABISELECT(5072,3004), "S3572C1");
    check_base_class_offset(lv, (S3572C14*)(S3572C13*), ABISELECT(5008,2972), "S3572C1");
    check_base_class_offset(lv, (S3572C15*)(S3572C13*), ABISELECT(2816,1700), "S3572C1");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*)(S3572C13*), ABISELECT(2880,1732), "S3572C1");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*)(S3572C13*), ABISELECT(2936,1764), "S3572C1");
    /*is_ambiguous_... S3572C13::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C13*), ABISELECT(2880,1732), "S3572C1");
    check_base_class_offset(lv, (S3572C13*)(S3572C12*)(S3572C11*), ABISELECT(2816,1700), "S3572C1");
    check_base_class_offset(lv, (S3572C17*)(S3572C12*)(S3572C11*), ABISELECT(512,308), "S3572C1");
    /*is_ambiguous_... S3572C18::S3572C7 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C18*), ABISELECT(5536,3260), "S3572C1");
    check_base_class_offset(lv, (S3572C7*)(S3572C8*)(S3572C18*), ABISELECT(5576,3280), "S3572C1");
    check_base_class_offset(lv, (S3572C8*)(S3572C18*), ABISELECT(5576,3280), "S3572C1");
    check_base_class_offset(lv, (S3572C18*)(S3572C12*)(S3572C11*), ABISELECT(5536,3260), "S3572C1");
    /*is_ambiguous_... S3572C12::S3572C15 */ AMB_check_base_class_offset(lv, (S3572C15*)(S3572C12*)(S3572C11*), ABISELECT(6080,3588), "S3572C1");
    check_base_class_offset(lv, (S3572C12*)(S3572C11*), ABISELECT(512,308), "S3572C1");
    check_base_class_offset(lv, (S3572C21*)(S3572C20*)(S3572C19*), ABISELECT(9088,5352), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C20 */ AMB_check_base_class_offset(lv, (S3572C21*)(S3572C20*), ABISELECT(9088,5352), "S3572C1");
    check_base_class_offset(lv, (S3572C22*)(S3572C20*)(S3572C19*), ABISELECT(6160,3624), "S3572C1");
    /*is_ambiguous_... S3572C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C20*)(S3572C19*), ABISELECT(6256,3676), "S3572C1");
    check_base_class_offset(lv, (S3572C20*)(S3572C19*), ABISELECT(6144,3620), "S3572C1");
    check_base_class_offset(lv, (S3572C19*)(S3572C11*), ABISELECT(6144,3620), "S3572C1");
    check_base_class_offset(lv, (S3572C11*), ABISELECT(512,308), "S3572C1");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C16*)(S3572C25*), ABISELECT(9120,5368), "S3572C1");
    /*is_ambiguous_... S3572C25::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C16*)(S3572C25*), ABISELECT(9120,5368), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C3 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C3*), ABISELECT(11248,6616), "S3572C1");
    check_base_class_offset(lv, (S3572C3*)(S3572C25*), ABISELECT(11248,6616), "S3572C1");
    /*is_ambiguous_... S3572C26::S3572C21 */ AMB_check_base_class_offset(lv, (S3572C21*)(S3572C26*)(S3572C25*), ABISELECT(9184,5396), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C16 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C16*), ABISELECT(11616,6816), "S3572C1");
    check_base_class_offset(lv, (S3572C16*)(S3572C27*)(S3572C26*)(S3572C25*), ABISELECT(11616,6816), "S3572C1");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3572C9*)(S3572C27*)(S3572C26*)(S3572C25*), ABISELECT(9216,5412), "S3572C1");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C7*)(S3572C9*)(S3572C27*)(S3572C26*)(S3572C25*), ABISELECT(9272,5444), "S3572C1");
    /*is_ambiguous_... S3572C27::S3572C9 */ AMB_check_base_class_offset(lv, (S3572C9*)(S3572C27*)(S3572C26*)(S3572C25*), ABISELECT(9216,5412), "S3572C1");
    check_base_class_offset(lv, (S3572C27*)(S3572C26*)(S3572C25*), ABISELECT(9216,5412), "S3572C1");
    check_base_class_offset(lv, (S3572C15*)(S3572C26*)(S3572C25*), ABISELECT(10416,6140), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C20 */ AMB_check_base_class_offset(lv, (S3572C22*)(S3572C20*), ABISELECT(11696,6848), "S3572C1");
    /*is_ambiguous_... S3572C1::S3572C20 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3572C20*), ABISELECT(11792,6900), "S3572C1");
    check_base_class_offset(lv, (S3572C20*)(S3572C26*)(S3572C25*), ABISELECT(11680,6844), "S3572C1");
    check_base_class_offset(lv, (S3572C26*)(S3572C25*), ABISELECT(9184,5396), "S3572C1");
    check_base_class_offset(lv, (S3572C25*), ABISELECT(9120,5368), "S3572C1");
    check_field_offset(lv, s3572c1f0, ABISELECT(1837,1101), "S3572C1.s3572c1f0");
    check_field_offset(lv, s3572c1f1, ABISELECT(1840,1104), "S3572C1.s3572c1f1");
    check_field_offset(lv, s3572c1f2, ABISELECT(1844,1108), "S3572C1.s3572c1f2");
    check_field_offset(lv, s3572c1f3, ABISELECT(1848,1112), "S3572C1.s3572c1f3");
    check_field_offset(lv, s3572c1f4, ABISELECT(1856,1120), "S3572C1.s3572c1f4");
    test_class_info(&lv, &cd_S3572C1);
    dp->~S3572C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3572C1(Test_S3572C1, "S3572C1", ABISELECT(12512,7348));

#else // __cplusplus

extern void _ZN7S3572C1C1Ev();
extern void _ZN7S3572C1D1Ev();
Name_Map name_map_S3572C1[] = {
  NSPAIR(_ZN7S3572C1C1Ev),
  NSPAIR(_ZN7S3572C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
extern Class_Descriptor cd_S3572C3;
extern VTBL_ENTRY _ZTI7S3572C3[];
extern  VTBL_ENTRY _ZTV7S3572C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C3[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C10;
extern VTBL_ENTRY _ZTI8S3572C10[];
extern  VTBL_ENTRY _ZTV8S3572C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C2;
extern VTBL_ENTRY _ZTI7S3572C2[];
extern  VTBL_ENTRY _ZTV7S3572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C2[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C3;
extern VTBL_ENTRY _ZTI7S3572C3[];
extern  VTBL_ENTRY _ZTV7S3572C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C3[];
extern Class_Descriptor cd_S3572C14;
extern VTBL_ENTRY _ZTI8S3572C14[];
extern  VTBL_ENTRY _ZTV8S3572C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C14[];
extern Class_Descriptor cd_S3572C15;
extern VTBL_ENTRY _ZTI8S3572C15[];
extern  VTBL_ENTRY _ZTV8S3572C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C15[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C13;
extern VTBL_ENTRY _ZTI8S3572C13[];
extern  VTBL_ENTRY _ZTV8S3572C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C13[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C8;
extern VTBL_ENTRY _ZTI7S3572C8[];
extern  VTBL_ENTRY _ZTV7S3572C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C8[];
extern Class_Descriptor cd_S3572C18;
extern VTBL_ENTRY _ZTI8S3572C18[];
extern  VTBL_ENTRY _ZTV8S3572C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C18[];
extern Class_Descriptor cd_S3572C15;
extern VTBL_ENTRY _ZTI8S3572C15[];
extern  VTBL_ENTRY _ZTV8S3572C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C15[];
extern Class_Descriptor cd_S3572C12;
extern VTBL_ENTRY _ZTI8S3572C12[];
extern  VTBL_ENTRY _ZTV8S3572C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C12[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C20;
extern VTBL_ENTRY _ZTI8S3572C20[];
extern  VTBL_ENTRY _ZTV8S3572C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C20[];
extern Class_Descriptor cd_S3572C19;
extern VTBL_ENTRY _ZTI8S3572C19[];
extern  VTBL_ENTRY _ZTV8S3572C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C19[];
extern Class_Descriptor cd_S3572C11;
extern VTBL_ENTRY _ZTI8S3572C11[];
extern  VTBL_ENTRY _ZTV8S3572C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C11[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C16;
extern VTBL_ENTRY _ZTI8S3572C16[];
extern  VTBL_ENTRY _ZTV8S3572C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C16[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C3;
extern VTBL_ENTRY _ZTI7S3572C3[];
extern  VTBL_ENTRY _ZTV7S3572C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C3[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C16;
extern VTBL_ENTRY _ZTI8S3572C16[];
extern  VTBL_ENTRY _ZTV8S3572C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C16[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C7;
extern VTBL_ENTRY _ZTI7S3572C7[];
extern  VTBL_ENTRY _ZTV7S3572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C7[];
extern Class_Descriptor cd_S3572C9;
extern VTBL_ENTRY _ZTI7S3572C9[];
extern  VTBL_ENTRY _ZTV7S3572C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C9[];
extern Class_Descriptor cd_S3572C27;
extern VTBL_ENTRY _ZTI8S3572C27[];
extern  VTBL_ENTRY _ZTV8S3572C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C27[];
extern Class_Descriptor cd_S3572C15;
extern VTBL_ENTRY _ZTI8S3572C15[];
extern  VTBL_ENTRY _ZTV8S3572C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C15[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C20;
extern VTBL_ENTRY _ZTI8S3572C20[];
extern  VTBL_ENTRY _ZTV8S3572C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C20[];
extern Class_Descriptor cd_S3572C26;
extern VTBL_ENTRY _ZTI8S3572C26[];
extern  VTBL_ENTRY _ZTV8S3572C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C26[];
extern Class_Descriptor cd_S3572C25;
extern VTBL_ENTRY _ZTI8S3572C25[];
extern  VTBL_ENTRY _ZTV8S3572C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3572C25[];
static Base_Class bases_S3572C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(1864,1128), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C5,    ABISELECT(1920,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C7,    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
    41, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(1960,1184), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(1960,1184), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3572C3,    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
    42, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(2552,1556), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3572C10,    ABISELECT(2424,1464), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2592,1576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(2648,1608), //bcp->offset
    73, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(2592,1576), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3572C2,    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
    43, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C4,    ABISELECT(5008,2972), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3572C7,    ABISELECT(5072,3004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3572C3,    ABISELECT(5072,3004), //bcp->offset
    119, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3572C14,    ABISELECT(5008,2972), //bcp->offset
    109, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S3572C15,    ABISELECT(2816,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(2880,1732), //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(2936,1764), //bcp->offset
    103, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(2880,1732), //bcp->offset
    96, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3572C13,    ABISELECT(2816,1700), //bcp->offset
    79, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S3572C17,    ABISELECT(512,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(5536,3260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(5576,3280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3572C8,    ABISELECT(5576,3280), //bcp->offset
    139, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3572C18,    ABISELECT(5536,3260), //bcp->offset
    126, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S3572C15,    ABISELECT(6080,3588), //bcp->offset
    145, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S3572C12,    ABISELECT(512,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3572C21,    ABISELECT(9088,5352), //bcp->offset
    168, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(6160,3624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(6256,3676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C20,    ABISELECT(6144,3620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3572C19,    ABISELECT(6144,3620), //bcp->offset
    155, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S3572C11,    ABISELECT(512,308), //bcp->offset
    20, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C7,    ABISELECT(9120,5368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3572C16,    ABISELECT(9120,5368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(11248,6616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    184, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3572C3,    ABISELECT(11248,6616), //bcp->offset
    225, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    183, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S3572C21,    ABISELECT(9184,5396), //bcp->offset
    -1, //bcp->virtual_function_table_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
    49, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(11616,6816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    189, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3572C16,    ABISELECT(11616,6816), //bcp->offset
    233, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(9216,5412), //bcp->offset
    -1, //bcp->virtual_function_table_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
    43, //immediately_derived
  0, 0},
  {&cd_S3572C7,    ABISELECT(9272,5444), //bcp->offset
    211, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3572C9,    ABISELECT(9216,5412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S3572C27,    ABISELECT(9216,5412), //bcp->offset
    202, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S3572C15,    ABISELECT(10416,6140), //bcp->offset
    217, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S3572C22,    ABISELECT(11696,6848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(11792,6900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C20,    ABISELECT(11680,6844), //bcp->offset
    241, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    194, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3572C26,    ABISELECT(9184,5396), //bcp->offset
    192, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3572C25,    ABISELECT(9120,5368), //bcp->offset
    173, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3572C1[];
extern void _ZN7S3572C1D1Ev();
extern void _ZN7S3572C1D0Ev();
extern void ABISELECT(_ZThn512_N7S3572C1D1Ev,_ZThn308_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn512_N7S3572C1D0Ev,_ZThn308_N7S3572C1D0Ev)();
extern void _ZN8S3572C112v9Ev();
extern void ABISELECT(_ZTv0_n24_N7S3572C1D1Ev,_ZTv0_n12_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn1864_N7S3572C1D1Ev,_ZThn1128_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C1D0Ev,_ZTv0_n12_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn1864_N7S3572C1D0Ev,_ZThn1128_N7S3572C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C1D1Ev,_ZTv0_n20_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn1960_N7S3572C1D1Ev,_ZThn1184_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C1D0Ev,_ZTv0_n20_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn1960_N7S3572C1D0Ev,_ZThn1184_N7S3572C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3572C1D1Ev,_ZTv0_n24_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn2424_N7S3572C1D1Ev,_ZThn1464_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3572C1D0Ev,_ZTv0_n24_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn2424_N7S3572C1D0Ev,_ZThn1464_N7S3572C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C1D1Ev,_ZTv0_n20_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn2552_N7S3572C1D1Ev,_ZThn1556_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C1D0Ev,_ZTv0_n20_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn2552_N7S3572C1D0Ev,_ZThn1556_N7S3572C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C1D1Ev,_ZTv0_n20_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn2592_N7S3572C1D1Ev,_ZThn1576_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C1D0Ev,_ZTv0_n20_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn2592_N7S3572C1D0Ev,_ZThn1576_N7S3572C1D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N7S3572C1D1Ev,_ZTvn32_n20_N7S3572C1D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S3572C1D0Ev,_ZTvn32_n20_N7S3572C1D0Ev)();
extern void ABISELECT(_ZTv0_n80_N7S3572C1D1Ev,_ZTv0_n40_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn2816_N7S3572C1D1Ev,_ZThn1700_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3572C1D0Ev,_ZTv0_n40_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn2816_N7S3572C1D0Ev,_ZThn1700_N7S3572C1D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
extern void _ZN8S3572C132v3Ev();
extern void ABISELECT(_ZTvn64_n80_N7S3572C1D1Ev,_ZTvn32_n40_N7S3572C1D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N7S3572C1D0Ev,_ZTvn32_n40_N7S3572C1D0Ev)();
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn120_n80_N7S3572C1D1Ev,_ZTvn64_n40_N7S3572C1D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N7S3572C1D0Ev,_ZTvn64_n40_N7S3572C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N7S3572C1D1Ev,_ZTv0_n32_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn5008_N7S3572C1D1Ev,_ZThn2972_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3572C1D0Ev,_ZTv0_n32_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn5008_N7S3572C1D0Ev,_ZThn2972_N7S3572C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N7S3572C1D1Ev,_ZTvn32_n32_N7S3572C1D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N7S3572C1D0Ev,_ZTvn32_n32_N7S3572C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3572C1D1Ev,_ZTv0_n20_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn5536_N7S3572C1D1Ev,_ZThn3260_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C1D0Ev,_ZTv0_n20_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn5536_N7S3572C1D0Ev,_ZThn3260_N7S3572C1D0Ev)() __attribute__((weak));
extern void _ZN8S3572C182v4Ev();
extern void _ZN8S3572C182v5Ev();
extern void _ZN8S3572C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N7S3572C1D1Ev,_ZTvn20_n20_N7S3572C1D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N7S3572C1D0Ev,_ZTvn20_n20_N7S3572C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N7S3572C1D1Ev,_ZTv0_n24_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn6080_N7S3572C1D1Ev,_ZThn3588_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3572C1D0Ev,_ZTv0_n24_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn6080_N7S3572C1D0Ev,_ZThn3588_N7S3572C1D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3572C1D1Ev,_ZTv0_n28_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn6144_N7S3572C1D1Ev,_ZThn3620_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3572C1D0Ev,_ZTv0_n28_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn6144_N7S3572C1D0Ev,_ZThn3620_N7S3572C1D0Ev)() __attribute__((weak));
extern void _ZN8S3572C202v7Ev();
extern void _ZN8S3572C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N7S3572C1D1Ev,_ZTv0_n12_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn9088_N7S3572C1D1Ev,_ZThn5352_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C1D0Ev,_ZTv0_n12_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn9088_N7S3572C1D0Ev,_ZThn5352_N7S3572C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S3572C1D1Ev,_ZTv0_n44_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn9120_N7S3572C1D1Ev,_ZThn5368_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S3572C1D0Ev,_ZTv0_n44_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn9120_N7S3572C1D0Ev,_ZThn5368_N7S3572C1D0Ev)() __attribute__((weak));
extern void _ZN8S3572C253v10Ev();
extern void _ZN8S3572C253v11Ev();
extern void ABISELECT(_ZTvn64_n88_N7S3572C1D1Ev,_ZTvn28_n44_N7S3572C1D1Ev)();
extern void ABISELECT(_ZTvn64_n88_N7S3572C1D0Ev,_ZTvn28_n44_N7S3572C1D0Ev)();
extern void ABISELECT(_ZTvn96_n88_N7S3572C1D1Ev,_ZTvn44_n44_N7S3572C1D1Ev)();
extern void ABISELECT(_ZTvn96_n88_N7S3572C1D0Ev,_ZTvn44_n44_N7S3572C1D0Ev)();
extern void _ZN7S3572C92v1Ev();
extern void ABISELECT(_ZTvn152_n88_N7S3572C1D1Ev,_ZTvn76_n44_N7S3572C1D1Ev)();
extern void ABISELECT(_ZTvn152_n88_N7S3572C1D0Ev,_ZTvn76_n44_N7S3572C1D0Ev)();
extern void ABISELECT(_ZTvn1296_n88_N7S3572C1D1Ev,_ZTvn772_n44_N7S3572C1D1Ev)();
extern void ABISELECT(_ZTvn1296_n88_N7S3572C1D0Ev,_ZTvn772_n44_N7S3572C1D0Ev)();
extern void _ZN8S3572C152v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3572C1D1Ev,_ZTv0_n24_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn11248_N7S3572C1D1Ev,_ZThn6616_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3572C1D0Ev,_ZTv0_n24_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn11248_N7S3572C1D0Ev,_ZThn6616_N7S3572C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3572C1D1Ev,_ZTv0_n24_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn11616_N7S3572C1D1Ev,_ZThn6816_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3572C1D0Ev,_ZTv0_n24_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn11616_N7S3572C1D0Ev,_ZThn6816_N7S3572C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3572C1D1Ev,_ZTv0_n28_N7S3572C1D1Ev)();
extern void ABISELECT(_ZThn11680_N7S3572C1D1Ev,_ZThn6844_N7S3572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3572C1D0Ev,_ZTv0_n28_N7S3572C1D0Ev)();
extern void ABISELECT(_ZThn11680_N7S3572C1D0Ev,_ZThn6844_N7S3572C1D0Ev)() __attribute__((weak));
extern void _ZN8S3572C202v7Ev();
static  VTBL_ENTRY vtc_S3572C1[] = {
  ABISELECT(11680,6844),
  ABISELECT(11616,6816),
  ABISELECT(11248,6616),
  ABISELECT(9120,5368),
  ABISELECT(9088,5352),
  ABISELECT(6144,3620),
  ABISELECT(6080,3588),
  ABISELECT(5536,3260),
  ABISELECT(5008,2972),
  ABISELECT(2816,1700),
  ABISELECT(2592,1576),
  ABISELECT(2552,1556),
  ABISELECT(2424,1464),
  ABISELECT(1960,1184),
  ABISELECT(1864,1128),
  ABISELECT(1920,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&_ZN7S3572C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C1D0Ev,
  ABISELECT(8576,5044),
  ABISELECT(5632,3312),
  ABISELECT(5568,3280),
  ABISELECT(5024,2952),
  ABISELECT(2080,1268),
  ABISELECT(1448,876),
  ABISELECT(1912,1156),
  ABISELECT(4496,2664),
  ABISELECT(2304,1392),
  ABISELECT(1352,820),
  ABISELECT(1408,852),
  ABISELECT(2040,1248),
  ABISELECT(-512,-308),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N7S3572C1D1Ev,_ZThn308_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N7S3572C1D0Ev,_ZThn308_N7S3572C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C112v9Ev,
  ABISELECT(-1864,-1128),
  ABISELECT(-1864,-1128),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C1D1Ev,_ZTv0_n12_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C1D0Ev,_ZTv0_n12_N7S3572C1D0Ev),
  ABISELECT(-1960,-1184),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-1960,-1184),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C1D1Ev,_ZTv0_n20_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C1D0Ev,_ZTv0_n20_N7S3572C1D0Ev),
  ABISELECT(-2424,-1464),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(-2424,-1464),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C1D1Ev,_ZTv0_n24_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C1D0Ev,_ZTv0_n24_N7S3572C1D0Ev),
  ABISELECT(-2552,-1556),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-2552,-1556),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C1D1Ev,_ZTv0_n20_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C1D0Ev,_ZTv0_n20_N7S3572C1D0Ev),
  0,
  ABISELECT(-2592,-1576),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(-2592,-1576),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C1D1Ev,_ZTv0_n20_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C1D0Ev,_ZTv0_n20_N7S3572C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-2648,-1608),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3572C1D1Ev,_ZTvn32_n20_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3572C1D0Ev,_ZTvn32_n20_N7S3572C1D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-2816,-1700),
  ABISELECT(-856,-516),
  ABISELECT(-264,-144),
  ABISELECT(-392,-236),
  ABISELECT(2192,1272),
  ABISELECT(-952,-572),
  ABISELECT(-896,-540),
  ABISELECT(-224,-124),
  ABISELECT(-2816,-1700),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3572C1D1Ev,_ZTv0_n40_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3572C1D0Ev,_ZTv0_n40_N7S3572C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3572C132v3Ev,
  ABISELECT(-1016,-604),
  ABISELECT(-960,-572),
  ABISELECT(-2880,-1732),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N7S3572C1D1Ev,_ZTvn32_n40_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N7S3572C1D0Ev,_ZTvn32_n40_N7S3572C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  ABISELECT(-2936,-1764),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N7S3572C1D1Ev,_ZTvn64_n40_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N7S3572C1D0Ev,_ZTvn64_n40_N7S3572C1D0Ev),
  ABISELECT(-5008,-2972),
  ABISELECT(-3048,-1788),
  ABISELECT(-3144,-1844),
  ABISELECT(-2456,-1416),
  ABISELECT(-3088,-1812),
  ABISELECT(-2584,-1508),
  ABISELECT(-5008,-2972),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3572C1D1Ev,_ZTv0_n32_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3572C1D0Ev,_ZTv0_n32_N7S3572C1D0Ev),
  ABISELECT(-3112,-1820),
  ABISELECT(-3208,-1876),
  ABISELECT(-3152,-1844),
  ABISELECT(-5072,-3004),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N7S3572C1D1Ev,_ZTvn32_n32_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N7S3572C1D0Ev,_ZTvn32_n32_N7S3572C1D0Ev),
  0,
  0,
  0,
  ABISELECT(-5536,-3260),
  ABISELECT(-3672,-2132),
  ABISELECT(-3616,-2100),
  ABISELECT(-5536,-3260),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C1D1Ev,_ZTv0_n20_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C1D0Ev,_ZTv0_n20_N7S3572C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v6Ev,
  ABISELECT(-3712,-2152),
  ABISELECT(-3656,-2120),
  ABISELECT(-5576,-3280),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N7S3572C1D1Ev,_ZTvn20_n20_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N7S3572C1D0Ev,_ZTvn20_n20_N7S3572C1D0Ev),
  0,
  ABISELECT(-6080,-3588),
  ABISELECT(-4216,-2460),
  ABISELECT(-4160,-2428),
  ABISELECT(-3488,-2012),
  ABISELECT(-6080,-3588),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C1D1Ev,_ZTv0_n24_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C1D0Ev,_ZTv0_n24_N7S3572C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  0,
  0,
  ABISELECT(-6144,-3620),
  ABISELECT(-4280,-2492),
  ABISELECT(-4224,-2460),
  ABISELECT(-3552,-2044),
  ABISELECT(2944,1732),
  ABISELECT(-6144,-3620),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3572C1D1Ev,_ZTv0_n28_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3572C1D0Ev,_ZTv0_n28_N7S3572C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3572C192v8Ev,
  ABISELECT(-9088,-5352),
  ABISELECT(-9088,-5352),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C1D1Ev,_ZTv0_n12_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C1D0Ev,_ZTv0_n12_N7S3572C1D0Ev),
  ABISELECT(1296,772),
  ABISELECT(96,44),
  0,
  0,
  ABISELECT(-9120,-5368),
  ABISELECT(-32,-16),
  ABISELECT(2560,1476),
  ABISELECT(2496,1448),
  ABISELECT(-7160,-4184),
  ABISELECT(2128,1248),
  ABISELECT(-6528,-3792),
  ABISELECT(-7256,-4240),
  ABISELECT(-7200,-4208),
  ABISELECT(-9120,-5368),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3572C1D1Ev,_ZTv0_n44_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3572C1D0Ev,_ZTv0_n44_N7S3572C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C253v10Ev,
  (VTBL_ENTRY)&_ZN8S3572C253v11Ev,
  ABISELECT(-96,-44),
  ABISELECT(2496,1448),
  ABISELECT(-6592,-3820),
  ABISELECT(-7320,-4268),
  ABISELECT(-7264,-4236),
  ABISELECT(2432,1420),
  ABISELECT(-9184,-5396),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n88_N7S3572C1D1Ev,_ZTvn28_n44_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n88_N7S3572C1D0Ev,_ZTvn28_n44_N7S3572C1D0Ev),
  ABISELECT(-6624,-3836),
  ABISELECT(2400,1404),
  ABISELECT(-7352,-4284),
  ABISELECT(-7296,-4252),
  ABISELECT(-9216,-5412),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n88_N7S3572C1D1Ev,_ZTvn44_n44_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n88_N7S3572C1D0Ev,_ZTvn44_n44_N7S3572C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
  ABISELECT(-7408,-4316),
  ABISELECT(-7352,-4284),
  ABISELECT(-9272,-5444),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn152_n88_N7S3572C1D1Ev,_ZTvn76_n44_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn152_n88_N7S3572C1D0Ev,_ZTvn76_n44_N7S3572C1D0Ev),
  ABISELECT(-8552,-5012),
  ABISELECT(-8496,-4980),
  ABISELECT(-7824,-4564),
  ABISELECT(-10416,-6140),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1296_n88_N7S3572C1D1Ev,_ZTvn772_n44_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1296_n88_N7S3572C1D0Ev,_ZTvn772_n44_N7S3572C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  ABISELECT(-11248,-6616),
  ABISELECT(-9288,-5432),
  ABISELECT(-9384,-5488),
  ABISELECT(-9328,-5456),
  ABISELECT(-11248,-6616),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C1D1Ev,_ZTv0_n24_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C1D0Ev,_ZTv0_n24_N7S3572C1D0Ev),
  ABISELECT(-11616,-6816),
  ABISELECT(-9024,-5240),
  ABISELECT(-9752,-5688),
  ABISELECT(-9696,-5656),
  ABISELECT(-11616,-6816),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C1D1Ev,_ZTv0_n24_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C1D0Ev,_ZTv0_n24_N7S3572C1D0Ev),
  0,
  ABISELECT(-11680,-6844),
  ABISELECT(-9816,-5716),
  ABISELECT(-9760,-5684),
  ABISELECT(-9088,-5268),
  ABISELECT(-2592,-1492),
  ABISELECT(-11680,-6844),
  (VTBL_ENTRY)&(_ZTI7S3572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3572C1D1Ev,_ZTv0_n28_N7S3572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3572C1D0Ev,_ZTv0_n28_N7S3572C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
};
extern VTBL_ENTRY _ZTV7S3572C1[];
extern void _ZN7S3572C2D1Ev();
extern void _ZN7S3572C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C2__7S3572C1[] = {
  ABISELECT(2592,1576),
  ABISELECT(2552,1556),
  ABISELECT(2424,1464),
  ABISELECT(1960,1184),
  ABISELECT(1864,1128),
  ABISELECT(1920,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&_ZN7S3572C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C2D0Ev,
};
extern void _ZN7S3572C3D1Ev();
extern void _ZN7S3572C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C37S3572C2__7S3572C1[] = {
  ABISELECT(1960,1184),
  ABISELECT(1864,1128),
  ABISELECT(1920,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&_ZN7S3572C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C3D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C37S3572C2__7S3572C1[] = {
  ABISELECT(1864,1128),
  ABISELECT(1920,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZThn1864_N7S3572C7D1Ev,_ZThn1128_N7S3572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
extern void ABISELECT(_ZThn1864_N7S3572C7D0Ev,_ZThn1128_N7S3572C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C37S3572C2__7S3572C1[] = {
  ABISELECT(-1864,-1128),
  ABISELECT(-1864,-1128),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn1864_N7S3572C3D1Ev,_ZThn1128_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn1864_N7S3572C3D0Ev,_ZThn1128_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C37S3572C2__7S3572C1[] = {
  ABISELECT(-1864,-1128),
  ABISELECT(-1864,-1128),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev)();
extern void ABISELECT(_ZThn1960_N7S3572C3D1Ev,_ZThn1184_N7S3572C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev)();
extern void ABISELECT(_ZThn1960_N7S3572C3D0Ev,_ZThn1184_N7S3572C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C37S3572C2__7S3572C1[] = {
  ABISELECT(-1960,-1184),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-1960,-1184),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C2D1Ev,_ZTv0_n12_N7S3572C2D1Ev)();
extern void ABISELECT(_ZThn1864_N7S3572C2D1Ev,_ZThn1128_N7S3572C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3572C2D0Ev,_ZTv0_n12_N7S3572C2D0Ev)();
extern void ABISELECT(_ZThn1864_N7S3572C2D0Ev,_ZThn1128_N7S3572C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C2__7S3572C1[] = {
  ABISELECT(-1864,-1128),
  ABISELECT(-1864,-1128),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C2D1Ev,_ZTv0_n12_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C2D0Ev,_ZTv0_n12_N7S3572C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev)();
extern void ABISELECT(_ZThn1960_N7S3572C2D1Ev,_ZThn1184_N7S3572C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev)();
extern void ABISELECT(_ZThn1960_N7S3572C2D0Ev,_ZThn1184_N7S3572C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C2__7S3572C1[] = {
  ABISELECT(-1960,-1184),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-1960,-1184),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S3572C2D1Ev,_ZTv0_n24_N7S3572C2D1Ev)();
extern void ABISELECT(_ZThn2424_N7S3572C2D1Ev,_ZThn1464_N7S3572C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3572C2D0Ev,_ZTv0_n24_N7S3572C2D0Ev)();
extern void ABISELECT(_ZThn2424_N7S3572C2D0Ev,_ZThn1464_N7S3572C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C10__7S3572C2__7S3572C1[] = {
  ABISELECT(-2424,-1464),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(-2424,-1464),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C2D1Ev,_ZTv0_n24_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3572C2D0Ev,_ZTv0_n24_N7S3572C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev)();
extern void ABISELECT(_ZThn2552_N7S3572C2D1Ev,_ZThn1556_N7S3572C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev)();
extern void ABISELECT(_ZThn2552_N7S3572C2D0Ev,_ZThn1556_N7S3572C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C7__A2__7S3572C2__7S3572C1[] = {
  ABISELECT(-2552,-1556),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-2552,-1556),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev)();
extern void ABISELECT(_ZThn2592_N7S3572C2D1Ev,_ZThn1576_N7S3572C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev)();
extern void ABISELECT(_ZThn2592_N7S3572C2D0Ev,_ZThn1576_N7S3572C2D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__7S3572C2__7S3572C1[] = {
  0,
  ABISELECT(-2592,-1576),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(-2592,-1576),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N7S3572C2D1Ev,_ZTvn32_n20_N7S3572C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S3572C2D0Ev,_ZTvn32_n20_N7S3572C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__7S3572C2__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-2648,-1608),
  (VTBL_ENTRY)&(_ZTI7S3572C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3572C2D1Ev,_ZTvn32_n20_N7S3572C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3572C2D0Ev,_ZTvn32_n20_N7S3572C2D0Ev),
};
extern void _ZN8S3572C11D1Ev();
extern void _ZN8S3572C11D0Ev();
extern void _ZN8S3572C112v9Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C11__7S3572C1[] = {
  ABISELECT(8576,5044),
  ABISELECT(5632,3312),
  ABISELECT(5568,3280),
  ABISELECT(5024,2952),
  ABISELECT(2080,1268),
  ABISELECT(1448,876),
  ABISELECT(1912,1156),
  ABISELECT(4496,2664),
  ABISELECT(2304,1392),
  ABISELECT(1352,820),
  ABISELECT(1408,852),
  ABISELECT(2040,1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&_ZN8S3572C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C11D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C112v9Ev,
};
extern void _ZN8S3572C12D1Ev();
extern void _ZN8S3572C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(5568,3280),
  ABISELECT(5024,2952),
  ABISELECT(2080,1268),
  ABISELECT(1448,876),
  ABISELECT(1912,1156),
  ABISELECT(4496,2664),
  ABISELECT(2304,1392),
  ABISELECT(1352,820),
  ABISELECT(1408,852),
  ABISELECT(2040,1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&_ZN8S3572C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C12D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn2040_N8S3572C12D1Ev,_ZThn1248_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn2040_N8S3572C12D0Ev,_ZThn1248_N8S3572C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(-2040,-1248),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-2040,-1248),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C12D1Ev,_ZTv0_n12_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn1352_N8S3572C12D1Ev,_ZThn820_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C12D0Ev,_ZTv0_n12_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn1352_N8S3572C12D0Ev,_ZThn820_N8S3572C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(-1352,-820),
  ABISELECT(-1352,-820),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C12D1Ev,_ZTv0_n12_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C12D0Ev,_ZTv0_n12_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S3572C12D1Ev,_ZTv0_n40_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn2304_N8S3572C12D1Ev,_ZThn1392_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3572C12D0Ev,_ZTv0_n40_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn2304_N8S3572C12D0Ev,_ZThn1392_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
extern void _ZN8S3572C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C13__8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-2304,-1392),
  ABISELECT(-856,-516),
  ABISELECT(-264,-144),
  ABISELECT(-392,-236),
  ABISELECT(2192,1272),
  ABISELECT(-952,-572),
  ABISELECT(-896,-540),
  ABISELECT(-224,-124),
  ABISELECT(-2304,-1392),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3572C12D1Ev,_ZTv0_n40_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3572C12D0Ev,_ZTv0_n40_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3572C132v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S3572C12D1Ev,_ZTv0_n32_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn4496_N8S3572C12D1Ev,_ZThn2664_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3572C12D0Ev,_ZTv0_n32_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn4496_N8S3572C12D0Ev,_ZThn2664_N8S3572C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C14__8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(-4496,-2664),
  ABISELECT(-3048,-1788),
  ABISELECT(-3144,-1844),
  ABISELECT(-2456,-1416),
  ABISELECT(-3088,-1812),
  ABISELECT(-2584,-1508),
  ABISELECT(-4496,-2664),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C12D1Ev,_ZTv0_n32_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C12D0Ev,_ZTv0_n32_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn1912_N8S3572C12D1Ev,_ZThn1156_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn1912_N8S3572C12D0Ev,_ZThn1156_N8S3572C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(-1912,-1156),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(-1912,-1156),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3572C12D1Ev,_ZTvn32_n32_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3572C12D0Ev,_ZTvn32_n32_N8S3572C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C38S3572C14__8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(-3112,-1820),
  ABISELECT(-3208,-1876),
  ABISELECT(-3152,-1844),
  ABISELECT(-4560,-2696),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C12D1Ev,_ZTvn32_n32_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C12D0Ev,_ZTvn32_n32_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn1448_N8S3572C12D1Ev,_ZThn876_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn1448_N8S3572C12D0Ev,_ZThn876_N8S3572C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(-1448,-876),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-1448,-876),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn2080_N8S3572C12D1Ev,_ZThn1268_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn2080_N8S3572C12D0Ev,_ZThn1268_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C128S3572C11__7S3572C1[] = {
  0,
  ABISELECT(-2080,-1268),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(-2080,-1268),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C12D1Ev,_ZTvn32_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C12D0Ev,_ZTvn32_n20_N8S3572C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-2136,-1300),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C12D1Ev,_ZTvn32_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C12D0Ev,_ZTvn32_n20_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S3572C12D1Ev,_ZTvn32_n40_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S3572C12D0Ev,_ZTvn32_n40_N8S3572C12D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C98S3572C13__A1__8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(-1016,-604),
  ABISELECT(-960,-572),
  ABISELECT(-2368,-1424),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3572C12D1Ev,_ZTvn32_n40_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3572C12D0Ev,_ZTvn32_n40_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S3572C12D1Ev,_ZTvn64_n40_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S3572C12D0Ev,_ZTvn64_n40_N8S3572C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C13__A4__8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  ABISELECT(-2424,-1456),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3572C12D1Ev,_ZTvn64_n40_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3572C12D0Ev,_ZTvn64_n40_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn5024_N8S3572C12D1Ev,_ZThn2952_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn5024_N8S3572C12D0Ev,_ZThn2952_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN8S3572C182v4Ev();
extern void _ZN8S3572C182v5Ev();
extern void _ZN8S3572C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C18__8S3572C128S3572C11__7S3572C1[] = {
  0,
  0,
  0,
  ABISELECT(-5024,-2952),
  ABISELECT(-3672,-2132),
  ABISELECT(-3616,-2100),
  ABISELECT(-5024,-2952),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S3572C12D1Ev,_ZTvn20_n20_N8S3572C12D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S3572C12D0Ev,_ZTvn20_n20_N8S3572C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C88S3572C18__A1__8S3572C128S3572C11__7S3572C1[] = {
  ABISELECT(-3712,-2152),
  ABISELECT(-3656,-2120),
  ABISELECT(-5064,-2972),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3572C12D1Ev,_ZTvn20_n20_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3572C12D0Ev,_ZTvn20_n20_N8S3572C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev)();
extern void ABISELECT(_ZThn5568_N8S3572C12D1Ev,_ZThn3280_N8S3572C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev)();
extern void ABISELECT(_ZThn5568_N8S3572C12D0Ev,_ZThn3280_N8S3572C12D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C15__A1__8S3572C128S3572C11__7S3572C1[] = {
  0,
  ABISELECT(-5568,-3280),
  ABISELECT(-4216,-2460),
  ABISELECT(-4160,-2428),
  ABISELECT(-3488,-2012),
  ABISELECT(-5568,-3280),
  (VTBL_ENTRY)&(_ZTI8S3572C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn2040_N8S3572C11D1Ev,_ZThn1248_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn2040_N8S3572C11D0Ev,_ZThn1248_N8S3572C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C11__7S3572C1[] = {
  ABISELECT(-2040,-1248),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-2040,-1248),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C11D1Ev,_ZTv0_n12_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn1352_N8S3572C11D1Ev,_ZThn820_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C11D0Ev,_ZTv0_n12_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn1352_N8S3572C11D0Ev,_ZThn820_N8S3572C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C11__7S3572C1[] = {
  ABISELECT(-1352,-820),
  ABISELECT(-1352,-820),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C11D1Ev,_ZTv0_n12_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C11D0Ev,_ZTv0_n12_N8S3572C11D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S3572C11D1Ev,_ZTv0_n40_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn2304_N8S3572C11D1Ev,_ZThn1392_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3572C11D0Ev,_ZTv0_n40_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn2304_N8S3572C11D0Ev,_ZThn1392_N8S3572C11D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
extern void _ZN8S3572C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C13__8S3572C11__7S3572C1[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-2304,-1392),
  ABISELECT(-856,-516),
  ABISELECT(-264,-144),
  ABISELECT(-392,-236),
  ABISELECT(2192,1272),
  ABISELECT(-952,-572),
  ABISELECT(-896,-540),
  ABISELECT(-224,-124),
  ABISELECT(-2304,-1392),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3572C11D1Ev,_ZTv0_n40_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3572C11D0Ev,_ZTv0_n40_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3572C132v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S3572C11D1Ev,_ZTv0_n32_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn4496_N8S3572C11D1Ev,_ZThn2664_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3572C11D0Ev,_ZTv0_n32_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn4496_N8S3572C11D0Ev,_ZThn2664_N8S3572C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C14__8S3572C11__7S3572C1[] = {
  ABISELECT(-4496,-2664),
  ABISELECT(-3048,-1788),
  ABISELECT(-3144,-1844),
  ABISELECT(-2456,-1416),
  ABISELECT(-3088,-1812),
  ABISELECT(-2584,-1508),
  ABISELECT(-4496,-2664),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C11D1Ev,_ZTv0_n32_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C11D0Ev,_ZTv0_n32_N8S3572C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C11D1Ev,_ZTv0_n24_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn1912_N8S3572C11D1Ev,_ZThn1156_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C11D0Ev,_ZTv0_n24_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn1912_N8S3572C11D0Ev,_ZThn1156_N8S3572C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C11__7S3572C1[] = {
  ABISELECT(-1912,-1156),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(-1912,-1156),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C11D1Ev,_ZTv0_n24_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C11D0Ev,_ZTv0_n24_N8S3572C11D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3572C11D1Ev,_ZTvn32_n32_N8S3572C11D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3572C11D0Ev,_ZTvn32_n32_N8S3572C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C38S3572C14__8S3572C11__7S3572C1[] = {
  ABISELECT(-3112,-1820),
  ABISELECT(-3208,-1876),
  ABISELECT(-3152,-1844),
  ABISELECT(-4560,-2696),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C11D1Ev,_ZTvn32_n32_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C11D0Ev,_ZTvn32_n32_N8S3572C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn1448_N8S3572C11D1Ev,_ZThn876_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn1448_N8S3572C11D0Ev,_ZThn876_N8S3572C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C11__7S3572C1[] = {
  ABISELECT(-1448,-876),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-1448,-876),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn2080_N8S3572C11D1Ev,_ZThn1268_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn2080_N8S3572C11D0Ev,_ZThn1268_N8S3572C11D0Ev)() __attribute__((weak));
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C11__7S3572C1[] = {
  0,
  ABISELECT(-2080,-1268),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(-2080,-1268),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C11D1Ev,_ZTvn32_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C11D0Ev,_ZTvn32_n20_N8S3572C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__8S3572C11__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-2136,-1300),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C11D1Ev,_ZTvn32_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C11D0Ev,_ZTvn32_n20_N8S3572C11D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S3572C11D1Ev,_ZTvn32_n40_N8S3572C11D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S3572C11D0Ev,_ZTvn32_n40_N8S3572C11D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C98S3572C13__A1__8S3572C11__7S3572C1[] = {
  ABISELECT(-1016,-604),
  ABISELECT(-960,-572),
  ABISELECT(-2368,-1424),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3572C11D1Ev,_ZTvn32_n40_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3572C11D0Ev,_ZTvn32_n40_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S3572C11D1Ev,_ZTvn64_n40_N8S3572C11D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S3572C11D0Ev,_ZTvn64_n40_N8S3572C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C13__A4__8S3572C11__7S3572C1[] = {
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  ABISELECT(-2424,-1456),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3572C11D1Ev,_ZTvn64_n40_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3572C11D0Ev,_ZTvn64_n40_N8S3572C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn5024_N8S3572C11D1Ev,_ZThn2952_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn5024_N8S3572C11D0Ev,_ZThn2952_N8S3572C11D0Ev)() __attribute__((weak));
extern void _ZN8S3572C182v4Ev();
extern void _ZN8S3572C182v5Ev();
extern void _ZN8S3572C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C18__8S3572C11__7S3572C1[] = {
  0,
  0,
  0,
  ABISELECT(-5024,-2952),
  ABISELECT(-3672,-2132),
  ABISELECT(-3616,-2100),
  ABISELECT(-5024,-2952),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S3572C11D1Ev,_ZTvn20_n20_N8S3572C11D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S3572C11D0Ev,_ZTvn20_n20_N8S3572C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C88S3572C18__A1__8S3572C11__7S3572C1[] = {
  ABISELECT(-3712,-2152),
  ABISELECT(-3656,-2120),
  ABISELECT(-5064,-2972),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3572C11D1Ev,_ZTvn20_n20_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3572C11D0Ev,_ZTvn20_n20_N8S3572C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C11D1Ev,_ZTv0_n24_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn5568_N8S3572C11D1Ev,_ZThn3280_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C11D0Ev,_ZTv0_n24_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn5568_N8S3572C11D0Ev,_ZThn3280_N8S3572C11D0Ev)() __attribute__((weak));
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C15__A1__8S3572C11__7S3572C1[] = {
  0,
  ABISELECT(-5568,-3280),
  ABISELECT(-4216,-2460),
  ABISELECT(-4160,-2428),
  ABISELECT(-3488,-2012),
  ABISELECT(-5568,-3280),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C11D1Ev,_ZTv0_n24_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C11D0Ev,_ZTv0_n24_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S3572C11D1Ev,_ZTv0_n28_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn5632_N8S3572C11D1Ev,_ZThn3312_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3572C11D0Ev,_ZTv0_n28_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn5632_N8S3572C11D0Ev,_ZThn3312_N8S3572C11D0Ev)() __attribute__((weak));
extern void _ZN8S3572C202v7Ev();
extern void _ZN8S3572C192v8Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C19__8S3572C11__7S3572C1[] = {
  0,
  0,
  ABISELECT(-5632,-3312),
  ABISELECT(-4280,-2492),
  ABISELECT(-4224,-2460),
  ABISELECT(-3552,-2044),
  ABISELECT(2944,1732),
  ABISELECT(-5632,-3312),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C11D1Ev,_ZTv0_n28_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C11D0Ev,_ZTv0_n28_N8S3572C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3572C192v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3572C11D1Ev,_ZTv0_n12_N8S3572C11D1Ev)();
extern void ABISELECT(_ZThn8576_N8S3572C11D1Ev,_ZThn5044_N8S3572C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C11D0Ev,_ZTv0_n12_N8S3572C11D0Ev)();
extern void ABISELECT(_ZThn8576_N8S3572C11D0Ev,_ZThn5044_N8S3572C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3572C11__7S3572C1[] = {
  ABISELECT(-8576,-5044),
  ABISELECT(-8576,-5044),
  (VTBL_ENTRY)&(_ZTI8S3572C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C11D1Ev,_ZTv0_n12_N8S3572C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C11D0Ev,_ZTv0_n12_N8S3572C11D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C8__A1__7S3572C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C8__A1__7S3572C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C8__7S3572C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
extern void _ZN8S3572C10D1Ev();
extern void _ZN8S3572C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C10__7S3572C1[] = {
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&_ZN8S3572C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S3572C10D1Ev,_ZThn92_N8S3572C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S3572C10D0Ev,_ZThn92_N8S3572C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C10__7S3572C1[] = {
  ABISELECT(-128,-92),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C10__7S3572C1[] = {
  ABISELECT(560,336),
  ABISELECT(560,336),
  (VTBL_ENTRY)&(_ZTI8S3572C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D1Ev,_ZTv0_n12_N8S3572C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C10D0Ev,_ZTv0_n12_N8S3572C10D0Ev),
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C7__A2__7S3572C1[] = {
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C7__A2__7S3572C1[] = {
  ABISELECT(688,428),
  ABISELECT(688,428),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__7S3572C1[] = {
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C9__A3__7S3572C1[] = {
  ABISELECT(784,480),
  ABISELECT(784,480),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C9__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C9__7S3572C1[] = {
  ABISELECT(728,448),
  ABISELECT(728,448),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void _ZN8S3572C13D1Ev();
extern void _ZN8S3572C13D0Ev();
extern void _ZN8S3572C152v2Ev();
extern void _ZN8S3572C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C13__7S3572C1[] = {
  ABISELECT(-856,-516),
  ABISELECT(-264,-144),
  ABISELECT(-392,-236),
  ABISELECT(2192,1272),
  ABISELECT(-952,-572),
  ABISELECT(-896,-540),
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&_ZN8S3572C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3572C132v3Ev,
};
extern void _ZN8S3572C15D1Ev();
extern void _ZN8S3572C15D0Ev();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C158S3572C13__7S3572C1[] = {
  ABISELECT(-952,-572),
  ABISELECT(-896,-540),
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&_ZN8S3572C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C158S3572C13__7S3572C1[] = {
  0,
  ABISELECT(224,124),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C158S3572C13__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(168,92),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C158S3572C13__7S3572C1[] = {
  ABISELECT(952,572),
  ABISELECT(952,572),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev),
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C98S3572C13__A1__7S3572C1[] = {
  ABISELECT(-1016,-604),
  ABISELECT(-960,-572),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C13__A5__7S3572C1[] = {
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C98S3572C13__A5__7S3572C1[] = {
  ABISELECT(1072,636),
  ABISELECT(1072,636),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C98S3572C13__A1__7S3572C1[] = {
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C98S3572C13__A1__7S3572C1[] = {
  ABISELECT(1016,604),
  ABISELECT(1016,604),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn2192_N8S3572C13D1Ev,_ZThn1272_N8S3572C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev)();
extern void ABISELECT(_ZThn2192_N8S3572C13D0Ev,_ZThn1272_N8S3572C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C14__8S3572C13__7S3572C1[] = {
  ABISELECT(-2192,-1272),
  ABISELECT(-3048,-1788),
  ABISELECT(-3144,-1844),
  ABISELECT(-2456,-1416),
  ABISELECT(-3088,-1812),
  ABISELECT(-2584,-1508),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C13D1Ev,_ZTv0_n24_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3572C13D0Ev,_ZTv0_n24_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C13__7S3572C1[] = {
  ABISELECT(392,236),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(392,236),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C13D1Ev,_ZTv0_n24_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C13D0Ev,_ZTv0_n24_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C13__7S3572C1[] = {
  ABISELECT(264,144),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(264,144),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C13D1Ev,_ZTv0_n12_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C13D0Ev,_ZTv0_n12_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C13__7S3572C1[] = {
  ABISELECT(952,572),
  ABISELECT(952,572),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C13D1Ev,_ZTv0_n12_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C13D0Ev,_ZTv0_n12_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3572C13D1Ev,_ZTvn32_n32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3572C13D0Ev,_ZTvn32_n32_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C38S3572C14__8S3572C13__7S3572C1[] = {
  ABISELECT(-3112,-1820),
  ABISELECT(-3208,-1876),
  ABISELECT(-3152,-1844),
  ABISELECT(-2256,-1304),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C13D1Ev,_ZTvn32_n32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3572C13D0Ev,_ZTvn32_n32_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C13__7S3572C1[] = {
  ABISELECT(856,516),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(856,516),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C13__7S3572C1[] = {
  0,
  ABISELECT(224,124),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D1Ev,_ZTv0_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C13D0Ev,_ZTv0_n20_N8S3572C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C13D1Ev,_ZTvn32_n20_N8S3572C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C13D0Ev,_ZTvn32_n20_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A3__8S3572C13__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(168,92),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C13D1Ev,_ZTvn32_n20_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C13D0Ev,_ZTvn32_n20_N8S3572C13D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3572C13D1Ev,_ZThn32_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C13D0Ev,_ZThn32_N8S3572C13D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__A__8S3572C13__7S3572C1[] = {
  ABISELECT(-1016,-604),
  ABISELECT(-960,-572),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C13D1Ev,_ZThn32_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C13D0Ev,_ZThn32_N8S3572C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZThn120_N8S3572C13D1Ev,_ZThn64_N8S3572C13D1Ev)();
extern void ABISELECT(_ZThn120_N8S3572C13D0Ev,_ZThn64_N8S3572C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A4__8S3572C13__7S3572C1[] = {
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S3572C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3572C13D1Ev,_ZThn64_N8S3572C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3572C13D0Ev,_ZThn64_N8S3572C13D0Ev),
};
extern void _ZN8S3572C14D1Ev();
extern void _ZN8S3572C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C14__7S3572C1[] = {
  ABISELECT(-3048,-1788),
  ABISELECT(-3144,-1844),
  ABISELECT(-2456,-1416),
  ABISELECT(-3088,-1812),
  ABISELECT(-2584,-1508),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&_ZN8S3572C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C14D0Ev,
};
extern void _ZN7S3572C3D1Ev();
extern void _ZN7S3572C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C38S3572C14__A1__7S3572C1[] = {
  ABISELECT(-3112,-1820),
  ABISELECT(-3208,-1876),
  ABISELECT(-3152,-1844),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&_ZN7S3572C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C3D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C38S3572C14__A4__7S3572C1[] = {
  ABISELECT(-3208,-1876),
  ABISELECT(-3152,-1844),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C38S3572C14__A4__7S3572C1[] = {
  ABISELECT(3208,1876),
  ABISELECT(3208,1876),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C38S3572C14__A1__7S3572C1[] = {
  ABISELECT(3208,1876),
  ABISELECT(3208,1876),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C38S3572C14__A1__7S3572C1[] = {
  ABISELECT(3112,1820),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(3112,1820),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3572C10__8S3572C14__7S3572C1[] = {
  ABISELECT(2584,1508),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(2584,1508),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C14D1Ev,_ZTv0_n24_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C14D0Ev,_ZTv0_n24_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__8S3572C14__7S3572C1[] = {
  ABISELECT(2456,1416),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(2456,1416),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C14__7S3572C1[] = {
  ABISELECT(3144,1844),
  ABISELECT(3144,1844),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C14D1Ev,_ZTv0_n12_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C14D0Ev,_ZTv0_n12_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3572C14D1Ev,_ZThn32_N8S3572C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C14D0Ev,_ZThn32_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C3__8S3572C14__7S3572C1[] = {
  ABISELECT(-3112,-1820),
  ABISELECT(-3208,-1876),
  ABISELECT(-3152,-1844),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C14D1Ev,_ZThn32_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C14D0Ev,_ZThn32_N8S3572C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C14__7S3572C1[] = {
  ABISELECT(3048,1788),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(3048,1788),
  (VTBL_ENTRY)&(_ZTI8S3572C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D1Ev,_ZTv0_n20_N8S3572C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C14D0Ev,_ZTv0_n20_N8S3572C14D0Ev),
};
extern void _ZN8S3572C18D1Ev();
extern void _ZN8S3572C18D0Ev();
extern void _ZN8S3572C182v4Ev();
extern void _ZN8S3572C182v5Ev();
extern void _ZN8S3572C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C18__7S3572C1[] = {
  ABISELECT(-3672,-2132),
  ABISELECT(-3616,-2100),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&_ZN8S3572C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C18D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3572C182v6Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C78S3572C18__A6__7S3572C1[] = {
  ABISELECT(-3672,-2132),
  ABISELECT(-3616,-2100),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C78S3572C18__A6__7S3572C1[] = {
  ABISELECT(3672,2132),
  ABISELECT(3672,2132),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void _ZN7S3572C8D1Ev();
extern void _ZN7S3572C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C88S3572C18__A1__7S3572C1[] = {
  ABISELECT(-3712,-2152),
  ABISELECT(-3656,-2120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&_ZN7S3572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C8D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C88S3572C18__A7__7S3572C1[] = {
  ABISELECT(-3712,-2152),
  ABISELECT(-3656,-2120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C88S3572C18__A7__7S3572C1[] = {
  ABISELECT(3712,2152),
  ABISELECT(3712,2152),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C88S3572C18__A1__7S3572C1[] = {
  ABISELECT(3712,2152),
  ABISELECT(3712,2152),
  (VTBL_ENTRY)&(_ZTI7S3572C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D1Ev,_ZTv0_n12_N7S3572C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C8D0Ev,_ZTv0_n12_N7S3572C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C18D1Ev,_ZTv0_n12_N8S3572C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C18D0Ev,_ZTv0_n12_N8S3572C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C18__7S3572C1[] = {
  ABISELECT(3672,2132),
  ABISELECT(3672,2132),
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C18D1Ev,_ZTv0_n12_N8S3572C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C18D0Ev,_ZTv0_n12_N8S3572C18D0Ev),
};
extern void ABISELECT(_ZThn40_N8S3572C18D1Ev,_ZThn20_N8S3572C18D1Ev)();
extern void ABISELECT(_ZThn40_N8S3572C18D0Ev,_ZThn20_N8S3572C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C18__7S3572C1[] = {
  ABISELECT(-3712,-2152),
  ABISELECT(-3656,-2120),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3572C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3572C18D1Ev,_ZThn20_N8S3572C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3572C18D0Ev,_ZThn20_N8S3572C18D0Ev),
};
extern void _ZN8S3572C15D1Ev();
extern void _ZN8S3572C15D0Ev();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C15__A1__7S3572C1[] = {
  ABISELECT(-4216,-2460),
  ABISELECT(-4160,-2428),
  ABISELECT(-3488,-2012),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&_ZN8S3572C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C15__A1__7S3572C1[] = {
  0,
  ABISELECT(3488,2012),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(3488,2012),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C15__A1__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(3432,1980),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C15__A1__7S3572C1[] = {
  ABISELECT(4216,2460),
  ABISELECT(4216,2460),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev),
};
extern void _ZN8S3572C19D1Ev();
extern void _ZN8S3572C19D0Ev();
extern void _ZN8S3572C202v7Ev();
extern void _ZN8S3572C192v8Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C19__7S3572C1[] = {
  ABISELECT(-4280,-2492),
  ABISELECT(-4224,-2460),
  ABISELECT(-3552,-2044),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&_ZN8S3572C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C19D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3572C192v8Ev,
};
extern void _ZN8S3572C20D1Ev();
extern void _ZN8S3572C20D0Ev();
extern void _ZN8S3572C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C208S3572C19__7S3572C1[] = {
  ABISELECT(-4280,-2492),
  ABISELECT(-4224,-2460),
  ABISELECT(-3552,-2044),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&_ZN8S3572C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C20D1Ev,_ZThn1732_N8S3572C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C20D0Ev,_ZThn1732_N8S3572C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3572C208S3572C19__7S3572C1[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C208S3572C19__7S3572C1[] = {
  0,
  ABISELECT(3552,2044),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(3552,2044),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C208S3572C19__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(3496,2012),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C208S3572C19__7S3572C1[] = {
  ABISELECT(4280,2492),
  ABISELECT(4280,2492),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C19D1Ev,_ZThn1732_N8S3572C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3572C19D0Ev,_ZThn1732_N8S3572C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3572C19__7S3572C1[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C19D1Ev,_ZTv0_n20_N8S3572C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C19D0Ev,_ZTv0_n20_N8S3572C19D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C19__7S3572C1[] = {
  0,
  ABISELECT(3552,2044),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(3552,2044),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C19D1Ev,_ZTv0_n20_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C19D0Ev,_ZTv0_n20_N8S3572C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C19D1Ev,_ZTvn32_n20_N8S3572C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C19D0Ev,_ZTvn32_n20_N8S3572C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C19__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(3496,2012),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C19D1Ev,_ZTvn32_n20_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C19D0Ev,_ZTvn32_n20_N8S3572C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C19__7S3572C1[] = {
  ABISELECT(4280,2492),
  ABISELECT(4280,2492),
  (VTBL_ENTRY)&(_ZTI8S3572C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev),
};
extern void _ZN8S3572C25D1Ev();
extern void _ZN8S3572C25D0Ev();
extern void _ZN8S3572C253v10Ev();
extern void _ZN8S3572C253v11Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C25__7S3572C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(2560,1476),
  ABISELECT(2496,1448),
  ABISELECT(-7160,-4184),
  ABISELECT(2128,1248),
  ABISELECT(-6528,-3792),
  ABISELECT(-7256,-4240),
  ABISELECT(-7200,-4208),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&_ZN8S3572C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C25D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C253v10Ev,
  (VTBL_ENTRY)&_ZN8S3572C253v11Ev,
};
extern void _ZN8S3572C16D1Ev();
extern void _ZN8S3572C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C168S3572C25__7S3572C1[] = {
  ABISELECT(-6528,-3792),
  ABISELECT(-7256,-4240),
  ABISELECT(-7200,-4208),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&_ZN8S3572C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C16D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C78S3572C168S3572C25__A8__7S3572C1[] = {
  ABISELECT(-7256,-4240),
  ABISELECT(-7200,-4208),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C78S3572C168S3572C25__A8__7S3572C1[] = {
  ABISELECT(7256,4240),
  ABISELECT(7256,4240),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C168S3572C25__7S3572C1[] = {
  ABISELECT(7256,4240),
  ABISELECT(7256,4240),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C168S3572C25__7S3572C1[] = {
  0,
  ABISELECT(6528,3792),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(6528,3792),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C168S3572C25__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(6472,3760),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev),
};
extern void _ZN8S3572C26D1Ev();
extern void _ZN8S3572C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(2496,1448),
  ABISELECT(-6592,-3820),
  ABISELECT(-7320,-4268),
  ABISELECT(-7264,-4236),
  ABISELECT(2432,1420),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&_ZN8S3572C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C26D0Ev,
};
extern void _ZN8S3572C27D1Ev();
extern void _ZN8S3572C27D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C278S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(-6624,-3836),
  ABISELECT(2400,1404),
  ABISELECT(-7352,-4284),
  ABISELECT(-7296,-4252),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&_ZN8S3572C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C27D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C9D1Ev();
extern void _ZN7S3572C9D0Ev();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C98S3572C278S3572C268S3572C25__A2__7S3572C1[] = {
  ABISELECT(-7352,-4284),
  ABISELECT(-7296,-4252),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&_ZN7S3572C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C278S3572C268S3572C25__A11__7S3572C1[] = {
  ABISELECT(-7408,-4316),
  ABISELECT(-7352,-4284),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C98S3572C278S3572C268S3572C25__A11__7S3572C1[] = {
  ABISELECT(7408,4316),
  ABISELECT(7408,4316),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C7__7S3572C98S3572C278S3572C268S3572C25__A2__7S3572C1[] = {
  ABISELECT(-7408,-4316),
  ABISELECT(-7352,-4284),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D1Ev,_ZThn32_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3572C9D0Ev,_ZThn32_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3572C98S3572C278S3572C268S3572C25__A2__7S3572C1[] = {
  ABISELECT(7352,4284),
  ABISELECT(7352,4284),
  (VTBL_ENTRY)&(_ZTI7S3572C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D1Ev,_ZTv0_n12_N7S3572C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C9D0Ev,_ZTv0_n12_N7S3572C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn2400_N8S3572C27D1Ev,_ZThn1404_N8S3572C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev)();
extern void ABISELECT(_ZThn2400_N8S3572C27D0Ev,_ZThn1404_N8S3572C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C16__8S3572C278S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(-2400,-1404),
  ABISELECT(-9024,-5240),
  ABISELECT(-9752,-5688),
  ABISELECT(-9696,-5656),
  ABISELECT(-2400,-1404),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C27D1Ev,_ZTv0_n12_N8S3572C27D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C27D0Ev,_ZTv0_n12_N8S3572C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C278S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(7352,4284),
  ABISELECT(7352,4284),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C27D1Ev,_ZTv0_n12_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C27D0Ev,_ZTv0_n12_N8S3572C27D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C27D1Ev,_ZTv0_n20_N8S3572C27D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C27D0Ev,_ZTv0_n20_N8S3572C27D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C278S3572C268S3572C25__7S3572C1[] = {
  0,
  ABISELECT(6624,3836),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(6624,3836),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C27D1Ev,_ZTv0_n20_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C27D0Ev,_ZTv0_n20_N8S3572C27D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C27D1Ev,_ZTvn32_n20_N8S3572C27D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C27D0Ev,_ZTvn32_n20_N8S3572C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C278S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(6568,3804),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C27D1Ev,_ZTvn32_n20_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C27D0Ev,_ZTvn32_n20_N8S3572C27D0Ev),
};
extern void ABISELECT(_ZThn56_N8S3572C27D1Ev,_ZThn32_N8S3572C27D1Ev)();
extern void ABISELECT(_ZThn56_N8S3572C27D0Ev,_ZThn32_N8S3572C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A2__8S3572C278S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(-7408,-4316),
  ABISELECT(-7352,-4284),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S3572C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3572C27D1Ev,_ZThn32_N8S3572C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3572C27D0Ev,_ZThn32_N8S3572C27D0Ev),
};
extern void _ZN8S3572C15D1Ev();
extern void _ZN8S3572C15D0Ev();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C158S3572C268S3572C25__A2__7S3572C1[] = {
  ABISELECT(-8552,-5012),
  ABISELECT(-8496,-4980),
  ABISELECT(-7824,-4564),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&_ZN8S3572C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C158S3572C268S3572C25__A2__7S3572C1[] = {
  0,
  ABISELECT(7824,4564),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(7824,4564),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D1Ev,_ZTv0_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C15D0Ev,_ZTv0_n20_N8S3572C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C158S3572C268S3572C25__A2__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(7768,4532),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D1Ev,_ZTvn32_n20_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C15D0Ev,_ZTvn32_n20_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C158S3572C268S3572C25__A2__7S3572C1[] = {
  ABISELECT(8552,5012),
  ABISELECT(8552,5012),
  (VTBL_ENTRY)&(_ZTI8S3572C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D1Ev,_ZTv0_n12_N8S3572C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C15D0Ev,_ZTv0_n12_N8S3572C15D0Ev),
};
extern void ABISELECT(_ZThn32_N8S3572C26D1Ev,_ZThn16_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn32_N8S3572C26D0Ev,_ZThn16_N8S3572C26D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C27__8S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(-6624,-3836),
  ABISELECT(2400,1404),
  ABISELECT(-7352,-4284),
  ABISELECT(-7296,-4252),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3572C26D1Ev,_ZThn16_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3572C26D0Ev,_ZThn16_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S3572C26D1Ev,_ZTv0_n24_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn2432_N8S3572C26D1Ev,_ZThn1420_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C26D0Ev,_ZTv0_n24_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn2432_N8S3572C26D0Ev,_ZThn1420_N8S3572C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C16__8S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(-2432,-1420),
  ABISELECT(-9024,-5240),
  ABISELECT(-9752,-5688),
  ABISELECT(-9696,-5656),
  ABISELECT(-2432,-1420),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C26D1Ev,_ZTv0_n24_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C26D0Ev,_ZTv0_n24_N8S3572C26D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(7320,4268),
  ABISELECT(7320,4268),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C26D1Ev,_ZTv0_n20_N8S3572C26D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C26D0Ev,_ZTv0_n20_N8S3572C26D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C268S3572C25__7S3572C1[] = {
  0,
  ABISELECT(6592,3820),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(6592,3820),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C26D1Ev,_ZTv0_n20_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C26D0Ev,_ZTv0_n20_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C26D1Ev,_ZTvn32_n20_N8S3572C26D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C26D0Ev,_ZTvn32_n20_N8S3572C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(6536,3788),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C26D1Ev,_ZTvn32_n20_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C26D0Ev,_ZTvn32_n20_N8S3572C26D0Ev),
};
extern void ABISELECT(_ZThn88_N8S3572C26D1Ev,_ZThn48_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn88_N8S3572C26D0Ev,_ZThn48_N8S3572C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C27__A2__8S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(-7408,-4316),
  ABISELECT(-7352,-4284),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3572C26D1Ev,_ZThn48_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3572C26D0Ev,_ZThn48_N8S3572C26D0Ev),
};
extern void ABISELECT(_ZThn1232_N8S3572C26D1Ev,_ZThn744_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn1232_N8S3572C26D0Ev,_ZThn744_N8S3572C26D0Ev)();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C15__8S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(-8552,-5012),
  ABISELECT(-8496,-4980),
  ABISELECT(-7824,-4564),
  ABISELECT(-1232,-744),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3572C26D1Ev,_ZThn744_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3572C26D0Ev,_ZThn744_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S3572C26D1Ev,_ZTv0_n28_N8S3572C26D1Ev)();
extern void ABISELECT(_ZThn2496_N8S3572C26D1Ev,_ZThn1448_N8S3572C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3572C26D0Ev,_ZTv0_n28_N8S3572C26D0Ev)();
extern void ABISELECT(_ZThn2496_N8S3572C26D0Ev,_ZThn1448_N8S3572C26D0Ev)() __attribute__((weak));
extern void _ZN8S3572C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C20__8S3572C268S3572C25__7S3572C1[] = {
  0,
  ABISELECT(-2496,-1448),
  ABISELECT(-9816,-5716),
  ABISELECT(-9760,-5684),
  ABISELECT(-9088,-5268),
  ABISELECT(-2592,-1492),
  ABISELECT(-2496,-1448),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C26D1Ev,_ZTv0_n28_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C26D0Ev,_ZTv0_n28_N8S3572C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3572C21__A1__8S3572C268S3572C25__7S3572C1[] = {
  ABISELECT(96,44),
  ABISELECT(96,44),
  (VTBL_ENTRY)&(_ZTI8S3572C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D1Ev,_ZTv0_n12_N8S3572C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C26D0Ev,_ZTv0_n12_N8S3572C26D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C25D1Ev,_ZTv0_n12_N8S3572C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C25D0Ev,_ZTv0_n12_N8S3572C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C25__7S3572C1[] = {
  ABISELECT(7256,4240),
  ABISELECT(7256,4240),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C25D1Ev,_ZTv0_n12_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C25D0Ev,_ZTv0_n12_N8S3572C25D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C25D1Ev,_ZTv0_n20_N8S3572C25D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C25D0Ev,_ZTv0_n20_N8S3572C25D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C25__7S3572C1[] = {
  0,
  ABISELECT(6528,3792),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(6528,3792),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C25D1Ev,_ZTv0_n20_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C25D0Ev,_ZTv0_n20_N8S3572C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C25D1Ev,_ZTvn32_n20_N8S3572C25D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C25D0Ev,_ZTvn32_n20_N8S3572C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C25__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(6472,3760),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C25D1Ev,_ZTvn32_n20_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C25D0Ev,_ZTvn32_n20_N8S3572C25D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3572C25D1Ev,_ZTv0_n24_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn2128_N8S3572C25D1Ev,_ZThn1248_N8S3572C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C25D0Ev,_ZTv0_n24_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn2128_N8S3572C25D0Ev,_ZThn1248_N8S3572C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C3__8S3572C25__7S3572C1[] = {
  ABISELECT(-2128,-1248),
  ABISELECT(-9288,-5432),
  ABISELECT(-9384,-5488),
  ABISELECT(-9328,-5456),
  ABISELECT(-2128,-1248),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C25D1Ev,_ZTv0_n24_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C25D0Ev,_ZTv0_n24_N8S3572C25D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C25D1Ev,_ZTv0_n20_N8S3572C25D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C25D0Ev,_ZTv0_n20_N8S3572C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C8__8S3572C25__7S3572C1[] = {
  ABISELECT(7160,4184),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(7160,4184),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C25D1Ev,_ZTv0_n20_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C25D0Ev,_ZTv0_n20_N8S3572C25D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3572C25D1Ev,_ZThn28_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn64_N8S3572C25D0Ev,_ZThn28_N8S3572C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3572C26__8S3572C25__7S3572C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(2496,1448),
  ABISELECT(-6592,-3820),
  ABISELECT(-7320,-4268),
  ABISELECT(-7264,-4236),
  ABISELECT(2432,1420),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C25D1Ev,_ZThn28_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3572C25D0Ev,_ZThn28_N8S3572C25D0Ev),
};
extern void ABISELECT(_ZThn96_N8S3572C25D1Ev,_ZThn44_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn96_N8S3572C25D0Ev,_ZThn44_N8S3572C25D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C278S3572C26__8S3572C25__7S3572C1[] = {
  ABISELECT(-6624,-3836),
  ABISELECT(2400,1404),
  ABISELECT(-7352,-4284),
  ABISELECT(-7296,-4252),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S3572C25D1Ev,_ZThn44_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S3572C25D0Ev,_ZThn44_N8S3572C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S3572C25D1Ev,_ZTv0_n24_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn2496_N8S3572C25D1Ev,_ZThn1448_N8S3572C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3572C25D0Ev,_ZTv0_n24_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn2496_N8S3572C25D0Ev,_ZThn1448_N8S3572C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C16__A1__8S3572C25__7S3572C1[] = {
  ABISELECT(-2496,-1448),
  ABISELECT(-9024,-5240),
  ABISELECT(-9752,-5688),
  ABISELECT(-9696,-5656),
  ABISELECT(-2496,-1448),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C25D1Ev,_ZTv0_n24_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3572C25D0Ev,_ZTv0_n24_N8S3572C25D0Ev),
};
extern void ABISELECT(_ZThn152_N8S3572C25D1Ev,_ZThn76_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn152_N8S3572C25D0Ev,_ZThn76_N8S3572C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C98S3572C278S3572C26__A5__8S3572C25__7S3572C1[] = {
  ABISELECT(-7408,-4316),
  ABISELECT(-7352,-4284),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N8S3572C25D1Ev,_ZThn76_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N8S3572C25D0Ev,_ZThn76_N8S3572C25D0Ev),
};
extern void ABISELECT(_ZThn1296_N8S3572C25D1Ev,_ZThn772_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn1296_N8S3572C25D0Ev,_ZThn772_N8S3572C25D0Ev)();
extern void _ZN8S3572C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C158S3572C26__8S3572C25__7S3572C1[] = {
  ABISELECT(-8552,-5012),
  ABISELECT(-8496,-4980),
  ABISELECT(-7824,-4564),
  ABISELECT(-1296,-772),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1296_N8S3572C25D1Ev,_ZThn772_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1296_N8S3572C25D0Ev,_ZThn772_N8S3572C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C152v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S3572C25D1Ev,_ZTv0_n28_N8S3572C25D1Ev)();
extern void ABISELECT(_ZThn2560_N8S3572C25D1Ev,_ZThn1476_N8S3572C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3572C25D0Ev,_ZTv0_n28_N8S3572C25D0Ev)();
extern void ABISELECT(_ZThn2560_N8S3572C25D0Ev,_ZThn1476_N8S3572C25D0Ev)() __attribute__((weak));
extern void _ZN8S3572C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C20__8S3572C25__7S3572C1[] = {
  0,
  ABISELECT(-2560,-1476),
  ABISELECT(-9816,-5716),
  ABISELECT(-9760,-5684),
  ABISELECT(-9088,-5268),
  ABISELECT(-2592,-1492),
  ABISELECT(-2560,-1476),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C25D1Ev,_ZTv0_n28_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3572C25D0Ev,_ZTv0_n28_N8S3572C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3572C25D1Ev,_ZTv0_n12_N8S3572C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C25D0Ev,_ZTv0_n12_N8S3572C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3572C21__A1__8S3572C25__7S3572C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S3572C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C25D1Ev,_ZTv0_n12_N8S3572C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C25D0Ev,_ZTv0_n12_N8S3572C25D0Ev),
};
extern void _ZN7S3572C3D1Ev();
extern void _ZN7S3572C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C3__A2__7S3572C1[] = {
  ABISELECT(-9288,-5432),
  ABISELECT(-9384,-5488),
  ABISELECT(-9328,-5456),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&_ZN7S3572C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C3D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C3__A9__7S3572C1[] = {
  ABISELECT(-9384,-5488),
  ABISELECT(-9328,-5456),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C77S3572C3__A9__7S3572C1[] = {
  ABISELECT(9384,5488),
  ABISELECT(9384,5488),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C3__A2__7S3572C1[] = {
  ABISELECT(9384,5488),
  ABISELECT(9384,5488),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C8__7S3572C3__A2__7S3572C1[] = {
  ABISELECT(9288,5432),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(9288,5432),
  (VTBL_ENTRY)&(_ZTI7S3572C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev),
};
extern void _ZN8S3572C16D1Ev();
extern void _ZN8S3572C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C16__A1__7S3572C1[] = {
  ABISELECT(-9024,-5240),
  ABISELECT(-9752,-5688),
  ABISELECT(-9696,-5656),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&_ZN8S3572C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C16D0Ev,
};
extern void _ZN7S3572C7D1Ev();
extern void _ZN7S3572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C78S3572C16__A10__7S3572C1[] = {
  ABISELECT(-9752,-5688),
  ABISELECT(-9696,-5656),
  0,
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&_ZN7S3572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3572C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3572C78S3572C16__A10__7S3572C1[] = {
  ABISELECT(9752,5688),
  ABISELECT(9752,5688),
  (VTBL_ENTRY)&(_ZTI7S3572C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3572C16__A1__7S3572C1[] = {
  ABISELECT(9752,5688),
  ABISELECT(9752,5688),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D1Ev,_ZTv0_n12_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C16D0Ev,_ZTv0_n12_N8S3572C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C16__A1__7S3572C1[] = {
  0,
  ABISELECT(9024,5240),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(9024,5240),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D1Ev,_ZTv0_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C16D0Ev,_ZTv0_n20_N8S3572C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__A1__8S3572C16__A1__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(8968,5208),
  (VTBL_ENTRY)&(_ZTI8S3572C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D1Ev,_ZTvn32_n20_N8S3572C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C16D0Ev,_ZTvn32_n20_N8S3572C16D0Ev),
};
extern void _ZN8S3572C20D1Ev();
extern void _ZN8S3572C20D0Ev();
extern void _ZN8S3572C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3572C20__A1__7S3572C1[] = {
  ABISELECT(-9816,-5716),
  ABISELECT(-9760,-5684),
  ABISELECT(-9088,-5268),
  ABISELECT(-2592,-1492),
  0,
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&_ZN8S3572C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3572C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3572C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3572C20__A1__7S3572C1[] = {
  ABISELECT(2592,1492),
  ABISELECT(2592,1492),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev)();
extern void _ZN7S3572C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3572C9__8S3572C20__A1__7S3572C1[] = {
  0,
  ABISELECT(9088,5268),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(9088,5268),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D1Ev,_ZTv0_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3572C20D0Ev,_ZTv0_n20_N8S3572C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3572C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C77S3572C9__8S3572C20__A1__7S3572C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(9032,5236),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D1Ev,_ZTvn32_n20_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3572C20D0Ev,_ZTvn32_n20_N8S3572C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3572C20__A1__7S3572C1[] = {
  ABISELECT(9816,5716),
  ABISELECT(9816,5716),
  (VTBL_ENTRY)&(_ZTI8S3572C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev),
};
static  VTT_ENTRY vtt_S3572C1[] = {
  {&(_ZTV7S3572C1[18]),  18,252},
  {&(_tg__ZTV7S3572C2__7S3572C1[8]),  8,10},
  {&(_tg__ZTV7S3572C37S3572C2__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C77S3572C37S3572C2__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C37S3572C2__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C37S3572C2__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C8__7S3572C37S3572C2__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__7S3572C2__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C8__7S3572C2__7S3572C1[5]),  5,7},
  {&(_tg__ZTV8S3572C10__7S3572C2__7S3572C1[6]),  6,8},
  {&(_tg__ZTV7S3572C7__A2__7S3572C2__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C9__7S3572C2__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A3__7S3572C2__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C11__7S3572C1[14]),  14,17},
  {&(_tg__ZTV8S3572C128S3572C11__7S3572C1[12]),  12,14},
  {&(_tg__ZTV7S3572C7__8S3572C128S3572C11__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C128S3572C11__7S3572C1[3]),  3,5},
  {&(_tg__ZTV8S3572C13__8S3572C128S3572C11__7S3572C1[13]),  13,17},
  {&(_tg__ZTV8S3572C14__8S3572C128S3572C11__7S3572C1[8]),  8,10},
  {&(_tg__ZTV8S3572C10__8S3572C128S3572C11__7S3572C1[6]),  6,8},
  {&(_tg__ZTV7S3572C38S3572C14__8S3572C128S3572C11__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C8__8S3572C128S3572C11__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C9__8S3572C128S3572C11__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A3__8S3572C128S3572C11__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C98S3572C13__A1__8S3572C128S3572C11__7S3572C1[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C98S3572C13__A4__8S3572C128S3572C11__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C18__8S3572C128S3572C11__7S3572C1[8]),  8,13},
  {&(_tg__ZTV7S3572C88S3572C18__A1__8S3572C128S3572C11__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C15__A1__8S3572C128S3572C11__7S3572C1[7]),  7,10},
  {&(_tg__ZTV7S3572C7__8S3572C11__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C11__7S3572C1[3]),  3,5},
  {&(_tg__ZTV8S3572C13__8S3572C11__7S3572C1[13]),  13,17},
  {&(_tg__ZTV8S3572C14__8S3572C11__7S3572C1[8]),  8,10},
  {&(_tg__ZTV8S3572C10__8S3572C11__7S3572C1[6]),  6,8},
  {&(_tg__ZTV7S3572C38S3572C14__8S3572C11__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C8__8S3572C11__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C9__8S3572C11__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A3__8S3572C11__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C98S3572C13__A1__8S3572C11__7S3572C1[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C98S3572C13__A4__8S3572C11__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C18__8S3572C11__7S3572C1[8]),  8,13},
  {&(_tg__ZTV7S3572C88S3572C18__A1__8S3572C11__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C15__A1__8S3572C11__7S3572C1[7]),  7,10},
  {&(_tg__ZTV8S3572C19__8S3572C11__7S3572C1[9]),  9,13},
  {&(_tg__ZTV8S3572C21__8S3572C11__7S3572C1[3]),  3,5},
  {&(_ZTV7S3572C1[40]),  40,252},
  {&(_ZTV7S3572C1[47]),  47,252},
  {&(_ZTV7S3572C1[55]),  55,252},
  {&(_ZTV7S3572C1[62]),  62,252},
  {&(_ZTV7S3572C1[70]),  70,252},
  {&(_ZTV7S3572C1[77]),  77,252},
  {&(_ZTV7S3572C1[34]),  34,252},
  {&(_ZTV7S3572C1[92]),  92,252},
  {&(_ZTV7S3572C1[117]),  117,252},
  {&(_ZTV7S3572C1[124]),  124,252},
  {&(_ZTV7S3572C1[100]),  100,252},
  {&(_ZTV7S3572C1[107]),  107,252},
  {&(_ZTV7S3572C1[134]),  134,252},
  {&(_ZTV7S3572C1[143]),  143,252},
  {&(_ZTV7S3572C1[152]),  152,252},
  {&(_ZTV7S3572C1[164]),  164,252},
  {&(_ZTV7S3572C1[171]),  171,252},
  {&(_ZTV7S3572C1[188]),  188,252},
  {&(_ZTV7S3572C1[231]),  231,252},
  {&(_ZTV7S3572C1[200]),  200,252},
  {&(_ZTV7S3572C1[208]),  208,252},
  {&(_ZTV7S3572C1[239]),  239,252},
  {&(_ZTV7S3572C1[215]),  215,252},
  {&(_ZTV7S3572C1[222]),  222,252},
  {&(_ZTV7S3572C1[249]),  249,252},
  {&(_tg__ZTV7S3572C8__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C8__A1__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C8__A1__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C8__7S3572C1[3]),  3,5},
  {&(_tg__ZTV8S3572C10__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C7__8S3572C10__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C10__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C7__A2__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C7__A2__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C9__7S3572C1[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A3__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C9__A3__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C9__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C9__7S3572C1[3]),  3,5},
  {&(_tg__ZTV8S3572C13__7S3572C1[9]),  9,13},
  {&(_tg__ZTV8S3572C158S3572C13__7S3572C1[5]),  5,8},
  {&(_tg__ZTV7S3572C9__8S3572C158S3572C13__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C158S3572C13__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C158S3572C13__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C98S3572C13__A1__7S3572C1[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C98S3572C13__A5__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C98S3572C13__A5__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C98S3572C13__A1__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C98S3572C13__A1__7S3572C1[3]),  3,5},
  {&(_tg__ZTV8S3572C14__8S3572C13__7S3572C1[8]),  8,10},
  {&(_tg__ZTV8S3572C10__8S3572C13__7S3572C1[6]),  6,8},
  {&(_tg__ZTV7S3572C7__8S3572C13__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C13__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C38S3572C14__8S3572C13__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C8__8S3572C13__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C9__8S3572C13__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A3__8S3572C13__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C9__A__8S3572C13__7S3572C1[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C9__A4__8S3572C13__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C14__7S3572C1[7]),  7,9},
  {&(_tg__ZTV7S3572C38S3572C14__A1__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C77S3572C38S3572C14__A4__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C38S3572C14__A4__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C38S3572C14__A1__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C8__7S3572C38S3572C14__A1__7S3572C1[5]),  5,7},
  {&(_tg__ZTV8S3572C10__8S3572C14__7S3572C1[6]),  6,8},
  {&(_tg__ZTV7S3572C7__8S3572C14__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3572C14__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C3__8S3572C14__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C8__8S3572C14__7S3572C1[5]),  5,7},
  {&(_tg__ZTV8S3572C18__7S3572C1[4]),  4,9},
  {&(_tg__ZTV7S3572C78S3572C18__A6__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C78S3572C18__A6__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C88S3572C18__A1__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C88S3572C18__A7__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C88S3572C18__A7__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C88S3572C18__A1__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3572C18__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C8__8S3572C18__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C15__A1__7S3572C1[5]),  5,8},
  {&(_tg__ZTV7S3572C9__8S3572C15__A1__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C15__A1__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C15__A1__7S3572C1[3]),  3,5},
  {&(_tg__ZTV8S3572C19__7S3572C1[6]),  6,10},
  {&(_tg__ZTV8S3572C208S3572C19__7S3572C1[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3572C208S3572C19__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C208S3572C19__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C208S3572C19__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C208S3572C19__7S3572C1[3]),  3,5},
  {&(_tg__ZTV8S3572C21__8S3572C19__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C19__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C19__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C19__7S3572C1[3]),  3,5},
  {&(_tg__ZTV8S3572C25__7S3572C1[10]),  10,14},
  {&(_tg__ZTV8S3572C168S3572C25__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C78S3572C168S3572C25__A8__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C78S3572C168S3572C25__A8__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3572C168S3572C25__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C168S3572C25__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C168S3572C25__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C268S3572C25__7S3572C1[8]),  8,10},
  {&(_tg__ZTV8S3572C278S3572C268S3572C25__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C98S3572C278S3572C268S3572C25__A2__7S3572C1[4]),  4,7},
  {&(_tg__ZTV7S3572C77S3572C98S3572C278S3572C268S3572C25__A11__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C98S3572C278S3572C268S3572C25__A11__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C7__7S3572C98S3572C278S3572C268S3572C25__A2__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3572C98S3572C278S3572C268S3572C25__A2__7S3572C1[3]),  3,5},
  {&(_tg__ZTV8S3572C16__8S3572C278S3572C268S3572C25__7S3572C1[6]),  6,8},
  {&(_tg__ZTV7S3572C4__8S3572C278S3572C268S3572C25__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C278S3572C268S3572C25__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C278S3572C268S3572C25__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C9__A2__8S3572C278S3572C268S3572C25__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C158S3572C268S3572C25__A2__7S3572C1[5]),  5,8},
  {&(_tg__ZTV7S3572C9__8S3572C158S3572C268S3572C25__A2__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C158S3572C268S3572C25__A2__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C158S3572C268S3572C25__A2__7S3572C1[3]),  3,5},
  {&(_tg__ZTV8S3572C27__8S3572C268S3572C25__7S3572C1[6]),  6,9},
  {&(_tg__ZTV8S3572C16__8S3572C268S3572C25__7S3572C1[6]),  6,8},
  {&(_tg__ZTV7S3572C4__8S3572C268S3572C25__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C268S3572C25__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C268S3572C25__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C77S3572C98S3572C27__A2__8S3572C268S3572C25__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C15__8S3572C268S3572C25__7S3572C1[5]),  5,8},
  {&(_tg__ZTV8S3572C20__8S3572C268S3572C25__7S3572C1[8]),  8,11},
  {&(_tg__ZTV8S3572C21__A1__8S3572C268S3572C25__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3572C25__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C25__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C25__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C3__8S3572C25__7S3572C1[6]),  6,8},
  {&(_tg__ZTV7S3572C8__8S3572C25__7S3572C1[5]),  5,7},
  {&(_tg__ZTV8S3572C26__8S3572C25__7S3572C1[8]),  8,10},
  {&(_tg__ZTV8S3572C278S3572C26__8S3572C25__7S3572C1[6]),  6,9},
  {&(_tg__ZTV8S3572C16__A1__8S3572C25__7S3572C1[6]),  6,8},
  {&(_tg__ZTV7S3572C77S3572C98S3572C278S3572C26__A5__8S3572C25__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C158S3572C26__8S3572C25__7S3572C1[5]),  5,8},
  {&(_tg__ZTV8S3572C20__8S3572C25__7S3572C1[8]),  8,11},
  {&(_tg__ZTV8S3572C21__A1__8S3572C25__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C3__A2__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C77S3572C3__A9__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C77S3572C3__A9__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3572C3__A2__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C8__7S3572C3__A2__7S3572C1[5]),  5,7},
  {&(_tg__ZTV8S3572C16__A1__7S3572C1[5]),  5,7},
  {&(_tg__ZTV7S3572C78S3572C16__A10__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3572C78S3572C16__A10__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3572C16__A1__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C16__A1__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__A1__8S3572C16__A1__7S3572C1[4]),  4,6},
  {&(_tg__ZTV8S3572C20__A1__7S3572C1[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3572C20__A1__7S3572C1[3]),  3,5},
  {&(_tg__ZTV7S3572C9__8S3572C20__A1__7S3572C1[6]),  6,9},
  {&(_tg__ZTV7S3572C77S3572C9__8S3572C20__A1__7S3572C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3572C20__A1__7S3572C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3572C1[];
extern  VTBL_ENTRY _ZTV7S3572C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3572C1[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C25D0Ev,_ZTv0_n28_N8S3572C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S3572C25D0Ev,_ZThn1476_N8S3572C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C25D1Ev,_ZTv0_n28_N8S3572C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S3572C25D1Ev,_ZThn1476_N8S3572C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C25D0Ev,_ZTv0_n24_N8S3572C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N8S3572C25D0Ev,_ZThn1448_N8S3572C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S3572C25D0Ev,_ZThn1248_N8S3572C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C25D1Ev,_ZTv0_n24_N8S3572C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N8S3572C25D1Ev,_ZThn1448_N8S3572C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S3572C25D1Ev,_ZThn1248_N8S3572C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C26D0Ev,_ZTv0_n28_N8S3572C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N8S3572C26D0Ev,_ZThn1448_N8S3572C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C26D1Ev,_ZTv0_n28_N8S3572C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N8S3572C26D1Ev,_ZThn1448_N8S3572C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C26D0Ev,_ZTv0_n24_N8S3572C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2432_N8S3572C26D0Ev,_ZThn1420_N8S3572C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C26D1Ev,_ZTv0_n24_N8S3572C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2432_N8S3572C26D1Ev,_ZThn1420_N8S3572C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C27D0Ev,_ZTv0_n24_N8S3572C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N8S3572C27D0Ev,_ZThn1404_N8S3572C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C27D1Ev,_ZTv0_n24_N8S3572C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N8S3572C27D1Ev,_ZThn1404_N8S3572C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C19D0Ev,_ZTv0_n12_N8S3572C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C19D0Ev,_ZThn1732_N8S3572C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C19D1Ev,_ZTv0_n12_N8S3572C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C19D1Ev,_ZThn1732_N8S3572C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D0Ev,_ZTv0_n12_N8S3572C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C20D0Ev,_ZThn1732_N8S3572C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C20D1Ev,_ZTv0_n12_N8S3572C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3572C20D1Ev,_ZThn1732_N8S3572C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C13D0Ev,_ZTv0_n32_N8S3572C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3572C13D0Ev,_ZThn1272_N8S3572C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C13D1Ev,_ZTv0_n32_N8S3572C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3572C13D1Ev,_ZThn1272_N8S3572C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C10D0Ev,_ZTv0_n20_N8S3572C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3572C10D0Ev,_ZThn92_N8S3572C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C10D1Ev,_ZTv0_n20_N8S3572C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3572C10D1Ev,_ZThn92_N8S3572C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C11D0Ev,_ZTv0_n28_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5632_N8S3572C11D0Ev,_ZThn3312_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3572C11D1Ev,_ZTv0_n28_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5632_N8S3572C11D1Ev,_ZThn3312_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C11D0Ev,_ZTv0_n24_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5568_N8S3572C11D0Ev,_ZThn3280_N8S3572C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1912_N8S3572C11D0Ev,_ZThn1156_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C11D1Ev,_ZTv0_n24_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5568_N8S3572C11D1Ev,_ZThn3280_N8S3572C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1912_N8S3572C11D1Ev,_ZThn1156_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C11D0Ev,_ZTv0_n32_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4496_N8S3572C11D0Ev,_ZThn2664_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C11D1Ev,_ZTv0_n32_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4496_N8S3572C11D1Ev,_ZThn2664_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3572C11D0Ev,_ZTv0_n40_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N8S3572C11D0Ev,_ZThn1392_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3572C11D1Ev,_ZTv0_n40_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N8S3572C11D1Ev,_ZThn1392_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C11D0Ev,_ZTv0_n12_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8576_N8S3572C11D0Ev,_ZThn5044_N8S3572C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N8S3572C11D0Ev,_ZThn820_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C11D1Ev,_ZTv0_n12_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8576_N8S3572C11D1Ev,_ZThn5044_N8S3572C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N8S3572C11D1Ev,_ZThn820_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C11D0Ev,_ZTv0_n20_N8S3572C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5024_N8S3572C11D0Ev,_ZThn2952_N8S3572C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S3572C11D0Ev,_ZThn1268_N8S3572C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N8S3572C11D0Ev,_ZThn876_N8S3572C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2040_N8S3572C11D0Ev,_ZThn1248_N8S3572C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C11D1Ev,_ZTv0_n20_N8S3572C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5024_N8S3572C11D1Ev,_ZThn2952_N8S3572C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S3572C11D1Ev,_ZThn1268_N8S3572C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N8S3572C11D1Ev,_ZThn876_N8S3572C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2040_N8S3572C11D1Ev,_ZThn1248_N8S3572C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C12D0Ev,_ZTv0_n24_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5568_N8S3572C12D0Ev,_ZThn3280_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1912_N8S3572C12D0Ev,_ZThn1156_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3572C12D1Ev,_ZTv0_n24_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5568_N8S3572C12D1Ev,_ZThn3280_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1912_N8S3572C12D1Ev,_ZThn1156_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C12D0Ev,_ZTv0_n32_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4496_N8S3572C12D0Ev,_ZThn2664_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3572C12D1Ev,_ZTv0_n32_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4496_N8S3572C12D1Ev,_ZThn2664_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3572C12D0Ev,_ZTv0_n40_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N8S3572C12D0Ev,_ZThn1392_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3572C12D1Ev,_ZTv0_n40_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N8S3572C12D1Ev,_ZThn1392_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C12D0Ev,_ZTv0_n12_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N8S3572C12D0Ev,_ZThn820_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3572C12D1Ev,_ZTv0_n12_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N8S3572C12D1Ev,_ZThn820_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C12D0Ev,_ZTv0_n20_N8S3572C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5024_N8S3572C12D0Ev,_ZThn2952_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S3572C12D0Ev,_ZThn1268_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N8S3572C12D0Ev,_ZThn876_N8S3572C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2040_N8S3572C12D0Ev,_ZThn1248_N8S3572C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3572C12D1Ev,_ZTv0_n20_N8S3572C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5024_N8S3572C12D1Ev,_ZThn2952_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S3572C12D1Ev,_ZThn1268_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N8S3572C12D1Ev,_ZThn876_N8S3572C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2040_N8S3572C12D1Ev,_ZThn1248_N8S3572C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3572C2D0Ev,_ZTv0_n24_N7S3572C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2424_N7S3572C2D0Ev,_ZThn1464_N7S3572C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3572C2D1Ev,_ZTv0_n24_N7S3572C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2424_N7S3572C2D1Ev,_ZThn1464_N7S3572C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C2D0Ev,_ZTv0_n20_N7S3572C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N7S3572C2D0Ev,_ZThn1576_N7S3572C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2552_N7S3572C2D0Ev,_ZThn1556_N7S3572C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3572C2D0Ev,_ZThn1184_N7S3572C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C2D1Ev,_ZTv0_n20_N7S3572C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N7S3572C2D1Ev,_ZThn1576_N7S3572C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2552_N7S3572C2D1Ev,_ZThn1556_N7S3572C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3572C2D1Ev,_ZThn1184_N7S3572C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C2D0Ev,_ZTv0_n12_N7S3572C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3572C2D0Ev,_ZThn1128_N7S3572C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C2D1Ev,_ZTv0_n12_N7S3572C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3572C2D1Ev,_ZThn1128_N7S3572C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D0Ev,_ZTv0_n20_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3572C3D0Ev,_ZThn1184_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C3D1Ev,_ZTv0_n20_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3572C3D1Ev,_ZThn1184_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C3D0Ev,_ZTv0_n12_N7S3572C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3572C3D0Ev,_ZThn1128_N7S3572C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C3D1Ev,_ZTv0_n12_N7S3572C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3572C3D1Ev,_ZThn1128_N7S3572C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D0Ev,_ZTv0_n12_N7S3572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3572C7D0Ev,_ZThn1128_N7S3572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C7D1Ev,_ZTv0_n12_N7S3572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3572C7D1Ev,_ZThn1128_N7S3572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3572C1D0Ev,_ZTv0_n44_N7S3572C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9120_N7S3572C1D0Ev,_ZThn5368_N7S3572C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3572C1D1Ev,_ZTv0_n44_N7S3572C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9120_N7S3572C1D1Ev,_ZThn5368_N7S3572C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3572C1D0Ev,_ZTv0_n28_N7S3572C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11680_N7S3572C1D0Ev,_ZThn6844_N7S3572C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6144_N7S3572C1D0Ev,_ZThn3620_N7S3572C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3572C1D1Ev,_ZTv0_n28_N7S3572C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11680_N7S3572C1D1Ev,_ZThn6844_N7S3572C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6144_N7S3572C1D1Ev,_ZThn3620_N7S3572C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3572C1D0Ev,_ZTv0_n32_N7S3572C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N7S3572C1D0Ev,_ZThn2972_N7S3572C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3572C1D1Ev,_ZTv0_n32_N7S3572C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N7S3572C1D1Ev,_ZThn2972_N7S3572C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3572C1D0Ev,_ZTv0_n40_N7S3572C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N7S3572C1D0Ev,_ZThn1700_N7S3572C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3572C1D1Ev,_ZTv0_n40_N7S3572C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N7S3572C1D1Ev,_ZThn1700_N7S3572C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3572C1D0Ev,_ZTv0_n24_N7S3572C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11616_N7S3572C1D0Ev,_ZThn6816_N7S3572C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11248_N7S3572C1D0Ev,_ZThn6616_N7S3572C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6080_N7S3572C1D0Ev,_ZThn3588_N7S3572C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2424_N7S3572C1D0Ev,_ZThn1464_N7S3572C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3572C1D1Ev,_ZTv0_n24_N7S3572C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11616_N7S3572C1D1Ev,_ZThn6816_N7S3572C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11248_N7S3572C1D1Ev,_ZThn6616_N7S3572C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6080_N7S3572C1D1Ev,_ZThn3588_N7S3572C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2424_N7S3572C1D1Ev,_ZThn1464_N7S3572C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C1D0Ev,_ZTv0_n20_N7S3572C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N7S3572C1D0Ev,_ZThn3260_N7S3572C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N7S3572C1D0Ev,_ZThn1576_N7S3572C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2552_N7S3572C1D0Ev,_ZThn1556_N7S3572C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3572C1D0Ev,_ZThn1184_N7S3572C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3572C1D1Ev,_ZTv0_n20_N7S3572C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N7S3572C1D1Ev,_ZThn3260_N7S3572C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N7S3572C1D1Ev,_ZThn1576_N7S3572C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2552_N7S3572C1D1Ev,_ZThn1556_N7S3572C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3572C1D1Ev,_ZThn1184_N7S3572C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C1D0Ev,_ZTv0_n12_N7S3572C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9088_N7S3572C1D0Ev,_ZThn5352_N7S3572C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3572C1D0Ev,_ZThn1128_N7S3572C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3572C1D1Ev,_ZTv0_n12_N7S3572C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9088_N7S3572C1D1Ev,_ZThn5352_N7S3572C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3572C1D1Ev,_ZThn1128_N7S3572C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3572C1 = {  "S3572C1", // class name
  bases_S3572C1, 51,
  &(vtc_S3572C1[0]), // expected_vtbl_contents
  &(vtt_S3572C1[0]), // expected_vtt_contents
  ABISELECT(12512,7348), // object size
  NSPAIRA(_ZTI7S3572C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3572C1),252, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3572C1),198, //virtual table table var
  46, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C7  : virtual S3572C5 , virtual S3572C4 {
  unsigned char s3571c7f0:1;
  void *s3571c7f1[3];
  ~S3571C7(); // tgen
  S3571C7(); // tgen
};
//SIG(-1 S3571C7) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} Fc:1 Fp[3]}


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

static void Test_S3571C7()
{
  extern Class_Descriptor cd_S3571C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S3571C7, buf);
    S3571C7 *dp, &lv = *(dp=new (buf) S3571C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S3571C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3571C7)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(40,20), "S3571C7");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(80,44), "S3571C7");
    set_bf_and_test(lv, s3571c7f0, ABISELECT(8,4), 0, 1, 1, "S3571C7");
    check_field_offset(lv, s3571c7f1, ABISELECT(16,8), "S3571C7.s3571c7f1");
    test_class_info(&lv, &cd_S3571C7);
    dp->~S3571C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C7(Test_S3571C7, "S3571C7", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN7S3571C7C1Ev();
extern void _ZN7S3571C7D1Ev();
Name_Map name_map_S3571C7[] = {
  NSPAIR(_ZN7S3571C7C1Ev),
  NSPAIR(_ZN7S3571C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
static Base_Class bases_S3571C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(80,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3571C7[];
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S3571C7D1Ev,_ZThn44_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S3571C7D0Ev,_ZThn44_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C7[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S3571C7[];
static  VTT_ENTRY vtt_S3571C7[] = {
  {&(_ZTV7S3571C7[4]),  4,11},
  {&(_ZTV7S3571C7[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3571C7D0Ev,_ZThn44_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3571C7D1Ev,_ZThn44_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C7 = {  "S3571C7", // class name
  bases_S3571C7, 2,
  &(vtc_S3571C7[0]), // expected_vtbl_contents
  &(vtt_S3571C7[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI7S3571C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3571C7),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3571C7),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C8  : virtual S3572C5 , virtual S3572C4 , S3571C7 {
  char s3571c8f0;
  int s3571c8f1[3];
  void *s3571c8f2;
  short s3571c8f3:16;
  int s3571c8f4;
  void *s3571c8f5[2];
  int s3571c8f6;
  ::S3572C5 s3571c8f7[9];
  int s3571c8f8;
  virtual  ~S3571C8(); // _ZN7S3571C8D2Ev
  S3571C8(); // tgen
};
//SIG(-1 S3571C8) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC2[9] Fi}


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

static void Test_S3571C8()
{
  extern Class_Descriptor cd_S3571C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(71,85)];
    init_test(&cd_S3571C8, buf);
    S3571C8 *dp, &lv = *(dp=new (buf) S3571C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,336), "sizeof(S3571C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3571C8)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(464,280), "S3571C8");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(464,280), "S3571C8");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(504,304), "S3571C8");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(504,304), "S3571C8");
    check_base_class_offset(lv, (S3571C7*), 0, "S3571C8");
    check_field_offset(lv, s3571c8f0, ABISELECT(40,20), "S3571C8.s3571c8f0");
    check_field_offset(lv, s3571c8f1, ABISELECT(44,24), "S3571C8.s3571c8f1");
    check_field_offset(lv, s3571c8f2, ABISELECT(56,36), "S3571C8.s3571c8f2");
    set_bf_and_test(lv, s3571c8f3, ABISELECT(64,40), 0, 16, 1, "S3571C8");
    set_bf_and_test(lv, s3571c8f3, ABISELECT(64,40), 0, 16, hide_sll(1LL<<15), "S3571C8");
    check_field_offset(lv, s3571c8f4, ABISELECT(68,44), "S3571C8.s3571c8f4");
    check_field_offset(lv, s3571c8f5, ABISELECT(72,48), "S3571C8.s3571c8f5");
    check_field_offset(lv, s3571c8f6, ABISELECT(88,56), "S3571C8.s3571c8f6");
    check_field_offset(lv, s3571c8f7, ABISELECT(96,60), "S3571C8.s3571c8f7");
    check_field_offset(lv, s3571c8f8, ABISELECT(456,276), "S3571C8.s3571c8f8");
    test_class_info(&lv, &cd_S3571C8);
    dp->~S3571C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C8(Test_S3571C8, "S3571C8", ABISELECT(560,336));

#else // __cplusplus

extern void _ZN7S3571C8C1Ev();
extern void _ZN7S3571C8D2Ev();
Name_Map name_map_S3571C8[] = {
  NSPAIR(_ZN7S3571C8C1Ev),
  NSPAIR(_ZN7S3571C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
static Base_Class bases_S3571C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(464,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(504,304), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3571C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3571C8[];
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZThn504_N7S3571C8D1Ev,_ZThn304_N7S3571C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
extern void ABISELECT(_ZThn504_N7S3571C8D0Ev,_ZThn304_N7S3571C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C8[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S3571C8[];
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C8[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn504_N7S3571C7D1Ev,_ZThn304_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn504_N7S3571C7D0Ev,_ZThn304_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__7S3571C8[] = {
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
static  VTT_ENTRY vtt_S3571C8[] = {
  {&(_ZTV7S3571C8[4]),  4,11},
  {&(_tg__ZTV7S3571C7__7S3571C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__7S3571C8[3]),  3,5},
  {&(_ZTV7S3571C8[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3571C7D0Ev,_ZThn304_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3571C7D1Ev,_ZThn304_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3571C8D0Ev,_ZThn304_N7S3571C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3571C8D1Ev,_ZThn304_N7S3571C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C8 = {  "S3571C8", // class name
  bases_S3571C8, 3,
  &(vtc_S3571C8[0]), // expected_vtbl_contents
  &(vtt_S3571C8[0]), // expected_vtt_contents
  ABISELECT(560,336), // object size
  NSPAIRA(_ZTI7S3571C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3571C8),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3571C8),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C9  : virtual S3572C5 , S3572C4 , S3571C7 {
  char s3571c9f0;
  void *s3571c9f1[7];
  long double s3571c9f2;
  void *s3571c9f3[4];
  int s3571c9f4;
  char s3571c9f5;
  void *s3571c9f6;
  virtual  ~S3571C9(); // _ZN7S3571C9D2Ev
  virtual void  v1(); // _ZN7S3571C92v1Ev
  S3571C9(); // tgen
};
//SIG(-1 S3571C9) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} BC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}


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

static void Test_S3571C9()
{
  extern Class_Descriptor cd_S3571C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,46)];
    init_test(&cd_S3571C9, buf);
    S3571C9 *dp, &lv = *(dp=new (buf) S3571C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,180), "sizeof(S3571C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C9)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(224,124), "S3571C9");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(224,124), "S3571C9");
    /*is_ambiguous_... S3571C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S3571C9");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(264,148), "S3571C9");
    check_base_class_offset(lv, (S3571C7*), ABISELECT(56,32), "S3571C9");
    check_field_offset(lv, s3571c9f0, ABISELECT(96,52), "S3571C9.s3571c9f0");
    check_field_offset(lv, s3571c9f1, ABISELECT(104,56), "S3571C9.s3571c9f1");
    check_field_offset(lv, s3571c9f2, ABISELECT(160,84), "S3571C9.s3571c9f2");
    check_field_offset(lv, s3571c9f3, ABISELECT(176,96), "S3571C9.s3571c9f3");
    check_field_offset(lv, s3571c9f4, ABISELECT(208,112), "S3571C9.s3571c9f4");
    check_field_offset(lv, s3571c9f5, ABISELECT(212,116), "S3571C9.s3571c9f5");
    check_field_offset(lv, s3571c9f6, ABISELECT(216,120), "S3571C9.s3571c9f6");
    test_class_info(&lv, &cd_S3571C9);
    dp->~S3571C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C9(Test_S3571C9, "S3571C9", ABISELECT(320,180));

#else // __cplusplus

extern void _ZN7S3571C9C1Ev();
extern void _ZN7S3571C9D2Ev();
Name_Map name_map_S3571C9[] = {
  NSPAIR(_ZN7S3571C9C1Ev),
  NSPAIR(_ZN7S3571C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
static Base_Class bases_S3571C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(224,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
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3572C4,    ABISELECT(264,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3571C7,    ABISELECT(56,32), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3571C9[];
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn264_N7S3571C9D1Ev,_ZThn148_N7S3571C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
extern void ABISELECT(_ZThn264_N7S3571C9D0Ev,_ZThn148_N7S3571C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C9[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S3571C9[];
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S3571C7D1Ev,_ZThn116_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S3571C7D0Ev,_ZThn116_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__7S3571C9[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
static  VTT_ENTRY vtt_S3571C9[] = {
  {&(_ZTV7S3571C9[4]),  4,18},
  {&(_tg__ZTV7S3571C7__7S3571C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__7S3571C9[3]),  3,5},
  {&(_ZTV7S3571C9[11]),  11,18},
  {&(_ZTV7S3571C9[16]),  16,18},
};
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3571C7D0Ev,_ZThn116_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3571C7D1Ev,_ZThn116_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3571C9D0Ev,_ZThn148_N7S3571C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3571C9D1Ev,_ZThn148_N7S3571C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C9 = {  "S3571C9", // class name
  bases_S3571C9, 4,
  &(vtc_S3571C9[0]), // expected_vtbl_contents
  &(vtt_S3571C9[0]), // expected_vtt_contents
  ABISELECT(320,180), // object size
  NSPAIRA(_ZTI7S3571C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3571C9),18, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3571C9),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C3  : virtual S3572C4 , S3571C7 , virtual S3571C8 {
  ::S3571C9 s3571c3f0;
  virtual  ~S3571C3(); // _ZN7S3571C3D2Ev
  S3571C3(); // tgen
};
//SIG(-1 S3571C3) C1{ VBC2{ vd m FC3{ m Fp Fs Fi Fp Fl[2]} FC4{}} BC5{ VBC3 VBC2 Fc:1 Fp[3]} VBC6{ VBC3 VBC2 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC7{ VBC3 BC2 BC5 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}}


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

static void Test_S3571C3()
{
  extern Class_Descriptor cd_S3571C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,135)];
    init_test(&cd_S3571C3, buf);
    S3571C3 *dp, &lv = *(dp=new (buf) S3571C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,536), "sizeof(S3571C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C3)");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(368,200), "S3571C3");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(368,200), "S3571C3");
    check_base_class_offset(lv, (S3572C4*)(S3571C8*), ABISELECT(368,200), "S3571C3");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*), ABISELECT(368,200), "S3571C3");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(424,232), "S3571C3");
    check_base_class_offset(lv, (S3572C5*)(S3571C8*), ABISELECT(424,232), "S3571C3");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*), ABISELECT(424,232), "S3571C3");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*), 0, "S3571C3");
    check_base_class_offset(lv, (S3571C7*)(S3571C8*), ABISELECT(464,256), "S3571C3");
    check_base_class_offset(lv, (S3571C8*), ABISELECT(464,256), "S3571C3");
    check_field_offset(lv, s3571c3f0, ABISELECT(48,20), "S3571C3.s3571c3f0");
    test_class_info(&lv, &cd_S3571C3);
    dp->~S3571C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C3(Test_S3571C3, "S3571C3", ABISELECT(928,536));

#else // __cplusplus

extern void _ZN7S3571C3C1Ev();
extern void _ZN7S3571C3D2Ev();
Name_Map name_map_S3571C3[] = {
  NSPAIR(_ZN7S3571C3C1Ev),
  NSPAIR(_ZN7S3571C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
static Base_Class bases_S3571C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(368,200), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C5,    ABISELECT(424,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3571C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3571C7,    ABISELECT(464,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(464,256), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3571C3[];
extern void _ZN7S3571C3D1Ev();
extern void _ZN7S3571C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn368_N7S3571C3D1Ev,_ZThn200_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn368_N7S3571C3D0Ev,_ZThn200_N7S3571C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn464_N7S3571C3D1Ev,_ZThn256_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn464_N7S3571C3D0Ev,_ZThn256_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C3[] = {
  ABISELECT(464,256),
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&_ZN7S3571C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C3D0Ev,
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev),
  ABISELECT(-464,-256),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S3571C3[];
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C3[] = {
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn368_N7S3571C7D1Ev,_ZThn200_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn368_N7S3571C7D0Ev,_ZThn200_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__7S3571C3[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C8__A1__7S3571C3[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C8__A1__7S3571C3[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C8__7S3571C3[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
static  VTT_ENTRY vtt_S3571C3[] = {
  {&(_ZTV7S3571C3[5]),  5,19},
  {&(_tg__ZTV7S3571C7__7S3571C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__7S3571C3[3]),  3,5},
  {&(_ZTV7S3571C3[10]),  10,19},
  {&(_ZTV7S3571C3[17]),  17,19},
  {&(_tg__ZTV7S3571C8__7S3571C3[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C8__A1__7S3571C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C8__A1__7S3571C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C8__7S3571C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3571C3[];
extern  VTBL_ENTRY _ZTV7S3571C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C3[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3571C7D0Ev,_ZThn200_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3571C7D1Ev,_ZThn200_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3571C3D0Ev,_ZThn256_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3571C3D1Ev,_ZThn256_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3571C3D0Ev,_ZThn200_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3571C3D1Ev,_ZThn200_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C3 = {  "S3571C3", // class name
  bases_S3571C3, 5,
  &(vtc_S3571C3[0]), // expected_vtbl_contents
  &(vtt_S3571C3[0]), // expected_vtt_contents
  ABISELECT(928,536), // object size
  NSPAIRA(_ZTI7S3571C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3571C3),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3571C3),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C10  : virtual S3572C5 , virtual S3571C7 {
  short s3571c10f0;
  int s3571c10f1[2];
  char s3571c10f2;
  __tsi64 s3571c10f3;
  int s3571c10f4;
  ::S3572C6_nt s3571c10f5;
  void *s3571c10f6;
  char s3571c10f7;
  short s3571c10f8;
  ::S3572C4 s3571c10f9;
  int s3571c10f10[2];
  __tsi64 s3571c10f11;
  virtual  ~S3571C10(); // _ZN8S3571C10D2Ev
  S3571C10(); // tgen
};
//SIG(-1 S3571C10) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ VBC2 VBC4{ vd m FC2 FC5{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL}


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

static void Test_S3571C10()
{
  extern Class_Descriptor cd_S3571C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,43)];
    init_test(&cd_S3571C10, buf);
    S3571C10 *dp, &lv = *(dp=new (buf) S3571C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,168), "sizeof(S3571C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3571C10)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(128,92), "S3571C10");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(128,92), "S3571C10");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(208,136), "S3571C10");
    check_base_class_offset(lv, (S3571C7*), ABISELECT(168,116), "S3571C10");
    check_field_offset(lv, s3571c10f0, ABISELECT(8,4), "S3571C10.s3571c10f0");
    check_field_offset(lv, s3571c10f1, ABISELECT(12,8), "S3571C10.s3571c10f1");
    check_field_offset(lv, s3571c10f2, ABISELECT(20,16), "S3571C10.s3571c10f2");
    check_field_offset(lv, s3571c10f3, ABISELECT(24,20), "S3571C10.s3571c10f3");
    check_field_offset(lv, s3571c10f4, ABISELECT(32,28), "S3571C10.s3571c10f4");
    check_field_offset(lv, s3571c10f5, ABISELECT(36,32), "S3571C10.s3571c10f5");
    check_field_offset(lv, s3571c10f6, ABISELECT(40,36), "S3571C10.s3571c10f6");
    check_field_offset(lv, s3571c10f7, ABISELECT(48,40), "S3571C10.s3571c10f7");
    check_field_offset(lv, s3571c10f8, ABISELECT(50,42), "S3571C10.s3571c10f8");
    check_field_offset(lv, s3571c10f9, ABISELECT(56,44), "S3571C10.s3571c10f9");
    check_field_offset(lv, s3571c10f10, ABISELECT(112,76), "S3571C10.s3571c10f10");
    check_field_offset(lv, s3571c10f11, ABISELECT(120,84), "S3571C10.s3571c10f11");
    test_class_info(&lv, &cd_S3571C10);
    dp->~S3571C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C10(Test_S3571C10, "S3571C10", ABISELECT(264,168));

#else // __cplusplus

extern void _ZN8S3571C10C1Ev();
extern void _ZN8S3571C10D2Ev();
Name_Map name_map_S3571C10[] = {
  NSPAIR(_ZN8S3571C10C1Ev),
  NSPAIR(_ZN8S3571C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
static Base_Class bases_S3571C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(208,136), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3571C7,    ABISELECT(168,116), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C10[];
extern void _ZN8S3571C10D1Ev();
extern void _ZN8S3571C10D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S3571C10D1Ev,_ZThn116_N8S3571C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S3571C10D0Ev,_ZThn116_N8S3571C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S3571C10D1Ev,_ZThn136_N8S3571C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S3571C10D0Ev,_ZThn136_N8S3571C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C10[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&_ZN8S3571C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C10D0Ev,
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C10[];
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C10[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S3571C7D1Ev,_ZThn20_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn40_N7S3571C7D0Ev,_ZThn20_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__8S3571C10[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
static  VTT_ENTRY vtt_S3571C10[] = {
  {&(_ZTV8S3571C10[5]),  5,19},
  {&(_ZTV8S3571C10[12]),  12,19},
  {&(_ZTV8S3571C10[17]),  17,19},
  {&(_tg__ZTV7S3571C7__8S3571C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__8S3571C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C10[];
extern  VTBL_ENTRY _ZTV8S3571C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C10[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3571C7D0Ev,_ZThn20_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3571C7D1Ev,_ZThn20_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3571C10D0Ev,_ZThn136_N8S3571C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3571C10D1Ev,_ZThn136_N8S3571C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3571C10D0Ev,_ZThn116_N8S3571C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3571C10D1Ev,_ZThn116_N8S3571C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C10 = {  "S3571C10", // class name
  bases_S3571C10, 3,
  &(vtc_S3571C10[0]), // expected_vtbl_contents
  &(vtt_S3571C10[0]), // expected_vtt_contents
  ABISELECT(264,168), // object size
  NSPAIRA(_ZTI8S3571C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3571C10),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C10),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C2  : S3571C3 , virtual S3571C10 , virtual S3571C9 {
  int s3571c2f0;
  __tsi64 s3571c2f1[3];
  int s3571c2f2[9];
  void *s3571c2f3;
  int s3571c2f4;
  __tsi64 s3571c2f5;
  int s3571c2f6[2];
  __tsi64 s3571c2f7;
  int s3571c2f8;
  void *s3571c2f9[2];
  virtual  ~S3571C2(); // _ZN7S3571C2D2Ev
  S3571C2(); // tgen
};
//SIG(-1 S3571C2) C1{ BC2{ VBC3{ vd m FC4{ m Fp Fs Fi Fp Fl[2]} FC5{}} BC6{ VBC4 VBC3 Fc:1 Fp[3]} VBC7{ VBC4 VBC3 BC6 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC8{ VBC4 BC3 BC6 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} VBC9{ VBC4 VBC6 vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC3 Fi[2] FL} VBC8 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}


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

static void Test_S3571C2()
{
  extern Class_Descriptor cd_S3571C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(92,221)];
    init_test(&cd_S3571C2, buf);
    S3571C2 *dp, &lv = *(dp=new (buf) S3571C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1456,880), "sizeof(S3571C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C2)");
    check_base_class_offset(lv, (S3572C4*)(S3571C3*), ABISELECT(504,308), "S3571C2");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C3*), ABISELECT(504,308), "S3571C2");
    check_base_class_offset(lv, (S3572C4*)(S3571C8*), ABISELECT(504,308), "S3571C2");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*), ABISELECT(504,308), "S3571C2");
    /*is_ambiguous_... S3571C2::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(504,308), "S3571C2");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(504,308), "S3571C2");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C3*), ABISELECT(560,340), "S3571C2");
    check_base_class_offset(lv, (S3572C5*)(S3571C8*), ABISELECT(560,340), "S3571C2");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*), ABISELECT(560,340), "S3571C2");
    check_base_class_offset(lv, (S3572C5*)(S3571C10*), ABISELECT(560,340), "S3571C2");
    /*is_ambiguous_... S3571C2::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(560,340), "S3571C2");
    check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(560,340), "S3571C2");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(560,340), "S3571C2");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C3*), 0, "S3571C2");
    check_base_class_offset(lv, (S3571C7*)(S3571C8*), ABISELECT(600,364), "S3571C2");
    check_base_class_offset(lv, (S3571C8*)(S3571C3*), ABISELECT(600,364), "S3571C2");
    check_base_class_offset(lv, (S3571C3*), 0, "S3571C2");
    check_base_class_offset(lv, (S3571C7*)(S3571C10*), ABISELECT(1192,736), "S3571C2");
    check_base_class_offset(lv, (S3571C10*), ABISELECT(1064,644), "S3571C2");
    /*is_ambiguous_... S3571C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(1232,756), "S3571C2");
    check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(1288,788), "S3571C2");
    check_base_class_offset(lv, (S3571C9*), ABISELECT(1232,756), "S3571C2");
    check_field_offset(lv, s3571c2f0, ABISELECT(368,200), "S3571C2.s3571c2f0");
    check_field_offset(lv, s3571c2f1, ABISELECT(376,204), "S3571C2.s3571c2f1");
    check_field_offset(lv, s3571c2f2, ABISELECT(400,228), "S3571C2.s3571c2f2");
    check_field_offset(lv, s3571c2f3, ABISELECT(440,264), "S3571C2.s3571c2f3");
    check_field_offset(lv, s3571c2f4, ABISELECT(448,268), "S3571C2.s3571c2f4");
    check_field_offset(lv, s3571c2f5, ABISELECT(456,272), "S3571C2.s3571c2f5");
    check_field_offset(lv, s3571c2f6, ABISELECT(464,280), "S3571C2.s3571c2f6");
    check_field_offset(lv, s3571c2f7, ABISELECT(472,288), "S3571C2.s3571c2f7");
    check_field_offset(lv, s3571c2f8, ABISELECT(480,296), "S3571C2.s3571c2f8");
    check_field_offset(lv, s3571c2f9, ABISELECT(488,300), "S3571C2.s3571c2f9");
    test_class_info(&lv, &cd_S3571C2);
    dp->~S3571C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C2(Test_S3571C2, "S3571C2", ABISELECT(1456,880));

#else // __cplusplus

extern void _ZN7S3571C2C1Ev();
extern void _ZN7S3571C2D2Ev();
Name_Map name_map_S3571C2[] = {
  NSPAIR(_ZN7S3571C2C1Ev),
  NSPAIR(_ZN7S3571C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
extern Class_Descriptor cd_S3571C3;
extern VTBL_ENTRY _ZTI7S3571C3[];
extern  VTBL_ENTRY _ZTV7S3571C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C3[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C10;
extern VTBL_ENTRY _ZTI8S3571C10[];
extern  VTBL_ENTRY _ZTV8S3571C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
static Base_Class bases_S3571C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(504,308), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C5,    ABISELECT(560,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3571C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(600,364), //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
    4, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(600,364), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3571C3,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3571C7,    ABISELECT(1192,736), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3571C10,    ABISELECT(1064,644), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(1232,756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(1288,788), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(1232,756), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3571C2[];
extern void _ZN7S3571C2D1Ev();
extern void _ZN7S3571C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3571C2D1Ev,_ZTv0_n12_N7S3571C2D1Ev)();
extern void ABISELECT(_ZThn504_N7S3571C2D1Ev,_ZThn308_N7S3571C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C2D0Ev,_ZTv0_n12_N7S3571C2D0Ev)();
extern void ABISELECT(_ZThn504_N7S3571C2D0Ev,_ZThn308_N7S3571C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev)();
extern void ABISELECT(_ZThn600_N7S3571C2D1Ev,_ZThn364_N7S3571C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev)();
extern void ABISELECT(_ZThn600_N7S3571C2D0Ev,_ZThn364_N7S3571C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3571C2D1Ev,_ZTv0_n24_N7S3571C2D1Ev)();
extern void ABISELECT(_ZThn1064_N7S3571C2D1Ev,_ZThn644_N7S3571C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3571C2D0Ev,_ZTv0_n24_N7S3571C2D0Ev)();
extern void ABISELECT(_ZThn1064_N7S3571C2D0Ev,_ZThn644_N7S3571C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev)();
extern void ABISELECT(_ZThn1192_N7S3571C2D1Ev,_ZThn736_N7S3571C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev)();
extern void ABISELECT(_ZThn1192_N7S3571C2D0Ev,_ZThn736_N7S3571C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev)();
extern void ABISELECT(_ZThn1232_N7S3571C2D1Ev,_ZThn756_N7S3571C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev)();
extern void ABISELECT(_ZThn1232_N7S3571C2D0Ev,_ZThn756_N7S3571C2D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N7S3571C2D1Ev,_ZTvn32_n20_N7S3571C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S3571C2D0Ev,_ZTvn32_n20_N7S3571C2D0Ev)();
static  VTBL_ENTRY vtc_S3571C2[] = {
  ABISELECT(1232,756),
  ABISELECT(1192,736),
  ABISELECT(1064,644),
  ABISELECT(600,364),
  ABISELECT(504,308),
  ABISELECT(560,340),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&_ZN7S3571C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C2D0Ev,
  ABISELECT(-504,-308),
  ABISELECT(-504,-308),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C2D1Ev,_ZTv0_n12_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C2D0Ev,_ZTv0_n12_N7S3571C2D0Ev),
  ABISELECT(-600,-364),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-600,-364),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev),
  ABISELECT(-1064,-644),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(-1064,-644),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C2D1Ev,_ZTv0_n24_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C2D0Ev,_ZTv0_n24_N7S3571C2D0Ev),
  ABISELECT(-1192,-736),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-1192,-736),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev),
  0,
  ABISELECT(-1232,-756),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(-1232,-756),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-1288,-788),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3571C2D1Ev,_ZTvn32_n20_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3571C2D0Ev,_ZTvn32_n20_N7S3571C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S3571C2[];
extern void _ZN7S3571C3D1Ev();
extern void _ZN7S3571C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C3__7S3571C2[] = {
  ABISELECT(600,364),
  ABISELECT(504,308),
  ABISELECT(560,340),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&_ZN7S3571C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C3D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C3__7S3571C2[] = {
  ABISELECT(504,308),
  ABISELECT(560,340),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn504_N7S3571C7D1Ev,_ZThn308_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn504_N7S3571C7D0Ev,_ZThn308_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C3__7S3571C2[] = {
  ABISELECT(-504,-308),
  ABISELECT(-504,-308),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn504_N7S3571C3D1Ev,_ZThn308_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn504_N7S3571C3D0Ev,_ZThn308_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C3__7S3571C2[] = {
  ABISELECT(-504,-308),
  ABISELECT(-504,-308),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn600_N7S3571C3D1Ev,_ZThn364_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn600_N7S3571C3D0Ev,_ZThn364_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C3__7S3571C2[] = {
  ABISELECT(-600,-364),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-600,-364),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C8__A1__7S3571C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C8__A1__7S3571C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C8__7S3571C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
extern void _ZN8S3571C10D1Ev();
extern void _ZN8S3571C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C10__7S3571C2[] = {
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&_ZN8S3571C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S3571C10D1Ev,_ZThn92_N8S3571C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S3571C10D0Ev,_ZThn92_N8S3571C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C10__7S3571C2[] = {
  ABISELECT(-128,-92),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C10__7S3571C2[] = {
  ABISELECT(560,336),
  ABISELECT(560,336),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev),
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__A2__7S3571C2[] = {
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__A2__7S3571C2[] = {
  ABISELECT(688,428),
  ABISELECT(688,428),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__7S3571C2[] = {
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__7S3571C2[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__A3__7S3571C2[] = {
  ABISELECT(784,480),
  ABISELECT(784,480),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__7S3571C2[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__7S3571C2[] = {
  ABISELECT(728,448),
  ABISELECT(728,448),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
static  VTT_ENTRY vtt_S3571C2[] = {
  {&(_ZTV7S3571C2[8]),  8,52},
  {&(_tg__ZTV7S3571C3__7S3571C2[5]),  5,7},
  {&(_tg__ZTV7S3571C77S3571C3__7S3571C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C3__7S3571C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C3__7S3571C2[3]),  3,5},
  {&(_tg__ZTV7S3571C8__7S3571C3__7S3571C2[5]),  5,7},
  {&(_ZTV7S3571C2[13]),  13,52},
  {&(_ZTV7S3571C2[20]),  20,52},
  {&(_ZTV7S3571C2[28]),  28,52},
  {&(_ZTV7S3571C2[35]),  35,52},
  {&(_ZTV7S3571C2[43]),  43,52},
  {&(_ZTV7S3571C2[50]),  50,52},
  {&(_tg__ZTV7S3571C8__7S3571C2[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C8__A1__7S3571C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C8__A1__7S3571C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C8__7S3571C2[3]),  3,5},
  {&(_tg__ZTV8S3571C10__7S3571C2[5]),  5,7},
  {&(_tg__ZTV7S3571C7__8S3571C10__7S3571C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C10__7S3571C2[3]),  3,5},
  {&(_tg__ZTV7S3571C7__A2__7S3571C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__A2__7S3571C2[3]),  3,5},
  {&(_tg__ZTV7S3571C9__7S3571C2[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A3__7S3571C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__A3__7S3571C2[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__7S3571C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__7S3571C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3571C2[];
extern  VTBL_ENTRY _ZTV7S3571C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C2[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3571C10D0Ev,_ZThn92_N8S3571C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3571C10D1Ev,_ZThn92_N8S3571C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn600_N7S3571C3D0Ev,_ZThn364_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn600_N7S3571C3D1Ev,_ZThn364_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3571C3D0Ev,_ZThn308_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3571C3D1Ev,_ZThn308_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3571C7D0Ev,_ZThn308_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3571C7D1Ev,_ZThn308_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3571C2D0Ev,_ZTv0_n24_N7S3571C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N7S3571C2D0Ev,_ZThn644_N7S3571C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3571C2D1Ev,_ZTv0_n24_N7S3571C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N7S3571C2D1Ev,_ZThn644_N7S3571C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N7S3571C2D0Ev,_ZThn756_N7S3571C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N7S3571C2D0Ev,_ZThn736_N7S3571C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn600_N7S3571C2D0Ev,_ZThn364_N7S3571C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N7S3571C2D1Ev,_ZThn756_N7S3571C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N7S3571C2D1Ev,_ZThn736_N7S3571C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn600_N7S3571C2D1Ev,_ZThn364_N7S3571C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C2D0Ev,_ZTv0_n12_N7S3571C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3571C2D0Ev,_ZThn308_N7S3571C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C2D1Ev,_ZTv0_n12_N7S3571C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3571C2D1Ev,_ZThn308_N7S3571C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C2 = {  "S3571C2", // class name
  bases_S3571C2, 11,
  &(vtc_S3571C2[0]), // expected_vtbl_contents
  &(vtt_S3571C2[0]), // expected_vtt_contents
  ABISELECT(1456,880), // object size
  NSPAIRA(_ZTI7S3571C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3571C2),52, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3571C2),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C14  : virtual S3571C10 , S3572C4 , S3571C3 {
  int s3571c14f0[6];
  void *s3571c14f1[8];
  virtual  ~S3571C14(); // _ZN8S3571C14D2Ev
  S3571C14(); // tgen
};
//SIG(-1 S3571C14) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ VBC3 VBC5{ vd m FC3 FC6{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} BC5 BC7{ VBC5 BC4 VBC8{ VBC3 VBC5 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC9{ VBC3 BC5 BC4 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]}


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

static void Test_S3571C14()
{
  extern Class_Descriptor cd_S3571C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(79,185)];
    init_test(&cd_S3571C14, buf);
    S3571C14 *dp, &lv = *(dp=new (buf) S3571C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1248,736), "sizeof(S3571C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C14)");
    check_base_class_offset(lv, (S3572C5*)(S3571C10*), ABISELECT(648,380), "S3571C14");
    /*is_ambiguous_... S3571C14::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(648,380), "S3571C14");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C3*), ABISELECT(648,380), "S3571C14");
    check_base_class_offset(lv, (S3572C5*)(S3571C8*), ABISELECT(648,380), "S3571C14");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*), ABISELECT(648,380), "S3571C14");
    /*is_ambiguous_... S3571C14::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(728,424), "S3571C14");
    check_base_class_offset(lv, (S3572C4*)(S3571C3*), ABISELECT(728,424), "S3571C14");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C3*), ABISELECT(728,424), "S3571C14");
    check_base_class_offset(lv, (S3572C4*)(S3571C8*), ABISELECT(728,424), "S3571C14");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*), ABISELECT(728,424), "S3571C14");
    check_base_class_offset(lv, (S3571C7*)(S3571C10*), ABISELECT(688,404), "S3571C14");
    check_base_class_offset(lv, (S3571C10*), ABISELECT(520,288), "S3571C14");
    /*is_ambiguous_... S3571C14::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S3571C14");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C3*), ABISELECT(64,32), "S3571C14");
    check_base_class_offset(lv, (S3571C7*)(S3571C8*), ABISELECT(784,456), "S3571C14");
    check_base_class_offset(lv, (S3571C8*)(S3571C3*), ABISELECT(784,456), "S3571C14");
    check_base_class_offset(lv, (S3571C3*), ABISELECT(64,32), "S3571C14");
    check_field_offset(lv, s3571c14f0, ABISELECT(432,232), "S3571C14.s3571c14f0");
    check_field_offset(lv, s3571c14f1, ABISELECT(456,256), "S3571C14.s3571c14f1");
    test_class_info(&lv, &cd_S3571C14);
    dp->~S3571C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C14(Test_S3571C14, "S3571C14", ABISELECT(1248,736));

#else // __cplusplus

extern void _ZN8S3571C14C1Ev();
extern void _ZN8S3571C14D2Ev();
Name_Map name_map_S3571C14[] = {
  NSPAIR(_ZN8S3571C14C1Ev),
  NSPAIR(_ZN8S3571C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C10;
extern VTBL_ENTRY _ZTI8S3571C10[];
extern  VTBL_ENTRY _ZTV8S3571C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
extern Class_Descriptor cd_S3571C3;
extern VTBL_ENTRY _ZTI7S3571C3[];
extern  VTBL_ENTRY _ZTV7S3571C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C3[];
static Base_Class bases_S3571C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(648,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(728,424), //bcp->offset
    31, //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
    2, //immediately_derived
  0, 1},
  {&cd_S3571C7,    ABISELECT(688,404), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3571C10,    ABISELECT(520,288), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3571C7,    ABISELECT(64,32), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(784,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(784,456), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3571C3,    ABISELECT(64,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C14[];
extern void _ZN8S3571C14D1Ev();
extern void _ZN8S3571C14D0Ev();
extern void ABISELECT(_ZThn64_N8S3571C14D1Ev,_ZThn32_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C14D0Ev,_ZThn32_N8S3571C14D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn520_N8S3571C14D1Ev,_ZThn288_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn520_N8S3571C14D0Ev,_ZThn288_N8S3571C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn688_N8S3571C14D1Ev,_ZThn404_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn688_N8S3571C14D0Ev,_ZThn404_N8S3571C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn728_N8S3571C14D1Ev,_ZThn424_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn728_N8S3571C14D0Ev,_ZThn424_N8S3571C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn784_N8S3571C14D1Ev,_ZThn456_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn784_N8S3571C14D0Ev,_ZThn456_N8S3571C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C14[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&_ZN8S3571C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C14D0Ev,
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C14D1Ev,_ZThn32_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C14D0Ev,_ZThn32_N8S3571C14D0Ev),
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev),
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev),
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev),
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C14[];
extern void _ZN7S3571C3D1Ev();
extern void _ZN7S3571C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C3__8S3571C14[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&_ZN7S3571C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C3D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C3__A1__8S3571C14[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn664_N7S3571C7D1Ev,_ZThn392_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn664_N7S3571C7D0Ev,_ZThn392_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C3__A1__8S3571C14[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn664_N7S3571C3D1Ev,_ZThn392_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn664_N7S3571C3D0Ev,_ZThn392_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C3__8S3571C14[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn720_N7S3571C3D1Ev,_ZThn424_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn720_N7S3571C3D0Ev,_ZThn424_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C3__8S3571C14[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev),
};
extern void _ZN8S3571C10D1Ev();
extern void _ZN8S3571C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C14[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&_ZN8S3571C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S3571C10D1Ev,_ZThn116_N8S3571C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S3571C10D0Ev,_ZThn116_N8S3571C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C10__8S3571C14[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S3571C10D1Ev,_ZThn136_N8S3571C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S3571C10D0Ev,_ZThn136_N8S3571C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C10__8S3571C14[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev),
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C14[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S3571C7D1Ev,_ZThn20_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn40_N7S3571C7D0Ev,_ZThn20_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__8S3571C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C8__A2__8S3571C14[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C8__A2__8S3571C14[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C8__8S3571C14[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
static  VTT_ENTRY vtt_S3571C14[] = {
  {&(_ZTV8S3571C14[7]),  7,43},
  {&(_tg__ZTV7S3571C3__8S3571C14[5]),  5,7},
  {&(_tg__ZTV7S3571C77S3571C3__A1__8S3571C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C3__A1__8S3571C14[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C3__8S3571C14[3]),  3,5},
  {&(_tg__ZTV7S3571C8__7S3571C3__8S3571C14[5]),  5,7},
  {&(_ZTV8S3571C14[22]),  22,43},
  {&(_ZTV8S3571C14[29]),  29,43},
  {&(_ZTV8S3571C14[34]),  34,43},
  {&(_ZTV8S3571C14[14]),  14,43},
  {&(_ZTV8S3571C14[41]),  41,43},
  {&(_tg__ZTV8S3571C10__8S3571C14[5]),  5,7},
  {&(_tg__ZTV7S3571C7__8S3571C10__8S3571C14[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C10__8S3571C14[3]),  3,5},
  {&(_tg__ZTV7S3571C7__8S3571C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__8S3571C14[3]),  3,5},
  {&(_tg__ZTV7S3571C8__8S3571C14[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C8__A2__8S3571C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C8__A2__8S3571C14[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C8__8S3571C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C14[];
extern  VTBL_ENTRY _ZTV8S3571C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C14[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3571C10D0Ev,_ZThn136_N8S3571C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3571C10D1Ev,_ZThn136_N8S3571C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3571C10D0Ev,_ZThn116_N8S3571C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3571C10D1Ev,_ZThn116_N8S3571C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S3571C3D0Ev,_ZThn424_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S3571C3D1Ev,_ZThn424_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3571C3D0Ev,_ZThn392_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3571C3D1Ev,_ZThn392_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3571C7D0Ev,_ZThn20_N7S3571C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3571C7D0Ev,_ZThn392_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3571C7D1Ev,_ZThn20_N7S3571C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3571C7D1Ev,_ZThn392_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S3571C14D0Ev,_ZThn424_N8S3571C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S3571C14D1Ev,_ZThn424_N8S3571C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S3571C14D0Ev,_ZThn456_N8S3571C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S3571C14D0Ev,_ZThn404_N8S3571C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S3571C14D1Ev,_ZThn456_N8S3571C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S3571C14D1Ev,_ZThn404_N8S3571C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3571C14D0Ev,_ZThn288_N8S3571C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3571C14D1Ev,_ZThn288_N8S3571C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C14 = {  "S3571C14", // class name
  bases_S3571C14, 9,
  &(vtc_S3571C14[0]), // expected_vtbl_contents
  &(vtt_S3571C14[0]), // expected_vtt_contents
  ABISELECT(1248,736), // object size
  NSPAIRA(_ZTI8S3571C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3571C14),43, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C14),20, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C15  : virtual S3571C9 {
  int s3571c15f0;
  void *s3571c15f1;
  int s3571c15f2:2;
  long double s3571c15f3;
  void *s3571c15f4;
  virtual  ~S3571C15(); // _ZN8S3571C15D2Ev
  virtual void  v2(); // _ZN8S3571C152v2Ev
  S3571C15(); // tgen
};
//SIG(-1 S3571C15) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} BC4{ vd m FC3 FC5{}} BC6{ VBC3 VBC4 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v1 Fi Fp Fi:2 FD Fp}


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

static void Test_S3571C15()
{
  extern Class_Descriptor cd_S3571C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,54)];
    init_test(&cd_S3571C15, buf);
    S3571C15 *dp, &lv = *(dp=new (buf) S3571C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,212), "sizeof(S3571C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C15)");
    check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(288,156), "S3571C15");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(288,156), "S3571C15");
    /*is_ambiguous_... S3571C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(64,32), "S3571C15");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(328,180), "S3571C15");
    check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(120,64), "S3571C15");
    check_base_class_offset(lv, (S3571C9*), ABISELECT(64,32), "S3571C15");
    check_field_offset(lv, s3571c15f0, ABISELECT(8,4), "S3571C15.s3571c15f0");
    check_field_offset(lv, s3571c15f1, ABISELECT(16,8), "S3571C15.s3571c15f1");
    set_bf_and_test(lv, s3571c15f2, ABISELECT(24,12), 0, 2, 1, "S3571C15");
    set_bf_and_test(lv, s3571c15f2, ABISELECT(24,12), 0, 2, hide_sll(1LL<<1), "S3571C15");
    check_field_offset(lv, s3571c15f3, ABISELECT(32,16), "S3571C15.s3571c15f3");
    check_field_offset(lv, s3571c15f4, ABISELECT(48,28), "S3571C15.s3571c15f4");
    test_class_info(&lv, &cd_S3571C15);
    dp->~S3571C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C15(Test_S3571C15, "S3571C15", ABISELECT(384,212));

#else // __cplusplus

extern void _ZN8S3571C15C1Ev();
extern void _ZN8S3571C15D2Ev();
Name_Map name_map_S3571C15[] = {
  NSPAIR(_ZN8S3571C15C1Ev),
  NSPAIR(_ZN8S3571C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
static Base_Class bases_S3571C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(288,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_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(328,180), //bcp->offset
    23, //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_S3571C7,    ABISELECT(120,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(64,32), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C15[];
extern void _ZN8S3571C15D1Ev();
extern void _ZN8S3571C15D0Ev();
extern void _ZN8S3571C152v2Ev();
extern void ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C15D1Ev,_ZThn32_N8S3571C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev)();
extern void ABISELECT(_ZThn64_N8S3571C15D0Ev,_ZThn32_N8S3571C15D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev)();
extern void ABISELECT(_ZThn328_N8S3571C15D1Ev,_ZThn180_N8S3571C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev)();
extern void ABISELECT(_ZThn328_N8S3571C15D0Ev,_ZThn180_N8S3571C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C15[] = {
  ABISELECT(328,180),
  ABISELECT(288,156),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&_ZN8S3571C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  0,
  ABISELECT(-64,-32),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev),
  ABISELECT(-328,-180),
  ABISELECT(-328,-180),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C15[];
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C15[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C15[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S3571C7D1Ev,_ZThn116_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S3571C7D0Ev,_ZThn116_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__8S3571C15[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__8S3571C15[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn264_N7S3571C9D1Ev,_ZThn148_N7S3571C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
extern void ABISELECT(_ZThn264_N7S3571C9D0Ev,_ZThn148_N7S3571C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__8S3571C15[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
static  VTT_ENTRY vtt_S3571C15[] = {
  {&(_ZTV8S3571C15[5]),  5,28},
  {&(_ZTV8S3571C15[14]),  14,28},
  {&(_ZTV8S3571C15[21]),  21,28},
  {&(_ZTV8S3571C15[26]),  26,28},
  {&(_tg__ZTV7S3571C9__8S3571C15[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C15[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__8S3571C15[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__8S3571C15[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__8S3571C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C15[];
extern  VTBL_ENTRY _ZTV8S3571C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C15[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3571C9D0Ev,_ZThn148_N7S3571C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3571C9D1Ev,_ZThn148_N7S3571C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3571C7D0Ev,_ZThn116_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3571C7D1Ev,_ZThn116_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S3571C15D0Ev,_ZThn180_N8S3571C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S3571C15D1Ev,_ZThn180_N8S3571C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3571C15D0Ev,_ZThn32_N8S3571C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3571C15D1Ev,_ZThn32_N8S3571C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C15 = {  "S3571C15", // class name
  bases_S3571C15, 5,
  &(vtc_S3571C15[0]), // expected_vtbl_contents
  &(vtt_S3571C15[0]), // expected_vtt_contents
  ABISELECT(384,212), // object size
  NSPAIRA(_ZTI8S3571C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S3571C15),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C15),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C16  : S3571C7 , virtual S3571C9 {
  int s3571c16f0;
  void *s3571c16f1;
  virtual  ~S3571C16(); // _ZN8S3571C16D2Ev
  S3571C16(); // tgen
};
//SIG(-1 S3571C16) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} VBC6{ VBC3 BC4 BC2 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp}


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

static void Test_S3571C16()
{
  extern Class_Descriptor cd_S3571C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,53)];
    init_test(&cd_S3571C16, buf);
    S3571C16 *dp, &lv = *(dp=new (buf) S3571C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,208), "sizeof(S3571C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C16)");
    /*is_ambiguous_... S3571C16::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(56,28), "S3571C16");
    check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(56,28), "S3571C16");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(56,28), "S3571C16");
    /*is_ambiguous_... S3571C16::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(96,52), "S3571C16");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(96,52), "S3571C16");
    /*is_ambiguous_... S3571C16::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*), 0, "S3571C16");
    /*is_ambiguous_... S3571C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(160,84), "S3571C16");
    check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(216,116), "S3571C16");
    check_base_class_offset(lv, (S3571C9*), ABISELECT(160,84), "S3571C16");
    check_field_offset(lv, s3571c16f0, ABISELECT(40,20), "S3571C16.s3571c16f0");
    check_field_offset(lv, s3571c16f1, ABISELECT(48,24), "S3571C16.s3571c16f1");
    test_class_info(&lv, &cd_S3571C16);
    dp->~S3571C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C16(Test_S3571C16, "S3571C16", ABISELECT(384,208));

#else // __cplusplus

extern void _ZN8S3571C16C1Ev();
extern void _ZN8S3571C16D2Ev();
Name_Map name_map_S3571C16[] = {
  NSPAIR(_ZN8S3571C16C1Ev),
  NSPAIR(_ZN8S3571C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
static Base_Class bases_S3571C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(96,52), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3571C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C4,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(216,116), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(160,84), //bcp->offset
    12, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C16[];
extern void _ZN8S3571C16D1Ev();
extern void _ZN8S3571C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev)();
extern void ABISELECT(_ZThn96_N8S3571C16D1Ev,_ZThn52_N8S3571C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev)();
extern void ABISELECT(_ZThn96_N8S3571C16D0Ev,_ZThn52_N8S3571C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZThn160_N8S3571C16D1Ev,_ZThn84_N8S3571C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev)();
extern void ABISELECT(_ZThn160_N8S3571C16D0Ev,_ZThn84_N8S3571C16D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev)();
static  VTBL_ENTRY vtc_S3571C16[] = {
  ABISELECT(160,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&_ZN8S3571C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C16D0Ev,
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev),
  0,
  ABISELECT(-160,-84),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C16[];
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C16[] = {
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S3571C7D1Ev,_ZThn52_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S3571C7D0Ev,_ZThn52_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__8S3571C16[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C16[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C16[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__A1__8S3571C16[] = {
  ABISELECT(120,64),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__8S3571C16[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__8S3571C16[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
static  VTT_ENTRY vtt_S3571C16[] = {
  {&(_ZTV8S3571C16[5]),  5,27},
  {&(_tg__ZTV7S3571C7__8S3571C16[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__8S3571C16[3]),  3,5},
  {&(_ZTV8S3571C16[10]),  10,27},
  {&(_ZTV8S3571C16[18]),  18,27},
  {&(_ZTV8S3571C16[25]),  25,27},
  {&(_tg__ZTV7S3571C9__8S3571C16[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C16[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__A1__8S3571C16[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__8S3571C16[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__8S3571C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C16[];
extern  VTBL_ENTRY _ZTV8S3571C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C16[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3571C7D0Ev,_ZThn52_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3571C7D1Ev,_ZThn52_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3571C16D0Ev,_ZThn84_N8S3571C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3571C16D1Ev,_ZThn84_N8S3571C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3571C16D0Ev,_ZThn52_N8S3571C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3571C16D1Ev,_ZThn52_N8S3571C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C16 = {  "S3571C16", // class name
  bases_S3571C16, 6,
  &(vtc_S3571C16[0]), // expected_vtbl_contents
  &(vtt_S3571C16[0]), // expected_vtt_contents
  ABISELECT(384,208), // object size
  NSPAIRA(_ZTI8S3571C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3571C16),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C16),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C13  : virtual S3571C14 , S3571C15 , S3571C9 {
  int s3571c13f0;
  long s3571c13f1;
  int s3571c13f2:6;
  ::S3571C16 s3571c13f3;
  long s3571c13f4;
  int s3571c13f5;
  void *s3571c13f6;
  ::S3571C2 s3571c13f7;
  virtual  ~S3571C13(); // _ZN8S3571C13D2Ev
  virtual void  v3(); // _ZN8S3571C132v3Ev
  S3571C13(); // tgen
};
//SIG(-1 S3571C13) C1{ VBC2{ VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ VBC4 VBC6{ vd m FC4 FC7{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} BC6 BC8{ VBC6 BC5 VBC9{ VBC4 VBC6 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC10{ VBC4 BC6 BC5 vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC11{ VBC10 vd v3 Fi Fp Fi:2 FD Fp} BC10 vd v1 Fi Fl Fi:6 FC12{ BC5 VBC10 vd Fi Fp} Fl Fi Fp FC13{ BC8 VBC3 VBC10 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}}


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

static void Test_S3571C13()
{
  extern Class_Descriptor cd_S3571C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(230,533)];
    init_test(&cd_S3571C13, buf);
    S3571C13 *dp, &lv = *(dp=new (buf) S3571C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3664,2128), "sizeof(S3571C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C13)");
    check_base_class_offset(lv, (S3572C5*)(S3571C10*), ABISELECT(2840,1648), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(2840,1648), "S3571C13");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(2840,1648), "S3571C13");
    check_base_class_offset(lv, (S3572C5*)(S3571C8*), ABISELECT(2840,1648), "S3571C13");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*), ABISELECT(2840,1648), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(2840,1648), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(2840,1648), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(2840,1648), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(2840,1648), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(2920,1692), "S3571C13");
    check_base_class_offset(lv, (S3572C4*)(S3571C3*)(S3571C14*), ABISELECT(2920,1692), "S3571C13");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(2920,1692), "S3571C13");
    check_base_class_offset(lv, (S3572C4*)(S3571C8*), ABISELECT(2920,1692), "S3571C13");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*), ABISELECT(2920,1692), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(2920,1692), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(2920,1692), "S3571C13");
    check_base_class_offset(lv, (S3571C7*)(S3571C10*), ABISELECT(2880,1672), "S3571C13");
    check_base_class_offset(lv, (S3571C10*)(S3571C14*), ABISELECT(2712,1556), "S3571C13");
    /*is_ambiguous_... S3571C14::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C14*), ABISELECT(2192,1268), "S3571C13");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(2256,1300), "S3571C13");
    check_base_class_offset(lv, (S3571C7*)(S3571C8*), ABISELECT(2976,1724), "S3571C13");
    check_base_class_offset(lv, (S3571C8*)(S3571C3*)(S3571C14*), ABISELECT(2976,1724), "S3571C13");
    check_base_class_offset(lv, (S3571C3*)(S3571C14*), ABISELECT(2256,1300), "S3571C13");
    check_base_class_offset(lv, (S3571C14*), ABISELECT(2192,1268), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(3440,2004), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(3496,2036), "S3571C13");
    check_base_class_offset(lv, (S3571C9*)(S3571C15*), ABISELECT(3440,2004), "S3571C13");
    check_base_class_offset(lv, (S3571C15*), 0, "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(64,32), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(120,64), "S3571C13");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C9*), ABISELECT(64,32), "S3571C13");
    check_field_offset(lv, s3571c13f0, ABISELECT(288,156), "S3571C13.s3571c13f0");
    check_field_offset(lv, s3571c13f1, ABISELECT(296,160), "S3571C13.s3571c13f1");
    set_bf_and_test(lv, s3571c13f2, ABISELECT(304,164), 0, 6, 1, "S3571C13");
    set_bf_and_test(lv, s3571c13f2, ABISELECT(304,164), 0, 6, hide_sll(1LL<<5), "S3571C13");
    check_field_offset(lv, s3571c13f3, ABISELECT(320,168), "S3571C13.s3571c13f3");
    check_field_offset(lv, s3571c13f4, ABISELECT(704,376), "S3571C13.s3571c13f4");
    check_field_offset(lv, s3571c13f5, ABISELECT(712,380), "S3571C13.s3571c13f5");
    check_field_offset(lv, s3571c13f6, ABISELECT(720,384), "S3571C13.s3571c13f6");
    check_field_offset(lv, s3571c13f7, ABISELECT(736,388), "S3571C13.s3571c13f7");
    test_class_info(&lv, &cd_S3571C13);
    dp->~S3571C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C13(Test_S3571C13, "S3571C13", ABISELECT(3664,2128));

#else // __cplusplus

extern void _ZN8S3571C13C1Ev();
extern void _ZN8S3571C13D2Ev();
Name_Map name_map_S3571C13[] = {
  NSPAIR(_ZN8S3571C13C1Ev),
  NSPAIR(_ZN8S3571C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C10;
extern VTBL_ENTRY _ZTI8S3571C10[];
extern  VTBL_ENTRY _ZTV8S3571C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
extern Class_Descriptor cd_S3571C3;
extern VTBL_ENTRY _ZTI7S3571C3[];
extern  VTBL_ENTRY _ZTV7S3571C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C3[];
extern Class_Descriptor cd_S3571C14;
extern VTBL_ENTRY _ZTI8S3571C14[];
extern  VTBL_ENTRY _ZTV8S3571C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C15;
extern VTBL_ENTRY _ZTI8S3571C15[];
extern  VTBL_ENTRY _ZTV8S3571C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C15[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
static Base_Class bases_S3571C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(2840,1648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2920,1692), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3571C7,    ABISELECT(2880,1672), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3571C10,    ABISELECT(2712,1556), //bcp->offset
    43, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2192,1268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(2256,1300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(2976,1724), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(2976,1724), //bcp->offset
    63, //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
    8, //immediately_derived
  0, 1},
  {&cd_S3571C3,    ABISELECT(2256,1300), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3571C14,    ABISELECT(2192,1268), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(3440,2004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(3496,2036), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(3440,2004), //bcp->offset
    70, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3571C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(120,64), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C13[];
extern void _ZN8S3571C13D1Ev();
extern void _ZN8S3571C13D0Ev();
extern void _ZN8S3571C152v2Ev();
extern void _ZN8S3571C132v3Ev();
extern void ABISELECT(_ZThn64_N8S3571C13D1Ev,_ZThn32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C13D0Ev,_ZThn32_N8S3571C13D0Ev)();
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZThn120_N8S3571C13D1Ev,_ZThn64_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn120_N8S3571C13D0Ev,_ZThn64_N8S3571C13D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2192_N8S3571C13D1Ev,_ZThn1268_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2192_N8S3571C13D0Ev,_ZThn1268_N8S3571C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S3571C13D1Ev,_ZTvn32_n32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3571C13D0Ev,_ZTvn32_n32_N8S3571C13D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3571C13D1Ev,_ZTv0_n24_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2712_N8S3571C13D1Ev,_ZThn1556_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C13D0Ev,_ZTv0_n24_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2712_N8S3571C13D0Ev,_ZThn1556_N8S3571C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2880_N8S3571C13D1Ev,_ZThn1672_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2880_N8S3571C13D0Ev,_ZThn1672_N8S3571C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C13D1Ev,_ZTv0_n12_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2920_N8S3571C13D1Ev,_ZThn1692_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C13D0Ev,_ZTv0_n12_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2920_N8S3571C13D0Ev,_ZThn1692_N8S3571C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2976_N8S3571C13D1Ev,_ZThn1724_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2976_N8S3571C13D0Ev,_ZThn1724_N8S3571C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn3440_N8S3571C13D1Ev,_ZThn2004_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn3440_N8S3571C13D0Ev,_ZThn2004_N8S3571C13D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3571C13D1Ev,_ZTvn32_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C13D0Ev,_ZTvn32_n20_N8S3571C13D0Ev)();
static  VTBL_ENTRY vtc_S3571C13[] = {
  ABISELECT(2976,1724),
  ABISELECT(2880,1672),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(2920,1692),
  ABISELECT(2840,1648),
  ABISELECT(3440,2004),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&_ZN8S3571C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3571C132v3Ev,
  ABISELECT(2856,1660),
  ABISELECT(2776,1616),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C13D1Ev,_ZThn32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C13D0Ev,_ZThn32_N8S3571C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3571C13D1Ev,_ZThn64_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3571C13D0Ev,_ZThn64_N8S3571C13D0Ev),
  ABISELECT(-2192,-1268),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-2192,-1268),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev),
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-2256,-1300),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C13D1Ev,_ZTvn32_n32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C13D0Ev,_ZTvn32_n32_N8S3571C13D0Ev),
  ABISELECT(-2712,-1556),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-2712,-1556),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C13D1Ev,_ZTv0_n24_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C13D0Ev,_ZTv0_n24_N8S3571C13D0Ev),
  ABISELECT(-2880,-1672),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-2880,-1672),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
  ABISELECT(-2920,-1692),
  ABISELECT(-2920,-1692),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C13D1Ev,_ZTv0_n12_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C13D0Ev,_ZTv0_n12_N8S3571C13D0Ev),
  ABISELECT(-2976,-1724),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-2976,-1724),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
  0,
  ABISELECT(-3440,-2004),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2004),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2036),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C13D1Ev,_ZTvn32_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C13D0Ev,_ZTvn32_n20_N8S3571C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C13[];
extern void _ZN8S3571C15D1Ev();
extern void _ZN8S3571C15D0Ev();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C15__8S3571C13[] = {
  ABISELECT(2920,1692),
  ABISELECT(2840,1648),
  ABISELECT(3440,2004),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&_ZN8S3571C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZThn3440_N8S3571C15D1Ev,_ZThn2004_N8S3571C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev)();
extern void ABISELECT(_ZThn3440_N8S3571C15D0Ev,_ZThn2004_N8S3571C15D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C15__8S3571C13[] = {
  0,
  ABISELECT(-3440,-2004),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2004),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C15__8S3571C13[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2036),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev)();
extern void ABISELECT(_ZThn2920_N8S3571C15D1Ev,_ZThn1692_N8S3571C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev)();
extern void ABISELECT(_ZThn2920_N8S3571C15D0Ev,_ZThn1692_N8S3571C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C15__8S3571C13[] = {
  ABISELECT(-2920,-1692),
  ABISELECT(-2920,-1692),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__A__8S3571C13[] = {
  ABISELECT(2856,1660),
  ABISELECT(2776,1616),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A4__8S3571C13[] = {
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn2800_N7S3571C7D1Ev,_ZThn1628_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn2800_N7S3571C7D0Ev,_ZThn1628_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__A4__8S3571C13[] = {
  ABISELECT(-2800,-1628),
  ABISELECT(-2800,-1628),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__A__8S3571C13[] = {
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn2856_N7S3571C9D1Ev,_ZThn1660_N7S3571C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
extern void ABISELECT(_ZThn2856_N7S3571C9D0Ev,_ZThn1660_N7S3571C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__A__8S3571C13[] = {
  ABISELECT(-2856,-1660),
  ABISELECT(-2856,-1660),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void _ZN8S3571C14D1Ev();
extern void _ZN8S3571C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C14__8S3571C13[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&_ZN8S3571C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C14D0Ev,
};
extern void _ZN7S3571C3D1Ev();
extern void _ZN7S3571C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C38S3571C14__8S3571C13[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&_ZN7S3571C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C3D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C38S3571C14__A1__8S3571C13[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn664_N7S3571C7D1Ev,_ZThn392_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn664_N7S3571C7D0Ev,_ZThn392_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C38S3571C14__A1__8S3571C13[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn664_N7S3571C3D1Ev,_ZThn392_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn664_N7S3571C3D0Ev,_ZThn392_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C38S3571C14__8S3571C13[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn720_N7S3571C3D1Ev,_ZThn424_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn720_N7S3571C3D0Ev,_ZThn424_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C38S3571C14__8S3571C13[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn520_N8S3571C14D1Ev,_ZThn288_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn520_N8S3571C14D0Ev,_ZThn288_N8S3571C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C14__8S3571C13[] = {
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn688_N8S3571C14D1Ev,_ZThn404_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn688_N8S3571C14D0Ev,_ZThn404_N8S3571C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C14__8S3571C13[] = {
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn728_N8S3571C14D1Ev,_ZThn424_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn728_N8S3571C14D0Ev,_ZThn424_N8S3571C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C14__8S3571C13[] = {
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3571C14D1Ev,_ZThn32_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C14D0Ev,_ZThn32_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C3__8S3571C14__8S3571C13[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C14D1Ev,_ZThn32_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C14D0Ev,_ZThn32_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn784_N8S3571C14D1Ev,_ZThn456_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn784_N8S3571C14D0Ev,_ZThn456_N8S3571C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C14__8S3571C13[] = {
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev),
};
extern void _ZN8S3571C10D1Ev();
extern void _ZN8S3571C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C13[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&_ZN8S3571C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S3571C10D1Ev,_ZThn116_N8S3571C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S3571C10D0Ev,_ZThn116_N8S3571C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C10__8S3571C13[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S3571C10D1Ev,_ZThn136_N8S3571C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S3571C10D0Ev,_ZThn136_N8S3571C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C10__8S3571C13[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev),
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C13[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S3571C7D1Ev,_ZThn20_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn40_N7S3571C7D0Ev,_ZThn20_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__8S3571C13[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C13[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C8__A2__8S3571C13[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C8__A2__8S3571C13[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C8__8S3571C13[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C13[] = {
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__8S3571C13[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__A3__8S3571C13[] = {
  ABISELECT(576,344),
  ABISELECT(576,344),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__8S3571C13[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__8S3571C13[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
static  VTT_ENTRY vtt_S3571C13[] = {
  {&(_ZTV8S3571C13[9]),  9,85},
  {&(_tg__ZTV8S3571C15__8S3571C13[5]),  5,8},
  {&(_tg__ZTV7S3571C9__8S3571C15__8S3571C13[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C15__8S3571C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C15__8S3571C13[3]),  3,5},
  {&(_tg__ZTV7S3571C9__A__8S3571C13[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A4__8S3571C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__A4__8S3571C13[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__A__8S3571C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__A__8S3571C13[3]),  3,5},
  {&(_ZTV8S3571C13[34]),  34,85},
  {&(_ZTV8S3571C13[49]),  49,85},
  {&(_ZTV8S3571C13[56]),  56,85},
  {&(_ZTV8S3571C13[61]),  61,85},
  {&(_ZTV8S3571C13[41]),  41,85},
  {&(_ZTV8S3571C13[68]),  68,85},
  {&(_ZTV8S3571C13[76]),  76,85},
  {&(_ZTV8S3571C13[83]),  83,85},
  {&(_ZTV8S3571C13[17]),  17,85},
  {&(_ZTV8S3571C13[24]),  24,85},
  {&(_tg__ZTV8S3571C14__8S3571C13[7]),  7,9},
  {&(_tg__ZTV7S3571C38S3571C14__8S3571C13[5]),  5,7},
  {&(_tg__ZTV7S3571C77S3571C38S3571C14__A1__8S3571C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C38S3571C14__A1__8S3571C13[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C38S3571C14__8S3571C13[3]),  3,5},
  {&(_tg__ZTV7S3571C8__7S3571C38S3571C14__8S3571C13[5]),  5,7},
  {&(_tg__ZTV8S3571C10__8S3571C14__8S3571C13[6]),  6,8},
  {&(_tg__ZTV7S3571C7__8S3571C14__8S3571C13[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C14__8S3571C13[3]),  3,5},
  {&(_tg__ZTV7S3571C3__8S3571C14__8S3571C13[5]),  5,7},
  {&(_tg__ZTV7S3571C8__8S3571C14__8S3571C13[5]),  5,7},
  {&(_tg__ZTV8S3571C10__8S3571C13[5]),  5,7},
  {&(_tg__ZTV7S3571C7__8S3571C10__8S3571C13[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C10__8S3571C13[3]),  3,5},
  {&(_tg__ZTV7S3571C7__8S3571C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__8S3571C13[3]),  3,5},
  {&(_tg__ZTV7S3571C8__8S3571C13[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C8__A2__8S3571C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C8__A2__8S3571C13[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C8__8S3571C13[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C13[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A3__8S3571C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__A3__8S3571C13[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__8S3571C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__8S3571C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C13[];
extern  VTBL_ENTRY _ZTV8S3571C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C13[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3571C10D0Ev,_ZThn136_N8S3571C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3571C10D1Ev,_ZThn136_N8S3571C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3571C10D0Ev,_ZThn116_N8S3571C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3571C10D1Ev,_ZThn116_N8S3571C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S3571C14D0Ev,_ZThn424_N8S3571C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S3571C14D1Ev,_ZThn424_N8S3571C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S3571C14D0Ev,_ZThn456_N8S3571C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S3571C14D0Ev,_ZThn404_N8S3571C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S3571C14D1Ev,_ZThn456_N8S3571C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S3571C14D1Ev,_ZThn404_N8S3571C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3571C14D0Ev,_ZThn288_N8S3571C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3571C14D1Ev,_ZThn288_N8S3571C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S3571C3D0Ev,_ZThn424_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S3571C3D1Ev,_ZThn424_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3571C3D0Ev,_ZThn392_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3571C3D1Ev,_ZThn392_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N7S3571C9D0Ev,_ZThn1660_N7S3571C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N7S3571C9D1Ev,_ZThn1660_N7S3571C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3571C7D0Ev,_ZThn20_N7S3571C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3571C7D0Ev,_ZThn392_N7S3571C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N7S3571C7D0Ev,_ZThn1628_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3571C7D1Ev,_ZThn20_N7S3571C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N7S3571C7D1Ev,_ZThn392_N7S3571C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N7S3571C7D1Ev,_ZThn1628_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S3571C15D0Ev,_ZThn1692_N8S3571C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S3571C15D1Ev,_ZThn1692_N8S3571C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S3571C15D0Ev,_ZThn2004_N8S3571C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S3571C15D1Ev,_ZThn2004_N8S3571C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C13D0Ev,_ZTv0_n12_N8S3571C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S3571C13D0Ev,_ZThn1692_N8S3571C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C13D1Ev,_ZTv0_n12_N8S3571C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S3571C13D1Ev,_ZThn1692_N8S3571C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S3571C13D0Ev,_ZThn2004_N8S3571C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3571C13D0Ev,_ZThn1724_N8S3571C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S3571C13D0Ev,_ZThn1672_N8S3571C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S3571C13D1Ev,_ZThn2004_N8S3571C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3571C13D1Ev,_ZThn1724_N8S3571C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S3571C13D1Ev,_ZThn1672_N8S3571C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C13D0Ev,_ZTv0_n24_N8S3571C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3571C13D0Ev,_ZThn1556_N8S3571C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C13D1Ev,_ZTv0_n24_N8S3571C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3571C13D1Ev,_ZThn1556_N8S3571C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3571C13D0Ev,_ZThn1268_N8S3571C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3571C13D1Ev,_ZThn1268_N8S3571C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C13 = {  "S3571C13", // class name
  bases_S3571C13, 17,
  &(vtc_S3571C13[0]), // expected_vtbl_contents
  &(vtt_S3571C13[0]), // expected_vtt_contents
  ABISELECT(3664,2128), // object size
  NSPAIRA(_ZTI8S3571C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3571C13),85, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C13),45, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C18  : S3571C7 , S3571C8 {
  int s3571c18f0;
  int s3571c18f1:2;
  long double s3571c18f2;
  void *s3571c18f3[2];
  virtual  ~S3571C18(); // _ZN8S3571C18D2Ev
  virtual void  v4(); // _ZN8S3571C182v4Ev
  virtual void  v5(); // _ZN8S3571C182v5Ev
  virtual void  v6(); // _ZN8S3571C182v6Ev
  S3571C18(); // tgen
};
//SIG(-1 S3571C18) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} BC6{ VBC3 VBC4 BC2 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd v1 v2 v3 Fi Fi:2 FD Fp[2]}


 S3571C18 ::~S3571C18(){ note_dtor("S3571C18", this);}
void  S3571C18 ::v4(){vfunc_called(this, "_ZN8S3571C182v4Ev");}
void  S3571C18 ::v5(){vfunc_called(this, "_ZN8S3571C182v5Ev");}
void  S3571C18 ::v6(){vfunc_called(this, "_ZN8S3571C182v6Ev");}
S3571C18 ::S3571C18(){ note_ctor("S3571C18", this);} // tgen

static void Test_S3571C18()
{
  extern Class_Descriptor cd_S3571C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,97)];
    init_test(&cd_S3571C18, buf);
    S3571C18 *dp, &lv = *(dp=new (buf) S3571C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,384), "sizeof(S3571C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C18)");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(544,328), "S3571C18");
    check_base_class_offset(lv, (S3572C5*)(S3571C8*), ABISELECT(544,328), "S3571C18");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*), ABISELECT(544,328), "S3571C18");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(584,352), "S3571C18");
    check_base_class_offset(lv, (S3572C4*)(S3571C8*), ABISELECT(584,352), "S3571C18");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*), ABISELECT(584,352), "S3571C18");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*), 0, "S3571C18");
    check_base_class_offset(lv, (S3571C7*)(S3571C8*), ABISELECT(40,20), "S3571C18");
    check_base_class_offset(lv, (S3571C8*), ABISELECT(40,20), "S3571C18");
    check_field_offset(lv, s3571c18f0, ABISELECT(500,300), "S3571C18.s3571c18f0");
    set_bf_and_test(lv, s3571c18f1, ABISELECT(504,304), 0, 2, 1, "S3571C18");
    set_bf_and_test(lv, s3571c18f1, ABISELECT(504,304), 0, 2, hide_sll(1LL<<1), "S3571C18");
    check_field_offset(lv, s3571c18f2, ABISELECT(512,308), "S3571C18.s3571c18f2");
    check_field_offset(lv, s3571c18f3, ABISELECT(528,320), "S3571C18.s3571c18f3");
    test_class_info(&lv, &cd_S3571C18);
    dp->~S3571C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C18(Test_S3571C18, "S3571C18", ABISELECT(640,384));

#else // __cplusplus

extern void _ZN8S3571C18C1Ev();
extern void _ZN8S3571C18D2Ev();
Name_Map name_map_S3571C18[] = {
  NSPAIR(_ZN8S3571C18C1Ev),
  NSPAIR(_ZN8S3571C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
static Base_Class bases_S3571C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(544,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(584,352), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3571C7,    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_S3571C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(40,20), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C18[];
extern void _ZN8S3571C18D1Ev();
extern void _ZN8S3571C18D0Ev();
extern void _ZN8S3571C182v4Ev();
extern void _ZN8S3571C182v5Ev();
extern void _ZN8S3571C182v6Ev();
extern void ABISELECT(_ZThn40_N8S3571C18D1Ev,_ZThn20_N8S3571C18D1Ev)();
extern void ABISELECT(_ZThn40_N8S3571C18D0Ev,_ZThn20_N8S3571C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C18D1Ev,_ZTv0_n12_N8S3571C18D1Ev)();
extern void ABISELECT(_ZThn584_N8S3571C18D1Ev,_ZThn352_N8S3571C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C18D0Ev,_ZTv0_n12_N8S3571C18D0Ev)();
extern void ABISELECT(_ZThn584_N8S3571C18D0Ev,_ZThn352_N8S3571C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C18[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&_ZN8S3571C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C18D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v6Ev,
  ABISELECT(544,332),
  ABISELECT(504,308),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3571C18D1Ev,_ZThn20_N8S3571C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3571C18D0Ev,_ZThn20_N8S3571C18D0Ev),
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C18D1Ev,_ZTv0_n12_N8S3571C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C18D0Ev,_ZTv0_n12_N8S3571C18D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C18[];
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C18[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn584_N7S3571C7D1Ev,_ZThn352_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn584_N7S3571C7D0Ev,_ZThn352_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__8S3571C18[] = {
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C18[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C8__A1__8S3571C18[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn544_N7S3571C7D1Ev,_ZThn332_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn544_N7S3571C7D0Ev,_ZThn332_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C8__A1__8S3571C18[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZThn544_N7S3571C8D1Ev,_ZThn332_N7S3571C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
extern void ABISELECT(_ZThn544_N7S3571C8D0Ev,_ZThn332_N7S3571C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C8__8S3571C18[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
static  VTT_ENTRY vtt_S3571C18[] = {
  {&(_ZTV8S3571C18[4]),  4,20},
  {&(_tg__ZTV7S3571C7__8S3571C18[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__8S3571C18[3]),  3,5},
  {&(_tg__ZTV7S3571C8__8S3571C18[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C8__A1__8S3571C18[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C8__A1__8S3571C18[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C8__8S3571C18[3]),  3,5},
  {&(_ZTV8S3571C18[18]),  18,20},
  {&(_ZTV8S3571C18[13]),  13,20},
};
extern VTBL_ENTRY _ZTI8S3571C18[];
extern  VTBL_ENTRY _ZTV8S3571C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C18[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S3571C8D0Ev,_ZThn332_N7S3571C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S3571C8D1Ev,_ZThn332_N7S3571C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S3571C7D0Ev,_ZThn332_N7S3571C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3571C7D0Ev,_ZThn352_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S3571C7D1Ev,_ZThn332_N7S3571C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3571C7D1Ev,_ZThn352_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C18D0Ev,_ZTv0_n12_N8S3571C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S3571C18D0Ev,_ZThn352_N8S3571C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C18D1Ev,_ZTv0_n12_N8S3571C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S3571C18D1Ev,_ZThn352_N8S3571C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C18 = {  "S3571C18", // class name
  bases_S3571C18, 5,
  &(vtc_S3571C18[0]), // expected_vtbl_contents
  &(vtt_S3571C18[0]), // expected_vtt_contents
  ABISELECT(640,384), // object size
  NSPAIRA(_ZTI8S3571C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3571C18),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C18),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C12  : virtual S3571C7 , virtual S3571C13 , S3572C17 , virtual S3571C18 , virtual S3571C15 {
  int s3571c12f0;
  __tsi64 s3571c12f1;
  ::S3571C16 s3571c12f2;
  virtual  ~S3571C12(); // _ZN8S3571C12D2Ev
  S3571C12(); // tgen
};
//SIG(-1 S3571C12) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} VBC6{ VBC7{ VBC8{ VBC3 VBC2 vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL} BC4 BC9{ VBC4 BC2 VBC10{ VBC3 VBC4 BC2 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC11{ VBC3 BC4 BC2 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC12{ VBC11 vd v2 Fi Fp Fi:2 FD Fp} BC11 vd v3 Fi Fl Fi:6 FC13{ BC2 VBC11 vd Fi Fp} Fl Fi Fp FC14{ BC9 VBC8 VBC11 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC15{ vd m FC16{ VBC3 VBC17{ VBC3 VBC4 Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL} FC18{ VBC3 VBC4 BC17 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} VBC19{ BC2 BC10 vd v4 v5 v6 Fi Fi:2 FD Fp[2]} VBC12 vd Fi FL FC13}


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

static void Test_S3571C12()
{
  extern Class_Descriptor cd_S3571C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(351,818)];
    init_test(&cd_S3571C12, buf);
    S3571C12 *dp, &lv = *(dp=new (buf) S3571C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(5600,3268), "sizeof(S3571C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C12)");
    /*is_ambiguous_... S3571C12::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(1352,800), "S3571C12");
    check_base_class_offset(lv, (S3572C5*)(S3571C10*), ABISELECT(1352,800), "S3571C12");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(1352,800), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C8*), ABISELECT(1352,800), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*), ABISELECT(1352,800), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(1352,800), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(1352,800), "S3571C12");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*)(S3571C13*), ABISELECT(1352,800), "S3571C12");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*)(S3571C13*), ABISELECT(1352,800), "S3571C12");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C18*), ABISELECT(1352,800), "S3571C12");
    check_base_class_offset(lv, (S3572C5*)(S3571C8*)(S3571C18*), ABISELECT(1352,800), "S3571C12");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*)(S3571C18*), ABISELECT(1352,800), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(1392,824), "S3571C12");
    check_base_class_offset(lv, (S3572C4*)(S3571C3*)(S3571C14*), ABISELECT(1392,824), "S3571C12");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(1392,824), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C8*), ABISELECT(1392,824), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*), ABISELECT(1392,824), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(1392,824), "S3571C12");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*)(S3571C13*), ABISELECT(1392,824), "S3571C12");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C18*), ABISELECT(1392,824), "S3571C12");
    check_base_class_offset(lv, (S3572C4*)(S3571C8*)(S3571C18*), ABISELECT(1392,824), "S3571C12");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*)(S3571C18*), ABISELECT(1392,824), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*), ABISELECT(1312,780), "S3571C12");
    check_base_class_offset(lv, (S3571C7*)(S3571C10*), ABISELECT(1312,780), "S3571C12");
    check_base_class_offset(lv, (S3571C10*)(S3571C14*), ABISELECT(4168,2412), "S3571C12");
    /*is_ambiguous_... S3571C14::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C14*), ABISELECT(3648,2124), "S3571C12");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(3712,2156), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C8 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C8*), ABISELECT(4296,2504), "S3571C12");
    check_base_class_offset(lv, (S3571C8*)(S3571C3*)(S3571C14*), ABISELECT(4296,2504), "S3571C12");
    check_base_class_offset(lv, (S3571C3*)(S3571C14*), ABISELECT(3712,2156), "S3571C12");
    check_base_class_offset(lv, (S3571C14*)(S3571C13*), ABISELECT(3648,2124), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(4768,2784), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(4824,2816), "S3571C12");
    check_base_class_offset(lv, (S3571C9*)(S3571C15*)(S3571C13*), ABISELECT(4768,2784), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C15 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C15*), ABISELECT(4768,2784), "S3571C12");
    check_base_class_offset(lv, (S3571C15*)(S3571C13*), ABISELECT(1456,856), "S3571C12");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*)(S3571C13*), ABISELECT(1520,888), "S3571C12");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*)(S3571C13*), ABISELECT(1576,920), "S3571C12");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C13*), ABISELECT(1520,888), "S3571C12");
    check_base_class_offset(lv, (S3571C13*), ABISELECT(1456,856), "S3571C12");
    check_base_class_offset(lv, (S3572C17*), 0, "S3571C12");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C18*), ABISELECT(4992,2908), "S3571C12");
    check_base_class_offset(lv, (S3571C7*)(S3571C8*)(S3571C18*), ABISELECT(5032,2928), "S3571C12");
    check_base_class_offset(lv, (S3571C8*)(S3571C18*), ABISELECT(5032,2928), "S3571C12");
    check_base_class_offset(lv, (S3571C18*), ABISELECT(4992,2908), "S3571C12");
    /*is_ambiguous_... S3571C12::S3571C15 */ AMB_check_base_class_offset(lv, (S3571C15*), ABISELECT(5536,3236), "S3571C12");
    check_field_offset(lv, s3571c12f0, ABISELECT(908,560), "S3571C12.s3571c12f0");
    check_field_offset(lv, s3571c12f1, ABISELECT(912,564), "S3571C12.s3571c12f1");
    check_field_offset(lv, s3571c12f2, ABISELECT(928,572), "S3571C12.s3571c12f2");
    test_class_info(&lv, &cd_S3571C12);
    dp->~S3571C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C12(Test_S3571C12, "S3571C12", ABISELECT(5600,3268));

#else // __cplusplus

extern void _ZN8S3571C12C1Ev();
extern void _ZN8S3571C12D2Ev();
Name_Map name_map_S3571C12[] = {
  NSPAIR(_ZN8S3571C12C1Ev),
  NSPAIR(_ZN8S3571C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C10;
extern VTBL_ENTRY _ZTI8S3571C10[];
extern  VTBL_ENTRY _ZTV8S3571C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
extern Class_Descriptor cd_S3571C3;
extern VTBL_ENTRY _ZTI7S3571C3[];
extern  VTBL_ENTRY _ZTV7S3571C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C3[];
extern Class_Descriptor cd_S3571C14;
extern VTBL_ENTRY _ZTI8S3571C14[];
extern  VTBL_ENTRY _ZTV8S3571C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C15;
extern VTBL_ENTRY _ZTI8S3571C15[];
extern  VTBL_ENTRY _ZTV8S3571C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C15[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C13;
extern VTBL_ENTRY _ZTI8S3571C13[];
extern  VTBL_ENTRY _ZTV8S3571C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C13[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
extern Class_Descriptor cd_S3571C18;
extern VTBL_ENTRY _ZTI8S3571C18[];
extern  VTBL_ENTRY _ZTV8S3571C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C18[];
extern Class_Descriptor cd_S3571C15;
extern VTBL_ENTRY _ZTI8S3571C15[];
extern  VTBL_ENTRY _ZTV8S3571C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C15[];
static Base_Class bases_S3571C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(1352,800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1392,824), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3571C7,    ABISELECT(1312,780), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3571C10,    ABISELECT(4168,2412), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3648,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
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(3712,2156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(4296,2504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(4296,2504), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3571C3,    ABISELECT(3712,2156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3571C14,    ABISELECT(3648,2124), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(4768,2784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(4824,2816), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(4768,2784), //bcp->offset
    88, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3571C15,    ABISELECT(1456,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
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1520,888), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(1576,920), //bcp->offset
    50, //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(1520,888), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3571C13,    ABISELECT(1456,856), //bcp->offset
    26, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3571C7,    ABISELECT(4992,2908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(5032,2928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(5032,2928), //bcp->offset
    116, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3571C18,    ABISELECT(4992,2908), //bcp->offset
    103, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3571C15,    ABISELECT(5536,3236), //bcp->offset
    122, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C12[];
extern void _ZN8S3571C12D1Ev();
extern void _ZN8S3571C12D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn1312_N8S3571C12D1Ev,_ZThn780_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn1312_N8S3571C12D0Ev,_ZThn780_N8S3571C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C12D1Ev,_ZTv0_n12_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn1392_N8S3571C12D1Ev,_ZThn824_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C12D0Ev,_ZTv0_n12_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn1392_N8S3571C12D0Ev,_ZThn824_N8S3571C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3571C12D1Ev,_ZTv0_n40_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn1456_N8S3571C12D1Ev,_ZThn856_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3571C12D0Ev,_ZTv0_n40_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn1456_N8S3571C12D0Ev,_ZThn856_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
extern void _ZN8S3571C132v3Ev();
extern void ABISELECT(_ZTvn64_n80_N8S3571C12D1Ev,_ZTvn32_n40_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S3571C12D0Ev,_ZTvn32_n40_N8S3571C12D0Ev)();
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn120_n80_N8S3571C12D1Ev,_ZTvn64_n40_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S3571C12D0Ev,_ZTvn64_n40_N8S3571C12D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S3571C12D1Ev,_ZTv0_n32_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn3648_N8S3571C12D1Ev,_ZThn2124_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3571C12D0Ev,_ZTv0_n32_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn3648_N8S3571C12D0Ev,_ZThn2124_N8S3571C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S3571C12D1Ev,_ZTvn32_n32_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3571C12D0Ev,_ZTvn32_n32_N8S3571C12D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn4168_N8S3571C12D1Ev,_ZThn2412_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn4168_N8S3571C12D0Ev,_ZThn2412_N8S3571C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn4296_N8S3571C12D1Ev,_ZThn2504_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn4296_N8S3571C12D0Ev,_ZThn2504_N8S3571C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn4768_N8S3571C12D1Ev,_ZThn2784_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn4768_N8S3571C12D0Ev,_ZThn2784_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3571C12D1Ev,_ZTvn32_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C12D0Ev,_ZTvn32_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn4992_N8S3571C12D1Ev,_ZThn2908_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn4992_N8S3571C12D0Ev,_ZThn2908_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN8S3571C182v4Ev();
extern void _ZN8S3571C182v5Ev();
extern void _ZN8S3571C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N8S3571C12D1Ev,_ZTvn20_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S3571C12D0Ev,_ZTvn20_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn5536_N8S3571C12D1Ev,_ZThn3236_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn5536_N8S3571C12D0Ev,_ZThn3236_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY vtc_S3571C12[] = {
  ABISELECT(5536,3236),
  ABISELECT(4992,2908),
  ABISELECT(4768,2784),
  ABISELECT(4296,2504),
  ABISELECT(4168,2412),
  ABISELECT(3648,2124),
  ABISELECT(1456,856),
  ABISELECT(1392,824),
  ABISELECT(1352,800),
  ABISELECT(1312,780),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&_ZN8S3571C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C12D0Ev,
  ABISELECT(-1312,-780),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1312,-780),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
  ABISELECT(-1392,-824),
  ABISELECT(-1392,-824),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C12D1Ev,_ZTv0_n12_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C12D0Ev,_ZTv0_n12_N8S3571C12D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1456,-856),
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  ABISELECT(-1456,-856),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3571C12D1Ev,_ZTv0_n40_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3571C12D0Ev,_ZTv0_n40_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3571C132v3Ev,
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1520,-888),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3571C12D1Ev,_ZTvn32_n40_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3571C12D0Ev,_ZTvn32_n40_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1576,-920),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3571C12D1Ev,_ZTvn64_n40_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3571C12D0Ev,_ZTvn64_n40_N8S3571C12D0Ev),
  ABISELECT(-3648,-2124),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-3648,-2124),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C12D1Ev,_ZTv0_n32_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C12D0Ev,_ZTv0_n32_N8S3571C12D0Ev),
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-3712,-2156),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C12D1Ev,_ZTvn32_n32_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C12D0Ev,_ZTvn32_n32_N8S3571C12D0Ev),
  ABISELECT(-4168,-2412),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-4168,-2412),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev),
  ABISELECT(-4296,-2504),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-4296,-2504),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
  0,
  ABISELECT(-4768,-2784),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-4768,-2784),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-4824,-2816),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C12D1Ev,_ZTvn32_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C12D0Ev,_ZTvn32_n20_N8S3571C12D0Ev),
  0,
  0,
  0,
  ABISELECT(-4992,-2908),
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  ABISELECT(-4992,-2908),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v6Ev,
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-5032,-2928),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3571C12D1Ev,_ZTvn20_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3571C12D0Ev,_ZTvn20_n20_N8S3571C12D0Ev),
  0,
  ABISELECT(-5536,-3236),
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  ABISELECT(-5536,-3236),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern VTBL_ENTRY _ZTV8S3571C12[];
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C12[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S3571C7D1Ev,_ZThn44_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S3571C7D0Ev,_ZThn44_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__8S3571C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN8S3571C13D1Ev();
extern void _ZN8S3571C13D0Ev();
extern void _ZN8S3571C152v2Ev();
extern void _ZN8S3571C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C13__8S3571C12[] = {
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&_ZN8S3571C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3571C132v3Ev,
};
extern void _ZN8S3571C15D1Ev();
extern void _ZN8S3571C15D0Ev();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C158S3571C13__8S3571C12[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&_ZN8S3571C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZThn3312_N8S3571C15D1Ev,_ZThn1928_N8S3571C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev)();
extern void ABISELECT(_ZThn3312_N8S3571C15D0Ev,_ZThn1928_N8S3571C15D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C158S3571C13__8S3571C12[] = {
  0,
  ABISELECT(-3312,-1928),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-3312,-1928),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C158S3571C13__8S3571C12[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-3368,-1960),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C158S3571C13__8S3571C12[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C98S3571C13__A1__8S3571C12[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C13__A4__8S3571C12[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C98S3571C13__A4__8S3571C12[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C98S3571C13__A1__8S3571C12[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C98S3571C13__A1__8S3571C12[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2192_N8S3571C13D1Ev,_ZThn1268_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2192_N8S3571C13D0Ev,_ZThn1268_N8S3571C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C14__8S3571C13__8S3571C12[] = {
  ABISELECT(-2192,-1268),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-2192,-1268),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C13D1Ev,_ZTv0_n24_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2712_N8S3571C13D1Ev,_ZThn1556_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C13D0Ev,_ZTv0_n24_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2712_N8S3571C13D0Ev,_ZThn1556_N8S3571C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C13__8S3571C12[] = {
  ABISELECT(-2712,-1556),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-2712,-1556),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C13D1Ev,_ZTv0_n24_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C13D0Ev,_ZTv0_n24_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C13__8S3571C12[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C13D1Ev,_ZTv0_n12_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C13D0Ev,_ZTv0_n12_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C13__8S3571C12[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C13D1Ev,_ZTv0_n12_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C13D0Ev,_ZTv0_n12_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3571C13D1Ev,_ZTvn32_n32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3571C13D0Ev,_ZTvn32_n32_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C38S3571C14__8S3571C13__8S3571C12[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-2256,-1300),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C13D1Ev,_ZTvn32_n32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C13D0Ev,_ZTvn32_n32_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2840_N8S3571C13D1Ev,_ZThn1648_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2840_N8S3571C13D0Ev,_ZThn1648_N8S3571C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C13__8S3571C12[] = {
  ABISELECT(-2840,-1648),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-2840,-1648),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn3312_N8S3571C13D1Ev,_ZThn1928_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn3312_N8S3571C13D0Ev,_ZThn1928_N8S3571C13D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C13__8S3571C12[] = {
  0,
  ABISELECT(-3312,-1928),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-3312,-1928),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C13D1Ev,_ZTvn32_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C13D0Ev,_ZTvn32_n20_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__8S3571C13__8S3571C12[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-3368,-1960),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C13D1Ev,_ZTvn32_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C13D0Ev,_ZTvn32_n20_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3571C13D1Ev,_ZThn32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C13D0Ev,_ZThn32_N8S3571C13D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__A__8S3571C13__8S3571C12[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C13D1Ev,_ZThn32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C13D0Ev,_ZThn32_N8S3571C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZThn120_N8S3571C13D1Ev,_ZThn64_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn120_N8S3571C13D0Ev,_ZThn64_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A4__8S3571C13__8S3571C12[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3571C13D1Ev,_ZThn64_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3571C13D0Ev,_ZThn64_N8S3571C13D0Ev),
};
extern void _ZN8S3571C14D1Ev();
extern void _ZN8S3571C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C14__8S3571C12[] = {
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&_ZN8S3571C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C14D0Ev,
};
extern void _ZN7S3571C3D1Ev();
extern void _ZN7S3571C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C38S3571C14__8S3571C12[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&_ZN7S3571C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C3D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C38S3571C14__A1__8S3571C12[] = {
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C38S3571C14__A1__8S3571C12[] = {
  ABISELECT(2320,1332),
  ABISELECT(2320,1332),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C38S3571C14__8S3571C12[] = {
  ABISELECT(2320,1332),
  ABISELECT(2320,1332),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn584_N7S3571C3D1Ev,_ZThn348_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn584_N7S3571C3D0Ev,_ZThn348_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C38S3571C14__8S3571C12[] = {
  ABISELECT(-584,-348),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-584,-348),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn520_N8S3571C14D1Ev,_ZThn288_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn520_N8S3571C14D0Ev,_ZThn288_N8S3571C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C14__8S3571C12[] = {
  ABISELECT(-520,-288),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C14__8S3571C12[] = {
  ABISELECT(2336,1344),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2336,1344),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C14__8S3571C12[] = {
  ABISELECT(2256,1300),
  ABISELECT(2256,1300),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3571C14D1Ev,_ZThn32_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C14D0Ev,_ZThn32_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C3__8S3571C14__8S3571C12[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C14D1Ev,_ZThn32_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C14D0Ev,_ZThn32_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn648_N8S3571C14D1Ev,_ZThn380_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn648_N8S3571C14D0Ev,_ZThn380_N8S3571C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C14__8S3571C12[] = {
  ABISELECT(-648,-380),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-648,-380),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev),
};
extern void _ZN8S3571C10D1Ev();
extern void _ZN8S3571C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C12[] = {
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&_ZN8S3571C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C10__8S3571C12[] = {
  ABISELECT(2856,1632),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2856,1632),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C10__8S3571C12[] = {
  ABISELECT(2776,1588),
  ABISELECT(2776,1588),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C12[] = {
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C8__A2__8S3571C12[] = {
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C8__A2__8S3571C12[] = {
  ABISELECT(2904,1680),
  ABISELECT(2904,1680),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C8__8S3571C12[] = {
  ABISELECT(2904,1680),
  ABISELECT(2904,1680),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C12[] = {
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__8S3571C12[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__A3__8S3571C12[] = {
  ABISELECT(3432,1992),
  ABISELECT(3432,1992),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__8S3571C12[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__8S3571C12[] = {
  ABISELECT(3376,1960),
  ABISELECT(3376,1960),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void _ZN8S3571C18D1Ev();
extern void _ZN8S3571C18D0Ev();
extern void _ZN8S3571C182v4Ev();
extern void _ZN8S3571C182v5Ev();
extern void _ZN8S3571C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C18__8S3571C12[] = {
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&_ZN8S3571C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C18D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v6Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C78S3571C18__A5__8S3571C12[] = {
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C78S3571C18__A5__8S3571C12[] = {
  ABISELECT(3600,2084),
  ABISELECT(3600,2084),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C88S3571C18__A1__8S3571C12[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C88S3571C18__A6__8S3571C12[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C88S3571C18__A6__8S3571C12[] = {
  ABISELECT(3640,2104),
  ABISELECT(3640,2104),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C88S3571C18__A1__8S3571C12[] = {
  ABISELECT(3640,2104),
  ABISELECT(3640,2104),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C18D1Ev,_ZTv0_n12_N8S3571C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C18D0Ev,_ZTv0_n12_N8S3571C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C18__8S3571C12[] = {
  ABISELECT(3600,2084),
  ABISELECT(3600,2084),
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C18D1Ev,_ZTv0_n12_N8S3571C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C18D0Ev,_ZTv0_n12_N8S3571C18D0Ev),
};
extern void ABISELECT(_ZThn40_N8S3571C18D1Ev,_ZThn20_N8S3571C18D1Ev)();
extern void ABISELECT(_ZThn40_N8S3571C18D0Ev,_ZThn20_N8S3571C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C18__8S3571C12[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3571C18D1Ev,_ZThn20_N8S3571C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3571C18D0Ev,_ZThn20_N8S3571C18D0Ev),
};
extern void _ZN8S3571C15D1Ev();
extern void _ZN8S3571C15D0Ev();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C15__A1__8S3571C12[] = {
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&_ZN8S3571C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C15__A1__8S3571C12[] = {
  0,
  ABISELECT(768,452),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(768,452),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C15__A1__8S3571C12[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(712,420),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C15__A1__8S3571C12[] = {
  ABISELECT(4144,2412),
  ABISELECT(4144,2412),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev),
};
static  VTT_ENTRY vtt_S3571C12[] = {
  {&(_ZTV8S3571C12[12]),  12,132},
  {&(_ZTV8S3571C12[19]),  19,132},
  {&(_ZTV8S3571C12[24]),  24,132},
  {&(_ZTV8S3571C12[39]),  39,132},
  {&(_ZTV8S3571C12[64]),  64,132},
  {&(_ZTV8S3571C12[79]),  79,132},
  {&(_ZTV8S3571C12[71]),  71,132},
  {&(_ZTV8S3571C12[86]),  86,132},
  {&(_ZTV8S3571C12[94]),  94,132},
  {&(_ZTV8S3571C12[101]),  101,132},
  {&(_ZTV8S3571C12[47]),  47,132},
  {&(_ZTV8S3571C12[54]),  54,132},
  {&(_ZTV8S3571C12[111]),  111,132},
  {&(_ZTV8S3571C12[120]),  120,132},
  {&(_ZTV8S3571C12[129]),  129,132},
  {&(_tg__ZTV7S3571C7__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__8S3571C12[3]),  3,5},
  {&(_tg__ZTV8S3571C13__8S3571C12[9]),  9,13},
  {&(_tg__ZTV8S3571C158S3571C13__8S3571C12[5]),  5,8},
  {&(_tg__ZTV7S3571C9__8S3571C158S3571C13__8S3571C12[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C158S3571C13__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C158S3571C13__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3571C98S3571C13__A1__8S3571C12[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C98S3571C13__A4__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C98S3571C13__A4__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C98S3571C13__A1__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C98S3571C13__A1__8S3571C12[3]),  3,5},
  {&(_tg__ZTV8S3571C14__8S3571C13__8S3571C12[8]),  8,10},
  {&(_tg__ZTV8S3571C10__8S3571C13__8S3571C12[6]),  6,8},
  {&(_tg__ZTV7S3571C7__8S3571C13__8S3571C12[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C13__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3571C38S3571C14__8S3571C13__8S3571C12[5]),  5,7},
  {&(_tg__ZTV7S3571C8__8S3571C13__8S3571C12[5]),  5,7},
  {&(_tg__ZTV7S3571C9__8S3571C13__8S3571C12[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A3__8S3571C13__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3571C9__A__8S3571C13__8S3571C12[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A4__8S3571C13__8S3571C12[4]),  4,6},
  {&(_tg__ZTV8S3571C14__8S3571C12[7]),  7,9},
  {&(_tg__ZTV7S3571C38S3571C14__8S3571C12[5]),  5,7},
  {&(_tg__ZTV7S3571C77S3571C38S3571C14__A1__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C38S3571C14__A1__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C38S3571C14__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3571C8__7S3571C38S3571C14__8S3571C12[5]),  5,7},
  {&(_tg__ZTV8S3571C10__8S3571C14__8S3571C12[6]),  6,8},
  {&(_tg__ZTV7S3571C7__8S3571C14__8S3571C12[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C14__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3571C3__8S3571C14__8S3571C12[5]),  5,7},
  {&(_tg__ZTV7S3571C8__8S3571C14__8S3571C12[5]),  5,7},
  {&(_tg__ZTV8S3571C10__8S3571C12[5]),  5,7},
  {&(_tg__ZTV7S3571C7__8S3571C10__8S3571C12[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C10__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3571C8__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C8__A2__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C8__A2__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C8__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C12[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A3__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__A3__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__8S3571C12[3]),  3,5},
  {&(_tg__ZTV8S3571C18__8S3571C12[4]),  4,9},
  {&(_tg__ZTV7S3571C78S3571C18__A5__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C78S3571C18__A5__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3571C88S3571C18__A1__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C88S3571C18__A6__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C88S3571C18__A6__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C88S3571C18__A1__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3571C18__8S3571C12[3]),  3,5},
  {&(_tg__ZTV7S3571C8__8S3571C18__8S3571C12[4]),  4,6},
  {&(_tg__ZTV8S3571C15__A1__8S3571C12[5]),  5,8},
  {&(_tg__ZTV7S3571C9__8S3571C15__A1__8S3571C12[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C15__A1__8S3571C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C15__A1__8S3571C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C12[];
extern  VTBL_ENTRY _ZTV8S3571C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C12[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S3571C14D0Ev,_ZThn380_N8S3571C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S3571C14D1Ev,_ZThn380_N8S3571C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3571C14D0Ev,_ZThn288_N8S3571C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3571C14D1Ev,_ZThn288_N8S3571C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3571C3D0Ev,_ZThn348_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3571C3D1Ev,_ZThn348_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3571C13D0Ev,_ZThn1928_N8S3571C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S3571C13D0Ev,_ZThn1648_N8S3571C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3571C13D1Ev,_ZThn1928_N8S3571C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S3571C13D1Ev,_ZThn1648_N8S3571C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C13D0Ev,_ZTv0_n24_N8S3571C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3571C13D0Ev,_ZThn1556_N8S3571C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C13D1Ev,_ZTv0_n24_N8S3571C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3571C13D1Ev,_ZThn1556_N8S3571C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3571C13D0Ev,_ZThn1268_N8S3571C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3571C13D1Ev,_ZThn1268_N8S3571C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3571C15D0Ev,_ZThn1928_N8S3571C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3571C15D1Ev,_ZThn1928_N8S3571C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3571C7D0Ev,_ZThn44_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3571C7D1Ev,_ZThn44_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S3571C12D0Ev,_ZThn3236_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4168_N8S3571C12D0Ev,_ZThn2412_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S3571C12D1Ev,_ZThn3236_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4168_N8S3571C12D1Ev,_ZThn2412_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C12D0Ev,_ZTv0_n32_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3648_N8S3571C12D0Ev,_ZThn2124_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C12D1Ev,_ZTv0_n32_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3648_N8S3571C12D1Ev,_ZThn2124_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3571C12D0Ev,_ZTv0_n40_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S3571C12D0Ev,_ZThn856_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3571C12D1Ev,_ZTv0_n40_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S3571C12D1Ev,_ZThn856_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C12D0Ev,_ZTv0_n12_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S3571C12D0Ev,_ZThn824_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C12D1Ev,_ZTv0_n12_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S3571C12D1Ev,_ZThn824_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4992_N8S3571C12D0Ev,_ZThn2908_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N8S3571C12D0Ev,_ZThn2784_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4296_N8S3571C12D0Ev,_ZThn2504_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S3571C12D0Ev,_ZThn780_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4992_N8S3571C12D1Ev,_ZThn2908_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N8S3571C12D1Ev,_ZThn2784_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4296_N8S3571C12D1Ev,_ZThn2504_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S3571C12D1Ev,_ZThn780_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C12 = {  "S3571C12", // class name
  bases_S3571C12, 24,
  &(vtc_S3571C12[0]), // expected_vtbl_contents
  &(vtt_S3571C12[0]), // expected_vtt_contents
  ABISELECT(5600,3268), // object size
  NSPAIRA(_ZTI8S3571C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3571C12),132, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C12),73, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C20  : virtual S3572C21 , virtual S3571C9 , S3572C22 , S3572C5 {
  char s3571c20f0[7];
  void *s3571c20f1;
  long double s3571c20f2;
  ::S3571C8 s3571c20f3;
  __tsi64 s3571c20f4;
  __tsi64 s3571c20f5;
  long s3571c20f6;
  int s3571c20f7;
  int s3571c20f8;
  __tsi64 s3571c20f9[3];
  long double s3571c20f10;
  virtual  ~S3571C20(); // _ZN8S3571C20D2Ev
  virtual void  v7(); // _ZN8S3571C202v7Ev
  S3571C20(); // tgen
};
//SIG(-1 S3571C20) C1{ VBC2{ vd m FD} VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} BC5{ vd m FC4 FC6{}} BC7{ VBC4 VBC5 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} BC8{ m Fp Fi[2] FU9{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v1 Fc[7] Fp FD FC10{ VBC4 VBC5 BC7 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} FL FL Fl Fi Fi FL[3] FD}


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

static void Test_S3571C20()
{
  extern Class_Descriptor cd_S3571C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(75,176)];
    init_test(&cd_S3571C20, buf);
    S3571C20 *dp, &lv = *(dp=new (buf) S3571C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1184,700), "sizeof(S3571C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C20)");
    check_base_class_offset(lv, (S3572C21*), ABISELECT(832,504), "S3571C20");
    check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(1088,644), "S3571C20");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(1088,644), "S3571C20");
    /*is_ambiguous_... S3571C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(864,520), "S3571C20");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(1128,668), "S3571C20");
    check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(920,552), "S3571C20");
    check_base_class_offset(lv, (S3571C9*), ABISELECT(864,520), "S3571C20");
    check_base_class_offset(lv, (S3572C22*), ABISELECT(16,4), "S3571C20");
    /*is_ambiguous_... S3571C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*), ABISELECT(112,56), "S3571C20");
    check_field_offset(lv, s3571c20f0, ABISELECT(152,80), "S3571C20.s3571c20f0");
    check_field_offset(lv, s3571c20f1, ABISELECT(160,88), "S3571C20.s3571c20f1");
    check_field_offset(lv, s3571c20f2, ABISELECT(176,92), "S3571C20.s3571c20f2");
    check_field_offset(lv, s3571c20f3, ABISELECT(192,104), "S3571C20.s3571c20f3");
    check_field_offset(lv, s3571c20f4, ABISELECT(752,440), "S3571C20.s3571c20f4");
    check_field_offset(lv, s3571c20f5, ABISELECT(760,448), "S3571C20.s3571c20f5");
    check_field_offset(lv, s3571c20f6, ABISELECT(768,456), "S3571C20.s3571c20f6");
    check_field_offset(lv, s3571c20f7, ABISELECT(776,460), "S3571C20.s3571c20f7");
    check_field_offset(lv, s3571c20f8, ABISELECT(780,464), "S3571C20.s3571c20f8");
    check_field_offset(lv, s3571c20f9, ABISELECT(784,468), "S3571C20.s3571c20f9");
    check_field_offset(lv, s3571c20f10, ABISELECT(816,492), "S3571C20.s3571c20f10");
    test_class_info(&lv, &cd_S3571C20);
    dp->~S3571C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C20(Test_S3571C20, "S3571C20", ABISELECT(1184,700));

#else // __cplusplus

extern void _ZN8S3571C20C1Ev();
extern void _ZN8S3571C20D2Ev();
Name_Map name_map_S3571C20[] = {
  NSPAIR(_ZN8S3571C20C1Ev),
  NSPAIR(_ZN8S3571C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
static Base_Class bases_S3571C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    ABISELECT(832,504), //bcp->offset
    9, //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_S3572C5,    ABISELECT(1088,644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(864,520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1128,668), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3571C7,    ABISELECT(920,552), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(864,520), //bcp->offset
    14, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C22,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C5,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C20[];
extern void _ZN8S3571C20D1Ev();
extern void _ZN8S3571C20D0Ev();
extern void _ZN8S3571C202v7Ev();
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZThn832_N8S3571C20D1Ev,_ZThn504_N8S3571C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
extern void ABISELECT(_ZThn832_N8S3571C20D0Ev,_ZThn504_N8S3571C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZThn864_N8S3571C20D1Ev,_ZThn520_N8S3571C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev)();
extern void ABISELECT(_ZThn864_N8S3571C20D0Ev,_ZThn520_N8S3571C20D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZThn1128_N8S3571C20D1Ev,_ZThn668_N8S3571C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
extern void ABISELECT(_ZThn1128_N8S3571C20D0Ev,_ZThn668_N8S3571C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C20[] = {
  ABISELECT(1128,668),
  ABISELECT(1088,644),
  ABISELECT(864,520),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&_ZN8S3571C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
  0,
  ABISELECT(-864,-520),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-864,-520),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-920,-552),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev),
  ABISELECT(-1128,-668),
  ABISELECT(-1128,-668),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C20[];
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C20[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C20[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S3571C7D1Ev,_ZThn116_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S3571C7D0Ev,_ZThn116_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__8S3571C20[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__8S3571C20[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn264_N7S3571C9D1Ev,_ZThn148_N7S3571C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
extern void ABISELECT(_ZThn264_N7S3571C9D0Ev,_ZThn148_N7S3571C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__8S3571C20[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
static  VTT_ENTRY vtt_S3571C20[] = {
  {&(_ZTV8S3571C20[6]),  6,34},
  {&(_ZTV8S3571C20[12]),  12,34},
  {&(_ZTV8S3571C20[20]),  20,34},
  {&(_ZTV8S3571C20[27]),  27,34},
  {&(_ZTV8S3571C20[32]),  32,34},
  {&(_tg__ZTV7S3571C9__8S3571C20[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C20[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__8S3571C20[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__8S3571C20[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__8S3571C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C20[];
extern  VTBL_ENTRY _ZTV8S3571C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C20[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3571C9D0Ev,_ZThn148_N7S3571C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3571C9D1Ev,_ZThn148_N7S3571C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3571C7D0Ev,_ZThn116_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3571C7D1Ev,_ZThn116_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S3571C20D0Ev,_ZThn520_N8S3571C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S3571C20D1Ev,_ZThn520_N8S3571C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N8S3571C20D0Ev,_ZThn668_N8S3571C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3571C20D0Ev,_ZThn504_N8S3571C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N8S3571C20D1Ev,_ZThn668_N8S3571C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3571C20D1Ev,_ZThn504_N8S3571C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C20 = {  "S3571C20", // class name
  bases_S3571C20, 8,
  &(vtc_S3571C20[0]), // expected_vtbl_contents
  &(vtt_S3571C20[0]), // expected_vtt_contents
  ABISELECT(1184,700), // object size
  NSPAIRA(_ZTI8S3571C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3571C20),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C20),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C19  : S3571C20 {
  ::S3571C3 s3571c19f0;
  int s3571c19f1:7;
  ::S3571C3 s3571c19f2;
  ::S3572C24 s3571c19f3;
  virtual  ~S3571C19(); // _ZN8S3571C19D2Ev
  virtual void  v8(); // _ZN8S3571C192v8Ev
  S3571C19(); // tgen
};
//SIG(-1 S3571C19) C1{ BC2{ VBC3{ vd m FD} VBC4{ VBC5{ m Fp Fs Fi Fp Fl[2]} BC6{ vd m FC5 FC7{}} BC8{ VBC5 VBC6 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} BC9{ m Fp Fi[2] FU10{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC5 vd v3 Fc[7] Fp FD FC11{ VBC5 VBC6 BC8 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} FL FL Fl Fi Fi FL[3] FD} vd v1 FC12{ VBC6 BC8 VBC11 vd FC4} Fi:7 FC12 FC13{ vd m Fi[4] FL Fi FC14{ VBC5 VBC6 Fc:1 Fp[3]} Fi FD Fi Fi FL FL Fs}}


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

static void Test_S3571C19()
{
  extern Class_Descriptor cd_S3571C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(207,483)];
    init_test(&cd_S3571C19, buf);
    S3571C19 *dp, &lv = *(dp=new (buf) S3571C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3296,1928), "sizeof(S3571C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C19)");
    check_base_class_offset(lv, (S3572C21*)(S3571C20*), ABISELECT(2944,1732), "S3571C19");
    check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(3200,1872), "S3571C19");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(3200,1872), "S3571C19");
    /*is_ambiguous_... S3571C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(2976,1748), "S3571C19");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(3240,1896), "S3571C19");
    check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(3032,1780), "S3571C19");
    check_base_class_offset(lv, (S3571C9*)(S3571C20*), ABISELECT(2976,1748), "S3571C19");
    check_base_class_offset(lv, (S3572C22*)(S3571C20*), ABISELECT(16,4), "S3571C19");
    /*is_ambiguous_... S3571C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C20*), ABISELECT(112,56), "S3571C19");
    check_base_class_offset(lv, (S3571C20*), 0, "S3571C19");
    check_field_offset(lv, s3571c19f0, ABISELECT(832,504), "S3571C19.s3571c19f0");
    set_bf_and_test(lv, s3571c19f1, ABISELECT(1760,1040), 0, 7, 1, "S3571C19");
    set_bf_and_test(lv, s3571c19f1, ABISELECT(1760,1040), 0, 7, hide_sll(1LL<<6), "S3571C19");
    check_field_offset(lv, s3571c19f2, ABISELECT(1776,1044), "S3571C19.s3571c19f2");
    check_field_offset(lv, s3571c19f3, ABISELECT(2704,1580), "S3571C19.s3571c19f3");
    test_class_info(&lv, &cd_S3571C19);
    dp->~S3571C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C19(Test_S3571C19, "S3571C19", ABISELECT(3296,1928));

#else // __cplusplus

extern void _ZN8S3571C19C1Ev();
extern void _ZN8S3571C19D2Ev();
Name_Map name_map_S3571C19[] = {
  NSPAIR(_ZN8S3571C19C1Ev),
  NSPAIR(_ZN8S3571C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3571C20;
extern VTBL_ENTRY _ZTI8S3571C20[];
extern  VTBL_ENTRY _ZTV8S3571C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C20[];
static Base_Class bases_S3571C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    ABISELECT(2944,1732), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3572C5,    ABISELECT(3200,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
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2976,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(3240,1896), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3571C7,    ABISELECT(3032,1780), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(2976,1748), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3572C5,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3571C20,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C19[];
extern void _ZN8S3571C19D1Ev();
extern void _ZN8S3571C19D0Ev();
extern void _ZN8S3571C202v7Ev();
extern void _ZN8S3571C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C19D1Ev,_ZThn1732_N8S3571C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C19D0Ev,_ZThn1732_N8S3571C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C19D1Ev,_ZTv0_n20_N8S3571C19D1Ev)();
extern void ABISELECT(_ZThn2976_N8S3571C19D1Ev,_ZThn1748_N8S3571C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C19D0Ev,_ZTv0_n20_N8S3571C19D0Ev)();
extern void ABISELECT(_ZThn2976_N8S3571C19D0Ev,_ZThn1748_N8S3571C19D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3571C19D1Ev,_ZTvn32_n20_N8S3571C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C19D0Ev,_ZTvn32_n20_N8S3571C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev)();
extern void ABISELECT(_ZThn3240_N8S3571C19D1Ev,_ZThn1896_N8S3571C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev)();
extern void ABISELECT(_ZThn3240_N8S3571C19D0Ev,_ZThn1896_N8S3571C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C19[] = {
  ABISELECT(3240,1896),
  ABISELECT(3200,1872),
  ABISELECT(2976,1748),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&_ZN8S3571C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C19D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3571C192v8Ev,
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev),
  0,
  ABISELECT(-2976,-1748),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-2976,-1748),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C19D1Ev,_ZTv0_n20_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C19D0Ev,_ZTv0_n20_N8S3571C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-3032,-1780),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C19D1Ev,_ZTvn32_n20_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C19D0Ev,_ZTvn32_n20_N8S3571C19D0Ev),
  ABISELECT(-3240,-1896),
  ABISELECT(-3240,-1896),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C19[];
extern void _ZN8S3571C20D1Ev();
extern void _ZN8S3571C20D0Ev();
extern void _ZN8S3571C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C20__8S3571C19[] = {
  ABISELECT(3240,1896),
  ABISELECT(3200,1872),
  ABISELECT(2976,1748),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&_ZN8S3571C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C20D1Ev,_ZThn1732_N8S3571C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C20D0Ev,_ZThn1732_N8S3571C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3571C20__8S3571C19[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZThn2976_N8S3571C20D1Ev,_ZThn1748_N8S3571C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev)();
extern void ABISELECT(_ZThn2976_N8S3571C20D0Ev,_ZThn1748_N8S3571C20D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C20__8S3571C19[] = {
  0,
  ABISELECT(-2976,-1748),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-2976,-1748),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C20__8S3571C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-3032,-1780),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZThn3240_N8S3571C20D1Ev,_ZThn1896_N8S3571C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
extern void ABISELECT(_ZThn3240_N8S3571C20D0Ev,_ZThn1896_N8S3571C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C20__8S3571C19[] = {
  ABISELECT(-3240,-1896),
  ABISELECT(-3240,-1896),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C19[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S3571C7D1Ev,_ZThn116_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S3571C7D0Ev,_ZThn116_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__8S3571C19[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__8S3571C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn264_N7S3571C9D1Ev,_ZThn148_N7S3571C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
extern void ABISELECT(_ZThn264_N7S3571C9D0Ev,_ZThn148_N7S3571C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__8S3571C19[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
static  VTT_ENTRY vtt_S3571C19[] = {
  {&(_ZTV8S3571C19[6]),  6,35},
  {&(_tg__ZTV8S3571C20__8S3571C19[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3571C20__8S3571C19[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C20__8S3571C19[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C20__8S3571C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C20__8S3571C19[3]),  3,5},
  {&(_ZTV8S3571C19[13]),  13,35},
  {&(_ZTV8S3571C19[21]),  21,35},
  {&(_ZTV8S3571C19[28]),  28,35},
  {&(_ZTV8S3571C19[33]),  33,35},
  {&(_tg__ZTV7S3571C9__8S3571C19[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__8S3571C19[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__8S3571C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__8S3571C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C19[];
extern  VTBL_ENTRY _ZTV8S3571C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C19[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3571C9D0Ev,_ZThn148_N7S3571C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3571C9D1Ev,_ZThn148_N7S3571C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3571C7D0Ev,_ZThn116_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3571C7D1Ev,_ZThn116_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3571C20D0Ev,_ZThn1748_N8S3571C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3571C20D1Ev,_ZThn1748_N8S3571C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N8S3571C20D0Ev,_ZThn1896_N8S3571C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C20D0Ev,_ZThn1732_N8S3571C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N8S3571C20D1Ev,_ZThn1896_N8S3571C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C20D1Ev,_ZThn1732_N8S3571C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C19D0Ev,_ZTv0_n20_N8S3571C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3571C19D0Ev,_ZThn1748_N8S3571C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C19D1Ev,_ZTv0_n20_N8S3571C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S3571C19D1Ev,_ZThn1748_N8S3571C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N8S3571C19D0Ev,_ZThn1896_N8S3571C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C19D0Ev,_ZThn1732_N8S3571C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N8S3571C19D1Ev,_ZThn1896_N8S3571C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C19D1Ev,_ZThn1732_N8S3571C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C19 = {  "S3571C19", // class name
  bases_S3571C19, 9,
  &(vtc_S3571C19[0]), // expected_vtbl_contents
  &(vtt_S3571C19[0]), // expected_vtt_contents
  ABISELECT(3296,1928), // object size
  NSPAIRA(_ZTI8S3571C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3571C19),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C19),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C11  : S3571C12 , virtual S3571C19 {
  __tsi64 s3571c11f0;
  int s3571c11f1;
  char s3571c11f2;
  virtual void  v9(); // _ZN8S3571C112v9Ev
  ~S3571C11(); // tgen
  S3571C11(); // tgen
};
//SIG(-1 S3571C11) C1{ BC2{ VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ vd m FC4 FC6{}} Fc:1 Fp[3]} VBC7{ VBC8{ VBC9{ VBC4 VBC3 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} BC5 BC10{ VBC5 BC3 VBC11{ VBC4 VBC5 BC3 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC12{ VBC4 BC5 BC3 vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC13{ VBC12 vd v3 Fi Fp Fi:2 FD Fp} BC12 vd v4 Fi Fl Fi:6 FC14{ BC3 VBC12 vd Fi Fp} Fl Fi Fp FC15{ BC10 VBC9 VBC12 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC16{ vd m FC17{ VBC4 VBC18{ VBC4 VBC5 Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} FC19{ VBC4 VBC5 BC18 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} VBC20{ BC3 BC11 vd v5 v6 v7 Fi Fi:2 FD Fp[2]} VBC13 vd Fi FL FC14} VBC21{ BC22{ VBC23{ vd m FD} VBC12 BC24{ m Fp Fi[2] FU25{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v8 Fc[7] Fp FD FC11 FL FL Fl Fi Fi FL[3] FD} vd v9 FC10 Fi:7 FC10 FC26{ vd m Fi[4] FL Fi FC18 Fi FD Fi Fi FL FL Fs}} v1 FL Fi Fc}


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

static void Test_S3571C11()
{
  extern Class_Descriptor cd_S3571C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(538,1259)];
    init_test(&cd_S3571C11, buf);
    S3571C11 *dp, &lv = *(dp=new (buf) S3571C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8592,5032), "sizeof(S3571C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C11)");
    /*is_ambiguous_... S3571C11::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(1368,816), "S3571C11");
    check_base_class_offset(lv, (S3572C5*)(S3571C10*), ABISELECT(1368,816), "S3571C11");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(1368,816), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C8*), ABISELECT(1368,816), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*), ABISELECT(1368,816), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(1368,816), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(1368,816), "S3571C11");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*)(S3571C13*), ABISELECT(1368,816), "S3571C11");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*)(S3571C13*), ABISELECT(1368,816), "S3571C11");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C18*), ABISELECT(1368,816), "S3571C11");
    check_base_class_offset(lv, (S3572C5*)(S3571C8*)(S3571C18*), ABISELECT(1368,816), "S3571C11");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*)(S3571C18*), ABISELECT(1368,816), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(1408,840), "S3571C11");
    check_base_class_offset(lv, (S3572C4*)(S3571C3*)(S3571C14*), ABISELECT(1408,840), "S3571C11");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(1408,840), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C8*), ABISELECT(1408,840), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*), ABISELECT(1408,840), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(1408,840), "S3571C11");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*)(S3571C13*), ABISELECT(1408,840), "S3571C11");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C18*), ABISELECT(1408,840), "S3571C11");
    check_base_class_offset(lv, (S3572C4*)(S3571C8*)(S3571C18*), ABISELECT(1408,840), "S3571C11");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*)(S3571C18*), ABISELECT(1408,840), "S3571C11");
    /*is_ambiguous_... S3571C12::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C12*), ABISELECT(1328,796), "S3571C11");
    check_base_class_offset(lv, (S3571C7*)(S3571C10*), ABISELECT(1328,796), "S3571C11");
    check_base_class_offset(lv, (S3571C10*)(S3571C14*), ABISELECT(4184,2428), "S3571C11");
    /*is_ambiguous_... S3571C14::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C14*), ABISELECT(3664,2140), "S3571C11");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(3728,2172), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C8 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C8*), ABISELECT(4312,2520), "S3571C11");
    check_base_class_offset(lv, (S3571C8*)(S3571C3*)(S3571C14*), ABISELECT(4312,2520), "S3571C11");
    check_base_class_offset(lv, (S3571C3*)(S3571C14*), ABISELECT(3728,2172), "S3571C11");
    check_base_class_offset(lv, (S3571C14*)(S3571C13*), ABISELECT(3664,2140), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(4784,2800), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(4840,2832), "S3571C11");
    check_base_class_offset(lv, (S3571C9*)(S3571C15*)(S3571C13*), ABISELECT(4784,2800), "S3571C11");
    /*is_ambiguous_... S3571C11::S3571C15 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C15*), ABISELECT(4784,2800), "S3571C11");
    check_base_class_offset(lv, (S3571C9*)(S3571C20*)(S3571C19*), ABISELECT(4784,2800), "S3571C11");
    check_base_class_offset(lv, (S3571C15*)(S3571C13*), ABISELECT(1472,872), "S3571C11");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*)(S3571C13*), ABISELECT(1536,904), "S3571C11");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*)(S3571C13*), ABISELECT(1592,936), "S3571C11");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C13*), ABISELECT(1536,904), "S3571C11");
    check_base_class_offset(lv, (S3571C13*)(S3571C12*), ABISELECT(1472,872), "S3571C11");
    check_base_class_offset(lv, (S3572C17*)(S3571C12*), 0, "S3571C11");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C18*), ABISELECT(5008,2924), "S3571C11");
    check_base_class_offset(lv, (S3571C7*)(S3571C8*)(S3571C18*), ABISELECT(5048,2944), "S3571C11");
    check_base_class_offset(lv, (S3571C8*)(S3571C18*), ABISELECT(5048,2944), "S3571C11");
    check_base_class_offset(lv, (S3571C18*)(S3571C12*), ABISELECT(5008,2924), "S3571C11");
    /*is_ambiguous_... S3571C12::S3571C15 */ AMB_check_base_class_offset(lv, (S3571C15*)(S3571C12*), ABISELECT(5552,3252), "S3571C11");
    check_base_class_offset(lv, (S3571C12*), 0, "S3571C11");
    check_base_class_offset(lv, (S3572C21*)(S3571C20*)(S3571C19*), ABISELECT(8560,5016), "S3571C11");
    check_base_class_offset(lv, (S3572C22*)(S3571C20*)(S3571C19*), ABISELECT(5632,3288), "S3571C11");
    /*is_ambiguous_... S3571C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C20*)(S3571C19*), ABISELECT(5728,3340), "S3571C11");
    check_base_class_offset(lv, (S3571C20*)(S3571C19*), ABISELECT(5616,3284), "S3571C11");
    check_base_class_offset(lv, (S3571C19*), ABISELECT(5616,3284), "S3571C11");
    check_field_offset(lv, s3571c11f0, ABISELECT(1312,780), "S3571C11.s3571c11f0");
    check_field_offset(lv, s3571c11f1, ABISELECT(1320,788), "S3571C11.s3571c11f1");
    check_field_offset(lv, s3571c11f2, ABISELECT(1324,792), "S3571C11.s3571c11f2");
    test_class_info(&lv, &cd_S3571C11);
    dp->~S3571C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C11(Test_S3571C11, "S3571C11", ABISELECT(8592,5032));

#else // __cplusplus

extern void _ZN8S3571C11C1Ev();
extern void _ZN8S3571C11D1Ev();
Name_Map name_map_S3571C11[] = {
  NSPAIR(_ZN8S3571C11C1Ev),
  NSPAIR(_ZN8S3571C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C10;
extern VTBL_ENTRY _ZTI8S3571C10[];
extern  VTBL_ENTRY _ZTV8S3571C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
extern Class_Descriptor cd_S3571C3;
extern VTBL_ENTRY _ZTI7S3571C3[];
extern  VTBL_ENTRY _ZTV7S3571C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C3[];
extern Class_Descriptor cd_S3571C14;
extern VTBL_ENTRY _ZTI8S3571C14[];
extern  VTBL_ENTRY _ZTV8S3571C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C15;
extern VTBL_ENTRY _ZTI8S3571C15[];
extern  VTBL_ENTRY _ZTV8S3571C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C15[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C13;
extern VTBL_ENTRY _ZTI8S3571C13[];
extern  VTBL_ENTRY _ZTV8S3571C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C13[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
extern Class_Descriptor cd_S3571C18;
extern VTBL_ENTRY _ZTI8S3571C18[];
extern  VTBL_ENTRY _ZTV8S3571C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C18[];
extern Class_Descriptor cd_S3571C15;
extern VTBL_ENTRY _ZTI8S3571C15[];
extern  VTBL_ENTRY _ZTV8S3571C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C15[];
extern Class_Descriptor cd_S3571C12;
extern VTBL_ENTRY _ZTI8S3571C12[];
extern  VTBL_ENTRY _ZTV8S3571C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C12[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3571C20;
extern VTBL_ENTRY _ZTI8S3571C20[];
extern  VTBL_ENTRY _ZTV8S3571C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C20[];
extern Class_Descriptor cd_S3571C19;
extern VTBL_ENTRY _ZTI8S3571C19[];
extern  VTBL_ENTRY _ZTV8S3571C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C19[];
static Base_Class bases_S3571C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(1368,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
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1408,840), //bcp->offset
    24, //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_S3571C7,    ABISELECT(1328,796), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3571C10,    ABISELECT(4184,2428), //bcp->offset
    76, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3664,2140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(3728,2172), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(4312,2520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(4312,2520), //bcp->offset
    84, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3571C3,    ABISELECT(3728,2172), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3571C14,    ABISELECT(3664,2140), //bcp->offset
    59, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(4784,2800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(4840,2832), //bcp->offset
    100, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(4784,2800), //bcp->offset
    91, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3571C15,    ABISELECT(1472,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1536,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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(1592,936), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(1536,904), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3571C13,    ABISELECT(1472,872), //bcp->offset
    29, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3572C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(5008,2924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(5048,2944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(5048,2944), //bcp->offset
    119, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3571C18,    ABISELECT(5008,2924), //bcp->offset
    106, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3571C15,    ABISELECT(5552,3252), //bcp->offset
    125, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3571C12,    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
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C21,    ABISELECT(8560,5016), //bcp->offset
    148, //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
    28, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(5632,3288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(5728,3340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3571C20,    ABISELECT(5616,3284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3571C19,    ABISELECT(5616,3284), //bcp->offset
    135, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C11[];
extern void _ZN8S3571C11D1Ev();
extern void _ZN8S3571C11D0Ev();
extern void _ZN8S3571C112v9Ev();
extern void ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn1328_N8S3571C11D1Ev,_ZThn796_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn1328_N8S3571C11D0Ev,_ZThn796_N8S3571C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C11D1Ev,_ZTv0_n12_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn1408_N8S3571C11D1Ev,_ZThn840_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C11D0Ev,_ZTv0_n12_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn1408_N8S3571C11D0Ev,_ZThn840_N8S3571C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3571C11D1Ev,_ZTv0_n40_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn1472_N8S3571C11D1Ev,_ZThn872_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3571C11D0Ev,_ZTv0_n40_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn1472_N8S3571C11D0Ev,_ZThn872_N8S3571C11D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
extern void _ZN8S3571C132v3Ev();
extern void ABISELECT(_ZTvn64_n80_N8S3571C11D1Ev,_ZTvn32_n40_N8S3571C11D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S3571C11D0Ev,_ZTvn32_n40_N8S3571C11D0Ev)();
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn120_n80_N8S3571C11D1Ev,_ZTvn64_n40_N8S3571C11D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S3571C11D0Ev,_ZTvn64_n40_N8S3571C11D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S3571C11D1Ev,_ZTv0_n32_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn3664_N8S3571C11D1Ev,_ZThn2140_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3571C11D0Ev,_ZTv0_n32_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn3664_N8S3571C11D0Ev,_ZThn2140_N8S3571C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S3571C11D1Ev,_ZTvn32_n32_N8S3571C11D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3571C11D0Ev,_ZTvn32_n32_N8S3571C11D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3571C11D1Ev,_ZTv0_n24_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn4184_N8S3571C11D1Ev,_ZThn2428_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C11D0Ev,_ZTv0_n24_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn4184_N8S3571C11D0Ev,_ZThn2428_N8S3571C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn4312_N8S3571C11D1Ev,_ZThn2520_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn4312_N8S3571C11D0Ev,_ZThn2520_N8S3571C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn4784_N8S3571C11D1Ev,_ZThn2800_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn4784_N8S3571C11D0Ev,_ZThn2800_N8S3571C11D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3571C11D1Ev,_ZTvn32_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C11D0Ev,_ZTvn32_n20_N8S3571C11D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn5008_N8S3571C11D1Ev,_ZThn2924_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn5008_N8S3571C11D0Ev,_ZThn2924_N8S3571C11D0Ev)() __attribute__((weak));
extern void _ZN8S3571C182v4Ev();
extern void _ZN8S3571C182v5Ev();
extern void _ZN8S3571C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N8S3571C11D1Ev,_ZTvn20_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S3571C11D0Ev,_ZTvn20_n20_N8S3571C11D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3571C11D1Ev,_ZTv0_n24_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn5552_N8S3571C11D1Ev,_ZThn3252_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C11D0Ev,_ZTv0_n24_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn5552_N8S3571C11D0Ev,_ZThn3252_N8S3571C11D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3571C11D1Ev,_ZTv0_n28_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn5616_N8S3571C11D1Ev,_ZThn3284_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3571C11D0Ev,_ZTv0_n28_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn5616_N8S3571C11D0Ev,_ZThn3284_N8S3571C11D0Ev)() __attribute__((weak));
extern void _ZN8S3571C202v7Ev();
extern void _ZN8S3571C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N8S3571C11D1Ev,_ZTv0_n12_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn8560_N8S3571C11D1Ev,_ZThn5016_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C11D0Ev,_ZTv0_n12_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn8560_N8S3571C11D0Ev,_ZThn5016_N8S3571C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C11[] = {
  ABISELECT(8560,5016),
  ABISELECT(5616,3284),
  ABISELECT(5552,3252),
  ABISELECT(5008,2924),
  ABISELECT(4784,2800),
  ABISELECT(4312,2520),
  ABISELECT(4184,2428),
  ABISELECT(3664,2140),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&_ZN8S3571C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C11D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C112v9Ev,
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev),
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C11D1Ev,_ZTv0_n12_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C11D0Ev,_ZTv0_n12_N8S3571C11D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3571C11D1Ev,_ZTv0_n40_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3571C11D0Ev,_ZTv0_n40_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3571C132v3Ev,
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3571C11D1Ev,_ZTvn32_n40_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3571C11D0Ev,_ZTvn32_n40_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3571C11D1Ev,_ZTvn64_n40_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3571C11D0Ev,_ZTvn64_n40_N8S3571C11D0Ev),
  ABISELECT(-3664,-2140),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-3664,-2140),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C11D1Ev,_ZTv0_n32_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C11D0Ev,_ZTv0_n32_N8S3571C11D0Ev),
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-3728,-2172),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C11D1Ev,_ZTvn32_n32_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C11D0Ev,_ZTvn32_n32_N8S3571C11D0Ev),
  ABISELECT(-4184,-2428),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-4184,-2428),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C11D1Ev,_ZTv0_n24_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C11D0Ev,_ZTv0_n24_N8S3571C11D0Ev),
  ABISELECT(-4312,-2520),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-4312,-2520),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev),
  0,
  ABISELECT(-4784,-2800),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-4784,-2800),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-4840,-2832),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C11D1Ev,_ZTvn32_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C11D0Ev,_ZTvn32_n20_N8S3571C11D0Ev),
  0,
  0,
  0,
  ABISELECT(-5008,-2924),
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  ABISELECT(-5008,-2924),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v6Ev,
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-5048,-2944),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3571C11D1Ev,_ZTvn20_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3571C11D0Ev,_ZTvn20_n20_N8S3571C11D0Ev),
  0,
  ABISELECT(-5552,-3252),
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3252),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C11D1Ev,_ZTv0_n24_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C11D0Ev,_ZTv0_n24_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  0,
  0,
  ABISELECT(-5616,-3284),
  ABISELECT(-4208,-2444),
  ABISELECT(-4248,-2468),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  ABISELECT(-5616,-3284),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C11D1Ev,_ZTv0_n28_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C11D0Ev,_ZTv0_n28_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3571C192v8Ev,
  ABISELECT(-8560,-5016),
  ABISELECT(-8560,-5016),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C11D1Ev,_ZTv0_n12_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C11D0Ev,_ZTv0_n12_N8S3571C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C11[];
extern void _ZN8S3571C12D1Ev();
extern void _ZN8S3571C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C12__8S3571C11[] = {
  ABISELECT(5552,3252),
  ABISELECT(5008,2924),
  ABISELECT(4784,2800),
  ABISELECT(4312,2520),
  ABISELECT(4184,2428),
  ABISELECT(3664,2140),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&_ZN8S3571C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C12D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn1328_N8S3571C12D1Ev,_ZThn796_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn1328_N8S3571C12D0Ev,_ZThn796_N8S3571C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C12__8S3571C11[] = {
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C12D1Ev,_ZTv0_n12_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn1408_N8S3571C12D1Ev,_ZThn840_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C12D0Ev,_ZTv0_n12_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn1408_N8S3571C12D0Ev,_ZThn840_N8S3571C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C12__8S3571C11[] = {
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C12D1Ev,_ZTv0_n12_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C12D0Ev,_ZTv0_n12_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S3571C12D1Ev,_ZTv0_n40_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn1472_N8S3571C12D1Ev,_ZThn872_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3571C12D0Ev,_ZTv0_n40_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn1472_N8S3571C12D0Ev,_ZThn872_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
extern void _ZN8S3571C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C13__8S3571C12__8S3571C11[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3571C12D1Ev,_ZTv0_n40_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3571C12D0Ev,_ZTv0_n40_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3571C132v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S3571C12D1Ev,_ZTv0_n32_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn3664_N8S3571C12D1Ev,_ZThn2140_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3571C12D0Ev,_ZTv0_n32_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn3664_N8S3571C12D0Ev,_ZThn2140_N8S3571C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C14__8S3571C12__8S3571C11[] = {
  ABISELECT(-3664,-2140),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-3664,-2140),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C12D1Ev,_ZTv0_n32_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C12D0Ev,_ZTv0_n32_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn4184_N8S3571C12D1Ev,_ZThn2428_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn4184_N8S3571C12D0Ev,_ZThn2428_N8S3571C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C12__8S3571C11[] = {
  ABISELECT(-4184,-2428),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-4184,-2428),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3571C12D1Ev,_ZTvn32_n32_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3571C12D0Ev,_ZTvn32_n32_N8S3571C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C38S3571C14__8S3571C12__8S3571C11[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-3728,-2172),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C12D1Ev,_ZTvn32_n32_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C12D0Ev,_ZTvn32_n32_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn4312_N8S3571C12D1Ev,_ZThn2520_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn4312_N8S3571C12D0Ev,_ZThn2520_N8S3571C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C12__8S3571C11[] = {
  ABISELECT(-4312,-2520),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-4312,-2520),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn4784_N8S3571C12D1Ev,_ZThn2800_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn4784_N8S3571C12D0Ev,_ZThn2800_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C12__8S3571C11[] = {
  0,
  ABISELECT(-4784,-2800),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-4784,-2800),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C12D1Ev,_ZTvn32_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C12D0Ev,_ZTvn32_n20_N8S3571C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__8S3571C12__8S3571C11[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-4840,-2832),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C12D1Ev,_ZTvn32_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C12D0Ev,_ZTvn32_n20_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S3571C12D1Ev,_ZTvn32_n40_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S3571C12D0Ev,_ZTvn32_n40_N8S3571C12D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C98S3571C13__A1__8S3571C12__8S3571C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3571C12D1Ev,_ZTvn32_n40_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3571C12D0Ev,_ZTvn32_n40_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S3571C12D1Ev,_ZTvn64_n40_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S3571C12D0Ev,_ZTvn64_n40_N8S3571C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C13__A4__8S3571C12__8S3571C11[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3571C12D1Ev,_ZTvn64_n40_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3571C12D0Ev,_ZTvn64_n40_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn5008_N8S3571C12D1Ev,_ZThn2924_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn5008_N8S3571C12D0Ev,_ZThn2924_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN8S3571C182v4Ev();
extern void _ZN8S3571C182v5Ev();
extern void _ZN8S3571C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C18__8S3571C12__8S3571C11[] = {
  0,
  0,
  0,
  ABISELECT(-5008,-2924),
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  ABISELECT(-5008,-2924),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S3571C12D1Ev,_ZTvn20_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S3571C12D0Ev,_ZTvn20_n20_N8S3571C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C88S3571C18__A1__8S3571C12__8S3571C11[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-5048,-2944),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3571C12D1Ev,_ZTvn20_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3571C12D0Ev,_ZTvn20_n20_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn5552_N8S3571C12D1Ev,_ZThn3252_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn5552_N8S3571C12D0Ev,_ZThn3252_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C15__A1__8S3571C12__8S3571C11[] = {
  0,
  ABISELECT(-5552,-3252),
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3252),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C11[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S3571C7D1Ev,_ZThn44_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S3571C7D0Ev,_ZThn44_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__8S3571C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN8S3571C13D1Ev();
extern void _ZN8S3571C13D0Ev();
extern void _ZN8S3571C152v2Ev();
extern void _ZN8S3571C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C13__8S3571C11[] = {
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&_ZN8S3571C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3571C132v3Ev,
};
extern void _ZN8S3571C15D1Ev();
extern void _ZN8S3571C15D0Ev();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C158S3571C13__8S3571C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&_ZN8S3571C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZThn3312_N8S3571C15D1Ev,_ZThn1928_N8S3571C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev)();
extern void ABISELECT(_ZThn3312_N8S3571C15D0Ev,_ZThn1928_N8S3571C15D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C158S3571C13__8S3571C11[] = {
  0,
  ABISELECT(-3312,-1928),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-3312,-1928),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C158S3571C13__8S3571C11[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-3368,-1960),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C158S3571C13__8S3571C11[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C98S3571C13__A1__8S3571C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C13__A4__8S3571C11[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C98S3571C13__A4__8S3571C11[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C98S3571C13__A1__8S3571C11[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C98S3571C13__A1__8S3571C11[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2192_N8S3571C13D1Ev,_ZThn1268_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2192_N8S3571C13D0Ev,_ZThn1268_N8S3571C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C14__8S3571C13__8S3571C11[] = {
  ABISELECT(-2192,-1268),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-2192,-1268),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C13D1Ev,_ZTv0_n24_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2712_N8S3571C13D1Ev,_ZThn1556_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C13D0Ev,_ZTv0_n24_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2712_N8S3571C13D0Ev,_ZThn1556_N8S3571C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C13__8S3571C11[] = {
  ABISELECT(-2712,-1556),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-2712,-1556),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C13D1Ev,_ZTv0_n24_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C13D0Ev,_ZTv0_n24_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C13__8S3571C11[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C13D1Ev,_ZTv0_n12_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C13D0Ev,_ZTv0_n12_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C13__8S3571C11[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C13D1Ev,_ZTv0_n12_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C13D0Ev,_ZTv0_n12_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3571C13D1Ev,_ZTvn32_n32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3571C13D0Ev,_ZTvn32_n32_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C38S3571C14__8S3571C13__8S3571C11[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-2256,-1300),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C13D1Ev,_ZTvn32_n32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C13D0Ev,_ZTvn32_n32_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2840_N8S3571C13D1Ev,_ZThn1648_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2840_N8S3571C13D0Ev,_ZThn1648_N8S3571C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C13__8S3571C11[] = {
  ABISELECT(-2840,-1648),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-2840,-1648),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn3312_N8S3571C13D1Ev,_ZThn1928_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn3312_N8S3571C13D0Ev,_ZThn1928_N8S3571C13D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C13__8S3571C11[] = {
  0,
  ABISELECT(-3312,-1928),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-3312,-1928),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C13D1Ev,_ZTvn32_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C13D0Ev,_ZTvn32_n20_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__8S3571C13__8S3571C11[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-3368,-1960),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C13D1Ev,_ZTvn32_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C13D0Ev,_ZTvn32_n20_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3571C13D1Ev,_ZThn32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C13D0Ev,_ZThn32_N8S3571C13D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__A__8S3571C13__8S3571C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C13D1Ev,_ZThn32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C13D0Ev,_ZThn32_N8S3571C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZThn120_N8S3571C13D1Ev,_ZThn64_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn120_N8S3571C13D0Ev,_ZThn64_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A4__8S3571C13__8S3571C11[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3571C13D1Ev,_ZThn64_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3571C13D0Ev,_ZThn64_N8S3571C13D0Ev),
};
extern void _ZN8S3571C14D1Ev();
extern void _ZN8S3571C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C14__8S3571C11[] = {
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&_ZN8S3571C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C14D0Ev,
};
extern void _ZN7S3571C3D1Ev();
extern void _ZN7S3571C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C38S3571C14__8S3571C11[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&_ZN7S3571C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C3D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C38S3571C14__A1__8S3571C11[] = {
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C38S3571C14__A1__8S3571C11[] = {
  ABISELECT(2320,1332),
  ABISELECT(2320,1332),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C38S3571C14__8S3571C11[] = {
  ABISELECT(2320,1332),
  ABISELECT(2320,1332),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn584_N7S3571C3D1Ev,_ZThn348_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn584_N7S3571C3D0Ev,_ZThn348_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C38S3571C14__8S3571C11[] = {
  ABISELECT(-584,-348),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-584,-348),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn520_N8S3571C14D1Ev,_ZThn288_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn520_N8S3571C14D0Ev,_ZThn288_N8S3571C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C14__8S3571C11[] = {
  ABISELECT(-520,-288),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C14__8S3571C11[] = {
  ABISELECT(2336,1344),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2336,1344),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C14__8S3571C11[] = {
  ABISELECT(2256,1300),
  ABISELECT(2256,1300),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3571C14D1Ev,_ZThn32_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C14D0Ev,_ZThn32_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C3__8S3571C14__8S3571C11[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C14D1Ev,_ZThn32_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C14D0Ev,_ZThn32_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn648_N8S3571C14D1Ev,_ZThn380_N8S3571C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev)();
extern void ABISELECT(_ZThn648_N8S3571C14D0Ev,_ZThn380_N8S3571C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C14__8S3571C11[] = {
  ABISELECT(-648,-380),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-648,-380),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev),
};
extern void _ZN8S3571C10D1Ev();
extern void _ZN8S3571C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C11[] = {
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&_ZN8S3571C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C10__8S3571C11[] = {
  ABISELECT(2856,1632),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2856,1632),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C10__8S3571C11[] = {
  ABISELECT(2776,1588),
  ABISELECT(2776,1588),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C11[] = {
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C8__A2__8S3571C11[] = {
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C8__A2__8S3571C11[] = {
  ABISELECT(2904,1680),
  ABISELECT(2904,1680),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C8__8S3571C11[] = {
  ABISELECT(2904,1680),
  ABISELECT(2904,1680),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C11[] = {
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__8S3571C11[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__A3__8S3571C11[] = {
  ABISELECT(3432,1992),
  ABISELECT(3432,1992),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__8S3571C11[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__8S3571C11[] = {
  ABISELECT(3376,1960),
  ABISELECT(3376,1960),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void _ZN8S3571C18D1Ev();
extern void _ZN8S3571C18D0Ev();
extern void _ZN8S3571C182v4Ev();
extern void _ZN8S3571C182v5Ev();
extern void _ZN8S3571C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C18__8S3571C11[] = {
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&_ZN8S3571C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C18D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v6Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C78S3571C18__A5__8S3571C11[] = {
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C78S3571C18__A5__8S3571C11[] = {
  ABISELECT(3600,2084),
  ABISELECT(3600,2084),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C88S3571C18__A1__8S3571C11[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C88S3571C18__A6__8S3571C11[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C88S3571C18__A6__8S3571C11[] = {
  ABISELECT(3640,2104),
  ABISELECT(3640,2104),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C88S3571C18__A1__8S3571C11[] = {
  ABISELECT(3640,2104),
  ABISELECT(3640,2104),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C18D1Ev,_ZTv0_n12_N8S3571C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C18D0Ev,_ZTv0_n12_N8S3571C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C18__8S3571C11[] = {
  ABISELECT(3600,2084),
  ABISELECT(3600,2084),
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C18D1Ev,_ZTv0_n12_N8S3571C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C18D0Ev,_ZTv0_n12_N8S3571C18D0Ev),
};
extern void ABISELECT(_ZThn40_N8S3571C18D1Ev,_ZThn20_N8S3571C18D1Ev)();
extern void ABISELECT(_ZThn40_N8S3571C18D0Ev,_ZThn20_N8S3571C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C18__8S3571C11[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3571C18D1Ev,_ZThn20_N8S3571C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3571C18D0Ev,_ZThn20_N8S3571C18D0Ev),
};
extern void _ZN8S3571C15D1Ev();
extern void _ZN8S3571C15D0Ev();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C15__A1__8S3571C11[] = {
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&_ZN8S3571C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C15__A1__8S3571C11[] = {
  0,
  ABISELECT(768,452),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(768,452),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C15__A1__8S3571C11[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(712,420),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C15__A1__8S3571C11[] = {
  ABISELECT(4144,2412),
  ABISELECT(4144,2412),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev),
};
extern void _ZN8S3571C19D1Ev();
extern void _ZN8S3571C19D0Ev();
extern void _ZN8S3571C202v7Ev();
extern void _ZN8S3571C192v8Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C19__8S3571C11[] = {
  ABISELECT(-4208,-2444),
  ABISELECT(-4248,-2468),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&_ZN8S3571C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C19D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3571C192v8Ev,
};
extern void _ZN8S3571C20D1Ev();
extern void _ZN8S3571C20D0Ev();
extern void _ZN8S3571C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C208S3571C19__8S3571C11[] = {
  ABISELECT(-4208,-2444),
  ABISELECT(-4248,-2468),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&_ZN8S3571C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C20D1Ev,_ZThn1732_N8S3571C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C20D0Ev,_ZThn1732_N8S3571C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3571C208S3571C19__8S3571C11[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C208S3571C19__8S3571C11[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C208S3571C19__8S3571C11[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C208S3571C19__8S3571C11[] = {
  ABISELECT(4208,2444),
  ABISELECT(4208,2444),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C19D1Ev,_ZThn1732_N8S3571C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C19D0Ev,_ZThn1732_N8S3571C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3571C19__8S3571C11[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C19D1Ev,_ZTv0_n20_N8S3571C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C19D0Ev,_ZTv0_n20_N8S3571C19D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C19__8S3571C11[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C19D1Ev,_ZTv0_n20_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C19D0Ev,_ZTv0_n20_N8S3571C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C19D1Ev,_ZTvn32_n20_N8S3571C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C19D0Ev,_ZTvn32_n20_N8S3571C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C19__8S3571C11[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C19D1Ev,_ZTvn32_n20_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C19D0Ev,_ZTvn32_n20_N8S3571C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C19__8S3571C11[] = {
  ABISELECT(4208,2444),
  ABISELECT(4208,2444),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev),
};
static  VTT_ENTRY vtt_S3571C11[] = {
  {&(_ZTV8S3571C11[14]),  14,153},
  {&(_tg__ZTV8S3571C12__8S3571C11[12]),  12,14},
  {&(_tg__ZTV7S3571C7__8S3571C12__8S3571C11[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C12__8S3571C11[3]),  3,5},
  {&(_tg__ZTV8S3571C13__8S3571C12__8S3571C11[13]),  13,17},
  {&(_tg__ZTV8S3571C14__8S3571C12__8S3571C11[8]),  8,10},
  {&(_tg__ZTV8S3571C10__8S3571C12__8S3571C11[6]),  6,8},
  {&(_tg__ZTV7S3571C38S3571C14__8S3571C12__8S3571C11[5]),  5,7},
  {&(_tg__ZTV7S3571C8__8S3571C12__8S3571C11[5]),  5,7},
  {&(_tg__ZTV7S3571C9__8S3571C12__8S3571C11[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A3__8S3571C12__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3571C98S3571C13__A1__8S3571C12__8S3571C11[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C98S3571C13__A4__8S3571C12__8S3571C11[4]),  4,6},
  {&(_tg__ZTV8S3571C18__8S3571C12__8S3571C11[8]),  8,13},
  {&(_tg__ZTV7S3571C88S3571C18__A1__8S3571C12__8S3571C11[4]),  4,6},
  {&(_tg__ZTV8S3571C15__A1__8S3571C12__8S3571C11[7]),  7,10},
  {&(_ZTV8S3571C11[22]),  22,153},
  {&(_ZTV8S3571C11[27]),  27,153},
  {&(_ZTV8S3571C11[42]),  42,153},
  {&(_ZTV8S3571C11[67]),  67,153},
  {&(_ZTV8S3571C11[82]),  82,153},
  {&(_ZTV8S3571C11[74]),  74,153},
  {&(_ZTV8S3571C11[89]),  89,153},
  {&(_ZTV8S3571C11[97]),  97,153},
  {&(_ZTV8S3571C11[104]),  104,153},
  {&(_ZTV8S3571C11[50]),  50,153},
  {&(_ZTV8S3571C11[57]),  57,153},
  {&(_ZTV8S3571C11[114]),  114,153},
  {&(_ZTV8S3571C11[123]),  123,153},
  {&(_ZTV8S3571C11[132]),  132,153},
  {&(_ZTV8S3571C11[144]),  144,153},
  {&(_ZTV8S3571C11[151]),  151,153},
  {&(_tg__ZTV7S3571C7__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__8S3571C11[3]),  3,5},
  {&(_tg__ZTV8S3571C13__8S3571C11[9]),  9,13},
  {&(_tg__ZTV8S3571C158S3571C13__8S3571C11[5]),  5,8},
  {&(_tg__ZTV7S3571C9__8S3571C158S3571C13__8S3571C11[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C158S3571C13__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C158S3571C13__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C98S3571C13__A1__8S3571C11[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C98S3571C13__A4__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C98S3571C13__A4__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C98S3571C13__A1__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C98S3571C13__A1__8S3571C11[3]),  3,5},
  {&(_tg__ZTV8S3571C14__8S3571C13__8S3571C11[8]),  8,10},
  {&(_tg__ZTV8S3571C10__8S3571C13__8S3571C11[6]),  6,8},
  {&(_tg__ZTV7S3571C7__8S3571C13__8S3571C11[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C13__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C38S3571C14__8S3571C13__8S3571C11[5]),  5,7},
  {&(_tg__ZTV7S3571C8__8S3571C13__8S3571C11[5]),  5,7},
  {&(_tg__ZTV7S3571C9__8S3571C13__8S3571C11[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A3__8S3571C13__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3571C9__A__8S3571C13__8S3571C11[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A4__8S3571C13__8S3571C11[4]),  4,6},
  {&(_tg__ZTV8S3571C14__8S3571C11[7]),  7,9},
  {&(_tg__ZTV7S3571C38S3571C14__8S3571C11[5]),  5,7},
  {&(_tg__ZTV7S3571C77S3571C38S3571C14__A1__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C38S3571C14__A1__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C38S3571C14__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C8__7S3571C38S3571C14__8S3571C11[5]),  5,7},
  {&(_tg__ZTV8S3571C10__8S3571C14__8S3571C11[6]),  6,8},
  {&(_tg__ZTV7S3571C7__8S3571C14__8S3571C11[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C14__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C3__8S3571C14__8S3571C11[5]),  5,7},
  {&(_tg__ZTV7S3571C8__8S3571C14__8S3571C11[5]),  5,7},
  {&(_tg__ZTV8S3571C10__8S3571C11[5]),  5,7},
  {&(_tg__ZTV7S3571C7__8S3571C10__8S3571C11[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C10__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C8__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C8__A2__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C8__A2__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C8__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C11[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A3__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__A3__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__8S3571C11[3]),  3,5},
  {&(_tg__ZTV8S3571C18__8S3571C11[4]),  4,9},
  {&(_tg__ZTV7S3571C78S3571C18__A5__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C78S3571C18__A5__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C88S3571C18__A1__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C88S3571C18__A6__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C88S3571C18__A6__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C88S3571C18__A1__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3571C18__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C8__8S3571C18__8S3571C11[4]),  4,6},
  {&(_tg__ZTV8S3571C15__A1__8S3571C11[5]),  5,8},
  {&(_tg__ZTV7S3571C9__8S3571C15__A1__8S3571C11[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C15__A1__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C15__A1__8S3571C11[3]),  3,5},
  {&(_tg__ZTV8S3571C19__8S3571C11[6]),  6,10},
  {&(_tg__ZTV8S3571C208S3571C19__8S3571C11[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3571C208S3571C19__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C208S3571C19__8S3571C11[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C208S3571C19__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C208S3571C19__8S3571C11[3]),  3,5},
  {&(_tg__ZTV8S3572C21__8S3571C19__8S3571C11[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C19__8S3571C11[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C19__8S3571C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C19__8S3571C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C11[];
extern  VTBL_ENTRY _ZTV8S3571C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C11[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C19D0Ev,_ZThn1732_N8S3571C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C19D1Ev,_ZThn1732_N8S3571C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C20D0Ev,_ZThn1732_N8S3571C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C20D1Ev,_ZThn1732_N8S3571C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S3571C14D0Ev,_ZThn380_N8S3571C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S3571C14D1Ev,_ZThn380_N8S3571C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3571C14D0Ev,_ZThn288_N8S3571C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S3571C14D1Ev,_ZThn288_N8S3571C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3571C3D0Ev,_ZThn348_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3571C3D1Ev,_ZThn348_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3571C13D0Ev,_ZThn1928_N8S3571C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S3571C13D0Ev,_ZThn1648_N8S3571C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3571C13D1Ev,_ZThn1928_N8S3571C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S3571C13D1Ev,_ZThn1648_N8S3571C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C13D0Ev,_ZTv0_n24_N8S3571C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3571C13D0Ev,_ZThn1556_N8S3571C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C13D1Ev,_ZTv0_n24_N8S3571C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S3571C13D1Ev,_ZThn1556_N8S3571C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3571C13D0Ev,_ZThn1268_N8S3571C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3571C13D1Ev,_ZThn1268_N8S3571C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3571C15D0Ev,_ZThn1928_N8S3571C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S3571C15D1Ev,_ZThn1928_N8S3571C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3571C7D0Ev,_ZThn44_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3571C7D1Ev,_ZThn44_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S3571C12D0Ev,_ZThn3252_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S3571C12D0Ev,_ZThn2428_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S3571C12D1Ev,_ZThn3252_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S3571C12D1Ev,_ZThn2428_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C12D0Ev,_ZTv0_n32_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S3571C12D0Ev,_ZThn2140_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C12D1Ev,_ZTv0_n32_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S3571C12D1Ev,_ZThn2140_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3571C12D0Ev,_ZTv0_n40_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S3571C12D0Ev,_ZThn872_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3571C12D1Ev,_ZTv0_n40_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S3571C12D1Ev,_ZThn872_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C12D0Ev,_ZTv0_n12_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S3571C12D0Ev,_ZThn840_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C12D1Ev,_ZTv0_n12_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S3571C12D1Ev,_ZThn840_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S3571C12D0Ev,_ZThn2924_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S3571C12D0Ev,_ZThn2800_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S3571C12D0Ev,_ZThn2520_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S3571C12D0Ev,_ZThn796_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S3571C12D1Ev,_ZThn2924_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S3571C12D1Ev,_ZThn2800_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S3571C12D1Ev,_ZThn2520_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S3571C12D1Ev,_ZThn796_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C11D0Ev,_ZTv0_n28_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S3571C11D0Ev,_ZThn3284_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C11D1Ev,_ZTv0_n28_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S3571C11D1Ev,_ZThn3284_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C11D0Ev,_ZTv0_n24_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S3571C11D0Ev,_ZThn3252_N8S3571C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S3571C11D0Ev,_ZThn2428_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C11D1Ev,_ZTv0_n24_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S3571C11D1Ev,_ZThn3252_N8S3571C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S3571C11D1Ev,_ZThn2428_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C11D0Ev,_ZTv0_n32_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S3571C11D0Ev,_ZThn2140_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C11D1Ev,_ZTv0_n32_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S3571C11D1Ev,_ZThn2140_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3571C11D0Ev,_ZTv0_n40_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S3571C11D0Ev,_ZThn872_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3571C11D1Ev,_ZTv0_n40_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S3571C11D1Ev,_ZThn872_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C11D0Ev,_ZTv0_n12_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S3571C11D0Ev,_ZThn5016_N8S3571C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S3571C11D0Ev,_ZThn840_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C11D1Ev,_ZTv0_n12_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S3571C11D1Ev,_ZThn5016_N8S3571C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S3571C11D1Ev,_ZThn840_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S3571C11D0Ev,_ZThn2924_N8S3571C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S3571C11D0Ev,_ZThn2800_N8S3571C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S3571C11D0Ev,_ZThn2520_N8S3571C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S3571C11D0Ev,_ZThn796_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S3571C11D1Ev,_ZThn2924_N8S3571C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S3571C11D1Ev,_ZThn2800_N8S3571C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S3571C11D1Ev,_ZThn2520_N8S3571C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S3571C11D1Ev,_ZThn796_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C11 = {  "S3571C11", // class name
  bases_S3571C11, 30,
  &(vtc_S3571C11[0]), // expected_vtbl_contents
  &(vtt_S3571C11[0]), // expected_vtt_contents
  ABISELECT(8592,5032), // object size
  NSPAIRA(_ZTI8S3571C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3571C11),153, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C11),100, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C27  : virtual S3571C16 , S3571C9 {
  ::S3572C17 s3571c27f0;
  void *s3571c27f1;
  int s3571c27f2;
  long double s3571c27f3;
  long double s3571c27f4;
  __tsi64 s3571c27f5;
  int s3571c27f6;
  ~S3571C27(); // tgen
  S3571C27(); // tgen
};
//SIG(-1 S3571C27) C1{ VBC2{ BC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ vd m FC4 FC6{}} Fc:1 Fp[3]} VBC7{ VBC4 BC5 BC3 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} BC7 FC8{ vd m FC9{ VBC4 VBC10{ VBC4 VBC5 Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} FC11{ VBC4 VBC5 BC10 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} Fp Fi FD[2] FL Fi}


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

static void Test_S3571C27()
{
  extern Class_Descriptor cd_S3571C27;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(100,235)];
    init_test(&cd_S3571C27, buf);
    S3571C27 *dp, &lv = *(dp=new (buf) S3571C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1584,936), "sizeof(S3571C27)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C27)");
    /*is_ambiguous_... S3571C16::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C16*), ABISELECT(1256,756), "S3571C27");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(1256,756), "S3571C27");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(1256,756), "S3571C27");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(1256,756), "S3571C27");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(1256,756), "S3571C27");
    /*is_ambiguous_... S3571C16::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C16*), ABISELECT(1296,780), "S3571C27");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(1296,780), "S3571C27");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(1296,780), "S3571C27");
    /*is_ambiguous_... S3571C16::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C16*), ABISELECT(1200,728), "S3571C27");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(1360,812), "S3571C27");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(1416,844), "S3571C27");
    check_base_class_offset(lv, (S3571C9*)(S3571C16*), ABISELECT(1360,812), "S3571C27");
    check_base_class_offset(lv, (S3571C16*), ABISELECT(1200,728), "S3571C27");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), 0, "S3571C27");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(56,32), "S3571C27");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C9*), 0, "S3571C27");
    check_field_offset(lv, s3571c27f0, ABISELECT(224,124), "S3571C27.s3571c27f0");
    check_field_offset(lv, s3571c27f1, ABISELECT(1136,684), "S3571C27.s3571c27f1");
    check_field_offset(lv, s3571c27f2, ABISELECT(1144,688), "S3571C27.s3571c27f2");
    check_field_offset(lv, s3571c27f3, ABISELECT(1152,692), "S3571C27.s3571c27f3");
    check_field_offset(lv, s3571c27f4, ABISELECT(1168,704), "S3571C27.s3571c27f4");
    check_field_offset(lv, s3571c27f5, ABISELECT(1184,716), "S3571C27.s3571c27f5");
    check_field_offset(lv, s3571c27f6, ABISELECT(1192,724), "S3571C27.s3571c27f6");
    test_class_info(&lv, &cd_S3571C27);
    dp->~S3571C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C27(Test_S3571C27, "S3571C27", ABISELECT(1584,936));

#else // __cplusplus

extern void _ZN8S3571C27C1Ev();
extern void _ZN8S3571C27D1Ev();
Name_Map name_map_S3571C27[] = {
  NSPAIR(_ZN8S3571C27C1Ev),
  NSPAIR(_ZN8S3571C27D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C16;
extern VTBL_ENTRY _ZTI8S3571C16[];
extern  VTBL_ENTRY _ZTV8S3571C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C16[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
static Base_Class bases_S3571C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(1256,756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1296,780), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3571C7,    ABISELECT(1200,728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1360,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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(1416,844), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(1360,812), //bcp->offset
    28, //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
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3571C16,    ABISELECT(1200,728), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(56,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3571C9,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C27[];
extern void _ZN8S3571C27D1Ev();
extern void _ZN8S3571C27D0Ev();
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZThn56_N8S3571C27D1Ev,_ZThn32_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn56_N8S3571C27D0Ev,_ZThn32_N8S3571C27D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn1200_N8S3571C27D1Ev,_ZThn728_N8S3571C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev)();
extern void ABISELECT(_ZThn1200_N8S3571C27D0Ev,_ZThn728_N8S3571C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C27D1Ev,_ZTv0_n12_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn1296_N8S3571C27D1Ev,_ZThn780_N8S3571C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C27D0Ev,_ZTv0_n12_N8S3571C27D0Ev)();
extern void ABISELECT(_ZThn1296_N8S3571C27D0Ev,_ZThn780_N8S3571C27D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C27D1Ev,_ZTv0_n20_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn1360_N8S3571C27D1Ev,_ZThn812_N8S3571C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C27D0Ev,_ZTv0_n20_N8S3571C27D0Ev)();
extern void ABISELECT(_ZThn1360_N8S3571C27D0Ev,_ZThn812_N8S3571C27D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3571C27D1Ev,_ZTvn32_n20_N8S3571C27D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C27D0Ev,_ZTvn32_n20_N8S3571C27D0Ev)();
static  VTBL_ENTRY vtc_S3571C27[] = {
  ABISELECT(1360,812),
  ABISELECT(1200,728),
  ABISELECT(1296,780),
  ABISELECT(1256,756),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&_ZN8S3571C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C27D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(1240,748),
  ABISELECT(1200,724),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3571C27D1Ev,_ZThn32_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3571C27D0Ev,_ZThn32_N8S3571C27D0Ev),
  ABISELECT(-1200,-728),
  ABISELECT(160,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  ABISELECT(-1200,-728),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev),
  ABISELECT(-1296,-780),
  ABISELECT(-1296,-780),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C27D1Ev,_ZTv0_n12_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C27D0Ev,_ZTv0_n12_N8S3571C27D0Ev),
  0,
  ABISELECT(-1360,-812),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-1360,-812),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C27D1Ev,_ZTv0_n20_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C27D0Ev,_ZTv0_n20_N8S3571C27D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-1416,-844),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C27D1Ev,_ZTvn32_n20_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C27D0Ev,_ZTvn32_n20_N8S3571C27D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C27[];
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__A__8S3571C27[] = {
  ABISELECT(1296,780),
  ABISELECT(1256,756),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A2__8S3571C27[] = {
  ABISELECT(1240,748),
  ABISELECT(1200,724),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn1240_N7S3571C7D1Ev,_ZThn748_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn1240_N7S3571C7D0Ev,_ZThn748_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__A2__8S3571C27[] = {
  ABISELECT(-1240,-748),
  ABISELECT(-1240,-748),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__A__8S3571C27[] = {
  ABISELECT(1240,748),
  ABISELECT(1200,724),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn1296_N7S3571C9D1Ev,_ZThn780_N7S3571C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
extern void ABISELECT(_ZThn1296_N7S3571C9D0Ev,_ZThn780_N7S3571C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__A__8S3571C27[] = {
  ABISELECT(-1296,-780),
  ABISELECT(-1296,-780),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void _ZN8S3571C16D1Ev();
extern void _ZN8S3571C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C16__8S3571C27[] = {
  ABISELECT(160,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&_ZN8S3571C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C16D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C78S3571C16__8S3571C27[] = {
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S3571C7D1Ev,_ZThn52_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S3571C7D0Ev,_ZThn52_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C78S3571C16__8S3571C27[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev)();
extern void ABISELECT(_ZThn96_N8S3571C16D1Ev,_ZThn52_N8S3571C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev)();
extern void ABISELECT(_ZThn96_N8S3571C16D0Ev,_ZThn52_N8S3571C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C16__8S3571C27[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZThn160_N8S3571C16D1Ev,_ZThn84_N8S3571C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev)();
extern void ABISELECT(_ZThn160_N8S3571C16D0Ev,_ZThn84_N8S3571C16D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C16__8S3571C27[] = {
  0,
  ABISELECT(-160,-84),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C16__8S3571C27[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C27[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C27[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__A1__8S3571C27[] = {
  ABISELECT(120,64),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__8S3571C27[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__8S3571C27[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
static  VTT_ENTRY vtt_S3571C27[] = {
  {&(_ZTV8S3571C27[6]),  6,43},
  {&(_tg__ZTV7S3571C9__A__8S3571C27[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A2__8S3571C27[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__A2__8S3571C27[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__A__8S3571C27[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__A__8S3571C27[3]),  3,5},
  {&(_ZTV8S3571C27[21]),  21,43},
  {&(_ZTV8S3571C27[26]),  26,43},
  {&(_ZTV8S3571C27[34]),  34,43},
  {&(_ZTV8S3571C27[41]),  41,43},
  {&(_ZTV8S3571C27[13]),  13,43},
  {&(_tg__ZTV8S3571C16__8S3571C27[5]),  5,7},
  {&(_tg__ZTV7S3571C78S3571C16__8S3571C27[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C78S3571C16__8S3571C27[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3571C16__8S3571C27[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C16__8S3571C27[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C16__8S3571C27[4]),  4,6},
  {&(_tg__ZTV7S3571C9__8S3571C27[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C27[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__A1__8S3571C27[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__8S3571C27[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__8S3571C27[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C27[];
extern  VTBL_ENTRY _ZTV8S3571C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C27[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3571C16D0Ev,_ZThn84_N8S3571C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3571C16D1Ev,_ZThn84_N8S3571C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3571C16D0Ev,_ZThn52_N8S3571C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3571C16D1Ev,_ZThn52_N8S3571C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N7S3571C9D0Ev,_ZThn780_N7S3571C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N7S3571C9D1Ev,_ZThn780_N7S3571C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3571C7D0Ev,_ZThn52_N7S3571C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1240_N7S3571C7D0Ev,_ZThn748_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3571C7D1Ev,_ZThn52_N7S3571C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1240_N7S3571C7D1Ev,_ZThn748_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C27D0Ev,_ZTv0_n20_N8S3571C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1360_N8S3571C27D0Ev,_ZThn812_N8S3571C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C27D1Ev,_ZTv0_n20_N8S3571C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1360_N8S3571C27D1Ev,_ZThn812_N8S3571C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C27D0Ev,_ZTv0_n12_N8S3571C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S3571C27D0Ev,_ZThn780_N8S3571C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C27D1Ev,_ZTv0_n12_N8S3571C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S3571C27D1Ev,_ZThn780_N8S3571C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N8S3571C27D0Ev,_ZThn728_N8S3571C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N8S3571C27D1Ev,_ZThn728_N8S3571C27D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C27 = {  "S3571C27", // class name
  bases_S3571C27, 10,
  &(vtc_S3571C27[0]), // expected_vtbl_contents
  &(vtt_S3571C27[0]), // expected_vtt_contents
  ABISELECT(1584,936), // object size
  NSPAIRA(_ZTI8S3571C27),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3571C27),43, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C27),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C26  : S3572C21 , S3571C27 , S3571C15 , virtual S3571C20 {
  int s3571c26f0;
  void *s3571c26f1;
  ~S3571C26(); // tgen
  S3571C26(); // tgen
};
//SIG(-1 S3571C26) C1{ BC2{ vd m FD} BC3{ VBC4{ BC5{ VBC6{ m Fp Fs Fi Fp Fl[2]} VBC7{ vd m FC6 FC8{}} Fc:1 Fp[3]} VBC9{ VBC6 BC7 BC5 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} BC9 FC10{ vd m FC11{ VBC6 VBC12{ VBC6 VBC7 Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} FC13{ VBC6 VBC7 BC12 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC6[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} Fp Fi FD[2] FL Fi} BC14{ VBC9 vd v2 Fi Fp Fi:2 FD Fp} VBC15{ VBC2 VBC9 BC16{ m Fp Fi[2] FU17{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC6 vd v3 Fc[7] Fp FD FC18{ VBC6 VBC7 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC6[9] Fi} FL FL Fl Fi Fi FL[3] FD} Fi Fp}


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

static void Test_S3571C26()
{
  extern Class_Descriptor cd_S3571C26;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(160,379)];
    init_test(&cd_S3571C26, buf);
    S3571C26 *dp, &lv = *(dp=new (buf) S3571C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2544,1512), "sizeof(S3571C26)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C26)");
    /*is_ambiguous_... S3571C26::S3572C21 */ AMB_check_base_class_offset(lv, (S3572C21*), 0, "S3571C26");
    /*is_ambiguous_... S3571C16::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C16*), ABISELECT(1360,812), "S3571C26");
    /*is_ambiguous_... S3571C26::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(1360,812), "S3571C26");
    /*is_ambiguous_... S3571C26::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(1360,812), "S3571C26");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*)(S3571C27*), ABISELECT(1360,812), "S3571C26");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*)(S3571C27*), ABISELECT(1360,812), "S3571C26");
    /*is_ambiguous_... S3571C16::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C16*), ABISELECT(1400,836), "S3571C26");
    /*is_ambiguous_... S3571C26::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(1400,836), "S3571C26");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*)(S3571C27*), ABISELECT(1400,836), "S3571C26");
    /*is_ambiguous_... S3571C16::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C16*), ABISELECT(1304,784), "S3571C26");
    /*is_ambiguous_... S3571C26::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(1456,868), "S3571C26");
    /*is_ambiguous_... S3571C26::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(1512,900), "S3571C26");
    check_base_class_offset(lv, (S3571C9*)(S3571C16*), ABISELECT(1456,868), "S3571C26");
    check_base_class_offset(lv, (S3571C9*)(S3571C15*), ABISELECT(1456,868), "S3571C26");
    check_base_class_offset(lv, (S3571C9*)(S3571C20*), ABISELECT(1456,868), "S3571C26");
    check_base_class_offset(lv, (S3571C16*)(S3571C27*), ABISELECT(1304,784), "S3571C26");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*)(S3571C27*), ABISELECT(32,16), "S3571C26");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*)(S3571C27*), ABISELECT(88,48), "S3571C26");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C27*), ABISELECT(32,16), "S3571C26");
    check_base_class_offset(lv, (S3571C27*), ABISELECT(32,16), "S3571C26");
    check_base_class_offset(lv, (S3571C15*), ABISELECT(1232,744), "S3571C26");
    check_base_class_offset(lv, (S3572C21*)(S3571C20*), ABISELECT(2512,1496), "S3571C26");
    check_base_class_offset(lv, (S3572C22*)(S3571C20*), ABISELECT(1696,996), "S3571C26");
    /*is_ambiguous_... S3571C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C20*), ABISELECT(1792,1048), "S3571C26");
    check_base_class_offset(lv, (S3571C20*), ABISELECT(1680,992), "S3571C26");
    check_field_offset(lv, s3571c26f0, ABISELECT(1288,776), "S3571C26.s3571c26f0");
    check_field_offset(lv, s3571c26f1, ABISELECT(1296,780), "S3571C26.s3571c26f1");
    test_class_info(&lv, &cd_S3571C26);
    dp->~S3571C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C26(Test_S3571C26, "S3571C26", ABISELECT(2544,1512));

#else // __cplusplus

extern void _ZN8S3571C26C1Ev();
extern void _ZN8S3571C26D1Ev();
Name_Map name_map_S3571C26[] = {
  NSPAIR(_ZN8S3571C26C1Ev),
  NSPAIR(_ZN8S3571C26D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C16;
extern VTBL_ENTRY _ZTI8S3571C16[];
extern  VTBL_ENTRY _ZTV8S3571C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C16[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C27;
extern VTBL_ENTRY _ZTI8S3571C27[];
extern  VTBL_ENTRY _ZTV8S3571C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C27[];
extern Class_Descriptor cd_S3571C15;
extern VTBL_ENTRY _ZTI8S3571C15[];
extern  VTBL_ENTRY _ZTV8S3571C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C15[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3571C20;
extern VTBL_ENTRY _ZTI8S3571C20[];
extern  VTBL_ENTRY _ZTV8S3571C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C20[];
static Base_Class bases_S3571C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3572C5,    ABISELECT(1360,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
    3, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1400,836), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3571C7,    ABISELECT(1304,784), //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
    7, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1456,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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(1512,900), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(1456,868), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3571C16,    ABISELECT(1304,784), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(88,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3571C27,    ABISELECT(32,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3571C15,    ABISELECT(1232,744), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C21,    ABISELECT(2512,1496), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(1696,996), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3572C5,    ABISELECT(1792,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
    16, //immediately_derived
  0, 0},
  {&cd_S3571C20,    ABISELECT(1680,992), //bcp->offset
    61, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C26[];
extern void _ZN8S3571C26D1Ev();
extern void _ZN8S3571C26D0Ev();
extern void ABISELECT(_ZThn32_N8S3571C26D1Ev,_ZThn16_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn32_N8S3571C26D0Ev,_ZThn16_N8S3571C26D0Ev)();
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZThn88_N8S3571C26D1Ev,_ZThn48_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn88_N8S3571C26D0Ev,_ZThn48_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn1232_N8S3571C26D1Ev,_ZThn744_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn1232_N8S3571C26D0Ev,_ZThn744_N8S3571C26D0Ev)();
extern void _ZN8S3571C152v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3571C26D1Ev,_ZTv0_n24_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn1304_N8S3571C26D1Ev,_ZThn784_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C26D0Ev,_ZTv0_n24_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn1304_N8S3571C26D0Ev,_ZThn784_N8S3571C26D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn1400_N8S3571C26D1Ev,_ZThn836_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn1400_N8S3571C26D0Ev,_ZThn836_N8S3571C26D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C26D1Ev,_ZTv0_n20_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn1456_N8S3571C26D1Ev,_ZThn868_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C26D0Ev,_ZTv0_n20_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn1456_N8S3571C26D0Ev,_ZThn868_N8S3571C26D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3571C26D1Ev,_ZTvn32_n20_N8S3571C26D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C26D0Ev,_ZTvn32_n20_N8S3571C26D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3571C26D1Ev,_ZTv0_n28_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn1680_N8S3571C26D1Ev,_ZThn992_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3571C26D0Ev,_ZTv0_n28_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn1680_N8S3571C26D0Ev,_ZThn992_N8S3571C26D0Ev)() __attribute__((weak));
extern void _ZN8S3571C202v7Ev();
extern void ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn2512_N8S3571C26D1Ev,_ZThn1496_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn2512_N8S3571C26D0Ev,_ZThn1496_N8S3571C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C26[] = {
  ABISELECT(2512,1496),
  ABISELECT(1680,992),
  ABISELECT(1456,868),
  ABISELECT(1400,836),
  ABISELECT(1360,812),
  ABISELECT(1304,784),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&_ZN8S3571C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C26D0Ev,
  ABISELECT(1424,852),
  ABISELECT(1272,768),
  ABISELECT(1368,820),
  ABISELECT(1328,796),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3571C26D1Ev,_ZThn16_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3571C26D0Ev,_ZThn16_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(1312,788),
  ABISELECT(1272,764),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3571C26D1Ev,_ZThn48_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3571C26D0Ev,_ZThn48_N8S3571C26D0Ev),
  ABISELECT(168,92),
  ABISELECT(128,68),
  ABISELECT(224,124),
  ABISELECT(-1232,-744),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3571C26D1Ev,_ZThn744_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3571C26D0Ev,_ZThn744_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  ABISELECT(-1304,-784),
  ABISELECT(152,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  ABISELECT(-1304,-784),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C26D1Ev,_ZTv0_n24_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C26D0Ev,_ZTv0_n24_N8S3571C26D0Ev),
  ABISELECT(-1400,-836),
  ABISELECT(-1400,-836),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev),
  0,
  ABISELECT(-1456,-868),
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  ABISELECT(-1456,-868),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C26D1Ev,_ZTv0_n20_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C26D0Ev,_ZTv0_n20_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(-1512,-900),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C26D1Ev,_ZTvn32_n20_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C26D0Ev,_ZTvn32_n20_N8S3571C26D0Ev),
  0,
  ABISELECT(-1680,-992),
  ABISELECT(-280,-156),
  ABISELECT(-320,-180),
  ABISELECT(-224,-124),
  ABISELECT(832,504),
  ABISELECT(-1680,-992),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C26D1Ev,_ZTv0_n28_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C26D0Ev,_ZTv0_n28_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
  ABISELECT(-2512,-1496),
  ABISELECT(-2512,-1496),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C26[];
extern void _ZN8S3571C27D1Ev();
extern void _ZN8S3571C27D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C27__8S3571C26[] = {
  ABISELECT(1424,852),
  ABISELECT(1272,768),
  ABISELECT(1368,820),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&_ZN8S3571C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C27D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C98S3571C27__A1__8S3571C26[] = {
  ABISELECT(1368,820),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C27__A2__8S3571C26[] = {
  ABISELECT(1312,788),
  ABISELECT(1272,764),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn1312_N7S3571C7D1Ev,_ZThn788_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn1312_N7S3571C7D0Ev,_ZThn788_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C98S3571C27__A2__8S3571C26[] = {
  ABISELECT(-1312,-788),
  ABISELECT(-1312,-788),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C98S3571C27__A1__8S3571C26[] = {
  ABISELECT(1312,788),
  ABISELECT(1272,764),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn1368_N7S3571C9D1Ev,_ZThn820_N7S3571C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
extern void ABISELECT(_ZThn1368_N7S3571C9D0Ev,_ZThn820_N7S3571C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C98S3571C27__A1__8S3571C26[] = {
  ABISELECT(-1368,-820),
  ABISELECT(-1368,-820),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn1272_N8S3571C27D1Ev,_ZThn768_N8S3571C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev)();
extern void ABISELECT(_ZThn1272_N8S3571C27D0Ev,_ZThn768_N8S3571C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C16__8S3571C27__8S3571C26[] = {
  ABISELECT(-1272,-768),
  ABISELECT(152,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  ABISELECT(-1272,-768),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C27D1Ev,_ZTv0_n12_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn1368_N8S3571C27D1Ev,_ZThn820_N8S3571C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C27D0Ev,_ZTv0_n12_N8S3571C27D0Ev)();
extern void ABISELECT(_ZThn1368_N8S3571C27D0Ev,_ZThn820_N8S3571C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C27__8S3571C26[] = {
  ABISELECT(-1368,-820),
  ABISELECT(-1368,-820),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C27D1Ev,_ZTv0_n12_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C27D0Ev,_ZTv0_n12_N8S3571C27D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C27D1Ev,_ZTv0_n20_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn1424_N8S3571C27D1Ev,_ZThn852_N8S3571C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C27D0Ev,_ZTv0_n20_N8S3571C27D0Ev)();
extern void ABISELECT(_ZThn1424_N8S3571C27D0Ev,_ZThn852_N8S3571C27D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C27__8S3571C26[] = {
  0,
  ABISELECT(-1424,-852),
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  ABISELECT(-1424,-852),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C27D1Ev,_ZTv0_n20_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C27D0Ev,_ZTv0_n20_N8S3571C27D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C27D1Ev,_ZTvn32_n20_N8S3571C27D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C27D0Ev,_ZTvn32_n20_N8S3571C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C27__8S3571C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(-1480,-884),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C27D1Ev,_ZTvn32_n20_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C27D0Ev,_ZTvn32_n20_N8S3571C27D0Ev),
};
extern void ABISELECT(_ZThn56_N8S3571C27D1Ev,_ZThn32_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn56_N8S3571C27D0Ev,_ZThn32_N8S3571C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A2__8S3571C27__8S3571C26[] = {
  ABISELECT(1312,788),
  ABISELECT(1272,764),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3571C27D1Ev,_ZThn32_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3571C27D0Ev,_ZThn32_N8S3571C27D0Ev),
};
extern void _ZN8S3571C15D1Ev();
extern void _ZN8S3571C15D0Ev();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C15__8S3571C26[] = {
  ABISELECT(168,92),
  ABISELECT(128,68),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&_ZN8S3571C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZThn224_N8S3571C15D1Ev,_ZThn124_N8S3571C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev)();
extern void ABISELECT(_ZThn224_N8S3571C15D0Ev,_ZThn124_N8S3571C15D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C15__8S3571C26[] = {
  0,
  ABISELECT(-224,-124),
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C15__8S3571C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(-280,-156),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev)();
extern void ABISELECT(_ZThn168_N8S3571C15D1Ev,_ZThn92_N8S3571C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev)();
extern void ABISELECT(_ZThn168_N8S3571C15D0Ev,_ZThn92_N8S3571C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C15__8S3571C26[] = {
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev),
};
extern void _ZN8S3571C16D1Ev();
extern void _ZN8S3571C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C16__8S3571C26[] = {
  ABISELECT(152,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&_ZN8S3571C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C16D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C78S3571C16__8S3571C26[] = {
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S3571C7D1Ev,_ZThn52_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S3571C7D0Ev,_ZThn52_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C78S3571C16__8S3571C26[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev)();
extern void ABISELECT(_ZThn96_N8S3571C16D1Ev,_ZThn52_N8S3571C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev)();
extern void ABISELECT(_ZThn96_N8S3571C16D0Ev,_ZThn52_N8S3571C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C16__8S3571C26[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZThn152_N8S3571C16D1Ev,_ZThn84_N8S3571C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev)();
extern void ABISELECT(_ZThn152_N8S3571C16D0Ev,_ZThn84_N8S3571C16D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C16__8S3571C26[] = {
  0,
  ABISELECT(-152,-84),
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C16__8S3571C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C26[] = {
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__A1__8S3571C26[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__8S3571C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__8S3571C26[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void _ZN8S3571C20D1Ev();
extern void _ZN8S3571C20D0Ev();
extern void _ZN8S3571C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C20__8S3571C26[] = {
  ABISELECT(-280,-156),
  ABISELECT(-320,-180),
  ABISELECT(-224,-124),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&_ZN8S3571C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZThn832_N8S3571C20D1Ev,_ZThn504_N8S3571C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
extern void ABISELECT(_ZThn832_N8S3571C20D0Ev,_ZThn504_N8S3571C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3571C20__8S3571C26[] = {
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C20__8S3571C26[] = {
  0,
  ABISELECT(224,124),
  ABISELECT(-56,-32),
  ABISELECT(-96,-56),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C20__8S3571C26[] = {
  ABISELECT(-112,-64),
  ABISELECT(-152,-88),
  ABISELECT(168,92),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C20__8S3571C26[] = {
  ABISELECT(280,156),
  ABISELECT(280,156),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
static  VTT_ENTRY vtt_S3571C26[] = {
  {&(_ZTV8S3571C26[8]),  8,77},
  {&(_tg__ZTV8S3571C27__8S3571C26[6]),  6,9},
  {&(_tg__ZTV7S3571C98S3571C27__A1__8S3571C26[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C98S3571C27__A2__8S3571C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C98S3571C27__A2__8S3571C26[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C98S3571C27__A1__8S3571C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C98S3571C27__A1__8S3571C26[3]),  3,5},
  {&(_tg__ZTV8S3571C16__8S3571C27__8S3571C26[6]),  6,8},
  {&(_tg__ZTV7S3572C4__8S3571C27__8S3571C26[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C27__8S3571C26[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C27__8S3571C26[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C9__A2__8S3571C27__8S3571C26[4]),  4,6},
  {&(_tg__ZTV8S3571C15__8S3571C26[5]),  5,8},
  {&(_tg__ZTV7S3571C9__8S3571C15__8S3571C26[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C15__8S3571C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C15__8S3571C26[3]),  3,5},
  {&(_ZTV8S3571C26[16]),  16,77},
  {&(_ZTV8S3571C26[39]),  39,77},
  {&(_ZTV8S3571C26[44]),  44,77},
  {&(_ZTV8S3571C26[52]),  52,77},
  {&(_ZTV8S3571C26[59]),  59,77},
  {&(_ZTV8S3571C26[23]),  23,77},
  {&(_ZTV8S3571C26[30]),  30,77},
  {&(_ZTV8S3571C26[69]),  69,77},
  {&(_ZTV8S3571C26[75]),  75,77},
  {&(_tg__ZTV8S3571C16__8S3571C26[5]),  5,7},
  {&(_tg__ZTV7S3571C78S3571C16__8S3571C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C78S3571C16__8S3571C26[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3571C16__8S3571C26[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C16__8S3571C26[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C16__8S3571C26[4]),  4,6},
  {&(_tg__ZTV7S3571C9__8S3571C26[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__A1__8S3571C26[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__8S3571C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__8S3571C26[3]),  3,5},
  {&(_tg__ZTV8S3571C20__8S3571C26[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3571C20__8S3571C26[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C20__8S3571C26[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C20__8S3571C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C20__8S3571C26[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C26[];
extern  VTBL_ENTRY _ZTV8S3571C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C26[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3571C20D0Ev,_ZThn504_N8S3571C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3571C20D1Ev,_ZThn504_N8S3571C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S3571C16D0Ev,_ZThn84_N8S3571C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S3571C16D1Ev,_ZThn84_N8S3571C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3571C16D0Ev,_ZThn52_N8S3571C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3571C16D1Ev,_ZThn52_N8S3571C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3571C15D0Ev,_ZThn92_N8S3571C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3571C15D1Ev,_ZThn92_N8S3571C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3571C15D0Ev,_ZThn124_N8S3571C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3571C15D1Ev,_ZThn124_N8S3571C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C27D0Ev,_ZTv0_n20_N8S3571C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N8S3571C27D0Ev,_ZThn852_N8S3571C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C27D1Ev,_ZTv0_n20_N8S3571C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N8S3571C27D1Ev,_ZThn852_N8S3571C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C27D0Ev,_ZTv0_n12_N8S3571C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S3571C27D0Ev,_ZThn820_N8S3571C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C27D1Ev,_ZTv0_n12_N8S3571C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S3571C27D1Ev,_ZThn820_N8S3571C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N8S3571C27D0Ev,_ZThn768_N8S3571C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N8S3571C27D1Ev,_ZThn768_N8S3571C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N7S3571C9D0Ev,_ZThn820_N7S3571C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N7S3571C9D1Ev,_ZThn820_N7S3571C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3571C7D0Ev,_ZThn52_N7S3571C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N7S3571C7D0Ev,_ZThn788_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3571C7D1Ev,_ZThn52_N7S3571C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N7S3571C7D1Ev,_ZThn788_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C26D0Ev,_ZTv0_n28_N8S3571C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1680_N8S3571C26D0Ev,_ZThn992_N8S3571C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C26D1Ev,_ZTv0_n28_N8S3571C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1680_N8S3571C26D1Ev,_ZThn992_N8S3571C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C26D0Ev,_ZTv0_n20_N8S3571C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S3571C26D0Ev,_ZThn868_N8S3571C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C26D1Ev,_ZTv0_n20_N8S3571C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S3571C26D1Ev,_ZThn868_N8S3571C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2512_N8S3571C26D0Ev,_ZThn1496_N8S3571C26D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N8S3571C26D0Ev,_ZThn836_N8S3571C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2512_N8S3571C26D1Ev,_ZThn1496_N8S3571C26D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N8S3571C26D1Ev,_ZThn836_N8S3571C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C26D0Ev,_ZTv0_n24_N8S3571C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1304_N8S3571C26D0Ev,_ZThn784_N8S3571C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C26D1Ev,_ZTv0_n24_N8S3571C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1304_N8S3571C26D1Ev,_ZThn784_N8S3571C26D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C26 = {  "S3571C26", // class name
  bases_S3571C26, 17,
  &(vtc_S3571C26[0]), // expected_vtbl_contents
  &(vtt_S3571C26[0]), // expected_vtt_contents
  ABISELECT(2544,1512), // object size
  NSPAIRA(_ZTI8S3571C26),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3571C26),77, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C26),41, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C25  : S3571C16 , virtual S3571C3 , S3571C26 {
  void *s3571c25f0[6];
  int s3571c25f1;
  ::S3571C16 s3571c25f2;
  int s3571c25f3;
  ::S3571C7 s3571c25f4;
  __tsi64 s3571c25f5;
  int s3571c25f6[10];
  int s3571c25f7;
  ::S3572C28 s3571c25f8[2];
  long double s3571c25f9;
  int s3571c25f10;
  int s3571c25f11:7;
  virtual void  v10(); // _ZN8S3571C253v10Ev
  virtual void  v11(); // _ZN8S3571C253v11Ev
  ~S3571C25(); // tgen
  S3571C25(); // tgen
};
//SIG(-1 S3571C25) C1{ BC2{ BC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ vd m FC4 FC6{}} Fc:1 Fp[3]} VBC7{ VBC4 BC5 BC3 vd v3 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} VBC8{ VBC5 BC3 VBC9{ VBC4 VBC5 BC3 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC7} BC10{ BC11{ vd m FD} BC12{ VBC2 BC7 FC13{ vd m FC14{ VBC4 VBC15{ VBC4 VBC5 Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} FC16{ VBC4 VBC5 BC15 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} Fp Fi FD[2] FL Fi} BC17{ VBC7 vd v4 Fi Fp Fi:2 FD Fp} VBC18{ VBC11 VBC7 BC19{ m Fp Fi[2] FU20{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v5 Fc[7] Fp FD FC9 FL FL Fl Fi Fi FL[3] FD} Fi Fp} v1 v2 Fp[6] Fi FC2 Fi FC3 FL Fi[10] Fi FU21{ m Fi Fi[6] Fc Fi Fi Fp Fp[5] Fi Fc FL Fp Fp Fp}[2] FD Fi Fi:7}


void  S3571C25 ::v10(){vfunc_called(this, "_ZN8S3571C253v10Ev");}
void  S3571C25 ::v11(){vfunc_called(this, "_ZN8S3571C253v11Ev");}
S3571C25 ::~S3571C25(){ note_dtor("S3571C25", this);} // tgen
S3571C25 ::S3571C25(){ note_ctor("S3571C25", this);} // tgen

static void Test_S3571C25()
{
  extern Class_Descriptor cd_S3571C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(264,615)];
    init_test(&cd_S3571C25, buf);
    S3571C25 *dp, &lv = *(dp=new (buf) S3571C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4208,2456), "sizeof(S3571C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C25)");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C16*), ABISELECT(2120,1248), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(2120,1248), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(2120,1248), "S3571C25");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C3*), ABISELECT(2120,1248), "S3571C25");
    check_base_class_offset(lv, (S3572C5*)(S3571C8*), ABISELECT(2120,1248), "S3571C25");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*), ABISELECT(2120,1248), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C16*), ABISELECT(2120,1248), "S3571C25");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*)(S3571C27*)(S3571C26*), ABISELECT(2120,1248), "S3571C25");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*)(S3571C27*)(S3571C26*), ABISELECT(2120,1248), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C16*), ABISELECT(2160,1272), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(2160,1272), "S3571C25");
    check_base_class_offset(lv, (S3572C4*)(S3571C3*), ABISELECT(2160,1272), "S3571C25");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C3*), ABISELECT(2160,1272), "S3571C25");
    check_base_class_offset(lv, (S3572C4*)(S3571C8*), ABISELECT(2160,1272), "S3571C25");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*), ABISELECT(2160,1272), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C16*), ABISELECT(2160,1272), "S3571C25");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*)(S3571C27*)(S3571C26*), ABISELECT(2160,1272), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C16*), 0, "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(2224,1304), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(2280,1336), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C16*), ABISELECT(2224,1304), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C16*), ABISELECT(2224,1304), "S3571C25");
    check_base_class_offset(lv, (S3571C9*)(S3571C15*)(S3571C26*), ABISELECT(2224,1304), "S3571C25");
    check_base_class_offset(lv, (S3571C9*)(S3571C20*), ABISELECT(2224,1304), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3571C16*), 0, "S3571C25");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C3*), ABISELECT(2448,1428), "S3571C25");
    check_base_class_offset(lv, (S3571C7*)(S3571C8*), ABISELECT(2816,1628), "S3571C25");
    check_base_class_offset(lv, (S3571C8*)(S3571C3*), ABISELECT(2816,1628), "S3571C25");
    check_base_class_offset(lv, (S3571C3*), ABISELECT(2448,1428), "S3571C25");
    /*is_ambiguous_... S3571C26::S3572C21 */ AMB_check_base_class_offset(lv, (S3572C21*)(S3571C26*), ABISELECT(64,28), "S3571C25");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C16*), ABISELECT(3280,1908), "S3571C25");
    check_base_class_offset(lv, (S3571C16*)(S3571C27*)(S3571C26*), ABISELECT(3280,1908), "S3571C25");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*)(S3571C27*)(S3571C26*), ABISELECT(96,44), "S3571C25");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*)(S3571C27*)(S3571C26*), ABISELECT(152,76), "S3571C25");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C27*)(S3571C26*), ABISELECT(96,44), "S3571C25");
    check_base_class_offset(lv, (S3571C27*)(S3571C26*), ABISELECT(96,44), "S3571C25");
    check_base_class_offset(lv, (S3571C15*)(S3571C26*), ABISELECT(1296,772), "S3571C25");
    check_base_class_offset(lv, (S3572C21*)(S3571C20*), ABISELECT(4176,2440), "S3571C25");
    check_base_class_offset(lv, (S3572C22*)(S3571C20*), ABISELECT(3360,1940), "S3571C25");
    /*is_ambiguous_... S3571C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C20*), ABISELECT(3456,1992), "S3571C25");
    check_base_class_offset(lv, (S3571C20*)(S3571C26*), ABISELECT(3344,1936), "S3571C25");
    check_base_class_offset(lv, (S3571C26*), ABISELECT(64,28), "S3571C25");
    check_field_offset(lv, s3571c25f0, ABISELECT(1368,812), "S3571C25.s3571c25f0");
    check_field_offset(lv, s3571c25f1, ABISELECT(1416,836), "S3571C25.s3571c25f1");
    check_field_offset(lv, s3571c25f2, ABISELECT(1424,840), "S3571C25.s3571c25f2");
    check_field_offset(lv, s3571c25f3, ABISELECT(1808,1048), "S3571C25.s3571c25f3");
    check_field_offset(lv, s3571c25f4, ABISELECT(1816,1052), "S3571C25.s3571c25f4");
    check_field_offset(lv, s3571c25f5, ABISELECT(1952,1128), "S3571C25.s3571c25f5");
    check_field_offset(lv, s3571c25f6, ABISELECT(1960,1136), "S3571C25.s3571c25f6");
    check_field_offset(lv, s3571c25f7, ABISELECT(2000,1176), "S3571C25.s3571c25f7");
    check_field_offset(lv, s3571c25f8, ABISELECT(2008,1180), "S3571C25.s3571c25f8");
    check_field_offset(lv, s3571c25f9, ABISELECT(2096,1228), "S3571C25.s3571c25f9");
    check_field_offset(lv, s3571c25f10, ABISELECT(2112,1240), "S3571C25.s3571c25f10");
    set_bf_and_test(lv, s3571c25f11, ABISELECT(2116,1244), 0, 7, 1, "S3571C25");
    set_bf_and_test(lv, s3571c25f11, ABISELECT(2116,1244), 0, 7, hide_sll(1LL<<6), "S3571C25");
    test_class_info(&lv, &cd_S3571C25);
    dp->~S3571C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C25(Test_S3571C25, "S3571C25", ABISELECT(4208,2456));

#else // __cplusplus

extern void _ZN8S3571C25C1Ev();
extern void _ZN8S3571C25D1Ev();
Name_Map name_map_S3571C25[] = {
  NSPAIR(_ZN8S3571C25C1Ev),
  NSPAIR(_ZN8S3571C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C16;
extern VTBL_ENTRY _ZTI8S3571C16[];
extern  VTBL_ENTRY _ZTV8S3571C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C16[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
extern Class_Descriptor cd_S3571C3;
extern VTBL_ENTRY _ZTI7S3571C3[];
extern  VTBL_ENTRY _ZTV7S3571C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C3[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C16;
extern VTBL_ENTRY _ZTI8S3571C16[];
extern  VTBL_ENTRY _ZTV8S3571C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C16[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C27;
extern VTBL_ENTRY _ZTI8S3571C27[];
extern  VTBL_ENTRY _ZTV8S3571C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C27[];
extern Class_Descriptor cd_S3571C15;
extern VTBL_ENTRY _ZTI8S3571C15[];
extern  VTBL_ENTRY _ZTV8S3571C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C15[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3571C20;
extern VTBL_ENTRY _ZTI8S3571C20[];
extern  VTBL_ENTRY _ZTV8S3571C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C20[];
extern Class_Descriptor cd_S3571C26;
extern VTBL_ENTRY _ZTI8S3571C26[];
extern  VTBL_ENTRY _ZTV8S3571C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C26[];
static Base_Class bases_S3571C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(2120,1248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2160,1272), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3571C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(2224,1304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(2280,1336), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(2224,1304), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3571C16,    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_S3571C7,    ABISELECT(2448,1428), //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
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(2816,1628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(2816,1628), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3571C3,    ABISELECT(2448,1428), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C21,    ABISELECT(64,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(3280,1908), //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
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3571C16,    ABISELECT(3280,1908), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(152,76), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3571C27,    ABISELECT(96,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3571C15,    ABISELECT(1296,772), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3572C21,    ABISELECT(4176,2440), //bcp->offset
    101, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(3360,1940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3572C5,    ABISELECT(3456,1992), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3571C20,    ABISELECT(3344,1936), //bcp->offset
    90, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S3571C26,    ABISELECT(64,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3571C25[];
extern void _ZN8S3571C25D1Ev();
extern void _ZN8S3571C25D0Ev();
extern void _ZN8S3571C253v10Ev();
extern void _ZN8S3571C253v11Ev();
extern void ABISELECT(_ZThn64_N8S3571C25D1Ev,_ZThn28_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C25D0Ev,_ZThn28_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn96_N8S3571C25D1Ev,_ZThn44_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn96_N8S3571C25D0Ev,_ZThn44_N8S3571C25D0Ev)();
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZThn152_N8S3571C25D1Ev,_ZThn76_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn152_N8S3571C25D0Ev,_ZThn76_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn1296_N8S3571C25D1Ev,_ZThn772_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn1296_N8S3571C25D0Ev,_ZThn772_N8S3571C25D0Ev)();
extern void _ZN8S3571C152v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S3571C25D1Ev,_ZTv0_n12_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn2160_N8S3571C25D1Ev,_ZThn1272_N8S3571C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C25D0Ev,_ZTv0_n12_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn2160_N8S3571C25D0Ev,_ZThn1272_N8S3571C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C25D1Ev,_ZTv0_n20_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn2224_N8S3571C25D1Ev,_ZThn1304_N8S3571C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C25D0Ev,_ZTv0_n20_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn2224_N8S3571C25D0Ev,_ZThn1304_N8S3571C25D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S3571C25D1Ev,_ZTvn32_n20_N8S3571C25D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C25D0Ev,_ZTvn32_n20_N8S3571C25D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3571C25D1Ev,_ZTv0_n24_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn2448_N8S3571C25D1Ev,_ZThn1428_N8S3571C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C25D0Ev,_ZTv0_n24_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn2448_N8S3571C25D0Ev,_ZThn1428_N8S3571C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C25D1Ev,_ZTv0_n20_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn2816_N8S3571C25D1Ev,_ZThn1628_N8S3571C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C25D0Ev,_ZTv0_n20_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn2816_N8S3571C25D0Ev,_ZThn1628_N8S3571C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C25D1Ev,_ZTv0_n24_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn3280_N8S3571C25D1Ev,_ZThn1908_N8S3571C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C25D0Ev,_ZTv0_n24_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn3280_N8S3571C25D0Ev,_ZThn1908_N8S3571C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3571C25D1Ev,_ZTv0_n28_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn3344_N8S3571C25D1Ev,_ZThn1936_N8S3571C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3571C25D0Ev,_ZTv0_n28_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn3344_N8S3571C25D0Ev,_ZThn1936_N8S3571C25D0Ev)() __attribute__((weak));
extern void _ZN8S3571C202v7Ev();
extern void ABISELECT(_ZTv0_n24_N8S3571C25D1Ev,_ZTv0_n12_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn4176_N8S3571C25D1Ev,_ZThn2440_N8S3571C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C25D0Ev,_ZTv0_n12_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn4176_N8S3571C25D0Ev,_ZThn2440_N8S3571C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3571C25[] = {
  ABISELECT(4176,2440),
  ABISELECT(3344,1936),
  ABISELECT(3280,1908),
  ABISELECT(2816,1628),
  ABISELECT(2448,1428),
  ABISELECT(2224,1304),
  ABISELECT(2160,1272),
  ABISELECT(2120,1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&_ZN8S3571C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C25D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C253v10Ev,
  (VTBL_ENTRY)&_ZN8S3571C253v11Ev,
  ABISELECT(4112,2412),
  ABISELECT(3280,1908),
  ABISELECT(2160,1276),
  ABISELECT(2096,1244),
  ABISELECT(2056,1220),
  ABISELECT(3216,1880),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C25D1Ev,_ZThn28_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C25D0Ev,_ZThn28_N8S3571C25D0Ev),
  ABISELECT(2128,1260),
  ABISELECT(3184,1864),
  ABISELECT(2064,1228),
  ABISELECT(2024,1204),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S3571C25D1Ev,_ZThn44_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S3571C25D0Ev,_ZThn44_N8S3571C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(2008,1196),
  ABISELECT(1968,1172),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N8S3571C25D1Ev,_ZThn76_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N8S3571C25D0Ev,_ZThn76_N8S3571C25D0Ev),
  ABISELECT(864,500),
  ABISELECT(824,476),
  ABISELECT(928,532),
  ABISELECT(-1296,-772),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1296_N8S3571C25D1Ev,_ZThn772_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1296_N8S3571C25D0Ev,_ZThn772_N8S3571C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  ABISELECT(-2160,-1272),
  ABISELECT(-2160,-1272),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C25D1Ev,_ZTv0_n12_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C25D0Ev,_ZTv0_n12_N8S3571C25D0Ev),
  0,
  ABISELECT(-2224,-1304),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-2224,-1304),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C25D1Ev,_ZTv0_n20_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C25D0Ev,_ZTv0_n20_N8S3571C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-2280,-1336),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C25D1Ev,_ZTvn32_n20_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C25D0Ev,_ZTvn32_n20_N8S3571C25D0Ev),
  ABISELECT(-2448,-1428),
  ABISELECT(368,200),
  ABISELECT(-288,-156),
  ABISELECT(-328,-180),
  ABISELECT(-2448,-1428),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C25D1Ev,_ZTv0_n24_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C25D0Ev,_ZTv0_n24_N8S3571C25D0Ev),
  ABISELECT(-2816,-1628),
  ABISELECT(-656,-356),
  ABISELECT(-696,-380),
  ABISELECT(-2816,-1628),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C25D1Ev,_ZTv0_n20_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C25D0Ev,_ZTv0_n20_N8S3571C25D0Ev),
  ABISELECT(-3280,-1908),
  ABISELECT(-1056,-604),
  ABISELECT(-1120,-636),
  ABISELECT(-1160,-660),
  ABISELECT(-3280,-1908),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C25D1Ev,_ZTv0_n24_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C25D0Ev,_ZTv0_n24_N8S3571C25D0Ev),
  0,
  ABISELECT(-3344,-1936),
  ABISELECT(-1184,-664),
  ABISELECT(-1224,-688),
  ABISELECT(-1120,-632),
  ABISELECT(832,504),
  ABISELECT(-3344,-1936),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C25D1Ev,_ZTv0_n28_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C25D0Ev,_ZTv0_n28_N8S3571C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
  ABISELECT(-4176,-2440),
  ABISELECT(-4176,-2440),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C25D1Ev,_ZTv0_n12_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C25D0Ev,_ZTv0_n12_N8S3571C25D0Ev),
};
extern VTBL_ENTRY _ZTV8S3571C25[];
extern void _ZN8S3571C16D1Ev();
extern void _ZN8S3571C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C16__A__8S3571C25[] = {
  ABISELECT(2224,1304),
  ABISELECT(2160,1272),
  ABISELECT(2120,1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&_ZN8S3571C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C16D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C78S3571C16__8S3571C25[] = {
  ABISELECT(2160,1272),
  ABISELECT(2120,1248),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn2160_N7S3571C7D1Ev,_ZThn1272_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn2160_N7S3571C7D0Ev,_ZThn1272_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C78S3571C16__8S3571C25[] = {
  ABISELECT(-2160,-1272),
  ABISELECT(-2160,-1272),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev)();
extern void ABISELECT(_ZThn2160_N8S3571C16D1Ev,_ZThn1272_N8S3571C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev)();
extern void ABISELECT(_ZThn2160_N8S3571C16D0Ev,_ZThn1272_N8S3571C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C16__A__8S3571C25[] = {
  ABISELECT(-2160,-1272),
  ABISELECT(-2160,-1272),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZThn2224_N8S3571C16D1Ev,_ZThn1304_N8S3571C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev)();
extern void ABISELECT(_ZThn2224_N8S3571C16D0Ev,_ZThn1304_N8S3571C16D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C16__A__8S3571C25[] = {
  0,
  ABISELECT(-2224,-1304),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-2224,-1304),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C16__A__8S3571C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-2280,-1336),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev),
};
extern void _ZN8S3571C26D1Ev();
extern void _ZN8S3571C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C26__8S3571C25[] = {
  ABISELECT(4112,2412),
  ABISELECT(3280,1908),
  ABISELECT(2160,1276),
  ABISELECT(2096,1244),
  ABISELECT(2056,1220),
  ABISELECT(3216,1880),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&_ZN8S3571C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C26D0Ev,
};
extern void _ZN8S3571C27D1Ev();
extern void _ZN8S3571C27D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C278S3571C26__8S3571C25[] = {
  ABISELECT(2128,1260),
  ABISELECT(3184,1864),
  ABISELECT(2064,1228),
  ABISELECT(2024,1204),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&_ZN8S3571C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C27D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C98S3571C278S3571C26__A1__8S3571C25[] = {
  ABISELECT(2064,1228),
  ABISELECT(2024,1204),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C278S3571C26__A5__8S3571C25[] = {
  ABISELECT(2008,1196),
  ABISELECT(1968,1172),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn2008_N7S3571C7D1Ev,_ZThn1196_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn2008_N7S3571C7D0Ev,_ZThn1196_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C98S3571C278S3571C26__A5__8S3571C25[] = {
  ABISELECT(-2008,-1196),
  ABISELECT(-2008,-1196),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C98S3571C278S3571C26__A1__8S3571C25[] = {
  ABISELECT(2008,1196),
  ABISELECT(1968,1172),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn2064_N7S3571C9D1Ev,_ZThn1228_N7S3571C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
extern void ABISELECT(_ZThn2064_N7S3571C9D0Ev,_ZThn1228_N7S3571C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C98S3571C278S3571C26__A1__8S3571C25[] = {
  ABISELECT(-2064,-1228),
  ABISELECT(-2064,-1228),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn3184_N8S3571C27D1Ev,_ZThn1864_N8S3571C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev)();
extern void ABISELECT(_ZThn3184_N8S3571C27D0Ev,_ZThn1864_N8S3571C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C16__8S3571C278S3571C26__8S3571C25[] = {
  ABISELECT(-3184,-1864),
  ABISELECT(-1056,-604),
  ABISELECT(-1120,-636),
  ABISELECT(-1160,-660),
  ABISELECT(-3184,-1864),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C27D1Ev,_ZTv0_n12_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn2064_N8S3571C27D1Ev,_ZThn1228_N8S3571C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C27D0Ev,_ZTv0_n12_N8S3571C27D0Ev)();
extern void ABISELECT(_ZThn2064_N8S3571C27D0Ev,_ZThn1228_N8S3571C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C278S3571C26__8S3571C25[] = {
  ABISELECT(-2064,-1228),
  ABISELECT(-2064,-1228),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C27D1Ev,_ZTv0_n12_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C27D0Ev,_ZTv0_n12_N8S3571C27D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C27D1Ev,_ZTv0_n20_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn2128_N8S3571C27D1Ev,_ZThn1260_N8S3571C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C27D0Ev,_ZTv0_n20_N8S3571C27D0Ev)();
extern void ABISELECT(_ZThn2128_N8S3571C27D0Ev,_ZThn1260_N8S3571C27D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C278S3571C26__8S3571C25[] = {
  0,
  ABISELECT(-2128,-1260),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-2128,-1260),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C27D1Ev,_ZTv0_n20_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C27D0Ev,_ZTv0_n20_N8S3571C27D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C27D1Ev,_ZTvn32_n20_N8S3571C27D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C27D0Ev,_ZTvn32_n20_N8S3571C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C278S3571C26__8S3571C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-2184,-1292),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C27D1Ev,_ZTvn32_n20_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C27D0Ev,_ZTvn32_n20_N8S3571C27D0Ev),
};
extern void ABISELECT(_ZThn56_N8S3571C27D1Ev,_ZThn32_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn56_N8S3571C27D0Ev,_ZThn32_N8S3571C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A2__8S3571C278S3571C26__8S3571C25[] = {
  ABISELECT(2008,1196),
  ABISELECT(1968,1172),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3571C27D1Ev,_ZThn32_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3571C27D0Ev,_ZThn32_N8S3571C27D0Ev),
};
extern void _ZN8S3571C15D1Ev();
extern void _ZN8S3571C15D0Ev();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C158S3571C26__8S3571C25[] = {
  ABISELECT(864,500),
  ABISELECT(824,476),
  ABISELECT(928,532),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&_ZN8S3571C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZThn928_N8S3571C15D1Ev,_ZThn532_N8S3571C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev)();
extern void ABISELECT(_ZThn928_N8S3571C15D0Ev,_ZThn532_N8S3571C15D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C158S3571C26__8S3571C25[] = {
  0,
  ABISELECT(-928,-532),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-928,-532),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C158S3571C26__8S3571C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-984,-564),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev)();
extern void ABISELECT(_ZThn864_N8S3571C15D1Ev,_ZThn500_N8S3571C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev)();
extern void ABISELECT(_ZThn864_N8S3571C15D0Ev,_ZThn500_N8S3571C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C158S3571C26__8S3571C25[] = {
  ABISELECT(-864,-500),
  ABISELECT(-864,-500),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZThn32_N8S3571C26D1Ev,_ZThn16_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn32_N8S3571C26D0Ev,_ZThn16_N8S3571C26D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C27__8S3571C26__8S3571C25[] = {
  ABISELECT(2128,1260),
  ABISELECT(3184,1864),
  ABISELECT(2064,1228),
  ABISELECT(2024,1204),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3571C26D1Ev,_ZThn16_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3571C26D0Ev,_ZThn16_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S3571C26D1Ev,_ZTv0_n24_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn3216_N8S3571C26D1Ev,_ZThn1880_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C26D0Ev,_ZTv0_n24_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn3216_N8S3571C26D0Ev,_ZThn1880_N8S3571C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C16__8S3571C26__8S3571C25[] = {
  ABISELECT(-3216,-1880),
  ABISELECT(-1056,-604),
  ABISELECT(-1120,-636),
  ABISELECT(-1160,-660),
  ABISELECT(-3216,-1880),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C26D1Ev,_ZTv0_n24_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C26D0Ev,_ZTv0_n24_N8S3571C26D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn2096_N8S3571C26D1Ev,_ZThn1244_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn2096_N8S3571C26D0Ev,_ZThn1244_N8S3571C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C26__8S3571C25[] = {
  ABISELECT(-2096,-1244),
  ABISELECT(-2096,-1244),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C26D1Ev,_ZTv0_n20_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn2160_N8S3571C26D1Ev,_ZThn1276_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C26D0Ev,_ZTv0_n20_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn2160_N8S3571C26D0Ev,_ZThn1276_N8S3571C26D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C26__8S3571C25[] = {
  0,
  ABISELECT(-2160,-1276),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-2160,-1276),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C26D1Ev,_ZTv0_n20_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C26D0Ev,_ZTv0_n20_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C26D1Ev,_ZTvn32_n20_N8S3571C26D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C26D0Ev,_ZTvn32_n20_N8S3571C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C26__8S3571C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-2216,-1308),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C26D1Ev,_ZTvn32_n20_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C26D0Ev,_ZTvn32_n20_N8S3571C26D0Ev),
};
extern void ABISELECT(_ZThn88_N8S3571C26D1Ev,_ZThn48_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn88_N8S3571C26D0Ev,_ZThn48_N8S3571C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C27__A2__8S3571C26__8S3571C25[] = {
  ABISELECT(2008,1196),
  ABISELECT(1968,1172),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3571C26D1Ev,_ZThn48_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3571C26D0Ev,_ZThn48_N8S3571C26D0Ev),
};
extern void ABISELECT(_ZThn1232_N8S3571C26D1Ev,_ZThn744_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn1232_N8S3571C26D0Ev,_ZThn744_N8S3571C26D0Ev)();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C15__8S3571C26__8S3571C25[] = {
  ABISELECT(864,500),
  ABISELECT(824,476),
  ABISELECT(928,532),
  ABISELECT(-1232,-744),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3571C26D1Ev,_ZThn744_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3571C26D0Ev,_ZThn744_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S3571C26D1Ev,_ZTv0_n28_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn3280_N8S3571C26D1Ev,_ZThn1908_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3571C26D0Ev,_ZTv0_n28_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn3280_N8S3571C26D0Ev,_ZThn1908_N8S3571C26D0Ev)() __attribute__((weak));
extern void _ZN8S3571C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C20__8S3571C26__8S3571C25[] = {
  0,
  ABISELECT(-3280,-1908),
  ABISELECT(-1184,-664),
  ABISELECT(-1224,-688),
  ABISELECT(-1120,-632),
  ABISELECT(832,504),
  ABISELECT(-3280,-1908),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C26D1Ev,_ZTv0_n28_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C26D0Ev,_ZTv0_n28_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn4112_N8S3571C26D1Ev,_ZThn2412_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn4112_N8S3571C26D0Ev,_ZThn2412_N8S3571C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__A1__8S3571C26__8S3571C25[] = {
  ABISELECT(-4112,-2412),
  ABISELECT(-4112,-2412),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C25[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__A1__8S3571C25[] = {
  ABISELECT(120,64),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__8S3571C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__8S3571C25[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void _ZN7S3571C3D1Ev();
extern void _ZN7S3571C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C3__8S3571C25[] = {
  ABISELECT(368,200),
  ABISELECT(-288,-156),
  ABISELECT(-328,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&_ZN7S3571C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C3D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C3__A2__8S3571C25[] = {
  ABISELECT(-288,-156),
  ABISELECT(-328,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C3__A2__8S3571C25[] = {
  ABISELECT(288,156),
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C3__8S3571C25[] = {
  ABISELECT(288,156),
  ABISELECT(288,156),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn368_N7S3571C3D1Ev,_ZThn200_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn368_N7S3571C3D0Ev,_ZThn200_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C3__8S3571C25[] = {
  ABISELECT(-368,-200),
  ABISELECT(-656,-356),
  ABISELECT(-696,-380),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C25[] = {
  ABISELECT(-656,-356),
  ABISELECT(-696,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C8__A3__8S3571C25[] = {
  ABISELECT(-656,-356),
  ABISELECT(-696,-380),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C8__A3__8S3571C25[] = {
  ABISELECT(656,356),
  ABISELECT(656,356),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C8__8S3571C25[] = {
  ABISELECT(656,356),
  ABISELECT(656,356),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
extern void _ZN8S3571C16D1Ev();
extern void _ZN8S3571C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C16__A1__8S3571C25[] = {
  ABISELECT(-1056,-604),
  ABISELECT(-1120,-636),
  ABISELECT(-1160,-660),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&_ZN8S3571C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C16D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C78S3571C16__A4__8S3571C25[] = {
  ABISELECT(-1120,-636),
  ABISELECT(-1160,-660),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C78S3571C16__A4__8S3571C25[] = {
  ABISELECT(1120,636),
  ABISELECT(1120,636),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C16__A1__8S3571C25[] = {
  ABISELECT(1120,636),
  ABISELECT(1120,636),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C16__A1__8S3571C25[] = {
  0,
  ABISELECT(1056,604),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(1056,604),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C16__A1__8S3571C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(1000,572),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev),
};
extern void _ZN8S3571C20D1Ev();
extern void _ZN8S3571C20D0Ev();
extern void _ZN8S3571C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C20__8S3571C25[] = {
  ABISELECT(-1184,-664),
  ABISELECT(-1224,-688),
  ABISELECT(-1120,-632),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&_ZN8S3571C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZThn832_N8S3571C20D1Ev,_ZThn504_N8S3571C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
extern void ABISELECT(_ZThn832_N8S3571C20D0Ev,_ZThn504_N8S3571C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3571C20__8S3571C25[] = {
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C20__8S3571C25[] = {
  0,
  ABISELECT(1120,632),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(1120,632),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C20__8S3571C25[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(1064,600),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C20__8S3571C25[] = {
  ABISELECT(1184,664),
  ABISELECT(1184,664),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
static  VTT_ENTRY vtt_S3571C25[] = {
  {&(_ZTV8S3571C25[10]),  10,106},
  {&(_tg__ZTV8S3571C16__A__8S3571C25[5]),  5,7},
  {&(_tg__ZTV7S3571C78S3571C16__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C78S3571C16__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3571C16__A__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C16__A__8S3571C25[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C16__A__8S3571C25[4]),  4,6},
  {&(_tg__ZTV8S3571C26__8S3571C25[8]),  8,10},
  {&(_tg__ZTV8S3571C278S3571C26__8S3571C25[6]),  6,9},
  {&(_tg__ZTV7S3571C98S3571C278S3571C26__A1__8S3571C25[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C98S3571C278S3571C26__A5__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C98S3571C278S3571C26__A5__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C98S3571C278S3571C26__A1__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C98S3571C278S3571C26__A1__8S3571C25[3]),  3,5},
  {&(_tg__ZTV8S3571C16__8S3571C278S3571C26__8S3571C25[6]),  6,8},
  {&(_tg__ZTV7S3572C4__8S3571C278S3571C26__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C278S3571C26__8S3571C25[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C278S3571C26__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C9__A2__8S3571C278S3571C26__8S3571C25[4]),  4,6},
  {&(_tg__ZTV8S3571C158S3571C26__8S3571C25[5]),  5,8},
  {&(_tg__ZTV7S3571C9__8S3571C158S3571C26__8S3571C25[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C158S3571C26__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C158S3571C26__8S3571C25[3]),  3,5},
  {&(_tg__ZTV8S3571C27__8S3571C26__8S3571C25[6]),  6,9},
  {&(_tg__ZTV8S3571C16__8S3571C26__8S3571C25[6]),  6,8},
  {&(_tg__ZTV7S3572C4__8S3571C26__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C26__8S3571C25[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C26__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C98S3571C27__A2__8S3571C26__8S3571C25[4]),  4,6},
  {&(_tg__ZTV8S3571C15__8S3571C26__8S3571C25[5]),  5,8},
  {&(_tg__ZTV8S3571C20__8S3571C26__8S3571C25[8]),  8,11},
  {&(_tg__ZTV8S3572C21__A1__8S3571C26__8S3571C25[3]),  3,5},
  {&(_ZTV8S3571C25[50]),  50,106},
  {&(_ZTV8S3571C25[58]),  58,106},
  {&(_ZTV8S3571C25[65]),  65,106},
  {&(_ZTV8S3571C25[73]),  73,106},
  {&(_ZTV8S3571C25[80]),  80,106},
  {&(_ZTV8S3571C25[22]),  22,106},
  {&(_ZTV8S3571C25[30]),  30,106},
  {&(_ZTV8S3571C25[88]),  88,106},
  {&(_ZTV8S3571C25[37]),  37,106},
  {&(_ZTV8S3571C25[44]),  44,106},
  {&(_ZTV8S3571C25[98]),  98,106},
  {&(_ZTV8S3571C25[104]),  104,106},
  {&(_tg__ZTV7S3571C9__8S3571C25[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__A1__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3571C3__8S3571C25[5]),  5,7},
  {&(_tg__ZTV7S3571C77S3571C3__A2__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C3__A2__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C3__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3571C8__7S3571C3__8S3571C25[5]),  5,7},
  {&(_tg__ZTV7S3571C8__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C8__A3__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C8__A3__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C8__8S3571C25[3]),  3,5},
  {&(_tg__ZTV8S3571C16__A1__8S3571C25[5]),  5,7},
  {&(_tg__ZTV7S3571C78S3571C16__A4__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C78S3571C16__A4__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3571C16__A1__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C16__A1__8S3571C25[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C16__A1__8S3571C25[4]),  4,6},
  {&(_tg__ZTV8S3571C20__8S3571C25[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3571C20__8S3571C25[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C20__8S3571C25[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C20__8S3571C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C20__8S3571C25[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3571C25[];
extern  VTBL_ENTRY _ZTV8S3571C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C25[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3571C20D0Ev,_ZThn504_N8S3571C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S3571C20D1Ev,_ZThn504_N8S3571C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3571C3D0Ev,_ZThn200_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3571C3D1Ev,_ZThn200_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C26D0Ev,_ZTv0_n28_N8S3571C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3280_N8S3571C26D0Ev,_ZThn1908_N8S3571C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C26D1Ev,_ZTv0_n28_N8S3571C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3280_N8S3571C26D1Ev,_ZThn1908_N8S3571C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C26D0Ev,_ZTv0_n20_N8S3571C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3571C26D0Ev,_ZThn1276_N8S3571C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C26D1Ev,_ZTv0_n20_N8S3571C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3571C26D1Ev,_ZThn1276_N8S3571C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4112_N8S3571C26D0Ev,_ZThn2412_N8S3571C26D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2096_N8S3571C26D0Ev,_ZThn1244_N8S3571C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4112_N8S3571C26D1Ev,_ZThn2412_N8S3571C26D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2096_N8S3571C26D1Ev,_ZThn1244_N8S3571C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C26D0Ev,_ZTv0_n24_N8S3571C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3216_N8S3571C26D0Ev,_ZThn1880_N8S3571C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C26D1Ev,_ZTv0_n24_N8S3571C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3216_N8S3571C26D1Ev,_ZThn1880_N8S3571C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S3571C15D0Ev,_ZThn500_N8S3571C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S3571C15D1Ev,_ZThn500_N8S3571C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S3571C15D0Ev,_ZThn532_N8S3571C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S3571C15D1Ev,_ZThn532_N8S3571C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C27D0Ev,_ZTv0_n20_N8S3571C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S3571C27D0Ev,_ZThn1260_N8S3571C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C27D1Ev,_ZTv0_n20_N8S3571C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S3571C27D1Ev,_ZThn1260_N8S3571C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C27D0Ev,_ZTv0_n12_N8S3571C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2064_N8S3571C27D0Ev,_ZThn1228_N8S3571C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C27D1Ev,_ZTv0_n12_N8S3571C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2064_N8S3571C27D1Ev,_ZThn1228_N8S3571C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N8S3571C27D0Ev,_ZThn1864_N8S3571C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N8S3571C27D1Ev,_ZThn1864_N8S3571C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2064_N7S3571C9D0Ev,_ZThn1228_N7S3571C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2064_N7S3571C9D1Ev,_ZThn1228_N7S3571C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S3571C16D0Ev,_ZThn1304_N8S3571C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S3571C16D1Ev,_ZThn1304_N8S3571C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3571C16D0Ev,_ZThn1272_N8S3571C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3571C16D1Ev,_ZThn1272_N8S3571C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2008_N7S3571C7D0Ev,_ZThn1196_N7S3571C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S3571C7D0Ev,_ZThn1272_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2008_N7S3571C7D1Ev,_ZThn1196_N7S3571C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N7S3571C7D1Ev,_ZThn1272_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C25D0Ev,_ZTv0_n28_N8S3571C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3344_N8S3571C25D0Ev,_ZThn1936_N8S3571C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C25D1Ev,_ZTv0_n28_N8S3571C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3344_N8S3571C25D1Ev,_ZThn1936_N8S3571C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C25D0Ev,_ZTv0_n24_N8S3571C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3280_N8S3571C25D0Ev,_ZThn1908_N8S3571C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2448_N8S3571C25D0Ev,_ZThn1428_N8S3571C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C25D1Ev,_ZTv0_n24_N8S3571C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3280_N8S3571C25D1Ev,_ZThn1908_N8S3571C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2448_N8S3571C25D1Ev,_ZThn1428_N8S3571C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C25D0Ev,_ZTv0_n20_N8S3571C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N8S3571C25D0Ev,_ZThn1628_N8S3571C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S3571C25D0Ev,_ZThn1304_N8S3571C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C25D1Ev,_ZTv0_n20_N8S3571C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N8S3571C25D1Ev,_ZThn1628_N8S3571C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2224_N8S3571C25D1Ev,_ZThn1304_N8S3571C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C25D0Ev,_ZTv0_n12_N8S3571C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4176_N8S3571C25D0Ev,_ZThn2440_N8S3571C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3571C25D0Ev,_ZThn1272_N8S3571C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C25D1Ev,_ZTv0_n12_N8S3571C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4176_N8S3571C25D1Ev,_ZThn2440_N8S3571C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2160_N8S3571C25D1Ev,_ZThn1272_N8S3571C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C25 = {  "S3571C25", // class name
  bases_S3571C25, 24,
  &(vtc_S3571C25[0]), // expected_vtbl_contents
  &(vtt_S3571C25[0]), // expected_vtt_contents
  ABISELECT(4208,2456), // object size
  NSPAIRA(_ZTI8S3571C25),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3571C25),106, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3571C25),69, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3571C1  : S3571C2 , S3571C11 , virtual S3571C25 {
  char s3571c1f0;
  int s3571c1f1;
  int s3571c1f2;
  int s3571c1f3[2];
  short s3571c1f4[4];
  ~S3571C1(); // tgen
  S3571C1(); // tgen
};
//SIG(1 S3571C1) C1{ BC2{ BC3{ VBC4{ vd m FC5{ m Fp Fs Fi Fp Fl[2]} FC6{}} BC7{ VBC5 VBC4 Fc:1 Fp[3]} VBC8{ VBC5 VBC4 BC7 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd FC9{ VBC5 BC4 BC7 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} VBC10{ VBC5 VBC7 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC4 Fi[2] FL} VBC9 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]} BC11{ BC12{ VBC7 VBC13{ VBC14{ VBC10 BC4 BC3 vd Fi[6] Fp[8]} BC15{ VBC9 vd v2 Fi Fp Fi:2 FD Fp} BC9 vd v3 Fi Fl Fi:6 FC16{ BC7 VBC9 vd Fi Fp} Fl Fi Fp FC2} BC17{ vd m FC18{ VBC5 VBC19{ VBC5 VBC4 Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC4 Fi[2] FL} FC20{ VBC5 VBC4 BC19 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} VBC21{ BC7 BC8 vd v4 v5 v6 Fi Fi:2 FD Fp[2]} VBC15 vd Fi FL FC16} VBC22{ BC23{ VBC24{ vd m FD} VBC9 BC25{ m Fp Fi[2] FU26{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC5 vd v7 Fc[7] Fp FD FC8 FL FL Fl Fi Fi FL[3] FD} vd v8 FC3 Fi:7 FC3 FC27{ vd m Fi[4] FL Fi FC19 Fi FD Fi Fi FL FL Fs}} v9 FL Fi Fc} VBC28{ BC16 VBC3 BC29{ BC24 BC30{ VBC16 BC9 FC17 Fp Fi FD FD FL Fi} BC15 VBC23 Fi Fp} v10 v11 Fp[6] Fi FC16 Fi FC7 FL Fi[10] Fi FU31{ m Fi Fi[6] Fc Fi Fi Fp Fp[5] Fi Fc FL Fp Fp Fp}[2] FD Fi Fi:7} Fc Fi Fi Fi[2] Fs[4]}


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

static void Test_S3571C1()
{
  extern Class_Descriptor cd_S3571C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(783,1837)];
    init_test(&cd_S3571C1, buf);
    S3571C1 *dp, &lv = *(dp=new (buf) S3571C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12512,7344), "sizeof(S3571C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3571C1)");
    check_base_class_offset(lv, (S3572C4*)(S3571C3*)(S3571C2*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C3*)(S3571C2*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C8*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*), ABISELECT(1864,1128), "S3571C1");
    check_base_class_offset(lv, (S3572C4*)(S3571C3*)(S3571C14*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*)(S3571C13*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C18*), ABISELECT(1864,1128), "S3571C1");
    check_base_class_offset(lv, (S3572C4*)(S3571C8*)(S3571C18*), ABISELECT(1864,1128), "S3571C1");
    check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C8*)(S3571C18*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C16*)(S3571C25*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C3 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C3*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C3 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C3*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C16 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C16*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C7*)(S3571C9*)(S3571C27*)(S3571C26*)(S3571C25*), ABISELECT(1864,1128), "S3571C1");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C3*)(S3571C2*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C8*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C8 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*), ABISELECT(1920,1160), "S3571C1");
    check_base_class_offset(lv, (S3572C5*)(S3571C10*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*)(S3571C13*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*)(S3571C13*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C18*), ABISELECT(1920,1160), "S3571C1");
    check_base_class_offset(lv, (S3572C5*)(S3571C8*)(S3571C18*), ABISELECT(1920,1160), "S3571C1");
    check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C8*)(S3571C18*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C16*)(S3571C25*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C3 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C3*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C16 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C16*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C9*)(S3571C27*)(S3571C26*)(S3571C25*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C7*)(S3571C9*)(S3571C27*)(S3571C26*)(S3571C25*), ABISELECT(1920,1160), "S3571C1");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C3*)(S3571C2*), 0, "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C8 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C8*), ABISELECT(1960,1184), "S3571C1");
    check_base_class_offset(lv, (S3571C8*)(S3571C3*)(S3571C2*), ABISELECT(1960,1184), "S3571C1");
    check_base_class_offset(lv, (S3571C8*)(S3571C3*)(S3571C14*), ABISELECT(1960,1184), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C3 */ AMB_check_base_class_offset(lv, (S3571C8*)(S3571C3*), ABISELECT(1960,1184), "S3571C1");
    check_base_class_offset(lv, (S3571C3*)(S3571C2*), 0, "S3571C1");
    check_base_class_offset(lv, (S3571C7*)(S3571C10*), ABISELECT(2552,1556), "S3571C1");
    /*is_ambiguous_... S3571C12::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C12*)(S3571C11*), ABISELECT(2552,1556), "S3571C1");
    check_base_class_offset(lv, (S3571C10*)(S3571C2*), ABISELECT(2424,1464), "S3571C1");
    check_base_class_offset(lv, (S3571C10*)(S3571C14*), ABISELECT(2424,1464), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*), ABISELECT(2592,1576), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*), ABISELECT(2648,1608), "S3571C1");
    check_base_class_offset(lv, (S3571C9*)(S3571C2*), ABISELECT(2592,1576), "S3571C1");
    check_base_class_offset(lv, (S3571C9*)(S3571C15*)(S3571C13*), ABISELECT(2592,1576), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C15 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C15*), ABISELECT(2592,1576), "S3571C1");
    check_base_class_offset(lv, (S3571C9*)(S3571C20*)(S3571C19*), ABISELECT(2592,1576), "S3571C1");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C16*)(S3571C25*), ABISELECT(2592,1576), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C16 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C16*), ABISELECT(2592,1576), "S3571C1");
    check_base_class_offset(lv, (S3571C9*)(S3571C15*)(S3571C26*)(S3571C25*), ABISELECT(2592,1576), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C20 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C20*), ABISELECT(2592,1576), "S3571C1");
    check_base_class_offset(lv, (S3571C2*), 0, "S3571C1");
    /*is_ambiguous_... S3571C14::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C14*), ABISELECT(5008,2968), "S3571C1");
    /*is_ambiguous_... S3571C3::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C3*)(S3571C14*), ABISELECT(5072,3000), "S3571C1");
    check_base_class_offset(lv, (S3571C3*)(S3571C14*), ABISELECT(5072,3000), "S3571C1");
    check_base_class_offset(lv, (S3571C14*)(S3571C13*), ABISELECT(5008,2968), "S3571C1");
    check_base_class_offset(lv, (S3571C15*)(S3571C13*), ABISELECT(2816,1700), "S3571C1");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*)(S3571C13*), ABISELECT(2880,1732), "S3571C1");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*)(S3571C13*), ABISELECT(2936,1764), "S3571C1");
    /*is_ambiguous_... S3571C13::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C13*), ABISELECT(2880,1732), "S3571C1");
    check_base_class_offset(lv, (S3571C13*)(S3571C12*)(S3571C11*), ABISELECT(2816,1700), "S3571C1");
    check_base_class_offset(lv, (S3572C17*)(S3571C12*)(S3571C11*), ABISELECT(512,308), "S3571C1");
    /*is_ambiguous_... S3571C18::S3571C7 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C18*), ABISELECT(5536,3256), "S3571C1");
    check_base_class_offset(lv, (S3571C7*)(S3571C8*)(S3571C18*), ABISELECT(5576,3276), "S3571C1");
    check_base_class_offset(lv, (S3571C8*)(S3571C18*), ABISELECT(5576,3276), "S3571C1");
    check_base_class_offset(lv, (S3571C18*)(S3571C12*)(S3571C11*), ABISELECT(5536,3256), "S3571C1");
    /*is_ambiguous_... S3571C12::S3571C15 */ AMB_check_base_class_offset(lv, (S3571C15*)(S3571C12*)(S3571C11*), ABISELECT(6080,3584), "S3571C1");
    check_base_class_offset(lv, (S3571C12*)(S3571C11*), ABISELECT(512,308), "S3571C1");
    check_base_class_offset(lv, (S3572C21*)(S3571C20*)(S3571C19*), ABISELECT(9088,5348), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C20 */ AMB_check_base_class_offset(lv, (S3572C21*)(S3571C20*), ABISELECT(9088,5348), "S3571C1");
    check_base_class_offset(lv, (S3572C22*)(S3571C20*)(S3571C19*), ABISELECT(6160,3620), "S3571C1");
    /*is_ambiguous_... S3571C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C20*)(S3571C19*), ABISELECT(6256,3672), "S3571C1");
    check_base_class_offset(lv, (S3571C20*)(S3571C19*), ABISELECT(6144,3616), "S3571C1");
    check_base_class_offset(lv, (S3571C19*)(S3571C11*), ABISELECT(6144,3616), "S3571C1");
    check_base_class_offset(lv, (S3571C11*), ABISELECT(512,308), "S3571C1");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C16*)(S3571C25*), ABISELECT(9120,5364), "S3571C1");
    /*is_ambiguous_... S3571C25::S3571C16 */ AMB_check_base_class_offset(lv, (S3571C16*)(S3571C25*), ABISELECT(9120,5364), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C3 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C3*), ABISELECT(11248,6612), "S3571C1");
    check_base_class_offset(lv, (S3571C3*)(S3571C25*), ABISELECT(11248,6612), "S3571C1");
    /*is_ambiguous_... S3571C26::S3572C21 */ AMB_check_base_class_offset(lv, (S3572C21*)(S3571C26*)(S3571C25*), ABISELECT(9184,5392), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C16 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C16*), ABISELECT(11616,6812), "S3571C1");
    check_base_class_offset(lv, (S3571C16*)(S3571C27*)(S3571C26*)(S3571C25*), ABISELECT(11616,6812), "S3571C1");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3572C4*)(S3571C9*)(S3571C27*)(S3571C26*)(S3571C25*), ABISELECT(9216,5408), "S3571C1");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C7*)(S3571C9*)(S3571C27*)(S3571C26*)(S3571C25*), ABISELECT(9272,5440), "S3571C1");
    /*is_ambiguous_... S3571C27::S3571C9 */ AMB_check_base_class_offset(lv, (S3571C9*)(S3571C27*)(S3571C26*)(S3571C25*), ABISELECT(9216,5408), "S3571C1");
    check_base_class_offset(lv, (S3571C27*)(S3571C26*)(S3571C25*), ABISELECT(9216,5408), "S3571C1");
    check_base_class_offset(lv, (S3571C15*)(S3571C26*)(S3571C25*), ABISELECT(10416,6136), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C20 */ AMB_check_base_class_offset(lv, (S3572C22*)(S3571C20*), ABISELECT(11696,6844), "S3571C1");
    /*is_ambiguous_... S3571C1::S3571C20 */ AMB_check_base_class_offset(lv, (S3572C5*)(S3571C20*), ABISELECT(11792,6896), "S3571C1");
    check_base_class_offset(lv, (S3571C20*)(S3571C26*)(S3571C25*), ABISELECT(11680,6840), "S3571C1");
    check_base_class_offset(lv, (S3571C26*)(S3571C25*), ABISELECT(9184,5392), "S3571C1");
    check_base_class_offset(lv, (S3571C25*), ABISELECT(9120,5364), "S3571C1");
    check_field_offset(lv, s3571c1f0, ABISELECT(1837,1101), "S3571C1.s3571c1f0");
    check_field_offset(lv, s3571c1f1, ABISELECT(1840,1104), "S3571C1.s3571c1f1");
    check_field_offset(lv, s3571c1f2, ABISELECT(1844,1108), "S3571C1.s3571c1f2");
    check_field_offset(lv, s3571c1f3, ABISELECT(1848,1112), "S3571C1.s3571c1f3");
    check_field_offset(lv, s3571c1f4, ABISELECT(1856,1120), "S3571C1.s3571c1f4");
    test_class_info(&lv, &cd_S3571C1);
    dp->~S3571C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3571C1(Test_S3571C1, "S3571C1", ABISELECT(12512,7344));

#else // __cplusplus

extern void _ZN7S3571C1C1Ev();
extern void _ZN7S3571C1D1Ev();
Name_Map name_map_S3571C1[] = {
  NSPAIR(_ZN7S3571C1C1Ev),
  NSPAIR(_ZN7S3571C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
extern Class_Descriptor cd_S3571C3;
extern VTBL_ENTRY _ZTI7S3571C3[];
extern  VTBL_ENTRY _ZTV7S3571C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C3[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C10;
extern VTBL_ENTRY _ZTI8S3571C10[];
extern  VTBL_ENTRY _ZTV8S3571C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C2;
extern VTBL_ENTRY _ZTI7S3571C2[];
extern  VTBL_ENTRY _ZTV7S3571C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C2[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C3;
extern VTBL_ENTRY _ZTI7S3571C3[];
extern  VTBL_ENTRY _ZTV7S3571C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C3[];
extern Class_Descriptor cd_S3571C14;
extern VTBL_ENTRY _ZTI8S3571C14[];
extern  VTBL_ENTRY _ZTV8S3571C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C14[];
extern Class_Descriptor cd_S3571C15;
extern VTBL_ENTRY _ZTI8S3571C15[];
extern  VTBL_ENTRY _ZTV8S3571C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C15[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C13;
extern VTBL_ENTRY _ZTI8S3571C13[];
extern  VTBL_ENTRY _ZTV8S3571C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C13[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C8;
extern VTBL_ENTRY _ZTI7S3571C8[];
extern  VTBL_ENTRY _ZTV7S3571C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C8[];
extern Class_Descriptor cd_S3571C18;
extern VTBL_ENTRY _ZTI8S3571C18[];
extern  VTBL_ENTRY _ZTV8S3571C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C18[];
extern Class_Descriptor cd_S3571C15;
extern VTBL_ENTRY _ZTI8S3571C15[];
extern  VTBL_ENTRY _ZTV8S3571C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C15[];
extern Class_Descriptor cd_S3571C12;
extern VTBL_ENTRY _ZTI8S3571C12[];
extern  VTBL_ENTRY _ZTV8S3571C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C12[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3571C20;
extern VTBL_ENTRY _ZTI8S3571C20[];
extern  VTBL_ENTRY _ZTV8S3571C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C20[];
extern Class_Descriptor cd_S3571C19;
extern VTBL_ENTRY _ZTI8S3571C19[];
extern  VTBL_ENTRY _ZTV8S3571C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C19[];
extern Class_Descriptor cd_S3571C11;
extern VTBL_ENTRY _ZTI8S3571C11[];
extern  VTBL_ENTRY _ZTV8S3571C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C11[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C16;
extern VTBL_ENTRY _ZTI8S3571C16[];
extern  VTBL_ENTRY _ZTV8S3571C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C16[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C3;
extern VTBL_ENTRY _ZTI7S3571C3[];
extern  VTBL_ENTRY _ZTV7S3571C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C3[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C16;
extern VTBL_ENTRY _ZTI8S3571C16[];
extern  VTBL_ENTRY _ZTV8S3571C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C16[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3571C7;
extern VTBL_ENTRY _ZTI7S3571C7[];
extern  VTBL_ENTRY _ZTV7S3571C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C7[];
extern Class_Descriptor cd_S3571C9;
extern VTBL_ENTRY _ZTI7S3571C9[];
extern  VTBL_ENTRY _ZTV7S3571C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C9[];
extern Class_Descriptor cd_S3571C27;
extern VTBL_ENTRY _ZTI8S3571C27[];
extern  VTBL_ENTRY _ZTV8S3571C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C27[];
extern Class_Descriptor cd_S3571C15;
extern VTBL_ENTRY _ZTI8S3571C15[];
extern  VTBL_ENTRY _ZTV8S3571C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C15[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3571C20;
extern VTBL_ENTRY _ZTI8S3571C20[];
extern  VTBL_ENTRY _ZTV8S3571C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C20[];
extern Class_Descriptor cd_S3571C26;
extern VTBL_ENTRY _ZTI8S3571C26[];
extern  VTBL_ENTRY _ZTV8S3571C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C26[];
extern Class_Descriptor cd_S3571C25;
extern VTBL_ENTRY _ZTI8S3571C25[];
extern  VTBL_ENTRY _ZTV8S3571C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3571C25[];
static Base_Class bases_S3571C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(1864,1128), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C5,    ABISELECT(1920,1160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3571C7,    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
    41, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(1960,1184), //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
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(1960,1184), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3571C3,    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
    42, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(2552,1556), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3571C10,    ABISELECT(2424,1464), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2592,1576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(2648,1608), //bcp->offset
    73, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(2592,1576), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3571C2,    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
    43, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C4,    ABISELECT(5008,2968), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3571C7,    ABISELECT(5072,3000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3571C3,    ABISELECT(5072,3000), //bcp->offset
    119, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3571C14,    ABISELECT(5008,2968), //bcp->offset
    109, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S3571C15,    ABISELECT(2816,1700), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(2880,1732), //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(2936,1764), //bcp->offset
    103, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(2880,1732), //bcp->offset
    96, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3571C13,    ABISELECT(2816,1700), //bcp->offset
    79, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S3572C17,    ABISELECT(512,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(5536,3256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(5576,3276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3571C8,    ABISELECT(5576,3276), //bcp->offset
    139, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3571C18,    ABISELECT(5536,3256), //bcp->offset
    126, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S3571C15,    ABISELECT(6080,3584), //bcp->offset
    145, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S3571C12,    ABISELECT(512,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3572C21,    ABISELECT(9088,5348), //bcp->offset
    168, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(6160,3620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(6256,3672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3571C20,    ABISELECT(6144,3616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3571C19,    ABISELECT(6144,3616), //bcp->offset
    155, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S3571C11,    ABISELECT(512,308), //bcp->offset
    20, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3571C7,    ABISELECT(9120,5364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3571C16,    ABISELECT(9120,5364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(11248,6612), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    184, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3571C3,    ABISELECT(11248,6612), //bcp->offset
    225, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    183, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S3572C21,    ABISELECT(9184,5392), //bcp->offset
    -1, //bcp->virtual_function_table_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
    49, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(11616,6812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    189, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3571C16,    ABISELECT(11616,6812), //bcp->offset
    233, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(9216,5408), //bcp->offset
    -1, //bcp->virtual_function_table_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
    43, //immediately_derived
  0, 0},
  {&cd_S3571C7,    ABISELECT(9272,5440), //bcp->offset
    211, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3571C9,    ABISELECT(9216,5408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S3571C27,    ABISELECT(9216,5408), //bcp->offset
    202, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S3571C15,    ABISELECT(10416,6136), //bcp->offset
    217, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S3572C22,    ABISELECT(11696,6844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(11792,6896), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3571C20,    ABISELECT(11680,6840), //bcp->offset
    241, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    194, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3571C26,    ABISELECT(9184,5392), //bcp->offset
    192, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3571C25,    ABISELECT(9120,5364), //bcp->offset
    173, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3571C1[];
extern void _ZN7S3571C1D1Ev();
extern void _ZN7S3571C1D0Ev();
extern void ABISELECT(_ZThn512_N7S3571C1D1Ev,_ZThn308_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn512_N7S3571C1D0Ev,_ZThn308_N7S3571C1D0Ev)();
extern void _ZN8S3571C112v9Ev();
extern void ABISELECT(_ZTv0_n24_N7S3571C1D1Ev,_ZTv0_n12_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn1864_N7S3571C1D1Ev,_ZThn1128_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C1D0Ev,_ZTv0_n12_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn1864_N7S3571C1D0Ev,_ZThn1128_N7S3571C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C1D1Ev,_ZTv0_n20_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn1960_N7S3571C1D1Ev,_ZThn1184_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C1D0Ev,_ZTv0_n20_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn1960_N7S3571C1D0Ev,_ZThn1184_N7S3571C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3571C1D1Ev,_ZTv0_n24_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn2424_N7S3571C1D1Ev,_ZThn1464_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3571C1D0Ev,_ZTv0_n24_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn2424_N7S3571C1D0Ev,_ZThn1464_N7S3571C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C1D1Ev,_ZTv0_n20_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn2552_N7S3571C1D1Ev,_ZThn1556_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C1D0Ev,_ZTv0_n20_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn2552_N7S3571C1D0Ev,_ZThn1556_N7S3571C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C1D1Ev,_ZTv0_n20_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn2592_N7S3571C1D1Ev,_ZThn1576_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C1D0Ev,_ZTv0_n20_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn2592_N7S3571C1D0Ev,_ZThn1576_N7S3571C1D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn56_n40_N7S3571C1D1Ev,_ZTvn32_n20_N7S3571C1D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S3571C1D0Ev,_ZTvn32_n20_N7S3571C1D0Ev)();
extern void ABISELECT(_ZTv0_n80_N7S3571C1D1Ev,_ZTv0_n40_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn2816_N7S3571C1D1Ev,_ZThn1700_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3571C1D0Ev,_ZTv0_n40_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn2816_N7S3571C1D0Ev,_ZThn1700_N7S3571C1D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
extern void _ZN8S3571C132v3Ev();
extern void ABISELECT(_ZTvn64_n80_N7S3571C1D1Ev,_ZTvn32_n40_N7S3571C1D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N7S3571C1D0Ev,_ZTvn32_n40_N7S3571C1D0Ev)();
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn120_n80_N7S3571C1D1Ev,_ZTvn64_n40_N7S3571C1D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N7S3571C1D0Ev,_ZTvn64_n40_N7S3571C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N7S3571C1D1Ev,_ZTv0_n32_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn5008_N7S3571C1D1Ev,_ZThn2968_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3571C1D0Ev,_ZTv0_n32_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn5008_N7S3571C1D0Ev,_ZThn2968_N7S3571C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N7S3571C1D1Ev,_ZTvn32_n32_N7S3571C1D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N7S3571C1D0Ev,_ZTvn32_n32_N7S3571C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3571C1D1Ev,_ZTv0_n20_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn5536_N7S3571C1D1Ev,_ZThn3256_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C1D0Ev,_ZTv0_n20_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn5536_N7S3571C1D0Ev,_ZThn3256_N7S3571C1D0Ev)() __attribute__((weak));
extern void _ZN8S3571C182v4Ev();
extern void _ZN8S3571C182v5Ev();
extern void _ZN8S3571C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N7S3571C1D1Ev,_ZTvn20_n20_N7S3571C1D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N7S3571C1D0Ev,_ZTvn20_n20_N7S3571C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N7S3571C1D1Ev,_ZTv0_n24_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn6080_N7S3571C1D1Ev,_ZThn3584_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3571C1D0Ev,_ZTv0_n24_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn6080_N7S3571C1D0Ev,_ZThn3584_N7S3571C1D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3571C1D1Ev,_ZTv0_n28_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn6144_N7S3571C1D1Ev,_ZThn3616_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3571C1D0Ev,_ZTv0_n28_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn6144_N7S3571C1D0Ev,_ZThn3616_N7S3571C1D0Ev)() __attribute__((weak));
extern void _ZN8S3571C202v7Ev();
extern void _ZN8S3571C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N7S3571C1D1Ev,_ZTv0_n12_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn9088_N7S3571C1D1Ev,_ZThn5348_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C1D0Ev,_ZTv0_n12_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn9088_N7S3571C1D0Ev,_ZThn5348_N7S3571C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S3571C1D1Ev,_ZTv0_n44_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn9120_N7S3571C1D1Ev,_ZThn5364_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S3571C1D0Ev,_ZTv0_n44_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn9120_N7S3571C1D0Ev,_ZThn5364_N7S3571C1D0Ev)() __attribute__((weak));
extern void _ZN8S3571C253v10Ev();
extern void _ZN8S3571C253v11Ev();
extern void ABISELECT(_ZTvn64_n88_N7S3571C1D1Ev,_ZTvn28_n44_N7S3571C1D1Ev)();
extern void ABISELECT(_ZTvn64_n88_N7S3571C1D0Ev,_ZTvn28_n44_N7S3571C1D0Ev)();
extern void ABISELECT(_ZTvn96_n88_N7S3571C1D1Ev,_ZTvn44_n44_N7S3571C1D1Ev)();
extern void ABISELECT(_ZTvn96_n88_N7S3571C1D0Ev,_ZTvn44_n44_N7S3571C1D0Ev)();
extern void _ZN7S3571C92v1Ev();
extern void ABISELECT(_ZTvn152_n88_N7S3571C1D1Ev,_ZTvn76_n44_N7S3571C1D1Ev)();
extern void ABISELECT(_ZTvn152_n88_N7S3571C1D0Ev,_ZTvn76_n44_N7S3571C1D0Ev)();
extern void ABISELECT(_ZTvn1296_n88_N7S3571C1D1Ev,_ZTvn772_n44_N7S3571C1D1Ev)();
extern void ABISELECT(_ZTvn1296_n88_N7S3571C1D0Ev,_ZTvn772_n44_N7S3571C1D0Ev)();
extern void _ZN8S3571C152v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3571C1D1Ev,_ZTv0_n24_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn11248_N7S3571C1D1Ev,_ZThn6612_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3571C1D0Ev,_ZTv0_n24_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn11248_N7S3571C1D0Ev,_ZThn6612_N7S3571C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3571C1D1Ev,_ZTv0_n24_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn11616_N7S3571C1D1Ev,_ZThn6812_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3571C1D0Ev,_ZTv0_n24_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn11616_N7S3571C1D0Ev,_ZThn6812_N7S3571C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3571C1D1Ev,_ZTv0_n28_N7S3571C1D1Ev)();
extern void ABISELECT(_ZThn11680_N7S3571C1D1Ev,_ZThn6840_N7S3571C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3571C1D0Ev,_ZTv0_n28_N7S3571C1D0Ev)();
extern void ABISELECT(_ZThn11680_N7S3571C1D0Ev,_ZThn6840_N7S3571C1D0Ev)() __attribute__((weak));
extern void _ZN8S3571C202v7Ev();
static  VTBL_ENTRY vtc_S3571C1[] = {
  ABISELECT(11680,6840),
  ABISELECT(11616,6812),
  ABISELECT(11248,6612),
  ABISELECT(9120,5364),
  ABISELECT(9088,5348),
  ABISELECT(6144,3616),
  ABISELECT(6080,3584),
  ABISELECT(5536,3256),
  ABISELECT(5008,2968),
  ABISELECT(2816,1700),
  ABISELECT(2592,1576),
  ABISELECT(2552,1556),
  ABISELECT(2424,1464),
  ABISELECT(1960,1184),
  ABISELECT(1864,1128),
  ABISELECT(1920,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&_ZN7S3571C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C1D0Ev,
  ABISELECT(8576,5040),
  ABISELECT(5632,3308),
  ABISELECT(5568,3276),
  ABISELECT(5024,2948),
  ABISELECT(2080,1268),
  ABISELECT(1448,876),
  ABISELECT(1912,1156),
  ABISELECT(4496,2660),
  ABISELECT(2304,1392),
  ABISELECT(1352,820),
  ABISELECT(1408,852),
  ABISELECT(2040,1248),
  ABISELECT(-512,-308),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N7S3571C1D1Ev,_ZThn308_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N7S3571C1D0Ev,_ZThn308_N7S3571C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C112v9Ev,
  ABISELECT(-1864,-1128),
  ABISELECT(-1864,-1128),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C1D1Ev,_ZTv0_n12_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C1D0Ev,_ZTv0_n12_N7S3571C1D0Ev),
  ABISELECT(-1960,-1184),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-1960,-1184),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C1D1Ev,_ZTv0_n20_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C1D0Ev,_ZTv0_n20_N7S3571C1D0Ev),
  ABISELECT(-2424,-1464),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(-2424,-1464),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C1D1Ev,_ZTv0_n24_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C1D0Ev,_ZTv0_n24_N7S3571C1D0Ev),
  ABISELECT(-2552,-1556),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-2552,-1556),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C1D1Ev,_ZTv0_n20_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C1D0Ev,_ZTv0_n20_N7S3571C1D0Ev),
  0,
  ABISELECT(-2592,-1576),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(-2592,-1576),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C1D1Ev,_ZTv0_n20_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C1D0Ev,_ZTv0_n20_N7S3571C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-2648,-1608),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3571C1D1Ev,_ZTvn32_n20_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3571C1D0Ev,_ZTvn32_n20_N7S3571C1D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-2816,-1700),
  ABISELECT(-856,-516),
  ABISELECT(-264,-144),
  ABISELECT(-392,-236),
  ABISELECT(2192,1268),
  ABISELECT(-952,-572),
  ABISELECT(-896,-540),
  ABISELECT(-224,-124),
  ABISELECT(-2816,-1700),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3571C1D1Ev,_ZTv0_n40_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3571C1D0Ev,_ZTv0_n40_N7S3571C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3571C132v3Ev,
  ABISELECT(-1016,-604),
  ABISELECT(-960,-572),
  ABISELECT(-2880,-1732),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N7S3571C1D1Ev,_ZTvn32_n40_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N7S3571C1D0Ev,_ZTvn32_n40_N7S3571C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  ABISELECT(-2936,-1764),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N7S3571C1D1Ev,_ZTvn64_n40_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N7S3571C1D0Ev,_ZTvn64_n40_N7S3571C1D0Ev),
  ABISELECT(-5008,-2968),
  ABISELECT(-3048,-1784),
  ABISELECT(-3144,-1840),
  ABISELECT(-2456,-1412),
  ABISELECT(-3088,-1808),
  ABISELECT(-2584,-1504),
  ABISELECT(-5008,-2968),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3571C1D1Ev,_ZTv0_n32_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3571C1D0Ev,_ZTv0_n32_N7S3571C1D0Ev),
  ABISELECT(-3112,-1816),
  ABISELECT(-3208,-1872),
  ABISELECT(-3152,-1840),
  ABISELECT(-5072,-3000),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N7S3571C1D1Ev,_ZTvn32_n32_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N7S3571C1D0Ev,_ZTvn32_n32_N7S3571C1D0Ev),
  0,
  0,
  0,
  ABISELECT(-5536,-3256),
  ABISELECT(-3672,-2128),
  ABISELECT(-3616,-2096),
  ABISELECT(-5536,-3256),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C1D1Ev,_ZTv0_n20_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C1D0Ev,_ZTv0_n20_N7S3571C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v6Ev,
  ABISELECT(-3712,-2148),
  ABISELECT(-3656,-2116),
  ABISELECT(-5576,-3276),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N7S3571C1D1Ev,_ZTvn20_n20_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N7S3571C1D0Ev,_ZTvn20_n20_N7S3571C1D0Ev),
  0,
  ABISELECT(-6080,-3584),
  ABISELECT(-4216,-2456),
  ABISELECT(-4160,-2424),
  ABISELECT(-3488,-2008),
  ABISELECT(-6080,-3584),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C1D1Ev,_ZTv0_n24_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C1D0Ev,_ZTv0_n24_N7S3571C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  0,
  0,
  ABISELECT(-6144,-3616),
  ABISELECT(-4280,-2488),
  ABISELECT(-4224,-2456),
  ABISELECT(-3552,-2040),
  ABISELECT(2944,1732),
  ABISELECT(-6144,-3616),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3571C1D1Ev,_ZTv0_n28_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3571C1D0Ev,_ZTv0_n28_N7S3571C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3571C192v8Ev,
  ABISELECT(-9088,-5348),
  ABISELECT(-9088,-5348),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C1D1Ev,_ZTv0_n12_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C1D0Ev,_ZTv0_n12_N7S3571C1D0Ev),
  ABISELECT(1296,772),
  ABISELECT(96,44),
  0,
  0,
  ABISELECT(-9120,-5364),
  ABISELECT(-32,-16),
  ABISELECT(2560,1476),
  ABISELECT(2496,1448),
  ABISELECT(-7160,-4180),
  ABISELECT(2128,1248),
  ABISELECT(-6528,-3788),
  ABISELECT(-7256,-4236),
  ABISELECT(-7200,-4204),
  ABISELECT(-9120,-5364),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3571C1D1Ev,_ZTv0_n44_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3571C1D0Ev,_ZTv0_n44_N7S3571C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C253v10Ev,
  (VTBL_ENTRY)&_ZN8S3571C253v11Ev,
  ABISELECT(-96,-44),
  ABISELECT(2496,1448),
  ABISELECT(-6592,-3816),
  ABISELECT(-7320,-4264),
  ABISELECT(-7264,-4232),
  ABISELECT(2432,1420),
  ABISELECT(-9184,-5392),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n88_N7S3571C1D1Ev,_ZTvn28_n44_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n88_N7S3571C1D0Ev,_ZTvn28_n44_N7S3571C1D0Ev),
  ABISELECT(-6624,-3832),
  ABISELECT(2400,1404),
  ABISELECT(-7352,-4280),
  ABISELECT(-7296,-4248),
  ABISELECT(-9216,-5408),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n88_N7S3571C1D1Ev,_ZTvn44_n44_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n88_N7S3571C1D0Ev,_ZTvn44_n44_N7S3571C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
  ABISELECT(-7408,-4312),
  ABISELECT(-7352,-4280),
  ABISELECT(-9272,-5440),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn152_n88_N7S3571C1D1Ev,_ZTvn76_n44_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn152_n88_N7S3571C1D0Ev,_ZTvn76_n44_N7S3571C1D0Ev),
  ABISELECT(-8552,-5008),
  ABISELECT(-8496,-4976),
  ABISELECT(-7824,-4560),
  ABISELECT(-10416,-6136),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1296_n88_N7S3571C1D1Ev,_ZTvn772_n44_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1296_n88_N7S3571C1D0Ev,_ZTvn772_n44_N7S3571C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  ABISELECT(-11248,-6612),
  ABISELECT(-9288,-5428),
  ABISELECT(-9384,-5484),
  ABISELECT(-9328,-5452),
  ABISELECT(-11248,-6612),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C1D1Ev,_ZTv0_n24_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C1D0Ev,_ZTv0_n24_N7S3571C1D0Ev),
  ABISELECT(-11616,-6812),
  ABISELECT(-9024,-5236),
  ABISELECT(-9752,-5684),
  ABISELECT(-9696,-5652),
  ABISELECT(-11616,-6812),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C1D1Ev,_ZTv0_n24_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C1D0Ev,_ZTv0_n24_N7S3571C1D0Ev),
  0,
  ABISELECT(-11680,-6840),
  ABISELECT(-9816,-5712),
  ABISELECT(-9760,-5680),
  ABISELECT(-9088,-5264),
  ABISELECT(-2592,-1492),
  ABISELECT(-11680,-6840),
  (VTBL_ENTRY)&(_ZTI7S3571C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3571C1D1Ev,_ZTv0_n28_N7S3571C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3571C1D0Ev,_ZTv0_n28_N7S3571C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
};
extern VTBL_ENTRY _ZTV7S3571C1[];
extern void _ZN7S3571C2D1Ev();
extern void _ZN7S3571C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C2__7S3571C1[] = {
  ABISELECT(2592,1576),
  ABISELECT(2552,1556),
  ABISELECT(2424,1464),
  ABISELECT(1960,1184),
  ABISELECT(1864,1128),
  ABISELECT(1920,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&_ZN7S3571C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C2D0Ev,
};
extern void _ZN7S3571C3D1Ev();
extern void _ZN7S3571C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C37S3571C2__7S3571C1[] = {
  ABISELECT(1960,1184),
  ABISELECT(1864,1128),
  ABISELECT(1920,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&_ZN7S3571C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C3D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C37S3571C2__7S3571C1[] = {
  ABISELECT(1864,1128),
  ABISELECT(1920,1160),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZThn1864_N7S3571C7D1Ev,_ZThn1128_N7S3571C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
extern void ABISELECT(_ZThn1864_N7S3571C7D0Ev,_ZThn1128_N7S3571C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C37S3571C2__7S3571C1[] = {
  ABISELECT(-1864,-1128),
  ABISELECT(-1864,-1128),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn1864_N7S3571C3D1Ev,_ZThn1128_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn1864_N7S3571C3D0Ev,_ZThn1128_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C37S3571C2__7S3571C1[] = {
  ABISELECT(-1864,-1128),
  ABISELECT(-1864,-1128),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev)();
extern void ABISELECT(_ZThn1960_N7S3571C3D1Ev,_ZThn1184_N7S3571C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev)();
extern void ABISELECT(_ZThn1960_N7S3571C3D0Ev,_ZThn1184_N7S3571C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C37S3571C2__7S3571C1[] = {
  ABISELECT(-1960,-1184),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-1960,-1184),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C2D1Ev,_ZTv0_n12_N7S3571C2D1Ev)();
extern void ABISELECT(_ZThn1864_N7S3571C2D1Ev,_ZThn1128_N7S3571C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3571C2D0Ev,_ZTv0_n12_N7S3571C2D0Ev)();
extern void ABISELECT(_ZThn1864_N7S3571C2D0Ev,_ZThn1128_N7S3571C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C2__7S3571C1[] = {
  ABISELECT(-1864,-1128),
  ABISELECT(-1864,-1128),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C2D1Ev,_ZTv0_n12_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C2D0Ev,_ZTv0_n12_N7S3571C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev)();
extern void ABISELECT(_ZThn1960_N7S3571C2D1Ev,_ZThn1184_N7S3571C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev)();
extern void ABISELECT(_ZThn1960_N7S3571C2D0Ev,_ZThn1184_N7S3571C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C2__7S3571C1[] = {
  ABISELECT(-1960,-1184),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-1960,-1184),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S3571C2D1Ev,_ZTv0_n24_N7S3571C2D1Ev)();
extern void ABISELECT(_ZThn2424_N7S3571C2D1Ev,_ZThn1464_N7S3571C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3571C2D0Ev,_ZTv0_n24_N7S3571C2D0Ev)();
extern void ABISELECT(_ZThn2424_N7S3571C2D0Ev,_ZThn1464_N7S3571C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C10__7S3571C2__7S3571C1[] = {
  ABISELECT(-2424,-1464),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(-2424,-1464),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C2D1Ev,_ZTv0_n24_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3571C2D0Ev,_ZTv0_n24_N7S3571C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev)();
extern void ABISELECT(_ZThn2552_N7S3571C2D1Ev,_ZThn1556_N7S3571C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev)();
extern void ABISELECT(_ZThn2552_N7S3571C2D0Ev,_ZThn1556_N7S3571C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C7__A2__7S3571C2__7S3571C1[] = {
  ABISELECT(-2552,-1556),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-2552,-1556),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev)();
extern void ABISELECT(_ZThn2592_N7S3571C2D1Ev,_ZThn1576_N7S3571C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev)();
extern void ABISELECT(_ZThn2592_N7S3571C2D0Ev,_ZThn1576_N7S3571C2D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__7S3571C2__7S3571C1[] = {
  0,
  ABISELECT(-2592,-1576),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(-2592,-1576),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N7S3571C2D1Ev,_ZTvn32_n20_N7S3571C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S3571C2D0Ev,_ZTvn32_n20_N7S3571C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__7S3571C2__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-2648,-1608),
  (VTBL_ENTRY)&(_ZTI7S3571C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3571C2D1Ev,_ZTvn32_n20_N7S3571C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S3571C2D0Ev,_ZTvn32_n20_N7S3571C2D0Ev),
};
extern void _ZN8S3571C11D1Ev();
extern void _ZN8S3571C11D0Ev();
extern void _ZN8S3571C112v9Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C11__7S3571C1[] = {
  ABISELECT(8576,5040),
  ABISELECT(5632,3308),
  ABISELECT(5568,3276),
  ABISELECT(5024,2948),
  ABISELECT(2080,1268),
  ABISELECT(1448,876),
  ABISELECT(1912,1156),
  ABISELECT(4496,2660),
  ABISELECT(2304,1392),
  ABISELECT(1352,820),
  ABISELECT(1408,852),
  ABISELECT(2040,1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&_ZN8S3571C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C11D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C112v9Ev,
};
extern void _ZN8S3571C12D1Ev();
extern void _ZN8S3571C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(5568,3276),
  ABISELECT(5024,2948),
  ABISELECT(2080,1268),
  ABISELECT(1448,876),
  ABISELECT(1912,1156),
  ABISELECT(4496,2660),
  ABISELECT(2304,1392),
  ABISELECT(1352,820),
  ABISELECT(1408,852),
  ABISELECT(2040,1248),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&_ZN8S3571C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C12D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn2040_N8S3571C12D1Ev,_ZThn1248_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn2040_N8S3571C12D0Ev,_ZThn1248_N8S3571C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(-2040,-1248),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-2040,-1248),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C12D1Ev,_ZTv0_n12_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn1352_N8S3571C12D1Ev,_ZThn820_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C12D0Ev,_ZTv0_n12_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn1352_N8S3571C12D0Ev,_ZThn820_N8S3571C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(-1352,-820),
  ABISELECT(-1352,-820),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C12D1Ev,_ZTv0_n12_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C12D0Ev,_ZTv0_n12_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S3571C12D1Ev,_ZTv0_n40_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn2304_N8S3571C12D1Ev,_ZThn1392_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3571C12D0Ev,_ZTv0_n40_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn2304_N8S3571C12D0Ev,_ZThn1392_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
extern void _ZN8S3571C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C13__8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-2304,-1392),
  ABISELECT(-856,-516),
  ABISELECT(-264,-144),
  ABISELECT(-392,-236),
  ABISELECT(2192,1268),
  ABISELECT(-952,-572),
  ABISELECT(-896,-540),
  ABISELECT(-224,-124),
  ABISELECT(-2304,-1392),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3571C12D1Ev,_ZTv0_n40_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3571C12D0Ev,_ZTv0_n40_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3571C132v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S3571C12D1Ev,_ZTv0_n32_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn4496_N8S3571C12D1Ev,_ZThn2660_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3571C12D0Ev,_ZTv0_n32_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn4496_N8S3571C12D0Ev,_ZThn2660_N8S3571C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C14__8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(-4496,-2660),
  ABISELECT(-3048,-1784),
  ABISELECT(-3144,-1840),
  ABISELECT(-2456,-1412),
  ABISELECT(-3088,-1808),
  ABISELECT(-2584,-1504),
  ABISELECT(-4496,-2660),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C12D1Ev,_ZTv0_n32_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C12D0Ev,_ZTv0_n32_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn1912_N8S3571C12D1Ev,_ZThn1156_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn1912_N8S3571C12D0Ev,_ZThn1156_N8S3571C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(-1912,-1156),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(-1912,-1156),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3571C12D1Ev,_ZTvn32_n32_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3571C12D0Ev,_ZTvn32_n32_N8S3571C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C38S3571C14__8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(-3112,-1816),
  ABISELECT(-3208,-1872),
  ABISELECT(-3152,-1840),
  ABISELECT(-4560,-2692),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C12D1Ev,_ZTvn32_n32_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C12D0Ev,_ZTvn32_n32_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn1448_N8S3571C12D1Ev,_ZThn876_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn1448_N8S3571C12D0Ev,_ZThn876_N8S3571C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(-1448,-876),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-1448,-876),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn2080_N8S3571C12D1Ev,_ZThn1268_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn2080_N8S3571C12D0Ev,_ZThn1268_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C128S3571C11__7S3571C1[] = {
  0,
  ABISELECT(-2080,-1268),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(-2080,-1268),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C12D1Ev,_ZTvn32_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C12D0Ev,_ZTvn32_n20_N8S3571C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-2136,-1300),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C12D1Ev,_ZTvn32_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C12D0Ev,_ZTvn32_n20_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S3571C12D1Ev,_ZTvn32_n40_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S3571C12D0Ev,_ZTvn32_n40_N8S3571C12D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C98S3571C13__A1__8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(-1016,-604),
  ABISELECT(-960,-572),
  ABISELECT(-2368,-1424),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3571C12D1Ev,_ZTvn32_n40_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3571C12D0Ev,_ZTvn32_n40_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S3571C12D1Ev,_ZTvn64_n40_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S3571C12D0Ev,_ZTvn64_n40_N8S3571C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C13__A4__8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  ABISELECT(-2424,-1456),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3571C12D1Ev,_ZTvn64_n40_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3571C12D0Ev,_ZTvn64_n40_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn5024_N8S3571C12D1Ev,_ZThn2948_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn5024_N8S3571C12D0Ev,_ZThn2948_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN8S3571C182v4Ev();
extern void _ZN8S3571C182v5Ev();
extern void _ZN8S3571C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C18__8S3571C128S3571C11__7S3571C1[] = {
  0,
  0,
  0,
  ABISELECT(-5024,-2948),
  ABISELECT(-3672,-2128),
  ABISELECT(-3616,-2096),
  ABISELECT(-5024,-2948),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S3571C12D1Ev,_ZTvn20_n20_N8S3571C12D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S3571C12D0Ev,_ZTvn20_n20_N8S3571C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C88S3571C18__A1__8S3571C128S3571C11__7S3571C1[] = {
  ABISELECT(-3712,-2148),
  ABISELECT(-3656,-2116),
  ABISELECT(-5064,-2968),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3571C12D1Ev,_ZTvn20_n20_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3571C12D0Ev,_ZTvn20_n20_N8S3571C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev)();
extern void ABISELECT(_ZThn5568_N8S3571C12D1Ev,_ZThn3276_N8S3571C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev)();
extern void ABISELECT(_ZThn5568_N8S3571C12D0Ev,_ZThn3276_N8S3571C12D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C15__A1__8S3571C128S3571C11__7S3571C1[] = {
  0,
  ABISELECT(-5568,-3276),
  ABISELECT(-4216,-2456),
  ABISELECT(-4160,-2424),
  ABISELECT(-3488,-2008),
  ABISELECT(-5568,-3276),
  (VTBL_ENTRY)&(_ZTI8S3571C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn2040_N8S3571C11D1Ev,_ZThn1248_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn2040_N8S3571C11D0Ev,_ZThn1248_N8S3571C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C11__7S3571C1[] = {
  ABISELECT(-2040,-1248),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-2040,-1248),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C11D1Ev,_ZTv0_n12_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn1352_N8S3571C11D1Ev,_ZThn820_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C11D0Ev,_ZTv0_n12_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn1352_N8S3571C11D0Ev,_ZThn820_N8S3571C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C11__7S3571C1[] = {
  ABISELECT(-1352,-820),
  ABISELECT(-1352,-820),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C11D1Ev,_ZTv0_n12_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C11D0Ev,_ZTv0_n12_N8S3571C11D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S3571C11D1Ev,_ZTv0_n40_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn2304_N8S3571C11D1Ev,_ZThn1392_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3571C11D0Ev,_ZTv0_n40_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn2304_N8S3571C11D0Ev,_ZThn1392_N8S3571C11D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
extern void _ZN8S3571C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C13__8S3571C11__7S3571C1[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-2304,-1392),
  ABISELECT(-856,-516),
  ABISELECT(-264,-144),
  ABISELECT(-392,-236),
  ABISELECT(2192,1268),
  ABISELECT(-952,-572),
  ABISELECT(-896,-540),
  ABISELECT(-224,-124),
  ABISELECT(-2304,-1392),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3571C11D1Ev,_ZTv0_n40_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3571C11D0Ev,_ZTv0_n40_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3571C132v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S3571C11D1Ev,_ZTv0_n32_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn4496_N8S3571C11D1Ev,_ZThn2660_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3571C11D0Ev,_ZTv0_n32_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn4496_N8S3571C11D0Ev,_ZThn2660_N8S3571C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C14__8S3571C11__7S3571C1[] = {
  ABISELECT(-4496,-2660),
  ABISELECT(-3048,-1784),
  ABISELECT(-3144,-1840),
  ABISELECT(-2456,-1412),
  ABISELECT(-3088,-1808),
  ABISELECT(-2584,-1504),
  ABISELECT(-4496,-2660),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C11D1Ev,_ZTv0_n32_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C11D0Ev,_ZTv0_n32_N8S3571C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C11D1Ev,_ZTv0_n24_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn1912_N8S3571C11D1Ev,_ZThn1156_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C11D0Ev,_ZTv0_n24_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn1912_N8S3571C11D0Ev,_ZThn1156_N8S3571C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C11__7S3571C1[] = {
  ABISELECT(-1912,-1156),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(-1912,-1156),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C11D1Ev,_ZTv0_n24_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C11D0Ev,_ZTv0_n24_N8S3571C11D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3571C11D1Ev,_ZTvn32_n32_N8S3571C11D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3571C11D0Ev,_ZTvn32_n32_N8S3571C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C38S3571C14__8S3571C11__7S3571C1[] = {
  ABISELECT(-3112,-1816),
  ABISELECT(-3208,-1872),
  ABISELECT(-3152,-1840),
  ABISELECT(-4560,-2692),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C11D1Ev,_ZTvn32_n32_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C11D0Ev,_ZTvn32_n32_N8S3571C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn1448_N8S3571C11D1Ev,_ZThn876_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn1448_N8S3571C11D0Ev,_ZThn876_N8S3571C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C11__7S3571C1[] = {
  ABISELECT(-1448,-876),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-1448,-876),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn2080_N8S3571C11D1Ev,_ZThn1268_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn2080_N8S3571C11D0Ev,_ZThn1268_N8S3571C11D0Ev)() __attribute__((weak));
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C11__7S3571C1[] = {
  0,
  ABISELECT(-2080,-1268),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(-2080,-1268),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C11D1Ev,_ZTvn32_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C11D0Ev,_ZTvn32_n20_N8S3571C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__8S3571C11__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-2136,-1300),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C11D1Ev,_ZTvn32_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C11D0Ev,_ZTvn32_n20_N8S3571C11D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S3571C11D1Ev,_ZTvn32_n40_N8S3571C11D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S3571C11D0Ev,_ZTvn32_n40_N8S3571C11D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C98S3571C13__A1__8S3571C11__7S3571C1[] = {
  ABISELECT(-1016,-604),
  ABISELECT(-960,-572),
  ABISELECT(-2368,-1424),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3571C11D1Ev,_ZTvn32_n40_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S3571C11D0Ev,_ZTvn32_n40_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S3571C11D1Ev,_ZTvn64_n40_N8S3571C11D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S3571C11D0Ev,_ZTvn64_n40_N8S3571C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C13__A4__8S3571C11__7S3571C1[] = {
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  ABISELECT(-2424,-1456),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3571C11D1Ev,_ZTvn64_n40_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S3571C11D0Ev,_ZTvn64_n40_N8S3571C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn5024_N8S3571C11D1Ev,_ZThn2948_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn5024_N8S3571C11D0Ev,_ZThn2948_N8S3571C11D0Ev)() __attribute__((weak));
extern void _ZN8S3571C182v4Ev();
extern void _ZN8S3571C182v5Ev();
extern void _ZN8S3571C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C18__8S3571C11__7S3571C1[] = {
  0,
  0,
  0,
  ABISELECT(-5024,-2948),
  ABISELECT(-3672,-2128),
  ABISELECT(-3616,-2096),
  ABISELECT(-5024,-2948),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S3571C11D1Ev,_ZTvn20_n20_N8S3571C11D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S3571C11D0Ev,_ZTvn20_n20_N8S3571C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C88S3571C18__A1__8S3571C11__7S3571C1[] = {
  ABISELECT(-3712,-2148),
  ABISELECT(-3656,-2116),
  ABISELECT(-5064,-2968),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3571C11D1Ev,_ZTvn20_n20_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S3571C11D0Ev,_ZTvn20_n20_N8S3571C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C11D1Ev,_ZTv0_n24_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn5568_N8S3571C11D1Ev,_ZThn3276_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C11D0Ev,_ZTv0_n24_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn5568_N8S3571C11D0Ev,_ZThn3276_N8S3571C11D0Ev)() __attribute__((weak));
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C15__A1__8S3571C11__7S3571C1[] = {
  0,
  ABISELECT(-5568,-3276),
  ABISELECT(-4216,-2456),
  ABISELECT(-4160,-2424),
  ABISELECT(-3488,-2008),
  ABISELECT(-5568,-3276),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C11D1Ev,_ZTv0_n24_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C11D0Ev,_ZTv0_n24_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S3571C11D1Ev,_ZTv0_n28_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn5632_N8S3571C11D1Ev,_ZThn3308_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3571C11D0Ev,_ZTv0_n28_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn5632_N8S3571C11D0Ev,_ZThn3308_N8S3571C11D0Ev)() __attribute__((weak));
extern void _ZN8S3571C202v7Ev();
extern void _ZN8S3571C192v8Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C19__8S3571C11__7S3571C1[] = {
  0,
  0,
  ABISELECT(-5632,-3308),
  ABISELECT(-4280,-2488),
  ABISELECT(-4224,-2456),
  ABISELECT(-3552,-2040),
  ABISELECT(2944,1732),
  ABISELECT(-5632,-3308),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C11D1Ev,_ZTv0_n28_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C11D0Ev,_ZTv0_n28_N8S3571C11D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3571C192v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3571C11D1Ev,_ZTv0_n12_N8S3571C11D1Ev)();
extern void ABISELECT(_ZThn8576_N8S3571C11D1Ev,_ZThn5040_N8S3571C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C11D0Ev,_ZTv0_n12_N8S3571C11D0Ev)();
extern void ABISELECT(_ZThn8576_N8S3571C11D0Ev,_ZThn5040_N8S3571C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3571C11__7S3571C1[] = {
  ABISELECT(-8576,-5040),
  ABISELECT(-8576,-5040),
  (VTBL_ENTRY)&(_ZTI8S3571C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C11D1Ev,_ZTv0_n12_N8S3571C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C11D0Ev,_ZTv0_n12_N8S3571C11D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C8__A1__7S3571C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C8__A1__7S3571C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C8__7S3571C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
extern void _ZN8S3571C10D1Ev();
extern void _ZN8S3571C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C10__7S3571C1[] = {
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&_ZN8S3571C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S3571C10D1Ev,_ZThn92_N8S3571C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S3571C10D0Ev,_ZThn92_N8S3571C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C10__7S3571C1[] = {
  ABISELECT(-128,-92),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C10__7S3571C1[] = {
  ABISELECT(560,336),
  ABISELECT(560,336),
  (VTBL_ENTRY)&(_ZTI8S3571C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D1Ev,_ZTv0_n12_N8S3571C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C10D0Ev,_ZTv0_n12_N8S3571C10D0Ev),
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C7__A2__7S3571C1[] = {
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C7__A2__7S3571C1[] = {
  ABISELECT(688,428),
  ABISELECT(688,428),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__7S3571C1[] = {
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C9__A3__7S3571C1[] = {
  ABISELECT(784,480),
  ABISELECT(784,480),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C9__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C9__7S3571C1[] = {
  ABISELECT(728,448),
  ABISELECT(728,448),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void _ZN8S3571C13D1Ev();
extern void _ZN8S3571C13D0Ev();
extern void _ZN8S3571C152v2Ev();
extern void _ZN8S3571C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C13__7S3571C1[] = {
  ABISELECT(-856,-516),
  ABISELECT(-264,-144),
  ABISELECT(-392,-236),
  ABISELECT(2192,1268),
  ABISELECT(-952,-572),
  ABISELECT(-896,-540),
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&_ZN8S3571C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
  (VTBL_ENTRY)&_ZN8S3571C132v3Ev,
};
extern void _ZN8S3571C15D1Ev();
extern void _ZN8S3571C15D0Ev();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C158S3571C13__7S3571C1[] = {
  ABISELECT(-952,-572),
  ABISELECT(-896,-540),
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&_ZN8S3571C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C158S3571C13__7S3571C1[] = {
  0,
  ABISELECT(224,124),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C158S3571C13__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(168,92),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C158S3571C13__7S3571C1[] = {
  ABISELECT(952,572),
  ABISELECT(952,572),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev),
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C98S3571C13__A1__7S3571C1[] = {
  ABISELECT(-1016,-604),
  ABISELECT(-960,-572),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C13__A5__7S3571C1[] = {
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C98S3571C13__A5__7S3571C1[] = {
  ABISELECT(1072,636),
  ABISELECT(1072,636),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C98S3571C13__A1__7S3571C1[] = {
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C98S3571C13__A1__7S3571C1[] = {
  ABISELECT(1016,604),
  ABISELECT(1016,604),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn2192_N8S3571C13D1Ev,_ZThn1268_N8S3571C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev)();
extern void ABISELECT(_ZThn2192_N8S3571C13D0Ev,_ZThn1268_N8S3571C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C14__8S3571C13__7S3571C1[] = {
  ABISELECT(-2192,-1268),
  ABISELECT(-3048,-1784),
  ABISELECT(-3144,-1840),
  ABISELECT(-2456,-1412),
  ABISELECT(-3088,-1808),
  ABISELECT(-2584,-1504),
  ABISELECT(-2192,-1268),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C13D1Ev,_ZTv0_n24_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3571C13D0Ev,_ZTv0_n24_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C13__7S3571C1[] = {
  ABISELECT(392,236),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(392,236),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C13D1Ev,_ZTv0_n24_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C13D0Ev,_ZTv0_n24_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C13__7S3571C1[] = {
  ABISELECT(264,144),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(264,144),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C13D1Ev,_ZTv0_n12_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C13D0Ev,_ZTv0_n12_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C13__7S3571C1[] = {
  ABISELECT(952,572),
  ABISELECT(952,572),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C13D1Ev,_ZTv0_n12_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C13D0Ev,_ZTv0_n12_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S3571C13D1Ev,_ZTvn32_n32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S3571C13D0Ev,_ZTvn32_n32_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C38S3571C14__8S3571C13__7S3571C1[] = {
  ABISELECT(-3112,-1816),
  ABISELECT(-3208,-1872),
  ABISELECT(-3152,-1840),
  ABISELECT(-2256,-1300),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C13D1Ev,_ZTvn32_n32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S3571C13D0Ev,_ZTvn32_n32_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C13__7S3571C1[] = {
  ABISELECT(856,516),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(856,516),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C13__7S3571C1[] = {
  0,
  ABISELECT(224,124),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D1Ev,_ZTv0_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C13D0Ev,_ZTv0_n20_N8S3571C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C13D1Ev,_ZTvn32_n20_N8S3571C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C13D0Ev,_ZTvn32_n20_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A3__8S3571C13__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(168,92),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C13D1Ev,_ZTvn32_n20_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C13D0Ev,_ZTvn32_n20_N8S3571C13D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3571C13D1Ev,_ZThn32_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C13D0Ev,_ZThn32_N8S3571C13D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__A__8S3571C13__7S3571C1[] = {
  ABISELECT(-1016,-604),
  ABISELECT(-960,-572),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C13D1Ev,_ZThn32_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C13D0Ev,_ZThn32_N8S3571C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZThn120_N8S3571C13D1Ev,_ZThn64_N8S3571C13D1Ev)();
extern void ABISELECT(_ZThn120_N8S3571C13D0Ev,_ZThn64_N8S3571C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A4__8S3571C13__7S3571C1[] = {
  ABISELECT(-1072,-636),
  ABISELECT(-1016,-604),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S3571C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3571C13D1Ev,_ZThn64_N8S3571C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S3571C13D0Ev,_ZThn64_N8S3571C13D0Ev),
};
extern void _ZN8S3571C14D1Ev();
extern void _ZN8S3571C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C14__7S3571C1[] = {
  ABISELECT(-3048,-1784),
  ABISELECT(-3144,-1840),
  ABISELECT(-2456,-1412),
  ABISELECT(-3088,-1808),
  ABISELECT(-2584,-1504),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&_ZN8S3571C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C14D0Ev,
};
extern void _ZN7S3571C3D1Ev();
extern void _ZN7S3571C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C38S3571C14__A1__7S3571C1[] = {
  ABISELECT(-3112,-1816),
  ABISELECT(-3208,-1872),
  ABISELECT(-3152,-1840),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&_ZN7S3571C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C3D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C38S3571C14__A4__7S3571C1[] = {
  ABISELECT(-3208,-1872),
  ABISELECT(-3152,-1840),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C38S3571C14__A4__7S3571C1[] = {
  ABISELECT(3208,1872),
  ABISELECT(3208,1872),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C38S3571C14__A1__7S3571C1[] = {
  ABISELECT(3208,1872),
  ABISELECT(3208,1872),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C38S3571C14__A1__7S3571C1[] = {
  ABISELECT(3112,1816),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(3112,1816),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3571C10__8S3571C14__7S3571C1[] = {
  ABISELECT(2584,1504),
  ABISELECT(-560,-336),
  ABISELECT(128,92),
  ABISELECT(-504,-304),
  ABISELECT(2584,1504),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C14D1Ev,_ZTv0_n24_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C14D0Ev,_ZTv0_n24_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__8S3571C14__7S3571C1[] = {
  ABISELECT(2456,1412),
  ABISELECT(-688,-428),
  ABISELECT(-632,-396),
  ABISELECT(2456,1412),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C14__7S3571C1[] = {
  ABISELECT(3144,1840),
  ABISELECT(3144,1840),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C14D1Ev,_ZTv0_n12_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C14D0Ev,_ZTv0_n12_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3571C14D1Ev,_ZThn32_N8S3571C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C14D0Ev,_ZThn32_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C3__8S3571C14__7S3571C1[] = {
  ABISELECT(-3112,-1816),
  ABISELECT(-3208,-1872),
  ABISELECT(-3152,-1840),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C14D1Ev,_ZThn32_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C14D0Ev,_ZThn32_N8S3571C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C14__7S3571C1[] = {
  ABISELECT(3048,1784),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(3048,1784),
  (VTBL_ENTRY)&(_ZTI8S3571C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D1Ev,_ZTv0_n20_N8S3571C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C14D0Ev,_ZTv0_n20_N8S3571C14D0Ev),
};
extern void _ZN8S3571C18D1Ev();
extern void _ZN8S3571C18D0Ev();
extern void _ZN8S3571C182v4Ev();
extern void _ZN8S3571C182v5Ev();
extern void _ZN8S3571C182v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C18__7S3571C1[] = {
  ABISELECT(-3672,-2128),
  ABISELECT(-3616,-2096),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&_ZN8S3571C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C18D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v4Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v5Ev,
  (VTBL_ENTRY)&_ZN8S3571C182v6Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C78S3571C18__A6__7S3571C1[] = {
  ABISELECT(-3672,-2128),
  ABISELECT(-3616,-2096),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C78S3571C18__A6__7S3571C1[] = {
  ABISELECT(3672,2128),
  ABISELECT(3672,2128),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void _ZN7S3571C8D1Ev();
extern void _ZN7S3571C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C88S3571C18__A1__7S3571C1[] = {
  ABISELECT(-3712,-2148),
  ABISELECT(-3656,-2116),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&_ZN7S3571C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C8D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C88S3571C18__A7__7S3571C1[] = {
  ABISELECT(-3712,-2148),
  ABISELECT(-3656,-2116),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C88S3571C18__A7__7S3571C1[] = {
  ABISELECT(3712,2148),
  ABISELECT(3712,2148),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C88S3571C18__A1__7S3571C1[] = {
  ABISELECT(3712,2148),
  ABISELECT(3712,2148),
  (VTBL_ENTRY)&(_ZTI7S3571C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D1Ev,_ZTv0_n12_N7S3571C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C8D0Ev,_ZTv0_n12_N7S3571C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C18D1Ev,_ZTv0_n12_N8S3571C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C18D0Ev,_ZTv0_n12_N8S3571C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C18__7S3571C1[] = {
  ABISELECT(3672,2128),
  ABISELECT(3672,2128),
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C18D1Ev,_ZTv0_n12_N8S3571C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C18D0Ev,_ZTv0_n12_N8S3571C18D0Ev),
};
extern void ABISELECT(_ZThn40_N8S3571C18D1Ev,_ZThn20_N8S3571C18D1Ev)();
extern void ABISELECT(_ZThn40_N8S3571C18D0Ev,_ZThn20_N8S3571C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C18__7S3571C1[] = {
  ABISELECT(-3712,-2148),
  ABISELECT(-3656,-2116),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3571C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3571C18D1Ev,_ZThn20_N8S3571C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3571C18D0Ev,_ZThn20_N8S3571C18D0Ev),
};
extern void _ZN8S3571C15D1Ev();
extern void _ZN8S3571C15D0Ev();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C15__A1__7S3571C1[] = {
  ABISELECT(-4216,-2456),
  ABISELECT(-4160,-2424),
  ABISELECT(-3488,-2008),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&_ZN8S3571C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C15__A1__7S3571C1[] = {
  0,
  ABISELECT(3488,2008),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(3488,2008),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C15__A1__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(3432,1976),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C15__A1__7S3571C1[] = {
  ABISELECT(4216,2456),
  ABISELECT(4216,2456),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev),
};
extern void _ZN8S3571C19D1Ev();
extern void _ZN8S3571C19D0Ev();
extern void _ZN8S3571C202v7Ev();
extern void _ZN8S3571C192v8Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C19__7S3571C1[] = {
  ABISELECT(-4280,-2488),
  ABISELECT(-4224,-2456),
  ABISELECT(-3552,-2040),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&_ZN8S3571C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C19D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
  (VTBL_ENTRY)&_ZN8S3571C192v8Ev,
};
extern void _ZN8S3571C20D1Ev();
extern void _ZN8S3571C20D0Ev();
extern void _ZN8S3571C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C208S3571C19__7S3571C1[] = {
  ABISELECT(-4280,-2488),
  ABISELECT(-4224,-2456),
  ABISELECT(-3552,-2040),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&_ZN8S3571C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C20D1Ev,_ZThn1732_N8S3571C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C20D0Ev,_ZThn1732_N8S3571C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3571C208S3571C19__7S3571C1[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C208S3571C19__7S3571C1[] = {
  0,
  ABISELECT(3552,2040),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(3552,2040),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C208S3571C19__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(3496,2008),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C208S3571C19__7S3571C1[] = {
  ABISELECT(4280,2488),
  ABISELECT(4280,2488),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C19D1Ev,_ZThn1732_N8S3571C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev)();
extern void ABISELECT(_ZThn2944_N8S3571C19D0Ev,_ZThn1732_N8S3571C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3571C19__7S3571C1[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C19D1Ev,_ZTv0_n20_N8S3571C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C19D0Ev,_ZTv0_n20_N8S3571C19D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C19__7S3571C1[] = {
  0,
  ABISELECT(3552,2040),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(3552,2040),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C19D1Ev,_ZTv0_n20_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C19D0Ev,_ZTv0_n20_N8S3571C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C19D1Ev,_ZTvn32_n20_N8S3571C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C19D0Ev,_ZTvn32_n20_N8S3571C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C19__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(3496,2008),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C19D1Ev,_ZTvn32_n20_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C19D0Ev,_ZTvn32_n20_N8S3571C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C19__7S3571C1[] = {
  ABISELECT(4280,2488),
  ABISELECT(4280,2488),
  (VTBL_ENTRY)&(_ZTI8S3571C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev),
};
extern void _ZN8S3571C25D1Ev();
extern void _ZN8S3571C25D0Ev();
extern void _ZN8S3571C253v10Ev();
extern void _ZN8S3571C253v11Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C25__7S3571C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(2560,1476),
  ABISELECT(2496,1448),
  ABISELECT(-7160,-4180),
  ABISELECT(2128,1248),
  ABISELECT(-6528,-3788),
  ABISELECT(-7256,-4236),
  ABISELECT(-7200,-4204),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&_ZN8S3571C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C25D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C253v10Ev,
  (VTBL_ENTRY)&_ZN8S3571C253v11Ev,
};
extern void _ZN8S3571C16D1Ev();
extern void _ZN8S3571C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C168S3571C25__7S3571C1[] = {
  ABISELECT(-6528,-3788),
  ABISELECT(-7256,-4236),
  ABISELECT(-7200,-4204),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&_ZN8S3571C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C16D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C78S3571C168S3571C25__A8__7S3571C1[] = {
  ABISELECT(-7256,-4236),
  ABISELECT(-7200,-4204),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C78S3571C168S3571C25__A8__7S3571C1[] = {
  ABISELECT(7256,4236),
  ABISELECT(7256,4236),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C168S3571C25__7S3571C1[] = {
  ABISELECT(7256,4236),
  ABISELECT(7256,4236),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C168S3571C25__7S3571C1[] = {
  0,
  ABISELECT(6528,3788),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(6528,3788),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C168S3571C25__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(6472,3756),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev),
};
extern void _ZN8S3571C26D1Ev();
extern void _ZN8S3571C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(2496,1448),
  ABISELECT(-6592,-3816),
  ABISELECT(-7320,-4264),
  ABISELECT(-7264,-4232),
  ABISELECT(2432,1420),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&_ZN8S3571C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C26D0Ev,
};
extern void _ZN8S3571C27D1Ev();
extern void _ZN8S3571C27D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C278S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(-6624,-3832),
  ABISELECT(2400,1404),
  ABISELECT(-7352,-4280),
  ABISELECT(-7296,-4248),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&_ZN8S3571C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C27D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C9D1Ev();
extern void _ZN7S3571C9D0Ev();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C98S3571C278S3571C268S3571C25__A2__7S3571C1[] = {
  ABISELECT(-7352,-4280),
  ABISELECT(-7296,-4248),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&_ZN7S3571C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C278S3571C268S3571C25__A11__7S3571C1[] = {
  ABISELECT(-7408,-4312),
  ABISELECT(-7352,-4280),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C98S3571C278S3571C268S3571C25__A11__7S3571C1[] = {
  ABISELECT(7408,4312),
  ABISELECT(7408,4312),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev)();
extern void ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C7__7S3571C98S3571C278S3571C268S3571C25__A2__7S3571C1[] = {
  ABISELECT(-7408,-4312),
  ABISELECT(-7352,-4280),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D1Ev,_ZThn32_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3571C9D0Ev,_ZThn32_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S3571C98S3571C278S3571C268S3571C25__A2__7S3571C1[] = {
  ABISELECT(7352,4280),
  ABISELECT(7352,4280),
  (VTBL_ENTRY)&(_ZTI7S3571C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D1Ev,_ZTv0_n12_N7S3571C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C9D0Ev,_ZTv0_n12_N7S3571C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn2400_N8S3571C27D1Ev,_ZThn1404_N8S3571C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev)();
extern void ABISELECT(_ZThn2400_N8S3571C27D0Ev,_ZThn1404_N8S3571C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C16__8S3571C278S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(-2400,-1404),
  ABISELECT(-9024,-5236),
  ABISELECT(-9752,-5684),
  ABISELECT(-9696,-5652),
  ABISELECT(-2400,-1404),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C27D1Ev,_ZTv0_n12_N8S3571C27D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C27D0Ev,_ZTv0_n12_N8S3571C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C278S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(7352,4280),
  ABISELECT(7352,4280),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C27D1Ev,_ZTv0_n12_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C27D0Ev,_ZTv0_n12_N8S3571C27D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C27D1Ev,_ZTv0_n20_N8S3571C27D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C27D0Ev,_ZTv0_n20_N8S3571C27D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C278S3571C268S3571C25__7S3571C1[] = {
  0,
  ABISELECT(6624,3832),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(6624,3832),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C27D1Ev,_ZTv0_n20_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C27D0Ev,_ZTv0_n20_N8S3571C27D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C27D1Ev,_ZTvn32_n20_N8S3571C27D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C27D0Ev,_ZTvn32_n20_N8S3571C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C278S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(6568,3800),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C27D1Ev,_ZTvn32_n20_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C27D0Ev,_ZTvn32_n20_N8S3571C27D0Ev),
};
extern void ABISELECT(_ZThn56_N8S3571C27D1Ev,_ZThn32_N8S3571C27D1Ev)();
extern void ABISELECT(_ZThn56_N8S3571C27D0Ev,_ZThn32_N8S3571C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A2__8S3571C278S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(-7408,-4312),
  ABISELECT(-7352,-4280),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S3571C27[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3571C27D1Ev,_ZThn32_N8S3571C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3571C27D0Ev,_ZThn32_N8S3571C27D0Ev),
};
extern void _ZN8S3571C15D1Ev();
extern void _ZN8S3571C15D0Ev();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C158S3571C268S3571C25__A2__7S3571C1[] = {
  ABISELECT(-8552,-5008),
  ABISELECT(-8496,-4976),
  ABISELECT(-7824,-4560),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&_ZN8S3571C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C15D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C158S3571C268S3571C25__A2__7S3571C1[] = {
  0,
  ABISELECT(7824,4560),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(7824,4560),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D1Ev,_ZTv0_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C15D0Ev,_ZTv0_n20_N8S3571C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C158S3571C268S3571C25__A2__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(7768,4528),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D1Ev,_ZTvn32_n20_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C15D0Ev,_ZTvn32_n20_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C158S3571C268S3571C25__A2__7S3571C1[] = {
  ABISELECT(8552,5008),
  ABISELECT(8552,5008),
  (VTBL_ENTRY)&(_ZTI8S3571C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D1Ev,_ZTv0_n12_N8S3571C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C15D0Ev,_ZTv0_n12_N8S3571C15D0Ev),
};
extern void ABISELECT(_ZThn32_N8S3571C26D1Ev,_ZThn16_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn32_N8S3571C26D0Ev,_ZThn16_N8S3571C26D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C27__8S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(-6624,-3832),
  ABISELECT(2400,1404),
  ABISELECT(-7352,-4280),
  ABISELECT(-7296,-4248),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3571C26D1Ev,_ZThn16_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3571C26D0Ev,_ZThn16_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S3571C26D1Ev,_ZTv0_n24_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn2432_N8S3571C26D1Ev,_ZThn1420_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C26D0Ev,_ZTv0_n24_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn2432_N8S3571C26D0Ev,_ZThn1420_N8S3571C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C16__8S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(-2432,-1420),
  ABISELECT(-9024,-5236),
  ABISELECT(-9752,-5684),
  ABISELECT(-9696,-5652),
  ABISELECT(-2432,-1420),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C26D1Ev,_ZTv0_n24_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C26D0Ev,_ZTv0_n24_N8S3571C26D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(7320,4264),
  ABISELECT(7320,4264),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C26D1Ev,_ZTv0_n20_N8S3571C26D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C26D0Ev,_ZTv0_n20_N8S3571C26D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C268S3571C25__7S3571C1[] = {
  0,
  ABISELECT(6592,3816),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(6592,3816),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C26D1Ev,_ZTv0_n20_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C26D0Ev,_ZTv0_n20_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C26D1Ev,_ZTvn32_n20_N8S3571C26D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C26D0Ev,_ZTvn32_n20_N8S3571C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(6536,3784),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C26D1Ev,_ZTvn32_n20_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C26D0Ev,_ZTvn32_n20_N8S3571C26D0Ev),
};
extern void ABISELECT(_ZThn88_N8S3571C26D1Ev,_ZThn48_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn88_N8S3571C26D0Ev,_ZThn48_N8S3571C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C27__A2__8S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(-7408,-4312),
  ABISELECT(-7352,-4280),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3571C26D1Ev,_ZThn48_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S3571C26D0Ev,_ZThn48_N8S3571C26D0Ev),
};
extern void ABISELECT(_ZThn1232_N8S3571C26D1Ev,_ZThn744_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn1232_N8S3571C26D0Ev,_ZThn744_N8S3571C26D0Ev)();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C15__8S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(-8552,-5008),
  ABISELECT(-8496,-4976),
  ABISELECT(-7824,-4560),
  ABISELECT(-1232,-744),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3571C26D1Ev,_ZThn744_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1232_N8S3571C26D0Ev,_ZThn744_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S3571C26D1Ev,_ZTv0_n28_N8S3571C26D1Ev)();
extern void ABISELECT(_ZThn2496_N8S3571C26D1Ev,_ZThn1448_N8S3571C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3571C26D0Ev,_ZTv0_n28_N8S3571C26D0Ev)();
extern void ABISELECT(_ZThn2496_N8S3571C26D0Ev,_ZThn1448_N8S3571C26D0Ev)() __attribute__((weak));
extern void _ZN8S3571C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C20__8S3571C268S3571C25__7S3571C1[] = {
  0,
  ABISELECT(-2496,-1448),
  ABISELECT(-9816,-5712),
  ABISELECT(-9760,-5680),
  ABISELECT(-9088,-5264),
  ABISELECT(-2592,-1492),
  ABISELECT(-2496,-1448),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C26D1Ev,_ZTv0_n28_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C26D0Ev,_ZTv0_n28_N8S3571C26D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3572C21__A1__8S3571C268S3571C25__7S3571C1[] = {
  ABISELECT(96,44),
  ABISELECT(96,44),
  (VTBL_ENTRY)&(_ZTI8S3571C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D1Ev,_ZTv0_n12_N8S3571C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C26D0Ev,_ZTv0_n12_N8S3571C26D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C25D1Ev,_ZTv0_n12_N8S3571C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C25D0Ev,_ZTv0_n12_N8S3571C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C25__7S3571C1[] = {
  ABISELECT(7256,4236),
  ABISELECT(7256,4236),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C25D1Ev,_ZTv0_n12_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C25D0Ev,_ZTv0_n12_N8S3571C25D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C25D1Ev,_ZTv0_n20_N8S3571C25D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C25D0Ev,_ZTv0_n20_N8S3571C25D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C25__7S3571C1[] = {
  0,
  ABISELECT(6528,3788),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(6528,3788),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C25D1Ev,_ZTv0_n20_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C25D0Ev,_ZTv0_n20_N8S3571C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C25D1Ev,_ZTvn32_n20_N8S3571C25D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C25D0Ev,_ZTvn32_n20_N8S3571C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C25__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(6472,3756),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C25D1Ev,_ZTvn32_n20_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C25D0Ev,_ZTvn32_n20_N8S3571C25D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3571C25D1Ev,_ZTv0_n24_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn2128_N8S3571C25D1Ev,_ZThn1248_N8S3571C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C25D0Ev,_ZTv0_n24_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn2128_N8S3571C25D0Ev,_ZThn1248_N8S3571C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3571C3__8S3571C25__7S3571C1[] = {
  ABISELECT(-2128,-1248),
  ABISELECT(-9288,-5428),
  ABISELECT(-9384,-5484),
  ABISELECT(-9328,-5452),
  ABISELECT(-2128,-1248),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C25D1Ev,_ZTv0_n24_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C25D0Ev,_ZTv0_n24_N8S3571C25D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C25D1Ev,_ZTv0_n20_N8S3571C25D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C25D0Ev,_ZTv0_n20_N8S3571C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C8__8S3571C25__7S3571C1[] = {
  ABISELECT(7160,4180),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(7160,4180),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C25D1Ev,_ZTv0_n20_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C25D0Ev,_ZTv0_n20_N8S3571C25D0Ev),
};
extern void ABISELECT(_ZThn64_N8S3571C25D1Ev,_ZThn28_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn64_N8S3571C25D0Ev,_ZThn28_N8S3571C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3571C26__8S3571C25__7S3571C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(2496,1448),
  ABISELECT(-6592,-3816),
  ABISELECT(-7320,-4264),
  ABISELECT(-7264,-4232),
  ABISELECT(2432,1420),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C25D1Ev,_ZThn28_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3571C25D0Ev,_ZThn28_N8S3571C25D0Ev),
};
extern void ABISELECT(_ZThn96_N8S3571C25D1Ev,_ZThn44_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn96_N8S3571C25D0Ev,_ZThn44_N8S3571C25D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C278S3571C26__8S3571C25__7S3571C1[] = {
  ABISELECT(-6624,-3832),
  ABISELECT(2400,1404),
  ABISELECT(-7352,-4280),
  ABISELECT(-7296,-4248),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S3571C25D1Ev,_ZThn44_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S3571C25D0Ev,_ZThn44_N8S3571C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S3571C25D1Ev,_ZTv0_n24_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn2496_N8S3571C25D1Ev,_ZThn1448_N8S3571C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3571C25D0Ev,_ZTv0_n24_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn2496_N8S3571C25D0Ev,_ZThn1448_N8S3571C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3571C16__A1__8S3571C25__7S3571C1[] = {
  ABISELECT(-2496,-1448),
  ABISELECT(-9024,-5236),
  ABISELECT(-9752,-5684),
  ABISELECT(-9696,-5652),
  ABISELECT(-2496,-1448),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C25D1Ev,_ZTv0_n24_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3571C25D0Ev,_ZTv0_n24_N8S3571C25D0Ev),
};
extern void ABISELECT(_ZThn152_N8S3571C25D1Ev,_ZThn76_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn152_N8S3571C25D0Ev,_ZThn76_N8S3571C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C98S3571C278S3571C26__A5__8S3571C25__7S3571C1[] = {
  ABISELECT(-7408,-4312),
  ABISELECT(-7352,-4280),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N8S3571C25D1Ev,_ZThn76_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N8S3571C25D0Ev,_ZThn76_N8S3571C25D0Ev),
};
extern void ABISELECT(_ZThn1296_N8S3571C25D1Ev,_ZThn772_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn1296_N8S3571C25D0Ev,_ZThn772_N8S3571C25D0Ev)();
extern void _ZN8S3571C152v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C158S3571C26__8S3571C25__7S3571C1[] = {
  ABISELECT(-8552,-5008),
  ABISELECT(-8496,-4976),
  ABISELECT(-7824,-4560),
  ABISELECT(-1296,-772),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn1296_N8S3571C25D1Ev,_ZThn772_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1296_N8S3571C25D0Ev,_ZThn772_N8S3571C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C152v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S3571C25D1Ev,_ZTv0_n28_N8S3571C25D1Ev)();
extern void ABISELECT(_ZThn2560_N8S3571C25D1Ev,_ZThn1476_N8S3571C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3571C25D0Ev,_ZTv0_n28_N8S3571C25D0Ev)();
extern void ABISELECT(_ZThn2560_N8S3571C25D0Ev,_ZThn1476_N8S3571C25D0Ev)() __attribute__((weak));
extern void _ZN8S3571C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C20__8S3571C25__7S3571C1[] = {
  0,
  ABISELECT(-2560,-1476),
  ABISELECT(-9816,-5712),
  ABISELECT(-9760,-5680),
  ABISELECT(-9088,-5264),
  ABISELECT(-2592,-1492),
  ABISELECT(-2560,-1476),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C25D1Ev,_ZTv0_n28_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3571C25D0Ev,_ZTv0_n28_N8S3571C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3571C25D1Ev,_ZTv0_n12_N8S3571C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C25D0Ev,_ZTv0_n12_N8S3571C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3572C21__A1__8S3571C25__7S3571C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S3571C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C25D1Ev,_ZTv0_n12_N8S3571C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C25D0Ev,_ZTv0_n12_N8S3571C25D0Ev),
};
extern void _ZN7S3571C3D1Ev();
extern void _ZN7S3571C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C3__A2__7S3571C1[] = {
  ABISELECT(-9288,-5428),
  ABISELECT(-9384,-5484),
  ABISELECT(-9328,-5452),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&_ZN7S3571C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C3D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C3__A9__7S3571C1[] = {
  ABISELECT(-9384,-5484),
  ABISELECT(-9328,-5452),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C77S3571C3__A9__7S3571C1[] = {
  ABISELECT(9384,5484),
  ABISELECT(9384,5484),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C3__A2__7S3571C1[] = {
  ABISELECT(9384,5484),
  ABISELECT(9384,5484),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C8__7S3571C3__A2__7S3571C1[] = {
  ABISELECT(9288,5428),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(9288,5428),
  (VTBL_ENTRY)&(_ZTI7S3571C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev),
};
extern void _ZN8S3571C16D1Ev();
extern void _ZN8S3571C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C16__A1__7S3571C1[] = {
  ABISELECT(-9024,-5236),
  ABISELECT(-9752,-5684),
  ABISELECT(-9696,-5652),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&_ZN8S3571C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C16D0Ev,
};
extern void _ZN7S3571C7D1Ev();
extern void _ZN7S3571C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C78S3571C16__A10__7S3571C1[] = {
  ABISELECT(-9752,-5684),
  ABISELECT(-9696,-5652),
  0,
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&_ZN7S3571C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3571C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S3571C78S3571C16__A10__7S3571C1[] = {
  ABISELECT(9752,5684),
  ABISELECT(9752,5684),
  (VTBL_ENTRY)&(_ZTI7S3571C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S3571C16__A1__7S3571C1[] = {
  ABISELECT(9752,5684),
  ABISELECT(9752,5684),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D1Ev,_ZTv0_n12_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C16D0Ev,_ZTv0_n12_N8S3571C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C16__A1__7S3571C1[] = {
  0,
  ABISELECT(9024,5236),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(9024,5236),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D1Ev,_ZTv0_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C16D0Ev,_ZTv0_n20_N8S3571C16D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__A1__8S3571C16__A1__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(8968,5204),
  (VTBL_ENTRY)&(_ZTI8S3571C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D1Ev,_ZTvn32_n20_N8S3571C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C16D0Ev,_ZTvn32_n20_N8S3571C16D0Ev),
};
extern void _ZN8S3571C20D1Ev();
extern void _ZN8S3571C20D0Ev();
extern void _ZN8S3571C202v7Ev();
static  VTBL_ENTRY _tg__ZTV8S3571C20__A1__7S3571C1[] = {
  ABISELECT(-9816,-5712),
  ABISELECT(-9760,-5680),
  ABISELECT(-9088,-5264),
  ABISELECT(-2592,-1492),
  0,
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&_ZN8S3571C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3571C20D0Ev,
  (VTBL_ENTRY)&_ZN8S3571C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S3571C20__A1__7S3571C1[] = {
  ABISELECT(2592,1492),
  ABISELECT(2592,1492),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev)();
extern void _ZN7S3571C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3571C9__8S3571C20__A1__7S3571C1[] = {
  0,
  ABISELECT(9088,5264),
  ABISELECT(-728,-448),
  ABISELECT(-672,-416),
  ABISELECT(9088,5264),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D1Ev,_ZTv0_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3571C20D0Ev,_ZTv0_n20_N8S3571C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3571C92v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3571C77S3571C9__8S3571C20__A1__7S3571C1[] = {
  ABISELECT(-784,-480),
  ABISELECT(-728,-448),
  ABISELECT(9032,5232),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D1Ev,_ZTvn32_n20_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S3571C20D0Ev,_ZTvn32_n20_N8S3571C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S3571C20__A1__7S3571C1[] = {
  ABISELECT(9816,5712),
  ABISELECT(9816,5712),
  (VTBL_ENTRY)&(_ZTI8S3571C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev),
};
static  VTT_ENTRY vtt_S3571C1[] = {
  {&(_ZTV7S3571C1[18]),  18,252},
  {&(_tg__ZTV7S3571C2__7S3571C1[8]),  8,10},
  {&(_tg__ZTV7S3571C37S3571C2__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C77S3571C37S3571C2__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C37S3571C2__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C37S3571C2__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C8__7S3571C37S3571C2__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__7S3571C2__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C8__7S3571C2__7S3571C1[5]),  5,7},
  {&(_tg__ZTV8S3571C10__7S3571C2__7S3571C1[6]),  6,8},
  {&(_tg__ZTV7S3571C7__A2__7S3571C2__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C9__7S3571C2__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A3__7S3571C2__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C11__7S3571C1[14]),  14,17},
  {&(_tg__ZTV8S3571C128S3571C11__7S3571C1[12]),  12,14},
  {&(_tg__ZTV7S3571C7__8S3571C128S3571C11__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C128S3571C11__7S3571C1[3]),  3,5},
  {&(_tg__ZTV8S3571C13__8S3571C128S3571C11__7S3571C1[13]),  13,17},
  {&(_tg__ZTV8S3571C14__8S3571C128S3571C11__7S3571C1[8]),  8,10},
  {&(_tg__ZTV8S3571C10__8S3571C128S3571C11__7S3571C1[6]),  6,8},
  {&(_tg__ZTV7S3571C38S3571C14__8S3571C128S3571C11__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C8__8S3571C128S3571C11__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C9__8S3571C128S3571C11__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A3__8S3571C128S3571C11__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3571C98S3571C13__A1__8S3571C128S3571C11__7S3571C1[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C98S3571C13__A4__8S3571C128S3571C11__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C18__8S3571C128S3571C11__7S3571C1[8]),  8,13},
  {&(_tg__ZTV7S3571C88S3571C18__A1__8S3571C128S3571C11__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C15__A1__8S3571C128S3571C11__7S3571C1[7]),  7,10},
  {&(_tg__ZTV7S3571C7__8S3571C11__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C11__7S3571C1[3]),  3,5},
  {&(_tg__ZTV8S3571C13__8S3571C11__7S3571C1[13]),  13,17},
  {&(_tg__ZTV8S3571C14__8S3571C11__7S3571C1[8]),  8,10},
  {&(_tg__ZTV8S3571C10__8S3571C11__7S3571C1[6]),  6,8},
  {&(_tg__ZTV7S3571C38S3571C14__8S3571C11__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C8__8S3571C11__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C9__8S3571C11__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A3__8S3571C11__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3571C98S3571C13__A1__8S3571C11__7S3571C1[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C98S3571C13__A4__8S3571C11__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C18__8S3571C11__7S3571C1[8]),  8,13},
  {&(_tg__ZTV7S3571C88S3571C18__A1__8S3571C11__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C15__A1__8S3571C11__7S3571C1[7]),  7,10},
  {&(_tg__ZTV8S3571C19__8S3571C11__7S3571C1[9]),  9,13},
  {&(_tg__ZTV8S3572C21__8S3571C11__7S3571C1[3]),  3,5},
  {&(_ZTV7S3571C1[40]),  40,252},
  {&(_ZTV7S3571C1[47]),  47,252},
  {&(_ZTV7S3571C1[55]),  55,252},
  {&(_ZTV7S3571C1[62]),  62,252},
  {&(_ZTV7S3571C1[70]),  70,252},
  {&(_ZTV7S3571C1[77]),  77,252},
  {&(_ZTV7S3571C1[34]),  34,252},
  {&(_ZTV7S3571C1[92]),  92,252},
  {&(_ZTV7S3571C1[117]),  117,252},
  {&(_ZTV7S3571C1[124]),  124,252},
  {&(_ZTV7S3571C1[100]),  100,252},
  {&(_ZTV7S3571C1[107]),  107,252},
  {&(_ZTV7S3571C1[134]),  134,252},
  {&(_ZTV7S3571C1[143]),  143,252},
  {&(_ZTV7S3571C1[152]),  152,252},
  {&(_ZTV7S3571C1[164]),  164,252},
  {&(_ZTV7S3571C1[171]),  171,252},
  {&(_ZTV7S3571C1[188]),  188,252},
  {&(_ZTV7S3571C1[231]),  231,252},
  {&(_ZTV7S3571C1[200]),  200,252},
  {&(_ZTV7S3571C1[208]),  208,252},
  {&(_ZTV7S3571C1[239]),  239,252},
  {&(_ZTV7S3571C1[215]),  215,252},
  {&(_ZTV7S3571C1[222]),  222,252},
  {&(_ZTV7S3571C1[249]),  249,252},
  {&(_tg__ZTV7S3571C8__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C8__A1__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C8__A1__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C8__7S3571C1[3]),  3,5},
  {&(_tg__ZTV8S3571C10__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C7__8S3571C10__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C10__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C7__A2__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C7__A2__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C9__7S3571C1[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A3__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C9__A3__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C9__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C9__7S3571C1[3]),  3,5},
  {&(_tg__ZTV8S3571C13__7S3571C1[9]),  9,13},
  {&(_tg__ZTV8S3571C158S3571C13__7S3571C1[5]),  5,8},
  {&(_tg__ZTV7S3571C9__8S3571C158S3571C13__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C158S3571C13__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C158S3571C13__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C98S3571C13__A1__7S3571C1[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C98S3571C13__A5__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C98S3571C13__A5__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C98S3571C13__A1__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C98S3571C13__A1__7S3571C1[3]),  3,5},
  {&(_tg__ZTV8S3571C14__8S3571C13__7S3571C1[8]),  8,10},
  {&(_tg__ZTV8S3571C10__8S3571C13__7S3571C1[6]),  6,8},
  {&(_tg__ZTV7S3571C7__8S3571C13__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C13__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C38S3571C14__8S3571C13__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C8__8S3571C13__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C9__8S3571C13__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A3__8S3571C13__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3571C9__A__8S3571C13__7S3571C1[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C9__A4__8S3571C13__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C14__7S3571C1[7]),  7,9},
  {&(_tg__ZTV7S3571C38S3571C14__A1__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C77S3571C38S3571C14__A4__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C38S3571C14__A4__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C38S3571C14__A1__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C8__7S3571C38S3571C14__A1__7S3571C1[5]),  5,7},
  {&(_tg__ZTV8S3571C10__8S3571C14__7S3571C1[6]),  6,8},
  {&(_tg__ZTV7S3571C7__8S3571C14__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S3571C14__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C3__8S3571C14__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C8__8S3571C14__7S3571C1[5]),  5,7},
  {&(_tg__ZTV8S3571C18__7S3571C1[4]),  4,9},
  {&(_tg__ZTV7S3571C78S3571C18__A6__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C78S3571C18__A6__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C88S3571C18__A1__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C88S3571C18__A7__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C88S3571C18__A7__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C88S3571C18__A1__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3571C18__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C8__8S3571C18__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C15__A1__7S3571C1[5]),  5,8},
  {&(_tg__ZTV7S3571C9__8S3571C15__A1__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C15__A1__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C15__A1__7S3571C1[3]),  3,5},
  {&(_tg__ZTV8S3571C19__7S3571C1[6]),  6,10},
  {&(_tg__ZTV8S3571C208S3571C19__7S3571C1[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3571C208S3571C19__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C208S3571C19__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C208S3571C19__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C208S3571C19__7S3571C1[3]),  3,5},
  {&(_tg__ZTV8S3572C21__8S3571C19__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C19__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C19__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C19__7S3571C1[3]),  3,5},
  {&(_tg__ZTV8S3571C25__7S3571C1[10]),  10,14},
  {&(_tg__ZTV8S3571C168S3571C25__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C78S3571C168S3571C25__A8__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C78S3571C168S3571C25__A8__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3571C168S3571C25__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C168S3571C25__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C168S3571C25__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C268S3571C25__7S3571C1[8]),  8,10},
  {&(_tg__ZTV8S3571C278S3571C268S3571C25__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C98S3571C278S3571C268S3571C25__A2__7S3571C1[4]),  4,7},
  {&(_tg__ZTV7S3571C77S3571C98S3571C278S3571C268S3571C25__A11__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C98S3571C278S3571C268S3571C25__A11__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C7__7S3571C98S3571C278S3571C268S3571C25__A2__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S3571C98S3571C278S3571C268S3571C25__A2__7S3571C1[3]),  3,5},
  {&(_tg__ZTV8S3571C16__8S3571C278S3571C268S3571C25__7S3571C1[6]),  6,8},
  {&(_tg__ZTV7S3572C4__8S3571C278S3571C268S3571C25__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C278S3571C268S3571C25__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C278S3571C268S3571C25__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C9__A2__8S3571C278S3571C268S3571C25__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C158S3571C268S3571C25__A2__7S3571C1[5]),  5,8},
  {&(_tg__ZTV7S3571C9__8S3571C158S3571C268S3571C25__A2__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C158S3571C268S3571C25__A2__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C158S3571C268S3571C25__A2__7S3571C1[3]),  3,5},
  {&(_tg__ZTV8S3571C27__8S3571C268S3571C25__7S3571C1[6]),  6,9},
  {&(_tg__ZTV8S3571C16__8S3571C268S3571C25__7S3571C1[6]),  6,8},
  {&(_tg__ZTV7S3572C4__8S3571C268S3571C25__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C268S3571C25__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C268S3571C25__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3571C77S3571C98S3571C27__A2__8S3571C268S3571C25__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C15__8S3571C268S3571C25__7S3571C1[5]),  5,8},
  {&(_tg__ZTV8S3571C20__8S3571C268S3571C25__7S3571C1[8]),  8,11},
  {&(_tg__ZTV8S3572C21__A1__8S3571C268S3571C25__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3571C25__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C25__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C25__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3571C3__8S3571C25__7S3571C1[6]),  6,8},
  {&(_tg__ZTV7S3571C8__8S3571C25__7S3571C1[5]),  5,7},
  {&(_tg__ZTV8S3571C26__8S3571C25__7S3571C1[8]),  8,10},
  {&(_tg__ZTV8S3571C278S3571C26__8S3571C25__7S3571C1[6]),  6,9},
  {&(_tg__ZTV8S3571C16__A1__8S3571C25__7S3571C1[6]),  6,8},
  {&(_tg__ZTV7S3571C77S3571C98S3571C278S3571C26__A5__8S3571C25__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C158S3571C26__8S3571C25__7S3571C1[5]),  5,8},
  {&(_tg__ZTV8S3571C20__8S3571C25__7S3571C1[8]),  8,11},
  {&(_tg__ZTV8S3572C21__A1__8S3571C25__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C3__A2__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C77S3571C3__A9__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C77S3571C3__A9__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S3571C3__A2__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C8__7S3571C3__A2__7S3571C1[5]),  5,7},
  {&(_tg__ZTV8S3571C16__A1__7S3571C1[5]),  5,7},
  {&(_tg__ZTV7S3571C78S3571C16__A10__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S3571C78S3571C16__A10__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S3571C16__A1__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C16__A1__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__A1__8S3571C16__A1__7S3571C1[4]),  4,6},
  {&(_tg__ZTV8S3571C20__A1__7S3571C1[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S3571C20__A1__7S3571C1[3]),  3,5},
  {&(_tg__ZTV7S3571C9__8S3571C20__A1__7S3571C1[6]),  6,9},
  {&(_tg__ZTV7S3571C77S3571C9__8S3571C20__A1__7S3571C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S3571C20__A1__7S3571C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3571C1[];
extern  VTBL_ENTRY _ZTV7S3571C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3571C1[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C25D0Ev,_ZTv0_n28_N8S3571C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S3571C25D0Ev,_ZThn1476_N8S3571C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C25D1Ev,_ZTv0_n28_N8S3571C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S3571C25D1Ev,_ZThn1476_N8S3571C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C25D0Ev,_ZTv0_n24_N8S3571C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N8S3571C25D0Ev,_ZThn1448_N8S3571C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S3571C25D0Ev,_ZThn1248_N8S3571C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C25D1Ev,_ZTv0_n24_N8S3571C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N8S3571C25D1Ev,_ZThn1448_N8S3571C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2128_N8S3571C25D1Ev,_ZThn1248_N8S3571C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C26D0Ev,_ZTv0_n28_N8S3571C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N8S3571C26D0Ev,_ZThn1448_N8S3571C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C26D1Ev,_ZTv0_n28_N8S3571C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2496_N8S3571C26D1Ev,_ZThn1448_N8S3571C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C26D0Ev,_ZTv0_n24_N8S3571C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2432_N8S3571C26D0Ev,_ZThn1420_N8S3571C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C26D1Ev,_ZTv0_n24_N8S3571C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2432_N8S3571C26D1Ev,_ZThn1420_N8S3571C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C27D0Ev,_ZTv0_n24_N8S3571C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N8S3571C27D0Ev,_ZThn1404_N8S3571C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C27D1Ev,_ZTv0_n24_N8S3571C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2400_N8S3571C27D1Ev,_ZThn1404_N8S3571C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C19D0Ev,_ZTv0_n12_N8S3571C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C19D0Ev,_ZThn1732_N8S3571C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C19D1Ev,_ZTv0_n12_N8S3571C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C19D1Ev,_ZThn1732_N8S3571C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D0Ev,_ZTv0_n12_N8S3571C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C20D0Ev,_ZThn1732_N8S3571C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C20D1Ev,_ZTv0_n12_N8S3571C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N8S3571C20D1Ev,_ZThn1732_N8S3571C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C13D0Ev,_ZTv0_n32_N8S3571C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3571C13D0Ev,_ZThn1268_N8S3571C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C13D1Ev,_ZTv0_n32_N8S3571C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S3571C13D1Ev,_ZThn1268_N8S3571C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C10D0Ev,_ZTv0_n20_N8S3571C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3571C10D0Ev,_ZThn92_N8S3571C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C10D1Ev,_ZTv0_n20_N8S3571C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3571C10D1Ev,_ZThn92_N8S3571C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C11D0Ev,_ZTv0_n28_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5632_N8S3571C11D0Ev,_ZThn3308_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3571C11D1Ev,_ZTv0_n28_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5632_N8S3571C11D1Ev,_ZThn3308_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C11D0Ev,_ZTv0_n24_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5568_N8S3571C11D0Ev,_ZThn3276_N8S3571C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1912_N8S3571C11D0Ev,_ZThn1156_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C11D1Ev,_ZTv0_n24_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5568_N8S3571C11D1Ev,_ZThn3276_N8S3571C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1912_N8S3571C11D1Ev,_ZThn1156_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C11D0Ev,_ZTv0_n32_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4496_N8S3571C11D0Ev,_ZThn2660_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C11D1Ev,_ZTv0_n32_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4496_N8S3571C11D1Ev,_ZThn2660_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3571C11D0Ev,_ZTv0_n40_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N8S3571C11D0Ev,_ZThn1392_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3571C11D1Ev,_ZTv0_n40_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N8S3571C11D1Ev,_ZThn1392_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C11D0Ev,_ZTv0_n12_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8576_N8S3571C11D0Ev,_ZThn5040_N8S3571C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N8S3571C11D0Ev,_ZThn820_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C11D1Ev,_ZTv0_n12_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8576_N8S3571C11D1Ev,_ZThn5040_N8S3571C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N8S3571C11D1Ev,_ZThn820_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C11D0Ev,_ZTv0_n20_N8S3571C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5024_N8S3571C11D0Ev,_ZThn2948_N8S3571C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S3571C11D0Ev,_ZThn1268_N8S3571C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N8S3571C11D0Ev,_ZThn876_N8S3571C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2040_N8S3571C11D0Ev,_ZThn1248_N8S3571C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C11D1Ev,_ZTv0_n20_N8S3571C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5024_N8S3571C11D1Ev,_ZThn2948_N8S3571C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S3571C11D1Ev,_ZThn1268_N8S3571C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N8S3571C11D1Ev,_ZThn876_N8S3571C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2040_N8S3571C11D1Ev,_ZThn1248_N8S3571C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C12D0Ev,_ZTv0_n24_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5568_N8S3571C12D0Ev,_ZThn3276_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1912_N8S3571C12D0Ev,_ZThn1156_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3571C12D1Ev,_ZTv0_n24_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5568_N8S3571C12D1Ev,_ZThn3276_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1912_N8S3571C12D1Ev,_ZThn1156_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C12D0Ev,_ZTv0_n32_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4496_N8S3571C12D0Ev,_ZThn2660_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3571C12D1Ev,_ZTv0_n32_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4496_N8S3571C12D1Ev,_ZThn2660_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3571C12D0Ev,_ZTv0_n40_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N8S3571C12D0Ev,_ZThn1392_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3571C12D1Ev,_ZTv0_n40_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2304_N8S3571C12D1Ev,_ZThn1392_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C12D0Ev,_ZTv0_n12_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N8S3571C12D0Ev,_ZThn820_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3571C12D1Ev,_ZTv0_n12_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N8S3571C12D1Ev,_ZThn820_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C12D0Ev,_ZTv0_n20_N8S3571C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5024_N8S3571C12D0Ev,_ZThn2948_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S3571C12D0Ev,_ZThn1268_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N8S3571C12D0Ev,_ZThn876_N8S3571C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2040_N8S3571C12D0Ev,_ZThn1248_N8S3571C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3571C12D1Ev,_ZTv0_n20_N8S3571C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5024_N8S3571C12D1Ev,_ZThn2948_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2080_N8S3571C12D1Ev,_ZThn1268_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N8S3571C12D1Ev,_ZThn876_N8S3571C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2040_N8S3571C12D1Ev,_ZThn1248_N8S3571C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3571C2D0Ev,_ZTv0_n24_N7S3571C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2424_N7S3571C2D0Ev,_ZThn1464_N7S3571C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3571C2D1Ev,_ZTv0_n24_N7S3571C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2424_N7S3571C2D1Ev,_ZThn1464_N7S3571C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C2D0Ev,_ZTv0_n20_N7S3571C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N7S3571C2D0Ev,_ZThn1576_N7S3571C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2552_N7S3571C2D0Ev,_ZThn1556_N7S3571C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3571C2D0Ev,_ZThn1184_N7S3571C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C2D1Ev,_ZTv0_n20_N7S3571C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N7S3571C2D1Ev,_ZThn1576_N7S3571C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2552_N7S3571C2D1Ev,_ZThn1556_N7S3571C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3571C2D1Ev,_ZThn1184_N7S3571C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C2D0Ev,_ZTv0_n12_N7S3571C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3571C2D0Ev,_ZThn1128_N7S3571C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C2D1Ev,_ZTv0_n12_N7S3571C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3571C2D1Ev,_ZThn1128_N7S3571C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D0Ev,_ZTv0_n20_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3571C3D0Ev,_ZThn1184_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C3D1Ev,_ZTv0_n20_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3571C3D1Ev,_ZThn1184_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C3D0Ev,_ZTv0_n12_N7S3571C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3571C3D0Ev,_ZThn1128_N7S3571C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C3D1Ev,_ZTv0_n12_N7S3571C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3571C3D1Ev,_ZThn1128_N7S3571C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D0Ev,_ZTv0_n12_N7S3571C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3571C7D0Ev,_ZThn1128_N7S3571C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C7D1Ev,_ZTv0_n12_N7S3571C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3571C7D1Ev,_ZThn1128_N7S3571C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3571C1D0Ev,_ZTv0_n44_N7S3571C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9120_N7S3571C1D0Ev,_ZThn5364_N7S3571C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3571C1D1Ev,_ZTv0_n44_N7S3571C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9120_N7S3571C1D1Ev,_ZThn5364_N7S3571C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3571C1D0Ev,_ZTv0_n28_N7S3571C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11680_N7S3571C1D0Ev,_ZThn6840_N7S3571C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6144_N7S3571C1D0Ev,_ZThn3616_N7S3571C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3571C1D1Ev,_ZTv0_n28_N7S3571C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11680_N7S3571C1D1Ev,_ZThn6840_N7S3571C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6144_N7S3571C1D1Ev,_ZThn3616_N7S3571C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3571C1D0Ev,_ZTv0_n32_N7S3571C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N7S3571C1D0Ev,_ZThn2968_N7S3571C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3571C1D1Ev,_ZTv0_n32_N7S3571C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N7S3571C1D1Ev,_ZThn2968_N7S3571C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3571C1D0Ev,_ZTv0_n40_N7S3571C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N7S3571C1D0Ev,_ZThn1700_N7S3571C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3571C1D1Ev,_ZTv0_n40_N7S3571C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N7S3571C1D1Ev,_ZThn1700_N7S3571C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3571C1D0Ev,_ZTv0_n24_N7S3571C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11616_N7S3571C1D0Ev,_ZThn6812_N7S3571C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11248_N7S3571C1D0Ev,_ZThn6612_N7S3571C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6080_N7S3571C1D0Ev,_ZThn3584_N7S3571C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2424_N7S3571C1D0Ev,_ZThn1464_N7S3571C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3571C1D1Ev,_ZTv0_n24_N7S3571C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11616_N7S3571C1D1Ev,_ZThn6812_N7S3571C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11248_N7S3571C1D1Ev,_ZThn6612_N7S3571C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn6080_N7S3571C1D1Ev,_ZThn3584_N7S3571C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2424_N7S3571C1D1Ev,_ZThn1464_N7S3571C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C1D0Ev,_ZTv0_n20_N7S3571C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N7S3571C1D0Ev,_ZThn3256_N7S3571C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N7S3571C1D0Ev,_ZThn1576_N7S3571C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2552_N7S3571C1D0Ev,_ZThn1556_N7S3571C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3571C1D0Ev,_ZThn1184_N7S3571C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3571C1D1Ev,_ZTv0_n20_N7S3571C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N7S3571C1D1Ev,_ZThn3256_N7S3571C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N7S3571C1D1Ev,_ZThn1576_N7S3571C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2552_N7S3571C1D1Ev,_ZThn1556_N7S3571C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1960_N7S3571C1D1Ev,_ZThn1184_N7S3571C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C1D0Ev,_ZTv0_n12_N7S3571C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9088_N7S3571C1D0Ev,_ZThn5348_N7S3571C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3571C1D0Ev,_ZThn1128_N7S3571C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3571C1D1Ev,_ZTv0_n12_N7S3571C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9088_N7S3571C1D1Ev,_ZThn5348_N7S3571C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1864_N7S3571C1D1Ev,_ZThn1128_N7S3571C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3571C1 = {  "S3571C1", // class name
  bases_S3571C1, 51,
  &(vtc_S3571C1[0]), // expected_vtbl_contents
  &(vtt_S3571C1[0]), // expected_vtt_contents
  ABISELECT(12512,7344), // object size
  NSPAIRA(_ZTI7S3571C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3571C1),252, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3571C1),198, //virtual table table var
  46, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7867C6  : virtual S3572C5 , virtual S3572C4 {
  unsigned char s7867c6f0:1;
  void *s7867c6f1[3];
  ~S7867C6(); // tgen
  S7867C6(); // tgen
};
//SIG(-1 S7867C6) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} Fc:1 Fp[3]}


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

static void Test_S7867C6()
{
  extern Class_Descriptor cd_S7867C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S7867C6, buf);
    S7867C6 *dp, &lv = *(dp=new (buf) S7867C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S7867C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7867C6)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(40,20), "S7867C6");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(80,44), "S7867C6");
    set_bf_and_test(lv, s7867c6f0, ABISELECT(8,4), 0, 1, 1, "S7867C6");
    check_field_offset(lv, s7867c6f1, ABISELECT(16,8), "S7867C6.s7867c6f1");
    test_class_info(&lv, &cd_S7867C6);
    dp->~S7867C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7867C6(Test_S7867C6, "S7867C6", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN7S7867C6C1Ev();
extern void _ZN7S7867C6D1Ev();
Name_Map name_map_S7867C6[] = {
  NSPAIR(_ZN7S7867C6C1Ev),
  NSPAIR(_ZN7S7867C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
static Base_Class bases_S7867C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(80,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7867C6[];
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S7867C6D1Ev,_ZThn44_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S7867C6D0Ev,_ZThn44_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7867C6[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7867C6[];
static  VTT_ENTRY vtt_S7867C6[] = {
  {&(_ZTV7S7867C6[4]),  4,11},
  {&(_ZTV7S7867C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7867C6D0Ev,_ZThn44_N7S7867C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7867C6D1Ev,_ZThn44_N7S7867C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7867C6 = {  "S7867C6", // class name
  bases_S7867C6, 2,
  &(vtc_S7867C6[0]), // expected_vtbl_contents
  &(vtt_S7867C6[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI7S7867C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7867C6),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7867C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7867C11  : virtual S3572C5 , S3572C4 , S7867C6 {
  char s7867c11f0;
  void *s7867c11f1[7];
  long double s7867c11f2;
  void *s7867c11f3[4];
  int s7867c11f4;
  char s7867c11f5;
  void *s7867c11f6;
  virtual  ~S7867C11(); // _ZN8S7867C11D2Ev
  virtual void  v2(); // _ZN8S7867C112v2Ev
  S7867C11(); // tgen
};
//SIG(-1 S7867C11) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} BC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}


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

static void Test_S7867C11()
{
  extern Class_Descriptor cd_S7867C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,46)];
    init_test(&cd_S7867C11, buf);
    S7867C11 *dp, &lv = *(dp=new (buf) S7867C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,180), "sizeof(S7867C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7867C11)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(224,124), "S7867C11");
    check_base_class_offset(lv, (S3572C5*)(S7867C6*), ABISELECT(224,124), "S7867C11");
    /*is_ambiguous_... S7867C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S7867C11");
    check_base_class_offset(lv, (S3572C4*)(S7867C6*), ABISELECT(264,148), "S7867C11");
    check_base_class_offset(lv, (S7867C6*), ABISELECT(56,32), "S7867C11");
    check_field_offset(lv, s7867c11f0, ABISELECT(96,52), "S7867C11.s7867c11f0");
    check_field_offset(lv, s7867c11f1, ABISELECT(104,56), "S7867C11.s7867c11f1");
    check_field_offset(lv, s7867c11f2, ABISELECT(160,84), "S7867C11.s7867c11f2");
    check_field_offset(lv, s7867c11f3, ABISELECT(176,96), "S7867C11.s7867c11f3");
    check_field_offset(lv, s7867c11f4, ABISELECT(208,112), "S7867C11.s7867c11f4");
    check_field_offset(lv, s7867c11f5, ABISELECT(212,116), "S7867C11.s7867c11f5");
    check_field_offset(lv, s7867c11f6, ABISELECT(216,120), "S7867C11.s7867c11f6");
    test_class_info(&lv, &cd_S7867C11);
    dp->~S7867C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7867C11(Test_S7867C11, "S7867C11", ABISELECT(320,180));

#else // __cplusplus

extern void _ZN8S7867C11C1Ev();
extern void _ZN8S7867C11D2Ev();
Name_Map name_map_S7867C11[] = {
  NSPAIR(_ZN8S7867C11C1Ev),
  NSPAIR(_ZN8S7867C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
static Base_Class bases_S7867C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(224,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
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3572C4,    ABISELECT(264,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7867C6,    ABISELECT(56,32), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7867C11[];
extern void _ZN8S7867C11D1Ev();
extern void _ZN8S7867C11D0Ev();
extern void _ZN8S7867C112v2Ev();
extern void ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev)();
extern void ABISELECT(_ZThn264_N8S7867C11D1Ev,_ZThn148_N8S7867C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev)();
extern void ABISELECT(_ZThn264_N8S7867C11D0Ev,_ZThn148_N8S7867C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7867C11[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&_ZN8S7867C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev),
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7867C11[];
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C6__8S7867C11[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn208_N7S7867C6D1Ev,_ZThn116_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn208_N7S7867C6D0Ev,_ZThn116_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C6__8S7867C11[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
static  VTT_ENTRY vtt_S7867C11[] = {
  {&(_ZTV8S7867C11[4]),  4,18},
  {&(_tg__ZTV7S7867C6__8S7867C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C6__8S7867C11[3]),  3,5},
  {&(_ZTV8S7867C11[11]),  11,18},
  {&(_ZTV8S7867C11[16]),  16,18},
};
extern VTBL_ENTRY _ZTI8S7867C11[];
extern  VTBL_ENTRY _ZTV8S7867C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C11[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7867C6D0Ev,_ZThn116_N7S7867C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7867C6D1Ev,_ZThn116_N7S7867C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7867C11D0Ev,_ZThn148_N8S7867C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7867C11D1Ev,_ZThn148_N8S7867C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7867C11 = {  "S7867C11", // class name
  bases_S7867C11, 4,
  &(vtc_S7867C11[0]), // expected_vtbl_contents
  &(vtt_S7867C11[0]), // expected_vtt_contents
  ABISELECT(320,180), // object size
  NSPAIRA(_ZTI8S7867C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7867C11),18, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7867C11),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7867C10  : S7867C11 {
  char s7867c10f0;
  int s7867c10f1;
  virtual  ~S7867C10(); // _ZN8S7867C10D2Ev
  virtual void  v3(); // _ZN8S7867C102v3Ev
  virtual void  v4(); // _ZN8S7867C102v4Ev
  virtual void  v5(); // _ZN8S7867C102v5Ev
  S7867C10(); // tgen
};
//SIG(-1 S7867C10) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} BC4{ vd m FC3 FC5{}} BC6{ VBC3 VBC4 Fc:1 Fp[3]} vd v4 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v1 v2 v3 Fc Fi}


 S7867C10 ::~S7867C10(){ note_dtor("S7867C10", this);}
void  S7867C10 ::v3(){vfunc_called(this, "_ZN8S7867C102v3Ev");}
void  S7867C10 ::v4(){vfunc_called(this, "_ZN8S7867C102v4Ev");}
void  S7867C10 ::v5(){vfunc_called(this, "_ZN8S7867C102v5Ev");}
S7867C10 ::S7867C10(){ note_ctor("S7867C10", this);} // tgen

static void Test_S7867C10()
{
  extern Class_Descriptor cd_S7867C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,48)];
    init_test(&cd_S7867C10, buf);
    S7867C10 *dp, &lv = *(dp=new (buf) S7867C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,188), "sizeof(S7867C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7867C10)");
    check_base_class_offset(lv, (S3572C5*)(S7867C11*), ABISELECT(232,132), "S7867C10");
    check_base_class_offset(lv, (S3572C5*)(S7867C6*)(S7867C11*), ABISELECT(232,132), "S7867C10");
    /*is_ambiguous_... S7867C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7867C11*), 0, "S7867C10");
    check_base_class_offset(lv, (S3572C4*)(S7867C6*)(S7867C11*), ABISELECT(272,156), "S7867C10");
    check_base_class_offset(lv, (S7867C6*)(S7867C11*), ABISELECT(56,32), "S7867C10");
    check_base_class_offset(lv, (S7867C11*), 0, "S7867C10");
    check_field_offset(lv, s7867c10f0, ABISELECT(224,124), "S7867C10.s7867c10f0");
    check_field_offset(lv, s7867c10f1, ABISELECT(228,128), "S7867C10.s7867c10f1");
    test_class_info(&lv, &cd_S7867C10);
    dp->~S7867C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7867C10(Test_S7867C10, "S7867C10", ABISELECT(336,188));

#else // __cplusplus

extern void _ZN8S7867C10C1Ev();
extern void _ZN8S7867C10D2Ev();
Name_Map name_map_S7867C10[] = {
  NSPAIR(_ZN8S7867C10C1Ev),
  NSPAIR(_ZN8S7867C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
extern Class_Descriptor cd_S7867C11;
extern VTBL_ENTRY _ZTI8S7867C11[];
extern  VTBL_ENTRY _ZTV8S7867C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C11[];
static Base_Class bases_S7867C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(232,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
    3, //immediately_derived
  0, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(272,156), //bcp->offset
    16, //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_S7867C6,    ABISELECT(56,32), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7867C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7867C10[];
extern void _ZN8S7867C10D1Ev();
extern void _ZN8S7867C10D0Ev();
extern void _ZN8S7867C112v2Ev();
extern void _ZN8S7867C102v3Ev();
extern void _ZN8S7867C102v4Ev();
extern void _ZN8S7867C102v5Ev();
extern void ABISELECT(_ZThn56_N8S7867C10D1Ev,_ZThn32_N8S7867C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S7867C10D0Ev,_ZThn32_N8S7867C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7867C10D1Ev,_ZTv0_n12_N8S7867C10D1Ev)();
extern void ABISELECT(_ZThn272_N8S7867C10D1Ev,_ZThn156_N8S7867C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C10D0Ev,_ZTv0_n12_N8S7867C10D0Ev)();
extern void ABISELECT(_ZThn272_N8S7867C10D0Ev,_ZThn156_N8S7867C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7867C10[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C10[0]),
  (VTBL_ENTRY)&_ZN8S7867C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v5Ev,
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7867C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C10D1Ev,_ZThn32_N8S7867C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C10D0Ev,_ZThn32_N8S7867C10D0Ev),
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7867C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C10D1Ev,_ZTv0_n12_N8S7867C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C10D0Ev,_ZTv0_n12_N8S7867C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7867C10[];
extern void _ZN8S7867C11D1Ev();
extern void _ZN8S7867C11D0Ev();
extern void _ZN8S7867C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7867C11__8S7867C10[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&_ZN8S7867C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
};
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C68S7867C11__8S7867C10[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn216_N7S7867C6D1Ev,_ZThn124_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn216_N7S7867C6D0Ev,_ZThn124_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C68S7867C11__8S7867C10[] = {
  ABISELECT(-216,-124),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7867C6__8S7867C11__8S7867C10[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev)();
extern void ABISELECT(_ZThn272_N8S7867C11D1Ev,_ZThn156_N8S7867C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev)();
extern void ABISELECT(_ZThn272_N8S7867C11D0Ev,_ZThn156_N8S7867C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7867C11__8S7867C10[] = {
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev),
};
static  VTT_ENTRY vtt_S7867C10[] = {
  {&(_ZTV8S7867C10[4]),  4,21},
  {&(_tg__ZTV8S7867C11__8S7867C10[4]),  4,7},
  {&(_tg__ZTV7S7867C68S7867C11__8S7867C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C68S7867C11__8S7867C10[3]),  3,5},
  {&(_tg__ZTV7S7867C6__8S7867C11__8S7867C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7867C11__8S7867C10[3]),  3,5},
  {&(_ZTV8S7867C10[14]),  14,21},
  {&(_ZTV8S7867C10[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S7867C10[];
extern  VTBL_ENTRY _ZTV8S7867C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C10[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C11D0Ev,_ZThn156_N8S7867C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C11D1Ev,_ZThn156_N8S7867C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7867C6D0Ev,_ZThn124_N7S7867C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7867C6D1Ev,_ZThn124_N7S7867C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C10D0Ev,_ZTv0_n12_N8S7867C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C10D0Ev,_ZThn156_N8S7867C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C10D1Ev,_ZTv0_n12_N8S7867C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C10D1Ev,_ZThn156_N8S7867C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7867C10 = {  "S7867C10", // class name
  bases_S7867C10, 5,
  &(vtc_S7867C10[0]), // expected_vtbl_contents
  &(vtt_S7867C10[0]), // expected_vtt_contents
  ABISELECT(336,188), // object size
  NSPAIRA(_ZTI8S7867C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7867C10),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7867C10),8, //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  S7867C2  : virtual S3572C17 , virtual S7867C10 {
  __tsi64 s7867c2f0;
  int s7867c2f1[3];
  void *s7867c2f2;
  int s7867c2f3[2];
  ::S3572C14 s7867c2f4;
  int s7867c2f5[6];
  short s7867c2f6;
  int s7867c2f7;
  ::S3572C17 s7867c2f8;
  ~S7867C2(); // tgen
  S7867C2(); // tgen
};
//SIG(-1 S7867C2) C1{ VBC2{ vd m FC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ VBC4 VBC6{ vd m FC4 FC7{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} FC8{ VBC4 VBC6 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} VBC9{ BC10{ VBC4 BC6 BC11{ VBC4 VBC6 Fc:1 Fp[3]} vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v2 v3 v4 Fc Fi} FL Fi[3] Fp Fi[2] FC12{ VBC3 BC6 BC13{ VBC6 BC5 VBC8 vd FC14{ VBC4 BC6 BC5 vd v5 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} Fi[6] Fs Fi FC2}


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

static void Test_S7867C2()
{
  extern Class_Descriptor cd_S7867C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(219,529)];
    init_test(&cd_S7867C2, buf);
    S7867C2 *dp, &lv = *(dp=new (buf) S7867C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3488,2112), "sizeof(S7867C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7867C2)");
    check_base_class_offset(lv, (S3572C17*), ABISELECT(2240,1364), "S7867C2");
    check_base_class_offset(lv, (S3572C5*)(S7867C11*)(S7867C10*), ABISELECT(3384,2056), "S7867C2");
    check_base_class_offset(lv, (S3572C5*)(S7867C6*)(S7867C11*)(S7867C10*), ABISELECT(3384,2056), "S7867C2");
    /*is_ambiguous_... S7867C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7867C11*)(S7867C10*), ABISELECT(3152,1924), "S7867C2");
    check_base_class_offset(lv, (S3572C4*)(S7867C6*)(S7867C11*)(S7867C10*), ABISELECT(3424,2080), "S7867C2");
    check_base_class_offset(lv, (S7867C6*)(S7867C11*)(S7867C10*), ABISELECT(3208,1956), "S7867C2");
    check_base_class_offset(lv, (S7867C11*)(S7867C10*), ABISELECT(3152,1924), "S7867C2");
    check_base_class_offset(lv, (S7867C10*), ABISELECT(3152,1924), "S7867C2");
    check_field_offset(lv, s7867c2f0, ABISELECT(8,4), "S7867C2.s7867c2f0");
    check_field_offset(lv, s7867c2f1, ABISELECT(16,12), "S7867C2.s7867c2f1");
    check_field_offset(lv, s7867c2f2, ABISELECT(32,24), "S7867C2.s7867c2f2");
    check_field_offset(lv, s7867c2f3, ABISELECT(40,28), "S7867C2.s7867c2f3");
    check_field_offset(lv, s7867c2f4, ABISELECT(48,36), "S7867C2.s7867c2f4");
    check_field_offset(lv, s7867c2f5, ABISELECT(1296,772), "S7867C2.s7867c2f5");
    check_field_offset(lv, s7867c2f6, ABISELECT(1320,796), "S7867C2.s7867c2f6");
    check_field_offset(lv, s7867c2f7, ABISELECT(1324,800), "S7867C2.s7867c2f7");
    check_field_offset(lv, s7867c2f8, ABISELECT(1328,804), "S7867C2.s7867c2f8");
    test_class_info(&lv, &cd_S7867C2);
    dp->~S7867C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7867C2(Test_S7867C2, "S7867C2", ABISELECT(3488,2112));

#else // __cplusplus

extern void _ZN7S7867C2C1Ev();
extern void _ZN7S7867C2D1Ev();
Name_Map name_map_S7867C2[] = {
  NSPAIR(_ZN7S7867C2C1Ev),
  NSPAIR(_ZN7S7867C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
extern Class_Descriptor cd_S7867C11;
extern VTBL_ENTRY _ZTI8S7867C11[];
extern  VTBL_ENTRY _ZTV8S7867C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C11[];
extern Class_Descriptor cd_S7867C10;
extern VTBL_ENTRY _ZTI8S7867C10[];
extern  VTBL_ENTRY _ZTV8S7867C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C10[];
static Base_Class bases_S7867C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C17,    ABISELECT(2240,1364), //bcp->offset
    8, //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_S3572C5,    ABISELECT(3384,2056), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3572C4,    ABISELECT(3152,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(3424,2080), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7867C6,    ABISELECT(3208,1956), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7867C11,    ABISELECT(3152,1924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7867C10,    ABISELECT(3152,1924), //bcp->offset
    13, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7867C2[];
extern void _ZN7S7867C2D1Ev();
extern void _ZN7S7867C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7867C2D1Ev,_ZTv0_n12_N7S7867C2D1Ev)();
extern void ABISELECT(_ZThn2240_N7S7867C2D1Ev,_ZThn1364_N7S7867C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C2D0Ev,_ZTv0_n12_N7S7867C2D0Ev)();
extern void ABISELECT(_ZThn2240_N7S7867C2D0Ev,_ZThn1364_N7S7867C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7867C2D1Ev,_ZTv0_n20_N7S7867C2D1Ev)();
extern void ABISELECT(_ZThn3152_N7S7867C2D1Ev,_ZThn1924_N7S7867C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7867C2D0Ev,_ZTv0_n20_N7S7867C2D0Ev)();
extern void ABISELECT(_ZThn3152_N7S7867C2D0Ev,_ZThn1924_N7S7867C2D0Ev)() __attribute__((weak));
extern void _ZN8S7867C112v2Ev();
extern void _ZN8S7867C102v3Ev();
extern void _ZN8S7867C102v4Ev();
extern void _ZN8S7867C102v5Ev();
extern void ABISELECT(_ZTvn56_n40_N7S7867C2D1Ev,_ZTvn32_n20_N7S7867C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S7867C2D0Ev,_ZTvn32_n20_N7S7867C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7867C2D1Ev,_ZTv0_n12_N7S7867C2D1Ev)();
extern void ABISELECT(_ZThn3424_N7S7867C2D1Ev,_ZThn2080_N7S7867C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C2D0Ev,_ZTv0_n12_N7S7867C2D0Ev)();
extern void ABISELECT(_ZThn3424_N7S7867C2D0Ev,_ZThn2080_N7S7867C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7867C2[] = {
  ABISELECT(3424,2080),
  ABISELECT(3384,2056),
  ABISELECT(3152,1924),
  ABISELECT(2240,1364),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C2[0]),
  (VTBL_ENTRY)&_ZN7S7867C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C2D0Ev,
  ABISELECT(-2240,-1364),
  ABISELECT(-2240,-1364),
  (VTBL_ENTRY)&(_ZTI7S7867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C2D1Ev,_ZTv0_n12_N7S7867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C2D0Ev,_ZTv0_n12_N7S7867C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-3152,-1924),
  ABISELECT(272,156),
  ABISELECT(232,132),
  ABISELECT(-3152,-1924),
  (VTBL_ENTRY)&(_ZTI7S7867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C2D1Ev,_ZTv0_n20_N7S7867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C2D0Ev,_ZTv0_n20_N7S7867C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v5Ev,
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-3208,-1956),
  (VTBL_ENTRY)&(_ZTI7S7867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7867C2D1Ev,_ZTvn32_n20_N7S7867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7867C2D0Ev,_ZTvn32_n20_N7S7867C2D0Ev),
  ABISELECT(-3424,-2080),
  ABISELECT(-3424,-2080),
  (VTBL_ENTRY)&(_ZTI7S7867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C2D1Ev,_ZTv0_n12_N7S7867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C2D0Ev,_ZTv0_n12_N7S7867C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7867C2[];
extern void _ZN8S7867C10D1Ev();
extern void _ZN8S7867C10D0Ev();
extern void _ZN8S7867C112v2Ev();
extern void _ZN8S7867C102v3Ev();
extern void _ZN8S7867C102v4Ev();
extern void _ZN8S7867C102v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7867C10__7S7867C2[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C10[0]),
  (VTBL_ENTRY)&_ZN8S7867C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v5Ev,
};
extern void _ZN8S7867C11D1Ev();
extern void _ZN8S7867C11D0Ev();
extern void _ZN8S7867C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7867C118S7867C10__7S7867C2[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&_ZN8S7867C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
};
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C68S7867C118S7867C10__7S7867C2[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn216_N7S7867C6D1Ev,_ZThn124_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn216_N7S7867C6D0Ev,_ZThn124_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C68S7867C118S7867C10__7S7867C2[] = {
  ABISELECT(-216,-124),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7867C6__8S7867C118S7867C10__7S7867C2[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev)();
extern void ABISELECT(_ZThn272_N8S7867C11D1Ev,_ZThn156_N8S7867C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev)();
extern void ABISELECT(_ZThn272_N8S7867C11D0Ev,_ZThn156_N8S7867C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7867C118S7867C10__7S7867C2[] = {
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7867C10D1Ev,_ZThn32_N8S7867C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S7867C10D0Ev,_ZThn32_N8S7867C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7867C68S7867C11__8S7867C10__7S7867C2[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7867C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C10D1Ev,_ZThn32_N8S7867C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C10D0Ev,_ZThn32_N8S7867C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7867C10D1Ev,_ZTv0_n12_N8S7867C10D1Ev)();
extern void ABISELECT(_ZThn272_N8S7867C10D1Ev,_ZThn156_N8S7867C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C10D0Ev,_ZTv0_n12_N8S7867C10D0Ev)();
extern void ABISELECT(_ZThn272_N8S7867C10D0Ev,_ZThn156_N8S7867C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7867C10__7S7867C2[] = {
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7867C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C10D1Ev,_ZTv0_n12_N8S7867C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C10D0Ev,_ZTv0_n12_N8S7867C10D0Ev),
};
static  VTT_ENTRY vtt_S7867C2[] = {
  {&(_ZTV7S7867C2[6]),  6,39},
  {&(_ZTV7S7867C2[11]),  11,39},
  {&(_ZTV7S7867C2[22]),  22,39},
  {&(_ZTV7S7867C2[32]),  32,39},
  {&(_ZTV7S7867C2[37]),  37,39},
  {&(_tg__ZTV8S7867C10__7S7867C2[4]),  4,10},
  {&(_tg__ZTV8S7867C118S7867C10__7S7867C2[4]),  4,7},
  {&(_tg__ZTV7S7867C68S7867C118S7867C10__7S7867C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C68S7867C118S7867C10__7S7867C2[3]),  3,5},
  {&(_tg__ZTV7S7867C6__8S7867C118S7867C10__7S7867C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7867C118S7867C10__7S7867C2[3]),  3,5},
  {&(_tg__ZTV7S7867C68S7867C11__8S7867C10__7S7867C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7867C10__7S7867C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7867C2[];
extern  VTBL_ENTRY _ZTV7S7867C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C2[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C10D0Ev,_ZTv0_n12_N8S7867C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C10D0Ev,_ZThn156_N8S7867C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C10D1Ev,_ZTv0_n12_N8S7867C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C10D1Ev,_ZThn156_N8S7867C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C11D0Ev,_ZThn156_N8S7867C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C11D1Ev,_ZThn156_N8S7867C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7867C6D0Ev,_ZThn124_N7S7867C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7867C6D1Ev,_ZThn124_N7S7867C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7867C2D0Ev,_ZTv0_n20_N7S7867C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N7S7867C2D0Ev,_ZThn1924_N7S7867C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7867C2D1Ev,_ZTv0_n20_N7S7867C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N7S7867C2D1Ev,_ZThn1924_N7S7867C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C2D0Ev,_ZTv0_n12_N7S7867C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3424_N7S7867C2D0Ev,_ZThn2080_N7S7867C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2240_N7S7867C2D0Ev,_ZThn1364_N7S7867C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C2D1Ev,_ZTv0_n12_N7S7867C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3424_N7S7867C2D1Ev,_ZThn2080_N7S7867C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2240_N7S7867C2D1Ev,_ZThn1364_N7S7867C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7867C2 = {  "S7867C2", // class name
  bases_S7867C2, 7,
  &(vtc_S7867C2[0]), // expected_vtbl_contents
  &(vtt_S7867C2[0]), // expected_vtt_contents
  ABISELECT(3488,2112), // object size
  NSPAIRA(_ZTI7S7867C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7867C2),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7867C2),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7867C9  : virtual S3572C5 , virtual S3572C4 , S7867C6 {
  char s7867c9f0;
  int s7867c9f1[3];
  void *s7867c9f2;
  short s7867c9f3:16;
  int s7867c9f4;
  void *s7867c9f5[2];
  int s7867c9f6;
  ::S3572C5 s7867c9f7[9];
  int s7867c9f8;
  virtual  ~S7867C9(); // _ZN7S7867C9D2Ev
  S7867C9(); // tgen
};
//SIG(-1 S7867C9) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC2[9] Fi}


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

static void Test_S7867C9()
{
  extern Class_Descriptor cd_S7867C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(71,85)];
    init_test(&cd_S7867C9, buf);
    S7867C9 *dp, &lv = *(dp=new (buf) S7867C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,336), "sizeof(S7867C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7867C9)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(464,280), "S7867C9");
    check_base_class_offset(lv, (S3572C5*)(S7867C6*), ABISELECT(464,280), "S7867C9");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(504,304), "S7867C9");
    check_base_class_offset(lv, (S3572C4*)(S7867C6*), ABISELECT(504,304), "S7867C9");
    check_base_class_offset(lv, (S7867C6*), 0, "S7867C9");
    check_field_offset(lv, s7867c9f0, ABISELECT(40,20), "S7867C9.s7867c9f0");
    check_field_offset(lv, s7867c9f1, ABISELECT(44,24), "S7867C9.s7867c9f1");
    check_field_offset(lv, s7867c9f2, ABISELECT(56,36), "S7867C9.s7867c9f2");
    set_bf_and_test(lv, s7867c9f3, ABISELECT(64,40), 0, 16, 1, "S7867C9");
    set_bf_and_test(lv, s7867c9f3, ABISELECT(64,40), 0, 16, hide_sll(1LL<<15), "S7867C9");
    check_field_offset(lv, s7867c9f4, ABISELECT(68,44), "S7867C9.s7867c9f4");
    check_field_offset(lv, s7867c9f5, ABISELECT(72,48), "S7867C9.s7867c9f5");
    check_field_offset(lv, s7867c9f6, ABISELECT(88,56), "S7867C9.s7867c9f6");
    check_field_offset(lv, s7867c9f7, ABISELECT(96,60), "S7867C9.s7867c9f7");
    check_field_offset(lv, s7867c9f8, ABISELECT(456,276), "S7867C9.s7867c9f8");
    test_class_info(&lv, &cd_S7867C9);
    dp->~S7867C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7867C9(Test_S7867C9, "S7867C9", ABISELECT(560,336));

#else // __cplusplus

extern void _ZN7S7867C9C1Ev();
extern void _ZN7S7867C9D2Ev();
Name_Map name_map_S7867C9[] = {
  NSPAIR(_ZN7S7867C9C1Ev),
  NSPAIR(_ZN7S7867C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
static Base_Class bases_S7867C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(464,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(504,304), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7867C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7867C9[];
extern void _ZN7S7867C9D1Ev();
extern void _ZN7S7867C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7867C9D1Ev,_ZTv0_n12_N7S7867C9D1Ev)();
extern void ABISELECT(_ZThn504_N7S7867C9D1Ev,_ZThn304_N7S7867C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C9D0Ev,_ZTv0_n12_N7S7867C9D0Ev)();
extern void ABISELECT(_ZThn504_N7S7867C9D0Ev,_ZThn304_N7S7867C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7867C9[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C9[0]),
  (VTBL_ENTRY)&_ZN7S7867C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C9D0Ev,
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI7S7867C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C9D1Ev,_ZTv0_n12_N7S7867C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C9D0Ev,_ZTv0_n12_N7S7867C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7867C9[];
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C6__7S7867C9[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn504_N7S7867C6D1Ev,_ZThn304_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn504_N7S7867C6D0Ev,_ZThn304_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C6__7S7867C9[] = {
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
static  VTT_ENTRY vtt_S7867C9[] = {
  {&(_ZTV7S7867C9[4]),  4,11},
  {&(_tg__ZTV7S7867C6__7S7867C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C6__7S7867C9[3]),  3,5},
  {&(_ZTV7S7867C9[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S7867C9[];
extern  VTBL_ENTRY _ZTV7S7867C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C9[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7867C6D0Ev,_ZThn304_N7S7867C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7867C6D1Ev,_ZThn304_N7S7867C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C9D0Ev,_ZTv0_n12_N7S7867C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7867C9D0Ev,_ZThn304_N7S7867C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C9D1Ev,_ZTv0_n12_N7S7867C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7867C9D1Ev,_ZThn304_N7S7867C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7867C9 = {  "S7867C9", // class name
  bases_S7867C9, 3,
  &(vtc_S7867C9[0]), // expected_vtbl_contents
  &(vtt_S7867C9[0]), // expected_vtt_contents
  ABISELECT(560,336), // object size
  NSPAIRA(_ZTI7S7867C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7867C9),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7867C9),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7867C14  : virtual S3572C21 , virtual S7867C11 , S3572C22 , S3572C5 {
  char s7867c14f0[7];
  void *s7867c14f1;
  long double s7867c14f2;
  ::S7867C9 s7867c14f3;
  __tsi64 s7867c14f4;
  __tsi64 s7867c14f5;
  long s7867c14f6;
  int s7867c14f7;
  int s7867c14f8;
  __tsi64 s7867c14f9[3];
  long double s7867c14f10;
  virtual  ~S7867C14(); // _ZN8S7867C14D2Ev
  virtual void  v6(); // _ZN8S7867C142v6Ev
  S7867C14(); // tgen
};
//SIG(-1 S7867C14) C1{ VBC2{ vd m FD} VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} BC5{ vd m FC4 FC6{}} BC7{ VBC4 VBC5 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} BC8{ m Fp Fi[2] FU9{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v1 Fc[7] Fp FD FC10{ VBC4 VBC5 BC7 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} FL FL Fl Fi Fi FL[3] FD}


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

static void Test_S7867C14()
{
  extern Class_Descriptor cd_S7867C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(75,176)];
    init_test(&cd_S7867C14, buf);
    S7867C14 *dp, &lv = *(dp=new (buf) S7867C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1184,700), "sizeof(S7867C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7867C14)");
    check_base_class_offset(lv, (S3572C21*), ABISELECT(832,504), "S7867C14");
    check_base_class_offset(lv, (S3572C5*)(S7867C11*), ABISELECT(1088,644), "S7867C14");
    check_base_class_offset(lv, (S3572C5*)(S7867C6*)(S7867C11*), ABISELECT(1088,644), "S7867C14");
    /*is_ambiguous_... S7867C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7867C11*), ABISELECT(864,520), "S7867C14");
    check_base_class_offset(lv, (S3572C4*)(S7867C6*)(S7867C11*), ABISELECT(1128,668), "S7867C14");
    check_base_class_offset(lv, (S7867C6*)(S7867C11*), ABISELECT(920,552), "S7867C14");
    check_base_class_offset(lv, (S7867C11*), ABISELECT(864,520), "S7867C14");
    check_base_class_offset(lv, (S3572C22*), ABISELECT(16,4), "S7867C14");
    /*is_ambiguous_... S7867C14::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*), ABISELECT(112,56), "S7867C14");
    check_field_offset(lv, s7867c14f0, ABISELECT(152,80), "S7867C14.s7867c14f0");
    check_field_offset(lv, s7867c14f1, ABISELECT(160,88), "S7867C14.s7867c14f1");
    check_field_offset(lv, s7867c14f2, ABISELECT(176,92), "S7867C14.s7867c14f2");
    check_field_offset(lv, s7867c14f3, ABISELECT(192,104), "S7867C14.s7867c14f3");
    check_field_offset(lv, s7867c14f4, ABISELECT(752,440), "S7867C14.s7867c14f4");
    check_field_offset(lv, s7867c14f5, ABISELECT(760,448), "S7867C14.s7867c14f5");
    check_field_offset(lv, s7867c14f6, ABISELECT(768,456), "S7867C14.s7867c14f6");
    check_field_offset(lv, s7867c14f7, ABISELECT(776,460), "S7867C14.s7867c14f7");
    check_field_offset(lv, s7867c14f8, ABISELECT(780,464), "S7867C14.s7867c14f8");
    check_field_offset(lv, s7867c14f9, ABISELECT(784,468), "S7867C14.s7867c14f9");
    check_field_offset(lv, s7867c14f10, ABISELECT(816,492), "S7867C14.s7867c14f10");
    test_class_info(&lv, &cd_S7867C14);
    dp->~S7867C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7867C14(Test_S7867C14, "S7867C14", ABISELECT(1184,700));

#else // __cplusplus

extern void _ZN8S7867C14C1Ev();
extern void _ZN8S7867C14D2Ev();
Name_Map name_map_S7867C14[] = {
  NSPAIR(_ZN8S7867C14C1Ev),
  NSPAIR(_ZN8S7867C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
extern Class_Descriptor cd_S7867C11;
extern VTBL_ENTRY _ZTI8S7867C11[];
extern  VTBL_ENTRY _ZTV8S7867C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C11[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
static Base_Class bases_S7867C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    ABISELECT(832,504), //bcp->offset
    9, //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_S3572C5,    ABISELECT(1088,644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(864,520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1128,668), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7867C6,    ABISELECT(920,552), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7867C11,    ABISELECT(864,520), //bcp->offset
    14, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C22,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C5,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7867C14[];
extern void _ZN8S7867C14D1Ev();
extern void _ZN8S7867C14D0Ev();
extern void _ZN8S7867C142v6Ev();
extern void ABISELECT(_ZTv0_n24_N8S7867C14D1Ev,_ZTv0_n12_N8S7867C14D1Ev)();
extern void ABISELECT(_ZThn832_N8S7867C14D1Ev,_ZThn504_N8S7867C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C14D0Ev,_ZTv0_n12_N8S7867C14D0Ev)();
extern void ABISELECT(_ZThn832_N8S7867C14D0Ev,_ZThn504_N8S7867C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7867C14D1Ev,_ZTv0_n20_N8S7867C14D1Ev)();
extern void ABISELECT(_ZThn864_N8S7867C14D1Ev,_ZThn520_N8S7867C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7867C14D0Ev,_ZTv0_n20_N8S7867C14D0Ev)();
extern void ABISELECT(_ZThn864_N8S7867C14D0Ev,_ZThn520_N8S7867C14D0Ev)() __attribute__((weak));
extern void _ZN8S7867C112v2Ev();
extern void ABISELECT(_ZTvn56_n40_N8S7867C14D1Ev,_ZTvn32_n20_N8S7867C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S7867C14D0Ev,_ZTvn32_n20_N8S7867C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7867C14D1Ev,_ZTv0_n12_N8S7867C14D1Ev)();
extern void ABISELECT(_ZThn1128_N8S7867C14D1Ev,_ZThn668_N8S7867C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C14D0Ev,_ZTv0_n12_N8S7867C14D0Ev)();
extern void ABISELECT(_ZThn1128_N8S7867C14D0Ev,_ZThn668_N8S7867C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7867C14[] = {
  ABISELECT(1128,668),
  ABISELECT(1088,644),
  ABISELECT(864,520),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C14[0]),
  (VTBL_ENTRY)&_ZN8S7867C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C142v6Ev,
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI8S7867C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C14D1Ev,_ZTv0_n12_N8S7867C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C14D0Ev,_ZTv0_n12_N8S7867C14D0Ev),
  0,
  ABISELECT(-864,-520),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-864,-520),
  (VTBL_ENTRY)&(_ZTI8S7867C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7867C14D1Ev,_ZTv0_n20_N8S7867C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7867C14D0Ev,_ZTv0_n20_N8S7867C14D0Ev),
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-920,-552),
  (VTBL_ENTRY)&(_ZTI8S7867C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S7867C14D1Ev,_ZTvn32_n20_N8S7867C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S7867C14D0Ev,_ZTvn32_n20_N8S7867C14D0Ev),
  ABISELECT(-1128,-668),
  ABISELECT(-1128,-668),
  (VTBL_ENTRY)&(_ZTI8S7867C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C14D1Ev,_ZTv0_n12_N8S7867C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C14D0Ev,_ZTv0_n12_N8S7867C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S7867C14[];
extern void _ZN8S7867C11D1Ev();
extern void _ZN8S7867C11D0Ev();
extern void _ZN8S7867C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7867C11__8S7867C14[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&_ZN8S7867C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
};
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C68S7867C11__8S7867C14[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn208_N7S7867C6D1Ev,_ZThn116_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn208_N7S7867C6D0Ev,_ZThn116_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C68S7867C11__8S7867C14[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7867C6__8S7867C11__8S7867C14[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev)();
extern void ABISELECT(_ZThn264_N8S7867C11D1Ev,_ZThn148_N8S7867C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev)();
extern void ABISELECT(_ZThn264_N8S7867C11D0Ev,_ZThn148_N8S7867C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7867C11__8S7867C14[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev),
};
static  VTT_ENTRY vtt_S7867C14[] = {
  {&(_ZTV8S7867C14[6]),  6,34},
  {&(_ZTV8S7867C14[12]),  12,34},
  {&(_ZTV8S7867C14[20]),  20,34},
  {&(_ZTV8S7867C14[27]),  27,34},
  {&(_ZTV8S7867C14[32]),  32,34},
  {&(_tg__ZTV8S7867C11__8S7867C14[4]),  4,7},
  {&(_tg__ZTV7S7867C68S7867C11__8S7867C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C68S7867C11__8S7867C14[3]),  3,5},
  {&(_tg__ZTV7S7867C6__8S7867C11__8S7867C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7867C11__8S7867C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7867C14[];
extern  VTBL_ENTRY _ZTV8S7867C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C14[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7867C11D0Ev,_ZThn148_N8S7867C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7867C11D1Ev,_ZThn148_N8S7867C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7867C6D0Ev,_ZThn116_N7S7867C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7867C6D1Ev,_ZThn116_N7S7867C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7867C14D0Ev,_ZTv0_n20_N8S7867C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S7867C14D0Ev,_ZThn520_N8S7867C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7867C14D1Ev,_ZTv0_n20_N8S7867C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S7867C14D1Ev,_ZThn520_N8S7867C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C14D0Ev,_ZTv0_n12_N8S7867C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N8S7867C14D0Ev,_ZThn668_N8S7867C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7867C14D0Ev,_ZThn504_N8S7867C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C14D1Ev,_ZTv0_n12_N8S7867C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N8S7867C14D1Ev,_ZThn668_N8S7867C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7867C14D1Ev,_ZThn504_N8S7867C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7867C14 = {  "S7867C14", // class name
  bases_S7867C14, 8,
  &(vtc_S7867C14[0]), // expected_vtbl_contents
  &(vtt_S7867C14[0]), // expected_vtt_contents
  ABISELECT(1184,700), // object size
  NSPAIRA(_ZTI8S7867C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7867C14),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7867C14),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7867C4  : virtual S3572C5 , virtual S7867C6 {
  short s7867c4f0;
  int s7867c4f1[2];
  char s7867c4f2;
  __tsi64 s7867c4f3;
  int s7867c4f4;
  ::S3572C6_nt s7867c4f5;
  void *s7867c4f6;
  char s7867c4f7;
  short s7867c4f8;
  ::S3572C4 s7867c4f9;
  int s7867c4f10[2];
  __tsi64 s7867c4f11;
  virtual  ~S7867C4(); // _ZN7S7867C4D2Ev
  S7867C4(); // tgen
};
//SIG(-1 S7867C4) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ VBC2 VBC4{ vd m FC2 FC5{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL}


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

static void Test_S7867C4()
{
  extern Class_Descriptor cd_S7867C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,43)];
    init_test(&cd_S7867C4, buf);
    S7867C4 *dp, &lv = *(dp=new (buf) S7867C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,168), "sizeof(S7867C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7867C4)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(128,92), "S7867C4");
    check_base_class_offset(lv, (S3572C5*)(S7867C6*), ABISELECT(128,92), "S7867C4");
    check_base_class_offset(lv, (S3572C4*)(S7867C6*), ABISELECT(208,136), "S7867C4");
    check_base_class_offset(lv, (S7867C6*), ABISELECT(168,116), "S7867C4");
    check_field_offset(lv, s7867c4f0, ABISELECT(8,4), "S7867C4.s7867c4f0");
    check_field_offset(lv, s7867c4f1, ABISELECT(12,8), "S7867C4.s7867c4f1");
    check_field_offset(lv, s7867c4f2, ABISELECT(20,16), "S7867C4.s7867c4f2");
    check_field_offset(lv, s7867c4f3, ABISELECT(24,20), "S7867C4.s7867c4f3");
    check_field_offset(lv, s7867c4f4, ABISELECT(32,28), "S7867C4.s7867c4f4");
    check_field_offset(lv, s7867c4f5, ABISELECT(36,32), "S7867C4.s7867c4f5");
    check_field_offset(lv, s7867c4f6, ABISELECT(40,36), "S7867C4.s7867c4f6");
    check_field_offset(lv, s7867c4f7, ABISELECT(48,40), "S7867C4.s7867c4f7");
    check_field_offset(lv, s7867c4f8, ABISELECT(50,42), "S7867C4.s7867c4f8");
    check_field_offset(lv, s7867c4f9, ABISELECT(56,44), "S7867C4.s7867c4f9");
    check_field_offset(lv, s7867c4f10, ABISELECT(112,76), "S7867C4.s7867c4f10");
    check_field_offset(lv, s7867c4f11, ABISELECT(120,84), "S7867C4.s7867c4f11");
    test_class_info(&lv, &cd_S7867C4);
    dp->~S7867C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7867C4(Test_S7867C4, "S7867C4", ABISELECT(264,168));

#else // __cplusplus

extern void _ZN7S7867C4C1Ev();
extern void _ZN7S7867C4D2Ev();
Name_Map name_map_S7867C4[] = {
  NSPAIR(_ZN7S7867C4C1Ev),
  NSPAIR(_ZN7S7867C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
static Base_Class bases_S7867C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(208,136), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7867C6,    ABISELECT(168,116), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7867C4[];
extern void _ZN7S7867C4D1Ev();
extern void _ZN7S7867C4D0Ev();
extern void ABISELECT(_ZTv0_n40_N7S7867C4D1Ev,_ZTv0_n20_N7S7867C4D1Ev)();
extern void ABISELECT(_ZThn168_N7S7867C4D1Ev,_ZThn116_N7S7867C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7867C4D0Ev,_ZTv0_n20_N7S7867C4D0Ev)();
extern void ABISELECT(_ZThn168_N7S7867C4D0Ev,_ZThn116_N7S7867C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C4D1Ev,_ZTv0_n12_N7S7867C4D1Ev)();
extern void ABISELECT(_ZThn208_N7S7867C4D1Ev,_ZThn136_N7S7867C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C4D0Ev,_ZTv0_n12_N7S7867C4D0Ev)();
extern void ABISELECT(_ZThn208_N7S7867C4D0Ev,_ZThn136_N7S7867C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7867C4[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C4[0]),
  (VTBL_ENTRY)&_ZN7S7867C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C4D0Ev,
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S7867C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C4D1Ev,_ZTv0_n20_N7S7867C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C4D0Ev,_ZTv0_n20_N7S7867C4D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI7S7867C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C4D1Ev,_ZTv0_n12_N7S7867C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C4D0Ev,_ZTv0_n12_N7S7867C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S7867C4[];
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C6__7S7867C4[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S7867C6D1Ev,_ZThn20_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn40_N7S7867C6D0Ev,_ZThn20_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C6__7S7867C4[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
static  VTT_ENTRY vtt_S7867C4[] = {
  {&(_ZTV7S7867C4[5]),  5,19},
  {&(_ZTV7S7867C4[12]),  12,19},
  {&(_ZTV7S7867C4[17]),  17,19},
  {&(_tg__ZTV7S7867C6__7S7867C4[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C6__7S7867C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7867C4[];
extern  VTBL_ENTRY _ZTV7S7867C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C4[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7867C6D0Ev,_ZThn20_N7S7867C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7867C6D1Ev,_ZThn20_N7S7867C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C4D0Ev,_ZTv0_n12_N7S7867C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7867C4D0Ev,_ZThn136_N7S7867C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C4D1Ev,_ZTv0_n12_N7S7867C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7867C4D1Ev,_ZThn136_N7S7867C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7867C4D0Ev,_ZTv0_n20_N7S7867C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7867C4D0Ev,_ZThn116_N7S7867C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7867C4D1Ev,_ZTv0_n20_N7S7867C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7867C4D1Ev,_ZThn116_N7S7867C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7867C4 = {  "S7867C4", // class name
  bases_S7867C4, 3,
  &(vtc_S7867C4[0]), // expected_vtbl_contents
  &(vtt_S7867C4[0]), // expected_vtt_contents
  ABISELECT(264,168), // object size
  NSPAIRA(_ZTI7S7867C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7867C4),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7867C4),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7867C26  : S7867C6 , S7867C9 {
  int s7867c26f0;
  int s7867c26f1:2;
  long double s7867c26f2;
  void *s7867c26f3;
  void *s7867c26f4;
  virtual  ~S7867C26(); // _ZN8S7867C26D2Ev
  virtual void  v10(); // _ZN8S7867C263v10Ev
  virtual void  v11(); // _ZN8S7867C263v11Ev
  virtual void  v12(); // _ZN8S7867C263v12Ev
  S7867C26(); // tgen
};
//SIG(-1 S7867C26) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} BC6{ VBC3 VBC4 BC2 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd v1 v2 v3 Fi Fi:2 FD Fp[2]}


 S7867C26 ::~S7867C26(){ note_dtor("S7867C26", this);}
void  S7867C26 ::v10(){vfunc_called(this, "_ZN8S7867C263v10Ev");}
void  S7867C26 ::v11(){vfunc_called(this, "_ZN8S7867C263v11Ev");}
void  S7867C26 ::v12(){vfunc_called(this, "_ZN8S7867C263v12Ev");}
S7867C26 ::S7867C26(){ note_ctor("S7867C26", this);} // tgen

static void Test_S7867C26()
{
  extern Class_Descriptor cd_S7867C26;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,97)];
    init_test(&cd_S7867C26, buf);
    S7867C26 *dp, &lv = *(dp=new (buf) S7867C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,384), "sizeof(S7867C26)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7867C26)");
    /*is_ambiguous_... S7867C26::S7867C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S7867C6*), ABISELECT(544,328), "S7867C26");
    check_base_class_offset(lv, (S3572C5*)(S7867C9*), ABISELECT(544,328), "S7867C26");
    check_base_class_offset(lv, (S3572C5*)(S7867C6*)(S7867C9*), ABISELECT(544,328), "S7867C26");
    /*is_ambiguous_... S7867C26::S7867C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7867C6*), ABISELECT(584,352), "S7867C26");
    check_base_class_offset(lv, (S3572C4*)(S7867C9*), ABISELECT(584,352), "S7867C26");
    check_base_class_offset(lv, (S3572C4*)(S7867C6*)(S7867C9*), ABISELECT(584,352), "S7867C26");
    /*is_ambiguous_... S7867C26::S7867C6 */ AMB_check_base_class_offset(lv, (S7867C6*), 0, "S7867C26");
    check_base_class_offset(lv, (S7867C6*)(S7867C9*), ABISELECT(40,20), "S7867C26");
    check_base_class_offset(lv, (S7867C9*), ABISELECT(40,20), "S7867C26");
    check_field_offset(lv, s7867c26f0, ABISELECT(500,300), "S7867C26.s7867c26f0");
    set_bf_and_test(lv, s7867c26f1, ABISELECT(504,304), 0, 2, 1, "S7867C26");
    set_bf_and_test(lv, s7867c26f1, ABISELECT(504,304), 0, 2, hide_sll(1LL<<1), "S7867C26");
    check_field_offset(lv, s7867c26f2, ABISELECT(512,308), "S7867C26.s7867c26f2");
    check_field_offset(lv, s7867c26f3, ABISELECT(528,320), "S7867C26.s7867c26f3");
    check_field_offset(lv, s7867c26f4, ABISELECT(536,324), "S7867C26.s7867c26f4");
    test_class_info(&lv, &cd_S7867C26);
    dp->~S7867C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7867C26(Test_S7867C26, "S7867C26", ABISELECT(640,384));

#else // __cplusplus

extern void _ZN8S7867C26C1Ev();
extern void _ZN8S7867C26D2Ev();
Name_Map name_map_S7867C26[] = {
  NSPAIR(_ZN8S7867C26C1Ev),
  NSPAIR(_ZN8S7867C26D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
extern Class_Descriptor cd_S7867C9;
extern VTBL_ENTRY _ZTI7S7867C9[];
extern  VTBL_ENTRY _ZTV7S7867C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C9[];
static Base_Class bases_S7867C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(544,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(584,352), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7867C6,    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_S7867C6,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7867C9,    ABISELECT(40,20), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7867C26[];
extern void _ZN8S7867C26D1Ev();
extern void _ZN8S7867C26D0Ev();
extern void _ZN8S7867C263v10Ev();
extern void _ZN8S7867C263v11Ev();
extern void _ZN8S7867C263v12Ev();
extern void ABISELECT(_ZThn40_N8S7867C26D1Ev,_ZThn20_N8S7867C26D1Ev)();
extern void ABISELECT(_ZThn40_N8S7867C26D0Ev,_ZThn20_N8S7867C26D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7867C26D1Ev,_ZTv0_n12_N8S7867C26D1Ev)();
extern void ABISELECT(_ZThn584_N8S7867C26D1Ev,_ZThn352_N8S7867C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C26D0Ev,_ZTv0_n12_N8S7867C26D0Ev)();
extern void ABISELECT(_ZThn584_N8S7867C26D0Ev,_ZThn352_N8S7867C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7867C26[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C26[0]),
  (VTBL_ENTRY)&_ZN8S7867C26D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C26D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C263v10Ev,
  (VTBL_ENTRY)&_ZN8S7867C263v11Ev,
  (VTBL_ENTRY)&_ZN8S7867C263v12Ev,
  ABISELECT(544,332),
  ABISELECT(504,308),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7867C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7867C26D1Ev,_ZThn20_N8S7867C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7867C26D0Ev,_ZThn20_N8S7867C26D0Ev),
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI8S7867C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C26D1Ev,_ZTv0_n12_N8S7867C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C26D0Ev,_ZTv0_n12_N8S7867C26D0Ev),
};
extern VTBL_ENTRY _ZTV8S7867C26[];
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C6__8S7867C26[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn584_N7S7867C6D1Ev,_ZThn352_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn584_N7S7867C6D0Ev,_ZThn352_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C6__8S7867C26[] = {
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
extern void _ZN7S7867C9D1Ev();
extern void _ZN7S7867C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C9__8S7867C26[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C9[0]),
  (VTBL_ENTRY)&_ZN7S7867C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C9D0Ev,
};
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C67S7867C9__A1__8S7867C26[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn544_N7S7867C6D1Ev,_ZThn332_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn544_N7S7867C6D0Ev,_ZThn332_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C67S7867C9__A1__8S7867C26[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7867C9D1Ev,_ZTv0_n12_N7S7867C9D1Ev)();
extern void ABISELECT(_ZThn544_N7S7867C9D1Ev,_ZThn332_N7S7867C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C9D0Ev,_ZTv0_n12_N7S7867C9D0Ev)();
extern void ABISELECT(_ZThn544_N7S7867C9D0Ev,_ZThn332_N7S7867C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C9__8S7867C26[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI7S7867C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C9D1Ev,_ZTv0_n12_N7S7867C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C9D0Ev,_ZTv0_n12_N7S7867C9D0Ev),
};
static  VTT_ENTRY vtt_S7867C26[] = {
  {&(_ZTV8S7867C26[4]),  4,20},
  {&(_tg__ZTV7S7867C6__8S7867C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C6__8S7867C26[3]),  3,5},
  {&(_tg__ZTV7S7867C9__8S7867C26[4]),  4,6},
  {&(_tg__ZTV7S7867C67S7867C9__A1__8S7867C26[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C67S7867C9__A1__8S7867C26[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S7867C9__8S7867C26[3]),  3,5},
  {&(_ZTV8S7867C26[18]),  18,20},
  {&(_ZTV8S7867C26[13]),  13,20},
};
extern VTBL_ENTRY _ZTI8S7867C26[];
extern  VTBL_ENTRY _ZTV8S7867C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C26[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C9D0Ev,_ZTv0_n12_N7S7867C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S7867C9D0Ev,_ZThn332_N7S7867C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C9D1Ev,_ZTv0_n12_N7S7867C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S7867C9D1Ev,_ZThn332_N7S7867C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S7867C6D0Ev,_ZThn332_N7S7867C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S7867C6D0Ev,_ZThn352_N7S7867C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S7867C6D1Ev,_ZThn332_N7S7867C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S7867C6D1Ev,_ZThn352_N7S7867C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C26D0Ev,_ZTv0_n12_N8S7867C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S7867C26D0Ev,_ZThn352_N8S7867C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C26D1Ev,_ZTv0_n12_N8S7867C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S7867C26D1Ev,_ZThn352_N8S7867C26D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7867C26 = {  "S7867C26", // class name
  bases_S7867C26, 5,
  &(vtc_S7867C26[0]), // expected_vtbl_contents
  &(vtt_S7867C26[0]), // expected_vtt_contents
  ABISELECT(640,384), // object size
  NSPAIRA(_ZTI8S7867C26),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7867C26),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7867C26),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7867C25  : S7867C26 , S7867C6 {
  char s7867c25f0;
  short s7867c25f1[10];
  void *s7867c25f2;
  ::S3572C19 s7867c25f3;
  void *s7867c25f4[2];
  short s7867c25f5;
  void *s7867c25f6;
  int s7867c25f7;
  int s7867c25f8;
  virtual  ~S7867C25(); // _ZN8S7867C25D2Ev
  S7867C25(); // tgen
};
//SIG(-1 S7867C25) C1{ BC2{ BC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ vd m FC4 FC6{}} Fc:1 Fp[3]} BC7{ VBC4 VBC5 BC3 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd v1 v2 v3 Fi Fi:2 FD Fp[2]} BC3 vd Fc Fs[10] Fp FC8{ BC9{ VBC10{ vd m FD} VBC11{ VBC4 BC5 BC12{ VBC4 VBC5 Fc:1 Fp[3]} vd v5 Fc Fp[7] FD Fp[4] Fi Fc Fp} BC13{ m Fp Fi[2] FU14{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v6 Fc[7] Fp FD FC15{ VBC4 VBC5 BC12 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} FL FL Fl Fi Fi FL[3] FD} vd v4 FC16{ VBC5 BC12 VBC15 vd FC11} Fi:7 FC16 FC17{ vd m Fi[4] FL Fi FC12 Fi FD Fi Fi FL FL Fs}} Fp[2] Fs Fp Fi Fi}


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

static void Test_S7867C25()
{
  extern Class_Descriptor cd_S7867C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(255,597)];
    init_test(&cd_S7867C25, buf);
    S7867C25 *dp, &lv = *(dp=new (buf) S7867C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4064,2384), "sizeof(S7867C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7867C25)");
    /*is_ambiguous_... S7867C26::S7867C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S7867C6*)(S7867C26*), ABISELECT(3960,2328), "S7867C25");
    check_base_class_offset(lv, (S3572C5*)(S7867C9*)(S7867C26*), ABISELECT(3960,2328), "S7867C25");
    check_base_class_offset(lv, (S3572C5*)(S7867C6*)(S7867C9*)(S7867C26*), ABISELECT(3960,2328), "S7867C25");
    /*is_ambiguous_... S7867C25::S7867C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S7867C6*), ABISELECT(3960,2328), "S7867C25");
    /*is_ambiguous_... S7867C26::S7867C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7867C6*)(S7867C26*), ABISELECT(4000,2352), "S7867C25");
    check_base_class_offset(lv, (S3572C4*)(S7867C9*)(S7867C26*), ABISELECT(4000,2352), "S7867C25");
    check_base_class_offset(lv, (S3572C4*)(S7867C6*)(S7867C9*)(S7867C26*), ABISELECT(4000,2352), "S7867C25");
    /*is_ambiguous_... S7867C25::S7867C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7867C6*), ABISELECT(4000,2352), "S7867C25");
    /*is_ambiguous_... S7867C26::S7867C6 */ AMB_check_base_class_offset(lv, (S7867C6*)(S7867C26*), 0, "S7867C25");
    check_base_class_offset(lv, (S7867C6*)(S7867C9*)(S7867C26*), ABISELECT(40,20), "S7867C25");
    check_base_class_offset(lv, (S7867C9*)(S7867C26*), ABISELECT(40,20), "S7867C25");
    check_base_class_offset(lv, (S7867C26*), 0, "S7867C25");
    /*is_ambiguous_... S7867C25::S7867C6 */ AMB_check_base_class_offset(lv, (S7867C6*), ABISELECT(544,328), "S7867C25");
    check_field_offset(lv, s7867c25f0, ABISELECT(584,348), "S7867C25.s7867c25f0");
    check_field_offset(lv, s7867c25f1, ABISELECT(586,350), "S7867C25.s7867c25f1");
    check_field_offset(lv, s7867c25f2, ABISELECT(608,372), "S7867C25.s7867c25f2");
    check_field_offset(lv, s7867c25f3, ABISELECT(624,376), "S7867C25.s7867c25f3");
    check_field_offset(lv, s7867c25f4, ABISELECT(3920,2304), "S7867C25.s7867c25f4");
    check_field_offset(lv, s7867c25f5, ABISELECT(3936,2312), "S7867C25.s7867c25f5");
    check_field_offset(lv, s7867c25f6, ABISELECT(3944,2316), "S7867C25.s7867c25f6");
    check_field_offset(lv, s7867c25f7, ABISELECT(3952,2320), "S7867C25.s7867c25f7");
    check_field_offset(lv, s7867c25f8, ABISELECT(3956,2324), "S7867C25.s7867c25f8");
    test_class_info(&lv, &cd_S7867C25);
    dp->~S7867C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7867C25(Test_S7867C25, "S7867C25", ABISELECT(4064,2384));

#else // __cplusplus

extern void _ZN8S7867C25C1Ev();
extern void _ZN8S7867C25D2Ev();
Name_Map name_map_S7867C25[] = {
  NSPAIR(_ZN8S7867C25C1Ev),
  NSPAIR(_ZN8S7867C25D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
extern Class_Descriptor cd_S7867C9;
extern VTBL_ENTRY _ZTI7S7867C9[];
extern  VTBL_ENTRY _ZTV7S7867C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C9[];
extern Class_Descriptor cd_S7867C26;
extern VTBL_ENTRY _ZTI8S7867C26[];
extern  VTBL_ENTRY _ZTV8S7867C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C26[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
static Base_Class bases_S7867C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(3960,2328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(4000,2352), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7867C6,    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
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7867C6,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7867C9,    ABISELECT(40,20), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7867C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7867C6,    ABISELECT(544,328), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7867C25[];
extern void _ZN8S7867C25D1Ev();
extern void _ZN8S7867C25D0Ev();
extern void _ZN8S7867C263v10Ev();
extern void _ZN8S7867C263v11Ev();
extern void _ZN8S7867C263v12Ev();
extern void ABISELECT(_ZThn40_N8S7867C25D1Ev,_ZThn20_N8S7867C25D1Ev)();
extern void ABISELECT(_ZThn40_N8S7867C25D0Ev,_ZThn20_N8S7867C25D0Ev)();
extern void ABISELECT(_ZThn544_N8S7867C25D1Ev,_ZThn328_N8S7867C25D1Ev)();
extern void ABISELECT(_ZThn544_N8S7867C25D0Ev,_ZThn328_N8S7867C25D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7867C25D1Ev,_ZTv0_n12_N8S7867C25D1Ev)();
extern void ABISELECT(_ZThn4000_N8S7867C25D1Ev,_ZThn2352_N8S7867C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C25D0Ev,_ZTv0_n12_N8S7867C25D0Ev)();
extern void ABISELECT(_ZThn4000_N8S7867C25D0Ev,_ZThn2352_N8S7867C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7867C25[] = {
  ABISELECT(4000,2352),
  ABISELECT(3960,2328),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C25[0]),
  (VTBL_ENTRY)&_ZN8S7867C25D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C25D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C263v10Ev,
  (VTBL_ENTRY)&_ZN8S7867C263v11Ev,
  (VTBL_ENTRY)&_ZN8S7867C263v12Ev,
  ABISELECT(3960,2332),
  ABISELECT(3920,2308),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7867C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7867C25D1Ev,_ZThn20_N8S7867C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7867C25D0Ev,_ZThn20_N8S7867C25D0Ev),
  ABISELECT(3456,2024),
  ABISELECT(3416,2000),
  ABISELECT(-544,-328),
  (VTBL_ENTRY)&(_ZTI8S7867C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn544_N8S7867C25D1Ev,_ZThn328_N8S7867C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn544_N8S7867C25D0Ev,_ZThn328_N8S7867C25D0Ev),
  ABISELECT(-4000,-2352),
  ABISELECT(-4000,-2352),
  (VTBL_ENTRY)&(_ZTI8S7867C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C25D1Ev,_ZTv0_n12_N8S7867C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C25D0Ev,_ZTv0_n12_N8S7867C25D0Ev),
};
extern VTBL_ENTRY _ZTV8S7867C25[];
extern void _ZN8S7867C26D1Ev();
extern void _ZN8S7867C26D0Ev();
extern void _ZN8S7867C263v10Ev();
extern void _ZN8S7867C263v11Ev();
extern void _ZN8S7867C263v12Ev();
static  VTBL_ENTRY _tg__ZTV8S7867C26__8S7867C25[] = {
  ABISELECT(4000,2352),
  ABISELECT(3960,2328),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C26[0]),
  (VTBL_ENTRY)&_ZN8S7867C26D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C26D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C263v10Ev,
  (VTBL_ENTRY)&_ZN8S7867C263v11Ev,
  (VTBL_ENTRY)&_ZN8S7867C263v12Ev,
};
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C68S7867C26__8S7867C25[] = {
  ABISELECT(4000,2352),
  ABISELECT(3960,2328),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn4000_N7S7867C6D1Ev,_ZThn2352_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn4000_N7S7867C6D0Ev,_ZThn2352_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C68S7867C26__8S7867C25[] = {
  ABISELECT(-4000,-2352),
  ABISELECT(-4000,-2352),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
extern void _ZN7S7867C9D1Ev();
extern void _ZN7S7867C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C98S7867C26__8S7867C25[] = {
  ABISELECT(3960,2332),
  ABISELECT(3920,2308),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C9[0]),
  (VTBL_ENTRY)&_ZN7S7867C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C9D0Ev,
};
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C67S7867C98S7867C26__A1__8S7867C25[] = {
  ABISELECT(3960,2332),
  ABISELECT(3920,2308),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn3960_N7S7867C6D1Ev,_ZThn2332_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn3960_N7S7867C6D0Ev,_ZThn2332_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C67S7867C98S7867C26__A1__8S7867C25[] = {
  ABISELECT(-3960,-2332),
  ABISELECT(-3960,-2332),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7867C9D1Ev,_ZTv0_n12_N7S7867C9D1Ev)();
extern void ABISELECT(_ZThn3960_N7S7867C9D1Ev,_ZThn2332_N7S7867C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C9D0Ev,_ZTv0_n12_N7S7867C9D0Ev)();
extern void ABISELECT(_ZThn3960_N7S7867C9D0Ev,_ZThn2332_N7S7867C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C98S7867C26__8S7867C25[] = {
  ABISELECT(-3960,-2332),
  ABISELECT(-3960,-2332),
  (VTBL_ENTRY)&(_ZTI7S7867C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C9D1Ev,_ZTv0_n12_N7S7867C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C9D0Ev,_ZTv0_n12_N7S7867C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7867C26D1Ev,_ZTv0_n12_N8S7867C26D1Ev)();
extern void ABISELECT(_ZThn4000_N8S7867C26D1Ev,_ZThn2352_N8S7867C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C26D0Ev,_ZTv0_n12_N8S7867C26D0Ev)();
extern void ABISELECT(_ZThn4000_N8S7867C26D0Ev,_ZThn2352_N8S7867C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S7867C26__8S7867C25[] = {
  ABISELECT(-4000,-2352),
  ABISELECT(-4000,-2352),
  (VTBL_ENTRY)&(_ZTI8S7867C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C26D1Ev,_ZTv0_n12_N8S7867C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C26D0Ev,_ZTv0_n12_N8S7867C26D0Ev),
};
extern void ABISELECT(_ZThn40_N8S7867C26D1Ev,_ZThn20_N8S7867C26D1Ev)();
extern void ABISELECT(_ZThn40_N8S7867C26D0Ev,_ZThn20_N8S7867C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7867C9__8S7867C26__8S7867C25[] = {
  ABISELECT(3960,2332),
  ABISELECT(3920,2308),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7867C26[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7867C26D1Ev,_ZThn20_N8S7867C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S7867C26D0Ev,_ZThn20_N8S7867C26D0Ev),
};
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C6__A2__8S7867C25[] = {
  ABISELECT(3456,2024),
  ABISELECT(3416,2000),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn3456_N7S7867C6D1Ev,_ZThn2024_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn3456_N7S7867C6D0Ev,_ZThn2024_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C6__A2__8S7867C25[] = {
  ABISELECT(-3456,-2024),
  ABISELECT(-3456,-2024),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
static  VTT_ENTRY vtt_S7867C25[] = {
  {&(_ZTV8S7867C25[4]),  4,26},
  {&(_tg__ZTV8S7867C26__8S7867C25[4]),  4,9},
  {&(_tg__ZTV7S7867C68S7867C26__8S7867C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C68S7867C26__8S7867C25[3]),  3,5},
  {&(_tg__ZTV7S7867C98S7867C26__8S7867C25[4]),  4,6},
  {&(_tg__ZTV7S7867C67S7867C98S7867C26__A1__8S7867C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C67S7867C98S7867C26__A1__8S7867C25[3]),  3,5},
  {&(_tg__ZTV7S3572C4__7S7867C98S7867C26__8S7867C25[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S7867C26__8S7867C25[3]),  3,5},
  {&(_tg__ZTV7S7867C9__8S7867C26__8S7867C25[4]),  4,6},
  {&(_tg__ZTV7S7867C6__A2__8S7867C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C6__A2__8S7867C25[3]),  3,5},
  {&(_ZTV8S7867C25[24]),  24,26},
  {&(_ZTV8S7867C25[13]),  13,26},
  {&(_ZTV8S7867C25[19]),  19,26},
};
extern VTBL_ENTRY _ZTI8S7867C25[];
extern  VTBL_ENTRY _ZTV8S7867C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C25[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C26D0Ev,_ZTv0_n12_N8S7867C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4000_N8S7867C26D0Ev,_ZThn2352_N8S7867C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C26D1Ev,_ZTv0_n12_N8S7867C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4000_N8S7867C26D1Ev,_ZThn2352_N8S7867C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C9D0Ev,_ZTv0_n12_N7S7867C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3960_N7S7867C9D0Ev,_ZThn2332_N7S7867C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C9D1Ev,_ZTv0_n12_N7S7867C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3960_N7S7867C9D1Ev,_ZThn2332_N7S7867C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3456_N7S7867C6D0Ev,_ZThn2024_N7S7867C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3960_N7S7867C6D0Ev,_ZThn2332_N7S7867C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4000_N7S7867C6D0Ev,_ZThn2352_N7S7867C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3456_N7S7867C6D1Ev,_ZThn2024_N7S7867C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3960_N7S7867C6D1Ev,_ZThn2332_N7S7867C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4000_N7S7867C6D1Ev,_ZThn2352_N7S7867C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C25D0Ev,_ZTv0_n12_N8S7867C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4000_N8S7867C25D0Ev,_ZThn2352_N8S7867C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C25D1Ev,_ZTv0_n12_N8S7867C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4000_N8S7867C25D1Ev,_ZThn2352_N8S7867C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7867C25 = {  "S7867C25", // class name
  bases_S7867C25, 7,
  &(vtc_S7867C25[0]), // expected_vtbl_contents
  &(vtt_S7867C25[0]), // expected_vtt_contents
  ABISELECT(4064,2384), // object size
  NSPAIRA(_ZTI8S7867C25),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7867C25),26, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7867C25),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7867C1  : S7867C2 , virtual S7867C14 , virtual S3572C24 , S7867C4 , S3572C5 {
  ::S3572C4 s7867c1f0;
  long s7867c1f1;
  ::S3572C25 s7867c1f2;
  ::S7867C25 s7867c1f3;
  __tsi64 s7867c1f4;
  int s7867c1f5;
  int s7867c1f6:6;
  char s7867c1f7;
  void *s7867c1f8;
  long double s7867c1f9;
  void *s7867c1f10;
  virtual void  v1(); // _ZN7S7867C12v1Ev
  ~S7867C1(); // tgen
  S7867C1(); // tgen
};
//SIG(1 S7867C1) C1{ BC2{ VBC3{ vd m FC4{ VBC5{ m Fp Fs Fi Fp Fl[2]} VBC6{ VBC5 VBC7{ vd m FC5 FC8{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} FC9{ VBC5 VBC7 BC6 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} VBC10{ BC11{ VBC5 BC7 BC12{ VBC5 VBC7 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v3 v4 v5 Fc Fi} FL Fi[3] Fp Fi[2] FC13{ VBC4 BC7 BC14{ VBC7 BC6 VBC9 vd FC15{ VBC5 BC7 BC6 vd v7 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} Fi[6] Fs Fi FC3} VBC16{ VBC17{ vd m FD} VBC11 BC18{ m Fp Fi[2] FU19{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC5 vd v6 Fc[7] Fp FD FC20{ VBC5 VBC7 BC12 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} FL FL Fl Fi Fi FL[3] FD} VBC21{ vd m Fi[4] FL Fi FC6 Fi FD Fi Fi FL FL Fs} BC22{ VBC5 VBC12 vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} BC5 v1 FC7 Fl FC23{ BC24{ BC6 VBC15 vd Fi Fp} VBC14 BC25{ BC17 BC26{ VBC24 BC15 FC3 Fp Fi FD FD FL Fi} BC27{ VBC15 vd v10 Fi Fp Fi:2 FD Fp} VBC28{ VBC17 VBC15 BC18 BC5 vd v11 Fc[7] Fp FD FC9 FL FL Fl Fi Fi FL[3] FD} Fi Fp} v8 v9 Fp[6] Fi FC24 Fi FC6 FL Fi[10] Fi FU29{ m Fi Fi[6] Fc Fi Fi Fp Fp[5] Fi Fc FL Fp Fp Fp}[2] FD Fi Fi:7} FC30{ BC31{ BC12 BC20 vd v12 v13 v14 Fi Fi:2 FD Fp Fp} BC12 vd Fc Fs[10] Fp FC32{ BC28 vd v15 FC14 Fi:7 FC14 FC21} Fp[2] Fs Fp Fi Fi} FL Fi Fi:6 Fc Fp FD Fp}


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

static void Test_S7867C1()
{
  extern Class_Descriptor cd_S7867C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(841,1990)];
    init_test(&cd_S7867C1, buf);
    S7867C1 *dp, &lv = *(dp=new (buf) S7867C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(13440,7956), "sizeof(S7867C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7867C1)");
    check_base_class_offset(lv, (S3572C17*)(S7867C2*), ABISELECT(10816,6392), "S7867C1");
    check_base_class_offset(lv, (S3572C5*)(S7867C11*)(S7867C10*), ABISELECT(11960,7084), "S7867C1");
    check_base_class_offset(lv, (S3572C5*)(S7867C6*)(S7867C11*)(S7867C10*), ABISELECT(11960,7084), "S7867C1");
    /*is_ambiguous_... S7867C1::S7867C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S7867C11*), ABISELECT(11960,7084), "S7867C1");
    /*is_ambiguous_... S7867C1::S7867C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S7867C6*)(S7867C11*), ABISELECT(11960,7084), "S7867C1");
    check_base_class_offset(lv, (S3572C5*)(S7867C4*), ABISELECT(11960,7084), "S7867C1");
    /*is_ambiguous_... S7867C1::S7867C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S7867C6*), ABISELECT(11960,7084), "S7867C1");
    /*is_ambiguous_... S7867C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7867C11*)(S7867C10*), ABISELECT(11728,6952), "S7867C1");
    check_base_class_offset(lv, (S3572C4*)(S7867C6*)(S7867C11*)(S7867C10*), ABISELECT(12000,7108), "S7867C1");
    /*is_ambiguous_... S7867C1::S7867C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7867C6*)(S7867C11*), ABISELECT(12000,7108), "S7867C1");
    /*is_ambiguous_... S7867C1::S7867C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7867C6*), ABISELECT(12000,7108), "S7867C1");
    check_base_class_offset(lv, (S7867C6*)(S7867C11*)(S7867C10*), ABISELECT(11784,6984), "S7867C1");
    check_base_class_offset(lv, (S7867C11*)(S7867C10*), ABISELECT(11728,6952), "S7867C1");
    check_base_class_offset(lv, (S7867C10*)(S7867C2*), ABISELECT(11728,6952), "S7867C1");
    check_base_class_offset(lv, (S7867C2*), 0, "S7867C1");
    check_base_class_offset(lv, (S3572C21*)(S7867C14*), ABISELECT(12896,7644), "S7867C1");
    /*is_ambiguous_... S7867C1::S7867C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7867C11*), ABISELECT(12928,7660), "S7867C1");
    /*is_ambiguous_... S7867C1::S7867C11 */ AMB_check_base_class_offset(lv, (S7867C6*)(S7867C11*), ABISELECT(12984,7692), "S7867C1");
    check_base_class_offset(lv, (S7867C11*)(S7867C14*), ABISELECT(12928,7660), "S7867C1");
    check_base_class_offset(lv, (S3572C22*)(S7867C14*), ABISELECT(12080,7144), "S7867C1");
    /*is_ambiguous_... S7867C14::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S7867C14*), ABISELECT(12176,7196), "S7867C1");
    check_base_class_offset(lv, (S7867C14*), ABISELECT(12064,7140), "S7867C1");
    check_base_class_offset(lv, (S3572C24*), ABISELECT(13152,7784), "S7867C1");
    check_base_class_offset(lv, (S7867C6*)(S7867C4*), ABISELECT(13392,7936), "S7867C1");
    check_base_class_offset(lv, (S7867C4*), ABISELECT(2240,1364), "S7867C1");
    /*is_ambiguous_... S7867C1::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*), ABISELECT(2368,1456), "S7867C1");
    check_field_offset(lv, s7867c1f0, ABISELECT(2408,1480), "S7867C1.s7867c1f0");
    check_field_offset(lv, s7867c1f1, ABISELECT(2464,1512), "S7867C1.s7867c1f1");
    check_field_offset(lv, s7867c1f2, ABISELECT(2480,1516), "S7867C1.s7867c1f2");
    check_field_offset(lv, s7867c1f3, ABISELECT(6688,3972), "S7867C1.s7867c1f3");
    check_field_offset(lv, s7867c1f4, ABISELECT(10752,6356), "S7867C1.s7867c1f4");
    check_field_offset(lv, s7867c1f5, ABISELECT(10760,6364), "S7867C1.s7867c1f5");
    set_bf_and_test(lv, s7867c1f6, ABISELECT(10764,6368), 0, 6, 1, "S7867C1");
    set_bf_and_test(lv, s7867c1f6, ABISELECT(10764,6368), 0, 6, hide_sll(1LL<<5), "S7867C1");
    check_field_offset(lv, s7867c1f7, ABISELECT(10765,6369), "S7867C1.s7867c1f7");
    check_field_offset(lv, s7867c1f8, ABISELECT(10768,6372), "S7867C1.s7867c1f8");
    check_field_offset(lv, s7867c1f9, ABISELECT(10784,6376), "S7867C1.s7867c1f9");
    check_field_offset(lv, s7867c1f10, ABISELECT(10800,6388), "S7867C1.s7867c1f10");
    test_class_info(&lv, &cd_S7867C1);
    dp->~S7867C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7867C1(Test_S7867C1, "S7867C1", ABISELECT(13440,7956));

#else // __cplusplus

extern void _ZN7S7867C1C1Ev();
extern void _ZN7S7867C1D1Ev();
Name_Map name_map_S7867C1[] = {
  NSPAIR(_ZN7S7867C1C1Ev),
  NSPAIR(_ZN7S7867C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
extern Class_Descriptor cd_S7867C11;
extern VTBL_ENTRY _ZTI8S7867C11[];
extern  VTBL_ENTRY _ZTV8S7867C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C11[];
extern Class_Descriptor cd_S7867C10;
extern VTBL_ENTRY _ZTI8S7867C10[];
extern  VTBL_ENTRY _ZTV8S7867C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C10[];
extern Class_Descriptor cd_S7867C2;
extern VTBL_ENTRY _ZTI7S7867C2[];
extern  VTBL_ENTRY _ZTV7S7867C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C2[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
extern Class_Descriptor cd_S7867C11;
extern VTBL_ENTRY _ZTI8S7867C11[];
extern  VTBL_ENTRY _ZTV8S7867C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C11[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S7867C14;
extern VTBL_ENTRY _ZTI8S7867C14[];
extern  VTBL_ENTRY _ZTV8S7867C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7867C14[];
extern Class_Descriptor cd_S3572C24;
extern VTBL_ENTRY _ZTI8S3572C24[];
extern  VTBL_ENTRY _ZTV8S3572C24[];
extern Class_Descriptor cd_S7867C6;
extern VTBL_ENTRY _ZTI7S7867C6[];
extern  VTBL_ENTRY _ZTV7S7867C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C6[];
extern Class_Descriptor cd_S7867C4;
extern VTBL_ENTRY _ZTI7S7867C4[];
extern  VTBL_ENTRY _ZTV7S7867C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
static Base_Class bases_S7867C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C17,    ABISELECT(10816,6392), //bcp->offset
    21, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3572C5,    ABISELECT(11960,7084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(11728,6952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C4,    ABISELECT(12000,7108), //bcp->offset
    47, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7867C6,    ABISELECT(11784,6984), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7867C11,    ABISELECT(11728,6952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7867C10,    ABISELECT(11728,6952), //bcp->offset
    26, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7867C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C21,    ABISELECT(12896,7644), //bcp->offset
    63, //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
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(12928,7660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7867C6,    ABISELECT(12984,7692), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7867C11,    ABISELECT(12928,7660), //bcp->offset
    68, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(12080,7144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(12176,7196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7867C14,    ABISELECT(12064,7140), //bcp->offset
    52, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C24,    ABISELECT(13152,7784), //bcp->offset
    83, //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
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7867C6,    ABISELECT(13392,7936), //bcp->offset
    88, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7867C4,    ABISELECT(2240,1364), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C5,    ABISELECT(2368,1456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7867C1[];
extern void _ZN7S7867C1D1Ev();
extern void _ZN7S7867C1D0Ev();
extern void _ZN7S7867C12v1Ev();
extern void ABISELECT(_ZThn2240_N7S7867C1D1Ev,_ZThn1364_N7S7867C1D1Ev)();
extern void ABISELECT(_ZThn2240_N7S7867C1D0Ev,_ZThn1364_N7S7867C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7867C1D1Ev,_ZTv0_n12_N7S7867C1D1Ev)();
extern void ABISELECT(_ZThn10816_N7S7867C1D1Ev,_ZThn6392_N7S7867C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C1D0Ev,_ZTv0_n12_N7S7867C1D0Ev)();
extern void ABISELECT(_ZThn10816_N7S7867C1D0Ev,_ZThn6392_N7S7867C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7867C1D1Ev,_ZTv0_n20_N7S7867C1D1Ev)();
extern void ABISELECT(_ZThn11728_N7S7867C1D1Ev,_ZThn6952_N7S7867C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7867C1D0Ev,_ZTv0_n20_N7S7867C1D0Ev)();
extern void ABISELECT(_ZThn11728_N7S7867C1D0Ev,_ZThn6952_N7S7867C1D0Ev)() __attribute__((weak));
extern void _ZN8S7867C112v2Ev();
extern void _ZN8S7867C102v3Ev();
extern void _ZN8S7867C102v4Ev();
extern void _ZN8S7867C102v5Ev();
extern void ABISELECT(_ZTvn56_n40_N7S7867C1D1Ev,_ZTvn32_n20_N7S7867C1D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S7867C1D0Ev,_ZTvn32_n20_N7S7867C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7867C1D1Ev,_ZTv0_n12_N7S7867C1D1Ev)();
extern void ABISELECT(_ZThn12000_N7S7867C1D1Ev,_ZThn7108_N7S7867C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C1D0Ev,_ZTv0_n12_N7S7867C1D0Ev)();
extern void ABISELECT(_ZThn12000_N7S7867C1D0Ev,_ZThn7108_N7S7867C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7867C1D1Ev,_ZTv0_n28_N7S7867C1D1Ev)();
extern void ABISELECT(_ZThn12064_N7S7867C1D1Ev,_ZThn7140_N7S7867C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7867C1D0Ev,_ZTv0_n28_N7S7867C1D0Ev)();
extern void ABISELECT(_ZThn12064_N7S7867C1D0Ev,_ZThn7140_N7S7867C1D0Ev)() __attribute__((weak));
extern void _ZN8S7867C142v6Ev();
extern void ABISELECT(_ZTv0_n24_N7S7867C1D1Ev,_ZTv0_n12_N7S7867C1D1Ev)();
extern void ABISELECT(_ZThn12896_N7S7867C1D1Ev,_ZThn7644_N7S7867C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C1D0Ev,_ZTv0_n12_N7S7867C1D0Ev)();
extern void ABISELECT(_ZThn12896_N7S7867C1D0Ev,_ZThn7644_N7S7867C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7867C1D1Ev,_ZTv0_n20_N7S7867C1D1Ev)();
extern void ABISELECT(_ZThn12928_N7S7867C1D1Ev,_ZThn7660_N7S7867C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7867C1D0Ev,_ZTv0_n20_N7S7867C1D0Ev)();
extern void ABISELECT(_ZThn12928_N7S7867C1D0Ev,_ZThn7660_N7S7867C1D0Ev)() __attribute__((weak));
extern void _ZN8S7867C112v2Ev();
extern void ABISELECT(_ZTvn56_n40_N7S7867C1D1Ev,_ZTvn32_n20_N7S7867C1D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S7867C1D0Ev,_ZTvn32_n20_N7S7867C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7867C1D1Ev,_ZTv0_n12_N7S7867C1D1Ev)();
extern void ABISELECT(_ZThn13152_N7S7867C1D1Ev,_ZThn7784_N7S7867C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C1D0Ev,_ZTv0_n12_N7S7867C1D0Ev)();
extern void ABISELECT(_ZThn13152_N7S7867C1D0Ev,_ZThn7784_N7S7867C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7867C1D1Ev,_ZTv0_n20_N7S7867C1D1Ev)();
extern void ABISELECT(_ZThn13392_N7S7867C1D1Ev,_ZThn7936_N7S7867C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7867C1D0Ev,_ZTv0_n20_N7S7867C1D0Ev)();
extern void ABISELECT(_ZThn13392_N7S7867C1D0Ev,_ZThn7936_N7S7867C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7867C1[] = {
  ABISELECT(13392,7936),
  ABISELECT(13152,7784),
  ABISELECT(12928,7660),
  ABISELECT(12896,7644),
  ABISELECT(12064,7140),
  ABISELECT(12000,7108),
  ABISELECT(11960,7084),
  ABISELECT(11728,6952),
  ABISELECT(10816,6392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&_ZN7S7867C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7867C12v1Ev,
  ABISELECT(9760,5744),
  ABISELECT(11152,6572),
  ABISELECT(9720,5720),
  ABISELECT(-2240,-1364),
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn2240_N7S7867C1D1Ev,_ZThn1364_N7S7867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn2240_N7S7867C1D0Ev,_ZThn1364_N7S7867C1D0Ev),
  ABISELECT(-10816,-6392),
  ABISELECT(-10816,-6392),
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C1D1Ev,_ZTv0_n12_N7S7867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C1D0Ev,_ZTv0_n12_N7S7867C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-11728,-6952),
  ABISELECT(272,156),
  ABISELECT(232,132),
  ABISELECT(-11728,-6952),
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C1D1Ev,_ZTv0_n20_N7S7867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C1D0Ev,_ZTv0_n20_N7S7867C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v5Ev,
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-11784,-6984),
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7867C1D1Ev,_ZTvn32_n20_N7S7867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7867C1D0Ev,_ZTvn32_n20_N7S7867C1D0Ev),
  ABISELECT(-12000,-7108),
  ABISELECT(-12000,-7108),
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C1D1Ev,_ZTv0_n12_N7S7867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C1D0Ev,_ZTv0_n12_N7S7867C1D0Ev),
  0,
  ABISELECT(-12064,-7140),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(864,520),
  ABISELECT(832,504),
  ABISELECT(-12064,-7140),
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7867C1D1Ev,_ZTv0_n28_N7S7867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7867C1D0Ev,_ZTv0_n28_N7S7867C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7867C142v6Ev,
  ABISELECT(-12896,-7644),
  ABISELECT(-12896,-7644),
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C1D1Ev,_ZTv0_n12_N7S7867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C1D0Ev,_ZTv0_n12_N7S7867C1D0Ev),
  0,
  ABISELECT(-12928,-7660),
  ABISELECT(-928,-552),
  ABISELECT(-968,-576),
  ABISELECT(-12928,-7660),
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C1D1Ev,_ZTv0_n20_N7S7867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C1D0Ev,_ZTv0_n20_N7S7867C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
  ABISELECT(-984,-584),
  ABISELECT(-1024,-608),
  ABISELECT(-12984,-7692),
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7867C1D1Ev,_ZTvn32_n20_N7S7867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7867C1D0Ev,_ZTvn32_n20_N7S7867C1D0Ev),
  ABISELECT(-13152,-7784),
  ABISELECT(-13152,-7784),
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C1D1Ev,_ZTv0_n12_N7S7867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C1D0Ev,_ZTv0_n12_N7S7867C1D0Ev),
  ABISELECT(-13392,-7936),
  ABISELECT(-1392,-828),
  ABISELECT(-1432,-852),
  ABISELECT(-13392,-7936),
  (VTBL_ENTRY)&(_ZTI7S7867C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C1D1Ev,_ZTv0_n20_N7S7867C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C1D0Ev,_ZTv0_n20_N7S7867C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7867C1[];
extern void _ZN7S7867C2D1Ev();
extern void _ZN7S7867C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C2__7S7867C1[] = {
  ABISELECT(12000,7108),
  ABISELECT(11960,7084),
  ABISELECT(11728,6952),
  ABISELECT(10816,6392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C2[0]),
  (VTBL_ENTRY)&_ZN7S7867C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C2D1Ev,_ZTv0_n12_N7S7867C2D1Ev)();
extern void ABISELECT(_ZThn10816_N7S7867C2D1Ev,_ZThn6392_N7S7867C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C2D0Ev,_ZTv0_n12_N7S7867C2D0Ev)();
extern void ABISELECT(_ZThn10816_N7S7867C2D0Ev,_ZThn6392_N7S7867C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C17__7S7867C2__7S7867C1[] = {
  ABISELECT(-10816,-6392),
  ABISELECT(-10816,-6392),
  (VTBL_ENTRY)&(_ZTI7S7867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C2D1Ev,_ZTv0_n12_N7S7867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C2D0Ev,_ZTv0_n12_N7S7867C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7867C2D1Ev,_ZTv0_n20_N7S7867C2D1Ev)();
extern void ABISELECT(_ZThn11728_N7S7867C2D1Ev,_ZThn6952_N7S7867C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7867C2D0Ev,_ZTv0_n20_N7S7867C2D0Ev)();
extern void ABISELECT(_ZThn11728_N7S7867C2D0Ev,_ZThn6952_N7S7867C2D0Ev)() __attribute__((weak));
extern void _ZN8S7867C112v2Ev();
extern void _ZN8S7867C102v3Ev();
extern void _ZN8S7867C102v4Ev();
extern void _ZN8S7867C102v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7867C10__7S7867C2__7S7867C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-11728,-6952),
  ABISELECT(272,156),
  ABISELECT(232,132),
  ABISELECT(-11728,-6952),
  (VTBL_ENTRY)&(_ZTI7S7867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C2D1Ev,_ZTv0_n20_N7S7867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C2D0Ev,_ZTv0_n20_N7S7867C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v5Ev,
};
extern void ABISELECT(_ZTvn56_n40_N7S7867C2D1Ev,_ZTvn32_n20_N7S7867C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S7867C2D0Ev,_ZTvn32_n20_N7S7867C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7867C68S7867C118S7867C10__7S7867C2__7S7867C1[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-11784,-6984),
  (VTBL_ENTRY)&(_ZTI7S7867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7867C2D1Ev,_ZTvn32_n20_N7S7867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7867C2D0Ev,_ZTvn32_n20_N7S7867C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7867C2D1Ev,_ZTv0_n12_N7S7867C2D1Ev)();
extern void ABISELECT(_ZThn12000_N7S7867C2D1Ev,_ZThn7108_N7S7867C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C2D0Ev,_ZTv0_n12_N7S7867C2D0Ev)();
extern void ABISELECT(_ZThn12000_N7S7867C2D0Ev,_ZThn7108_N7S7867C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S7867C2__7S7867C1[] = {
  ABISELECT(-12000,-7108),
  ABISELECT(-12000,-7108),
  (VTBL_ENTRY)&(_ZTI7S7867C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C2D1Ev,_ZTv0_n12_N7S7867C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C2D0Ev,_ZTv0_n12_N7S7867C2D0Ev),
};
extern void _ZN7S7867C4D1Ev();
extern void _ZN7S7867C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C4__7S7867C1[] = {
  ABISELECT(9760,5744),
  ABISELECT(11152,6572),
  ABISELECT(9720,5720),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C4[0]),
  (VTBL_ENTRY)&_ZN7S7867C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C4D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S7867C4D1Ev,_ZTv0_n20_N7S7867C4D1Ev)();
extern void ABISELECT(_ZThn11152_N7S7867C4D1Ev,_ZThn6572_N7S7867C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7867C4D0Ev,_ZTv0_n20_N7S7867C4D0Ev)();
extern void ABISELECT(_ZThn11152_N7S7867C4D0Ev,_ZThn6572_N7S7867C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7867C6__7S7867C4__7S7867C1[] = {
  ABISELECT(-11152,-6572),
  ABISELECT(-1392,-828),
  ABISELECT(-1432,-852),
  ABISELECT(-11152,-6572),
  (VTBL_ENTRY)&(_ZTI7S7867C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C4D1Ev,_ZTv0_n20_N7S7867C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7867C4D0Ev,_ZTv0_n20_N7S7867C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7867C4D1Ev,_ZTv0_n12_N7S7867C4D1Ev)();
extern void ABISELECT(_ZThn9760_N7S7867C4D1Ev,_ZThn5744_N7S7867C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C4D0Ev,_ZTv0_n12_N7S7867C4D0Ev)();
extern void ABISELECT(_ZThn9760_N7S7867C4D0Ev,_ZThn5744_N7S7867C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C4__7S7867C1[] = {
  ABISELECT(-9760,-5744),
  ABISELECT(-9760,-5744),
  (VTBL_ENTRY)&(_ZTI7S7867C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C4D1Ev,_ZTv0_n12_N7S7867C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C4D0Ev,_ZTv0_n12_N7S7867C4D0Ev),
};
extern void _ZN8S7867C10D1Ev();
extern void _ZN8S7867C10D0Ev();
extern void _ZN8S7867C112v2Ev();
extern void _ZN8S7867C102v3Ev();
extern void _ZN8S7867C102v4Ev();
extern void _ZN8S7867C102v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7867C10__7S7867C1[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C10[0]),
  (VTBL_ENTRY)&_ZN8S7867C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7867C102v5Ev,
};
extern void _ZN8S7867C11D1Ev();
extern void _ZN8S7867C11D0Ev();
extern void _ZN8S7867C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7867C118S7867C10__7S7867C1[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&_ZN8S7867C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
};
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C68S7867C118S7867C10__7S7867C1[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZThn216_N7S7867C6D1Ev,_ZThn124_N7S7867C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
extern void ABISELECT(_ZThn216_N7S7867C6D0Ev,_ZThn124_N7S7867C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C68S7867C118S7867C10__7S7867C1[] = {
  ABISELECT(-216,-124),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7867C6__8S7867C118S7867C10__7S7867C1[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev)();
extern void ABISELECT(_ZThn272_N8S7867C11D1Ev,_ZThn156_N8S7867C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev)();
extern void ABISELECT(_ZThn272_N8S7867C11D0Ev,_ZThn156_N8S7867C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7867C118S7867C10__7S7867C1[] = {
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7867C10D1Ev,_ZThn32_N8S7867C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S7867C10D0Ev,_ZThn32_N8S7867C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7867C68S7867C11__8S7867C10__7S7867C1[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7867C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C10D1Ev,_ZThn32_N8S7867C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C10D0Ev,_ZThn32_N8S7867C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7867C10D1Ev,_ZTv0_n12_N8S7867C10D1Ev)();
extern void ABISELECT(_ZThn272_N8S7867C10D1Ev,_ZThn156_N8S7867C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C10D0Ev,_ZTv0_n12_N8S7867C10D0Ev)();
extern void ABISELECT(_ZThn272_N8S7867C10D0Ev,_ZThn156_N8S7867C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7867C10__7S7867C1[] = {
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7867C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C10D1Ev,_ZTv0_n12_N8S7867C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C10D0Ev,_ZTv0_n12_N8S7867C10D0Ev),
};
extern void _ZN8S7867C14D1Ev();
extern void _ZN8S7867C14D0Ev();
extern void _ZN8S7867C142v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7867C14__7S7867C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(864,520),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C14[0]),
  (VTBL_ENTRY)&_ZN8S7867C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C142v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7867C14D1Ev,_ZTv0_n12_N8S7867C14D1Ev)();
extern void ABISELECT(_ZThn832_N8S7867C14D1Ev,_ZThn504_N8S7867C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7867C14D0Ev,_ZTv0_n12_N8S7867C14D0Ev)();
extern void ABISELECT(_ZThn832_N8S7867C14D0Ev,_ZThn504_N8S7867C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S7867C14__7S7867C1[] = {
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI8S7867C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C14D1Ev,_ZTv0_n12_N8S7867C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C14D0Ev,_ZTv0_n12_N8S7867C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7867C14D1Ev,_ZTv0_n20_N8S7867C14D1Ev)();
extern void ABISELECT(_ZThn864_N8S7867C14D1Ev,_ZThn520_N8S7867C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7867C14D0Ev,_ZTv0_n20_N8S7867C14D0Ev)();
extern void ABISELECT(_ZThn864_N8S7867C14D0Ev,_ZThn520_N8S7867C14D0Ev)() __attribute__((weak));
extern void _ZN8S7867C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7867C11__8S7867C14__7S7867C1[] = {
  0,
  ABISELECT(-864,-520),
  ABISELECT(-928,-552),
  ABISELECT(-968,-576),
  ABISELECT(-864,-520),
  (VTBL_ENTRY)&(_ZTI8S7867C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7867C14D1Ev,_ZTv0_n20_N8S7867C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7867C14D0Ev,_ZTv0_n20_N8S7867C14D0Ev),
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S7867C14D1Ev,_ZTvn32_n20_N8S7867C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S7867C14D0Ev,_ZTvn32_n20_N8S7867C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7867C68S7867C11__8S7867C14__7S7867C1[] = {
  ABISELECT(-984,-584),
  ABISELECT(-1024,-608),
  ABISELECT(-920,-552),
  (VTBL_ENTRY)&(_ZTI8S7867C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S7867C14D1Ev,_ZTvn32_n20_N8S7867C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S7867C14D0Ev,_ZTvn32_n20_N8S7867C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7867C14D1Ev,_ZTv0_n12_N8S7867C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7867C14D0Ev,_ZTv0_n12_N8S7867C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7867C14__7S7867C1[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7867C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C14D1Ev,_ZTv0_n12_N8S7867C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C14D0Ev,_ZTv0_n12_N8S7867C14D0Ev),
};
extern void _ZN8S7867C11D1Ev();
extern void _ZN8S7867C11D0Ev();
extern void _ZN8S7867C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7867C11__A1__7S7867C1[] = {
  ABISELECT(-928,-552),
  ABISELECT(-968,-576),
  0,
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&_ZN8S7867C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7867C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7867C112v2Ev,
};
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C68S7867C11__A1__7S7867C1[] = {
  ABISELECT(-984,-584),
  ABISELECT(-1024,-608),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C68S7867C11__A1__7S7867C1[] = {
  ABISELECT(984,584),
  ABISELECT(984,584),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7867C6__8S7867C11__A1__7S7867C1[] = {
  ABISELECT(-984,-584),
  ABISELECT(-1024,-608),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D1Ev,_ZThn32_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7867C11D0Ev,_ZThn32_N8S7867C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7867C11__A1__7S7867C1[] = {
  ABISELECT(928,552),
  ABISELECT(928,552),
  (VTBL_ENTRY)&(_ZTI8S7867C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev),
};
extern void _ZN7S7867C6D1Ev();
extern void _ZN7S7867C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7867C6__A2__7S7867C1[] = {
  ABISELECT(-1392,-828),
  ABISELECT(-1432,-852),
  0,
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&_ZN7S7867C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7867C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7867C6__A2__7S7867C1[] = {
  ABISELECT(1392,828),
  ABISELECT(1392,828),
  (VTBL_ENTRY)&(_ZTI7S7867C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev),
};
static  VTT_ENTRY vtt_S7867C1[] = {
  {&(_ZTV7S7867C1[11]),  11,95},
  {&(_tg__ZTV7S7867C2__7S7867C1[6]),  6,8},
  {&(_tg__ZTV8S3572C17__7S7867C2__7S7867C1[3]),  3,5},
  {&(_tg__ZTV8S7867C10__7S7867C2__7S7867C1[9]),  9,15},
  {&(_tg__ZTV7S7867C68S7867C118S7867C10__7S7867C2__7S7867C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S7867C2__7S7867C1[3]),  3,5},
  {&(_tg__ZTV7S7867C4__7S7867C1[5]),  5,7},
  {&(_tg__ZTV7S7867C6__7S7867C4__7S7867C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__7S7867C4__7S7867C1[3]),  3,5},
  {&(_ZTV7S7867C1[24]),  24,95},
  {&(_ZTV7S7867C1[35]),  35,95},
  {&(_ZTV7S7867C1[45]),  45,95},
  {&(_ZTV7S7867C1[50]),  50,95},
  {&(_ZTV7S7867C1[60]),  60,95},
  {&(_ZTV7S7867C1[66]),  66,95},
  {&(_ZTV7S7867C1[74]),  74,95},
  {&(_ZTV7S7867C1[81]),  81,95},
  {&(_ZTV7S7867C1[86]),  86,95},
  {&(_ZTV7S7867C1[19]),  19,95},
  {&(_ZTV7S7867C1[93]),  93,95},
  {&(_tg__ZTV8S7867C10__7S7867C1[4]),  4,10},
  {&(_tg__ZTV8S7867C118S7867C10__7S7867C1[4]),  4,7},
  {&(_tg__ZTV7S7867C68S7867C118S7867C10__7S7867C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C68S7867C118S7867C10__7S7867C1[3]),  3,5},
  {&(_tg__ZTV7S7867C6__8S7867C118S7867C10__7S7867C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7867C118S7867C10__7S7867C1[3]),  3,5},
  {&(_tg__ZTV7S7867C68S7867C11__8S7867C10__7S7867C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7867C10__7S7867C1[3]),  3,5},
  {&(_tg__ZTV8S7867C14__7S7867C1[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S7867C14__7S7867C1[3]),  3,5},
  {&(_tg__ZTV8S7867C11__8S7867C14__7S7867C1[6]),  6,9},
  {&(_tg__ZTV7S7867C68S7867C11__8S7867C14__7S7867C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7867C14__7S7867C1[3]),  3,5},
  {&(_tg__ZTV8S7867C11__A1__7S7867C1[4]),  4,7},
  {&(_tg__ZTV7S7867C68S7867C11__A1__7S7867C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C68S7867C11__A1__7S7867C1[3]),  3,5},
  {&(_tg__ZTV7S7867C6__8S7867C11__A1__7S7867C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7867C11__A1__7S7867C1[3]),  3,5},
  {&(_tg__ZTV7S7867C6__A2__7S7867C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7867C6__A2__7S7867C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7867C1[];
extern  VTBL_ENTRY _ZTV7S7867C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7867C1[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7867C14D0Ev,_ZTv0_n20_N8S7867C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S7867C14D0Ev,_ZThn520_N8S7867C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7867C14D1Ev,_ZTv0_n20_N8S7867C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S7867C14D1Ev,_ZThn520_N8S7867C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C14D0Ev,_ZTv0_n12_N8S7867C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7867C14D0Ev,_ZThn504_N8S7867C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C14D1Ev,_ZTv0_n12_N8S7867C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7867C14D1Ev,_ZThn504_N8S7867C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C10D0Ev,_ZTv0_n12_N8S7867C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C10D0Ev,_ZThn156_N8S7867C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C10D1Ev,_ZTv0_n12_N8S7867C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C10D1Ev,_ZThn156_N8S7867C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C11D0Ev,_ZTv0_n12_N8S7867C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C11D0Ev,_ZThn156_N8S7867C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7867C11D1Ev,_ZTv0_n12_N8S7867C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7867C11D1Ev,_ZThn156_N8S7867C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D0Ev,_ZTv0_n12_N7S7867C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7867C6D0Ev,_ZThn124_N7S7867C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C6D1Ev,_ZTv0_n12_N7S7867C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7867C6D1Ev,_ZThn124_N7S7867C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C4D0Ev,_ZTv0_n12_N7S7867C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9760_N7S7867C4D0Ev,_ZThn5744_N7S7867C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C4D1Ev,_ZTv0_n12_N7S7867C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9760_N7S7867C4D1Ev,_ZThn5744_N7S7867C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7867C4D0Ev,_ZTv0_n20_N7S7867C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11152_N7S7867C4D0Ev,_ZThn6572_N7S7867C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7867C4D1Ev,_ZTv0_n20_N7S7867C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11152_N7S7867C4D1Ev,_ZThn6572_N7S7867C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7867C2D0Ev,_ZTv0_n20_N7S7867C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11728_N7S7867C2D0Ev,_ZThn6952_N7S7867C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7867C2D1Ev,_ZTv0_n20_N7S7867C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11728_N7S7867C2D1Ev,_ZThn6952_N7S7867C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C2D0Ev,_ZTv0_n12_N7S7867C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12000_N7S7867C2D0Ev,_ZThn7108_N7S7867C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10816_N7S7867C2D0Ev,_ZThn6392_N7S7867C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C2D1Ev,_ZTv0_n12_N7S7867C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12000_N7S7867C2D1Ev,_ZThn7108_N7S7867C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10816_N7S7867C2D1Ev,_ZThn6392_N7S7867C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7867C1D0Ev,_ZTv0_n28_N7S7867C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12064_N7S7867C1D0Ev,_ZThn7140_N7S7867C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7867C1D1Ev,_ZTv0_n28_N7S7867C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12064_N7S7867C1D1Ev,_ZThn7140_N7S7867C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7867C1D0Ev,_ZTv0_n20_N7S7867C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13392_N7S7867C1D0Ev,_ZThn7936_N7S7867C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12928_N7S7867C1D0Ev,_ZThn7660_N7S7867C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11728_N7S7867C1D0Ev,_ZThn6952_N7S7867C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7867C1D1Ev,_ZTv0_n20_N7S7867C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13392_N7S7867C1D1Ev,_ZThn7936_N7S7867C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12928_N7S7867C1D1Ev,_ZThn7660_N7S7867C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11728_N7S7867C1D1Ev,_ZThn6952_N7S7867C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C1D0Ev,_ZTv0_n12_N7S7867C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13152_N7S7867C1D0Ev,_ZThn7784_N7S7867C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12896_N7S7867C1D0Ev,_ZThn7644_N7S7867C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12000_N7S7867C1D0Ev,_ZThn7108_N7S7867C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10816_N7S7867C1D0Ev,_ZThn6392_N7S7867C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7867C1D1Ev,_ZTv0_n12_N7S7867C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13152_N7S7867C1D1Ev,_ZThn7784_N7S7867C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12896_N7S7867C1D1Ev,_ZThn7644_N7S7867C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12000_N7S7867C1D1Ev,_ZThn7108_N7S7867C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10816_N7S7867C1D1Ev,_ZThn6392_N7S7867C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7867C1 = {  "S7867C1", // class name
  bases_S7867C1, 19,
  &(vtc_S7867C1[0]), // expected_vtbl_contents
  &(vtt_S7867C1[0]), // expected_vtt_contents
  ABISELECT(13440,7956), // object size
  NSPAIRA(_ZTI7S7867C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7867C1),95, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7867C1),40, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7868C6  : virtual S3572C5 , virtual S3572C4 {
  unsigned char s7868c6f0:1;
  void *s7868c6f1[3];
  ~S7868C6(); // tgen
  S7868C6(); // tgen
};
//SIG(-1 S7868C6) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} Fc:1 Fp[3]}


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

static void Test_S7868C6()
{
  extern Class_Descriptor cd_S7868C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S7868C6, buf);
    S7868C6 *dp, &lv = *(dp=new (buf) S7868C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S7868C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7868C6)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(40,20), "S7868C6");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(80,44), "S7868C6");
    set_bf_and_test(lv, s7868c6f0, ABISELECT(8,4), 0, 1, 1, "S7868C6");
    check_field_offset(lv, s7868c6f1, ABISELECT(16,8), "S7868C6.s7868c6f1");
    test_class_info(&lv, &cd_S7868C6);
    dp->~S7868C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7868C6(Test_S7868C6, "S7868C6", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN7S7868C6C1Ev();
extern void _ZN7S7868C6D1Ev();
Name_Map name_map_S7868C6[] = {
  NSPAIR(_ZN7S7868C6C1Ev),
  NSPAIR(_ZN7S7868C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
static Base_Class bases_S7868C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(80,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7868C6[];
extern void _ZN7S7868C6D1Ev();
extern void _ZN7S7868C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S7868C6D1Ev,_ZThn44_N7S7868C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S7868C6D0Ev,_ZThn44_N7S7868C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7868C6[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&_ZN7S7868C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C6D0Ev,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7868C6[];
static  VTT_ENTRY vtt_S7868C6[] = {
  {&(_ZTV7S7868C6[4]),  4,11},
  {&(_ZTV7S7868C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S7868C6[];
extern  VTBL_ENTRY _ZTV7S7868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C6[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7868C6D0Ev,_ZThn44_N7S7868C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7868C6D1Ev,_ZThn44_N7S7868C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7868C6 = {  "S7868C6", // class name
  bases_S7868C6, 2,
  &(vtc_S7868C6[0]), // expected_vtbl_contents
  &(vtt_S7868C6[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI7S7868C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7868C6),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7868C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7868C11  : virtual S3572C5 , S3572C4 , S7868C6 {
  char s7868c11f0;
  void *s7868c11f1[7];
  long double s7868c11f2;
  void *s7868c11f3[4];
  int s7868c11f4;
  char s7868c11f5;
  void *s7868c11f6;
  virtual  ~S7868C11(); // _ZN8S7868C11D2Ev
  virtual void  v2(); // _ZN8S7868C112v2Ev
  S7868C11(); // tgen
};
//SIG(-1 S7868C11) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} BC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}


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

static void Test_S7868C11()
{
  extern Class_Descriptor cd_S7868C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,46)];
    init_test(&cd_S7868C11, buf);
    S7868C11 *dp, &lv = *(dp=new (buf) S7868C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,180), "sizeof(S7868C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7868C11)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(224,124), "S7868C11");
    check_base_class_offset(lv, (S3572C5*)(S7868C6*), ABISELECT(224,124), "S7868C11");
    /*is_ambiguous_... S7868C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S7868C11");
    check_base_class_offset(lv, (S3572C4*)(S7868C6*), ABISELECT(264,148), "S7868C11");
    check_base_class_offset(lv, (S7868C6*), ABISELECT(56,32), "S7868C11");
    check_field_offset(lv, s7868c11f0, ABISELECT(96,52), "S7868C11.s7868c11f0");
    check_field_offset(lv, s7868c11f1, ABISELECT(104,56), "S7868C11.s7868c11f1");
    check_field_offset(lv, s7868c11f2, ABISELECT(160,84), "S7868C11.s7868c11f2");
    check_field_offset(lv, s7868c11f3, ABISELECT(176,96), "S7868C11.s7868c11f3");
    check_field_offset(lv, s7868c11f4, ABISELECT(208,112), "S7868C11.s7868c11f4");
    check_field_offset(lv, s7868c11f5, ABISELECT(212,116), "S7868C11.s7868c11f5");
    check_field_offset(lv, s7868c11f6, ABISELECT(216,120), "S7868C11.s7868c11f6");
    test_class_info(&lv, &cd_S7868C11);
    dp->~S7868C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7868C11(Test_S7868C11, "S7868C11", ABISELECT(320,180));

#else // __cplusplus

extern void _ZN8S7868C11C1Ev();
extern void _ZN8S7868C11D2Ev();
Name_Map name_map_S7868C11[] = {
  NSPAIR(_ZN8S7868C11C1Ev),
  NSPAIR(_ZN8S7868C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7868C6;
extern VTBL_ENTRY _ZTI7S7868C6[];
extern  VTBL_ENTRY _ZTV7S7868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C6[];
static Base_Class bases_S7868C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(224,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
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3572C4,    ABISELECT(264,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7868C6,    ABISELECT(56,32), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7868C11[];
extern void _ZN8S7868C11D1Ev();
extern void _ZN8S7868C11D0Ev();
extern void _ZN8S7868C112v2Ev();
extern void ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev)();
extern void ABISELECT(_ZThn264_N8S7868C11D1Ev,_ZThn148_N8S7868C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev)();
extern void ABISELECT(_ZThn264_N8S7868C11D0Ev,_ZThn148_N8S7868C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7868C11[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&_ZN8S7868C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7868C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev),
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7868C11[];
extern void _ZN7S7868C6D1Ev();
extern void _ZN7S7868C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7868C6__8S7868C11[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&_ZN7S7868C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev)();
extern void ABISELECT(_ZThn208_N7S7868C6D1Ev,_ZThn116_N7S7868C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev)();
extern void ABISELECT(_ZThn208_N7S7868C6D0Ev,_ZThn116_N7S7868C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7868C6__8S7868C11[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev),
};
static  VTT_ENTRY vtt_S7868C11[] = {
  {&(_ZTV8S7868C11[4]),  4,18},
  {&(_tg__ZTV7S7868C6__8S7868C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7868C6__8S7868C11[3]),  3,5},
  {&(_ZTV8S7868C11[11]),  11,18},
  {&(_ZTV8S7868C11[16]),  16,18},
};
extern VTBL_ENTRY _ZTI8S7868C11[];
extern  VTBL_ENTRY _ZTV8S7868C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7868C11[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7868C6D0Ev,_ZThn116_N7S7868C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7868C6D1Ev,_ZThn116_N7S7868C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7868C11D0Ev,_ZThn148_N8S7868C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7868C11D1Ev,_ZThn148_N8S7868C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7868C11 = {  "S7868C11", // class name
  bases_S7868C11, 4,
  &(vtc_S7868C11[0]), // expected_vtbl_contents
  &(vtt_S7868C11[0]), // expected_vtt_contents
  ABISELECT(320,180), // object size
  NSPAIRA(_ZTI8S7868C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7868C11),18, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7868C11),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7868C10  : S7868C11 {
  char s7868c10f0;
  int s7868c10f1;
  virtual  ~S7868C10(); // _ZN8S7868C10D2Ev
  virtual void  v3(); // _ZN8S7868C102v3Ev
  virtual void  v4(); // _ZN8S7868C102v4Ev
  virtual void  v5(); // _ZN8S7868C102v5Ev
  S7868C10(); // tgen
};
//SIG(-1 S7868C10) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} BC4{ vd m FC3 FC5{}} BC6{ VBC3 VBC4 Fc:1 Fp[3]} vd v4 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v1 v2 v3 Fc Fi}


 S7868C10 ::~S7868C10(){ note_dtor("S7868C10", this);}
void  S7868C10 ::v3(){vfunc_called(this, "_ZN8S7868C102v3Ev");}
void  S7868C10 ::v4(){vfunc_called(this, "_ZN8S7868C102v4Ev");}
void  S7868C10 ::v5(){vfunc_called(this, "_ZN8S7868C102v5Ev");}
S7868C10 ::S7868C10(){ note_ctor("S7868C10", this);} // tgen

static void Test_S7868C10()
{
  extern Class_Descriptor cd_S7868C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,48)];
    init_test(&cd_S7868C10, buf);
    S7868C10 *dp, &lv = *(dp=new (buf) S7868C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,188), "sizeof(S7868C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7868C10)");
    check_base_class_offset(lv, (S3572C5*)(S7868C11*), ABISELECT(232,132), "S7868C10");
    check_base_class_offset(lv, (S3572C5*)(S7868C6*)(S7868C11*), ABISELECT(232,132), "S7868C10");
    /*is_ambiguous_... S7868C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7868C11*), 0, "S7868C10");
    check_base_class_offset(lv, (S3572C4*)(S7868C6*)(S7868C11*), ABISELECT(272,156), "S7868C10");
    check_base_class_offset(lv, (S7868C6*)(S7868C11*), ABISELECT(56,32), "S7868C10");
    check_base_class_offset(lv, (S7868C11*), 0, "S7868C10");
    check_field_offset(lv, s7868c10f0, ABISELECT(224,124), "S7868C10.s7868c10f0");
    check_field_offset(lv, s7868c10f1, ABISELECT(228,128), "S7868C10.s7868c10f1");
    test_class_info(&lv, &cd_S7868C10);
    dp->~S7868C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7868C10(Test_S7868C10, "S7868C10", ABISELECT(336,188));

#else // __cplusplus

extern void _ZN8S7868C10C1Ev();
extern void _ZN8S7868C10D2Ev();
Name_Map name_map_S7868C10[] = {
  NSPAIR(_ZN8S7868C10C1Ev),
  NSPAIR(_ZN8S7868C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7868C6;
extern VTBL_ENTRY _ZTI7S7868C6[];
extern  VTBL_ENTRY _ZTV7S7868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C6[];
extern Class_Descriptor cd_S7868C11;
extern VTBL_ENTRY _ZTI8S7868C11[];
extern  VTBL_ENTRY _ZTV8S7868C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7868C11[];
static Base_Class bases_S7868C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(232,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
    3, //immediately_derived
  0, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(272,156), //bcp->offset
    16, //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_S7868C6,    ABISELECT(56,32), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7868C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7868C10[];
extern void _ZN8S7868C10D1Ev();
extern void _ZN8S7868C10D0Ev();
extern void _ZN8S7868C112v2Ev();
extern void _ZN8S7868C102v3Ev();
extern void _ZN8S7868C102v4Ev();
extern void _ZN8S7868C102v5Ev();
extern void ABISELECT(_ZThn56_N8S7868C10D1Ev,_ZThn32_N8S7868C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S7868C10D0Ev,_ZThn32_N8S7868C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7868C10D1Ev,_ZTv0_n12_N8S7868C10D1Ev)();
extern void ABISELECT(_ZThn272_N8S7868C10D1Ev,_ZThn156_N8S7868C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7868C10D0Ev,_ZTv0_n12_N8S7868C10D0Ev)();
extern void ABISELECT(_ZThn272_N8S7868C10D0Ev,_ZThn156_N8S7868C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7868C10[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7868C10[0]),
  (VTBL_ENTRY)&_ZN8S7868C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7868C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v5Ev,
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7868C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C10D1Ev,_ZThn32_N8S7868C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C10D0Ev,_ZThn32_N8S7868C10D0Ev),
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7868C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C10D1Ev,_ZTv0_n12_N8S7868C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C10D0Ev,_ZTv0_n12_N8S7868C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7868C10[];
extern void _ZN8S7868C11D1Ev();
extern void _ZN8S7868C11D0Ev();
extern void _ZN8S7868C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7868C11__8S7868C10[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&_ZN8S7868C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7868C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
};
extern void _ZN7S7868C6D1Ev();
extern void _ZN7S7868C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7868C68S7868C11__8S7868C10[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&_ZN7S7868C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev)();
extern void ABISELECT(_ZThn216_N7S7868C6D1Ev,_ZThn124_N7S7868C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev)();
extern void ABISELECT(_ZThn216_N7S7868C6D0Ev,_ZThn124_N7S7868C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7868C68S7868C11__8S7868C10[] = {
  ABISELECT(-216,-124),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7868C6__8S7868C11__8S7868C10[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev)();
extern void ABISELECT(_ZThn272_N8S7868C11D1Ev,_ZThn156_N8S7868C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev)();
extern void ABISELECT(_ZThn272_N8S7868C11D0Ev,_ZThn156_N8S7868C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7868C11__8S7868C10[] = {
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev),
};
static  VTT_ENTRY vtt_S7868C10[] = {
  {&(_ZTV8S7868C10[4]),  4,21},
  {&(_tg__ZTV8S7868C11__8S7868C10[4]),  4,7},
  {&(_tg__ZTV7S7868C68S7868C11__8S7868C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7868C68S7868C11__8S7868C10[3]),  3,5},
  {&(_tg__ZTV7S7868C6__8S7868C11__8S7868C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7868C11__8S7868C10[3]),  3,5},
  {&(_ZTV8S7868C10[14]),  14,21},
  {&(_ZTV8S7868C10[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S7868C10[];
extern  VTBL_ENTRY _ZTV8S7868C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7868C10[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C11D0Ev,_ZThn156_N8S7868C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C11D1Ev,_ZThn156_N8S7868C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7868C6D0Ev,_ZThn124_N7S7868C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7868C6D1Ev,_ZThn124_N7S7868C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C10D0Ev,_ZTv0_n12_N8S7868C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C10D0Ev,_ZThn156_N8S7868C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C10D1Ev,_ZTv0_n12_N8S7868C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C10D1Ev,_ZThn156_N8S7868C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7868C10 = {  "S7868C10", // class name
  bases_S7868C10, 5,
  &(vtc_S7868C10[0]), // expected_vtbl_contents
  &(vtt_S7868C10[0]), // expected_vtt_contents
  ABISELECT(336,188), // object size
  NSPAIRA(_ZTI8S7868C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7868C10),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7868C10),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7868C2  : virtual S3572C17 , virtual S7868C10 {
  __tsi64 s7868c2f0;
  int s7868c2f1[3];
  void *s7868c2f2;
  int s7868c2f3[2];
  ::S3572C14 s7868c2f4;
  int s7868c2f5[6];
  short s7868c2f6;
  int s7868c2f7;
  ::S3572C17 s7868c2f8;
  ~S7868C2(); // tgen
  S7868C2(); // tgen
};
//SIG(-1 S7868C2) C1{ VBC2{ vd m FC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ VBC4 VBC6{ vd m FC4 FC7{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} FC8{ VBC4 VBC6 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} VBC9{ BC10{ VBC4 BC6 BC11{ VBC4 VBC6 Fc:1 Fp[3]} vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v2 v3 v4 Fc Fi} FL Fi[3] Fp Fi[2] FC12{ VBC3 BC6 BC13{ VBC6 BC5 VBC8 vd FC14{ VBC4 BC6 BC5 vd v5 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} Fi[6] Fs Fi FC2}


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

static void Test_S7868C2()
{
  extern Class_Descriptor cd_S7868C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(219,529)];
    init_test(&cd_S7868C2, buf);
    S7868C2 *dp, &lv = *(dp=new (buf) S7868C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3488,2112), "sizeof(S7868C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7868C2)");
    check_base_class_offset(lv, (S3572C17*), ABISELECT(2240,1364), "S7868C2");
    check_base_class_offset(lv, (S3572C5*)(S7868C11*)(S7868C10*), ABISELECT(3384,2056), "S7868C2");
    check_base_class_offset(lv, (S3572C5*)(S7868C6*)(S7868C11*)(S7868C10*), ABISELECT(3384,2056), "S7868C2");
    /*is_ambiguous_... S7868C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7868C11*)(S7868C10*), ABISELECT(3152,1924), "S7868C2");
    check_base_class_offset(lv, (S3572C4*)(S7868C6*)(S7868C11*)(S7868C10*), ABISELECT(3424,2080), "S7868C2");
    check_base_class_offset(lv, (S7868C6*)(S7868C11*)(S7868C10*), ABISELECT(3208,1956), "S7868C2");
    check_base_class_offset(lv, (S7868C11*)(S7868C10*), ABISELECT(3152,1924), "S7868C2");
    check_base_class_offset(lv, (S7868C10*), ABISELECT(3152,1924), "S7868C2");
    check_field_offset(lv, s7868c2f0, ABISELECT(8,4), "S7868C2.s7868c2f0");
    check_field_offset(lv, s7868c2f1, ABISELECT(16,12), "S7868C2.s7868c2f1");
    check_field_offset(lv, s7868c2f2, ABISELECT(32,24), "S7868C2.s7868c2f2");
    check_field_offset(lv, s7868c2f3, ABISELECT(40,28), "S7868C2.s7868c2f3");
    check_field_offset(lv, s7868c2f4, ABISELECT(48,36), "S7868C2.s7868c2f4");
    check_field_offset(lv, s7868c2f5, ABISELECT(1296,772), "S7868C2.s7868c2f5");
    check_field_offset(lv, s7868c2f6, ABISELECT(1320,796), "S7868C2.s7868c2f6");
    check_field_offset(lv, s7868c2f7, ABISELECT(1324,800), "S7868C2.s7868c2f7");
    check_field_offset(lv, s7868c2f8, ABISELECT(1328,804), "S7868C2.s7868c2f8");
    test_class_info(&lv, &cd_S7868C2);
    dp->~S7868C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7868C2(Test_S7868C2, "S7868C2", ABISELECT(3488,2112));

#else // __cplusplus

extern void _ZN7S7868C2C1Ev();
extern void _ZN7S7868C2D1Ev();
Name_Map name_map_S7868C2[] = {
  NSPAIR(_ZN7S7868C2C1Ev),
  NSPAIR(_ZN7S7868C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7868C6;
extern VTBL_ENTRY _ZTI7S7868C6[];
extern  VTBL_ENTRY _ZTV7S7868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C6[];
extern Class_Descriptor cd_S7868C11;
extern VTBL_ENTRY _ZTI8S7868C11[];
extern  VTBL_ENTRY _ZTV8S7868C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7868C11[];
extern Class_Descriptor cd_S7868C10;
extern VTBL_ENTRY _ZTI8S7868C10[];
extern  VTBL_ENTRY _ZTV8S7868C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7868C10[];
static Base_Class bases_S7868C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C17,    ABISELECT(2240,1364), //bcp->offset
    8, //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_S3572C5,    ABISELECT(3384,2056), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3572C4,    ABISELECT(3152,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(3424,2080), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7868C6,    ABISELECT(3208,1956), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7868C11,    ABISELECT(3152,1924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7868C10,    ABISELECT(3152,1924), //bcp->offset
    13, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7868C2[];
extern void _ZN7S7868C2D1Ev();
extern void _ZN7S7868C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7868C2D1Ev,_ZTv0_n12_N7S7868C2D1Ev)();
extern void ABISELECT(_ZThn2240_N7S7868C2D1Ev,_ZThn1364_N7S7868C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C2D0Ev,_ZTv0_n12_N7S7868C2D0Ev)();
extern void ABISELECT(_ZThn2240_N7S7868C2D0Ev,_ZThn1364_N7S7868C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7868C2D1Ev,_ZTv0_n20_N7S7868C2D1Ev)();
extern void ABISELECT(_ZThn3152_N7S7868C2D1Ev,_ZThn1924_N7S7868C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7868C2D0Ev,_ZTv0_n20_N7S7868C2D0Ev)();
extern void ABISELECT(_ZThn3152_N7S7868C2D0Ev,_ZThn1924_N7S7868C2D0Ev)() __attribute__((weak));
extern void _ZN8S7868C112v2Ev();
extern void _ZN8S7868C102v3Ev();
extern void _ZN8S7868C102v4Ev();
extern void _ZN8S7868C102v5Ev();
extern void ABISELECT(_ZTvn56_n40_N7S7868C2D1Ev,_ZTvn32_n20_N7S7868C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S7868C2D0Ev,_ZTvn32_n20_N7S7868C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7868C2D1Ev,_ZTv0_n12_N7S7868C2D1Ev)();
extern void ABISELECT(_ZThn3424_N7S7868C2D1Ev,_ZThn2080_N7S7868C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C2D0Ev,_ZTv0_n12_N7S7868C2D0Ev)();
extern void ABISELECT(_ZThn3424_N7S7868C2D0Ev,_ZThn2080_N7S7868C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7868C2[] = {
  ABISELECT(3424,2080),
  ABISELECT(3384,2056),
  ABISELECT(3152,1924),
  ABISELECT(2240,1364),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C2[0]),
  (VTBL_ENTRY)&_ZN7S7868C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C2D0Ev,
  ABISELECT(-2240,-1364),
  ABISELECT(-2240,-1364),
  (VTBL_ENTRY)&(_ZTI7S7868C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C2D1Ev,_ZTv0_n12_N7S7868C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C2D0Ev,_ZTv0_n12_N7S7868C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-3152,-1924),
  ABISELECT(272,156),
  ABISELECT(232,132),
  ABISELECT(-3152,-1924),
  (VTBL_ENTRY)&(_ZTI7S7868C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C2D1Ev,_ZTv0_n20_N7S7868C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C2D0Ev,_ZTv0_n20_N7S7868C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v5Ev,
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-3208,-1956),
  (VTBL_ENTRY)&(_ZTI7S7868C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7868C2D1Ev,_ZTvn32_n20_N7S7868C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7868C2D0Ev,_ZTvn32_n20_N7S7868C2D0Ev),
  ABISELECT(-3424,-2080),
  ABISELECT(-3424,-2080),
  (VTBL_ENTRY)&(_ZTI7S7868C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C2D1Ev,_ZTv0_n12_N7S7868C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C2D0Ev,_ZTv0_n12_N7S7868C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7868C2[];
extern void _ZN8S7868C10D1Ev();
extern void _ZN8S7868C10D0Ev();
extern void _ZN8S7868C112v2Ev();
extern void _ZN8S7868C102v3Ev();
extern void _ZN8S7868C102v4Ev();
extern void _ZN8S7868C102v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7868C10__7S7868C2[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7868C10[0]),
  (VTBL_ENTRY)&_ZN8S7868C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7868C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v5Ev,
};
extern void _ZN8S7868C11D1Ev();
extern void _ZN8S7868C11D0Ev();
extern void _ZN8S7868C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7868C118S7868C10__7S7868C2[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&_ZN8S7868C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7868C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
};
extern void _ZN7S7868C6D1Ev();
extern void _ZN7S7868C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7868C68S7868C118S7868C10__7S7868C2[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&_ZN7S7868C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev)();
extern void ABISELECT(_ZThn216_N7S7868C6D1Ev,_ZThn124_N7S7868C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev)();
extern void ABISELECT(_ZThn216_N7S7868C6D0Ev,_ZThn124_N7S7868C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7868C68S7868C118S7868C10__7S7868C2[] = {
  ABISELECT(-216,-124),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7868C6__8S7868C118S7868C10__7S7868C2[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev)();
extern void ABISELECT(_ZThn272_N8S7868C11D1Ev,_ZThn156_N8S7868C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev)();
extern void ABISELECT(_ZThn272_N8S7868C11D0Ev,_ZThn156_N8S7868C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7868C118S7868C10__7S7868C2[] = {
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7868C10D1Ev,_ZThn32_N8S7868C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S7868C10D0Ev,_ZThn32_N8S7868C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7868C68S7868C11__8S7868C10__7S7868C2[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7868C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C10D1Ev,_ZThn32_N8S7868C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C10D0Ev,_ZThn32_N8S7868C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7868C10D1Ev,_ZTv0_n12_N8S7868C10D1Ev)();
extern void ABISELECT(_ZThn272_N8S7868C10D1Ev,_ZThn156_N8S7868C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7868C10D0Ev,_ZTv0_n12_N8S7868C10D0Ev)();
extern void ABISELECT(_ZThn272_N8S7868C10D0Ev,_ZThn156_N8S7868C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7868C10__7S7868C2[] = {
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7868C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C10D1Ev,_ZTv0_n12_N8S7868C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C10D0Ev,_ZTv0_n12_N8S7868C10D0Ev),
};
static  VTT_ENTRY vtt_S7868C2[] = {
  {&(_ZTV7S7868C2[6]),  6,39},
  {&(_ZTV7S7868C2[11]),  11,39},
  {&(_ZTV7S7868C2[22]),  22,39},
  {&(_ZTV7S7868C2[32]),  32,39},
  {&(_ZTV7S7868C2[37]),  37,39},
  {&(_tg__ZTV8S7868C10__7S7868C2[4]),  4,10},
  {&(_tg__ZTV8S7868C118S7868C10__7S7868C2[4]),  4,7},
  {&(_tg__ZTV7S7868C68S7868C118S7868C10__7S7868C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7868C68S7868C118S7868C10__7S7868C2[3]),  3,5},
  {&(_tg__ZTV7S7868C6__8S7868C118S7868C10__7S7868C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7868C118S7868C10__7S7868C2[3]),  3,5},
  {&(_tg__ZTV7S7868C68S7868C11__8S7868C10__7S7868C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7868C10__7S7868C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7868C2[];
extern  VTBL_ENTRY _ZTV7S7868C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C2[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C10D0Ev,_ZTv0_n12_N8S7868C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C10D0Ev,_ZThn156_N8S7868C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C10D1Ev,_ZTv0_n12_N8S7868C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C10D1Ev,_ZThn156_N8S7868C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C11D0Ev,_ZThn156_N8S7868C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C11D1Ev,_ZThn156_N8S7868C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7868C6D0Ev,_ZThn124_N7S7868C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7868C6D1Ev,_ZThn124_N7S7868C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7868C2D0Ev,_ZTv0_n20_N7S7868C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N7S7868C2D0Ev,_ZThn1924_N7S7868C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7868C2D1Ev,_ZTv0_n20_N7S7868C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3152_N7S7868C2D1Ev,_ZThn1924_N7S7868C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C2D0Ev,_ZTv0_n12_N7S7868C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3424_N7S7868C2D0Ev,_ZThn2080_N7S7868C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2240_N7S7868C2D0Ev,_ZThn1364_N7S7868C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C2D1Ev,_ZTv0_n12_N7S7868C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3424_N7S7868C2D1Ev,_ZThn2080_N7S7868C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2240_N7S7868C2D1Ev,_ZThn1364_N7S7868C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7868C2 = {  "S7868C2", // class name
  bases_S7868C2, 7,
  &(vtc_S7868C2[0]), // expected_vtbl_contents
  &(vtt_S7868C2[0]), // expected_vtt_contents
  ABISELECT(3488,2112), // object size
  NSPAIRA(_ZTI7S7868C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7868C2),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7868C2),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7868C9  : virtual S3572C5 , virtual S3572C4 , S7868C6 {
  char s7868c9f0;
  int s7868c9f1[3];
  void *s7868c9f2;
  short s7868c9f3:16;
  int s7868c9f4;
  void *s7868c9f5[2];
  int s7868c9f6;
  ::S3572C5 s7868c9f7[9];
  int s7868c9f8;
  virtual  ~S7868C9(); // _ZN7S7868C9D2Ev
  S7868C9(); // tgen
};
//SIG(-1 S7868C9) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC2[9] Fi}


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

static void Test_S7868C9()
{
  extern Class_Descriptor cd_S7868C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(71,85)];
    init_test(&cd_S7868C9, buf);
    S7868C9 *dp, &lv = *(dp=new (buf) S7868C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,336), "sizeof(S7868C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7868C9)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(464,280), "S7868C9");
    check_base_class_offset(lv, (S3572C5*)(S7868C6*), ABISELECT(464,280), "S7868C9");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(504,304), "S7868C9");
    check_base_class_offset(lv, (S3572C4*)(S7868C6*), ABISELECT(504,304), "S7868C9");
    check_base_class_offset(lv, (S7868C6*), 0, "S7868C9");
    check_field_offset(lv, s7868c9f0, ABISELECT(40,20), "S7868C9.s7868c9f0");
    check_field_offset(lv, s7868c9f1, ABISELECT(44,24), "S7868C9.s7868c9f1");
    check_field_offset(lv, s7868c9f2, ABISELECT(56,36), "S7868C9.s7868c9f2");
    set_bf_and_test(lv, s7868c9f3, ABISELECT(64,40), 0, 16, 1, "S7868C9");
    set_bf_and_test(lv, s7868c9f3, ABISELECT(64,40), 0, 16, hide_sll(1LL<<15), "S7868C9");
    check_field_offset(lv, s7868c9f4, ABISELECT(68,44), "S7868C9.s7868c9f4");
    check_field_offset(lv, s7868c9f5, ABISELECT(72,48), "S7868C9.s7868c9f5");
    check_field_offset(lv, s7868c9f6, ABISELECT(88,56), "S7868C9.s7868c9f6");
    check_field_offset(lv, s7868c9f7, ABISELECT(96,60), "S7868C9.s7868c9f7");
    check_field_offset(lv, s7868c9f8, ABISELECT(456,276), "S7868C9.s7868c9f8");
    test_class_info(&lv, &cd_S7868C9);
    dp->~S7868C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7868C9(Test_S7868C9, "S7868C9", ABISELECT(560,336));

#else // __cplusplus

extern void _ZN7S7868C9C1Ev();
extern void _ZN7S7868C9D2Ev();
Name_Map name_map_S7868C9[] = {
  NSPAIR(_ZN7S7868C9C1Ev),
  NSPAIR(_ZN7S7868C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7868C6;
extern VTBL_ENTRY _ZTI7S7868C6[];
extern  VTBL_ENTRY _ZTV7S7868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C6[];
static Base_Class bases_S7868C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(464,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(504,304), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7868C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7868C9[];
extern void _ZN7S7868C9D1Ev();
extern void _ZN7S7868C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7868C9D1Ev,_ZTv0_n12_N7S7868C9D1Ev)();
extern void ABISELECT(_ZThn504_N7S7868C9D1Ev,_ZThn304_N7S7868C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C9D0Ev,_ZTv0_n12_N7S7868C9D0Ev)();
extern void ABISELECT(_ZThn504_N7S7868C9D0Ev,_ZThn304_N7S7868C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7868C9[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C9[0]),
  (VTBL_ENTRY)&_ZN7S7868C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C9D0Ev,
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI7S7868C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C9D1Ev,_ZTv0_n12_N7S7868C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C9D0Ev,_ZTv0_n12_N7S7868C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7868C9[];
extern void _ZN7S7868C6D1Ev();
extern void _ZN7S7868C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7868C6__7S7868C9[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&_ZN7S7868C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev)();
extern void ABISELECT(_ZThn504_N7S7868C6D1Ev,_ZThn304_N7S7868C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev)();
extern void ABISELECT(_ZThn504_N7S7868C6D0Ev,_ZThn304_N7S7868C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7868C6__7S7868C9[] = {
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev),
};
static  VTT_ENTRY vtt_S7868C9[] = {
  {&(_ZTV7S7868C9[4]),  4,11},
  {&(_tg__ZTV7S7868C6__7S7868C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7868C6__7S7868C9[3]),  3,5},
  {&(_ZTV7S7868C9[9]),  9,11},
};
extern VTBL_ENTRY _ZTI7S7868C9[];
extern  VTBL_ENTRY _ZTV7S7868C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C9[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7868C6D0Ev,_ZThn304_N7S7868C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7868C6D1Ev,_ZThn304_N7S7868C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C9D0Ev,_ZTv0_n12_N7S7868C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7868C9D0Ev,_ZThn304_N7S7868C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C9D1Ev,_ZTv0_n12_N7S7868C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S7868C9D1Ev,_ZThn304_N7S7868C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7868C9 = {  "S7868C9", // class name
  bases_S7868C9, 3,
  &(vtc_S7868C9[0]), // expected_vtbl_contents
  &(vtt_S7868C9[0]), // expected_vtt_contents
  ABISELECT(560,336), // object size
  NSPAIRA(_ZTI7S7868C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7868C9),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7868C9),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7868C14  : virtual S3572C21 , virtual S7868C11 , S3572C22 , S3572C5 {
  char s7868c14f0[7];
  void *s7868c14f1;
  long double s7868c14f2;
  ::S7868C9 s7868c14f3;
  __tsi64 s7868c14f4;
  __tsi64 s7868c14f5;
  long s7868c14f6;
  int s7868c14f7;
  int s7868c14f8;
  __tsi64 s7868c14f9[3];
  long double s7868c14f10;
  virtual  ~S7868C14(); // _ZN8S7868C14D2Ev
  virtual void  v6(); // _ZN8S7868C142v6Ev
  S7868C14(); // tgen
};
//SIG(-1 S7868C14) C1{ VBC2{ vd m FD} VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} BC5{ vd m FC4 FC6{}} BC7{ VBC4 VBC5 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} BC8{ m Fp Fi[2] FU9{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v1 Fc[7] Fp FD FC10{ VBC4 VBC5 BC7 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} FL FL Fl Fi Fi FL[3] FD}


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

static void Test_S7868C14()
{
  extern Class_Descriptor cd_S7868C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(75,176)];
    init_test(&cd_S7868C14, buf);
    S7868C14 *dp, &lv = *(dp=new (buf) S7868C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1184,700), "sizeof(S7868C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7868C14)");
    check_base_class_offset(lv, (S3572C21*), ABISELECT(832,504), "S7868C14");
    check_base_class_offset(lv, (S3572C5*)(S7868C11*), ABISELECT(1088,644), "S7868C14");
    check_base_class_offset(lv, (S3572C5*)(S7868C6*)(S7868C11*), ABISELECT(1088,644), "S7868C14");
    /*is_ambiguous_... S7868C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7868C11*), ABISELECT(864,520), "S7868C14");
    check_base_class_offset(lv, (S3572C4*)(S7868C6*)(S7868C11*), ABISELECT(1128,668), "S7868C14");
    check_base_class_offset(lv, (S7868C6*)(S7868C11*), ABISELECT(920,552), "S7868C14");
    check_base_class_offset(lv, (S7868C11*), ABISELECT(864,520), "S7868C14");
    check_base_class_offset(lv, (S3572C22*), ABISELECT(16,4), "S7868C14");
    /*is_ambiguous_... S7868C14::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*), ABISELECT(112,56), "S7868C14");
    check_field_offset(lv, s7868c14f0, ABISELECT(152,80), "S7868C14.s7868c14f0");
    check_field_offset(lv, s7868c14f1, ABISELECT(160,88), "S7868C14.s7868c14f1");
    check_field_offset(lv, s7868c14f2, ABISELECT(176,92), "S7868C14.s7868c14f2");
    check_field_offset(lv, s7868c14f3, ABISELECT(192,104), "S7868C14.s7868c14f3");
    check_field_offset(lv, s7868c14f4, ABISELECT(752,440), "S7868C14.s7868c14f4");
    check_field_offset(lv, s7868c14f5, ABISELECT(760,448), "S7868C14.s7868c14f5");
    check_field_offset(lv, s7868c14f6, ABISELECT(768,456), "S7868C14.s7868c14f6");
    check_field_offset(lv, s7868c14f7, ABISELECT(776,460), "S7868C14.s7868c14f7");
    check_field_offset(lv, s7868c14f8, ABISELECT(780,464), "S7868C14.s7868c14f8");
    check_field_offset(lv, s7868c14f9, ABISELECT(784,468), "S7868C14.s7868c14f9");
    check_field_offset(lv, s7868c14f10, ABISELECT(816,492), "S7868C14.s7868c14f10");
    test_class_info(&lv, &cd_S7868C14);
    dp->~S7868C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7868C14(Test_S7868C14, "S7868C14", ABISELECT(1184,700));

#else // __cplusplus

extern void _ZN8S7868C14C1Ev();
extern void _ZN8S7868C14D2Ev();
Name_Map name_map_S7868C14[] = {
  NSPAIR(_ZN8S7868C14C1Ev),
  NSPAIR(_ZN8S7868C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7868C6;
extern VTBL_ENTRY _ZTI7S7868C6[];
extern  VTBL_ENTRY _ZTV7S7868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C6[];
extern Class_Descriptor cd_S7868C11;
extern VTBL_ENTRY _ZTI8S7868C11[];
extern  VTBL_ENTRY _ZTV8S7868C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7868C11[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
static Base_Class bases_S7868C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    ABISELECT(832,504), //bcp->offset
    9, //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_S3572C5,    ABISELECT(1088,644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(864,520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1128,668), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7868C6,    ABISELECT(920,552), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7868C11,    ABISELECT(864,520), //bcp->offset
    14, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C22,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C5,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7868C14[];
extern void _ZN8S7868C14D1Ev();
extern void _ZN8S7868C14D0Ev();
extern void _ZN8S7868C142v6Ev();
extern void ABISELECT(_ZTv0_n24_N8S7868C14D1Ev,_ZTv0_n12_N8S7868C14D1Ev)();
extern void ABISELECT(_ZThn832_N8S7868C14D1Ev,_ZThn504_N8S7868C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7868C14D0Ev,_ZTv0_n12_N8S7868C14D0Ev)();
extern void ABISELECT(_ZThn832_N8S7868C14D0Ev,_ZThn504_N8S7868C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7868C14D1Ev,_ZTv0_n20_N8S7868C14D1Ev)();
extern void ABISELECT(_ZThn864_N8S7868C14D1Ev,_ZThn520_N8S7868C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7868C14D0Ev,_ZTv0_n20_N8S7868C14D0Ev)();
extern void ABISELECT(_ZThn864_N8S7868C14D0Ev,_ZThn520_N8S7868C14D0Ev)() __attribute__((weak));
extern void _ZN8S7868C112v2Ev();
extern void ABISELECT(_ZTvn56_n40_N8S7868C14D1Ev,_ZTvn32_n20_N8S7868C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S7868C14D0Ev,_ZTvn32_n20_N8S7868C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7868C14D1Ev,_ZTv0_n12_N8S7868C14D1Ev)();
extern void ABISELECT(_ZThn1128_N8S7868C14D1Ev,_ZThn668_N8S7868C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7868C14D0Ev,_ZTv0_n12_N8S7868C14D0Ev)();
extern void ABISELECT(_ZThn1128_N8S7868C14D0Ev,_ZThn668_N8S7868C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7868C14[] = {
  ABISELECT(1128,668),
  ABISELECT(1088,644),
  ABISELECT(864,520),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI8S7868C14[0]),
  (VTBL_ENTRY)&_ZN8S7868C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7868C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7868C142v6Ev,
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI8S7868C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C14D1Ev,_ZTv0_n12_N8S7868C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C14D0Ev,_ZTv0_n12_N8S7868C14D0Ev),
  0,
  ABISELECT(-864,-520),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-864,-520),
  (VTBL_ENTRY)&(_ZTI8S7868C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7868C14D1Ev,_ZTv0_n20_N8S7868C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7868C14D0Ev,_ZTv0_n20_N8S7868C14D0Ev),
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-920,-552),
  (VTBL_ENTRY)&(_ZTI8S7868C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S7868C14D1Ev,_ZTvn32_n20_N8S7868C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S7868C14D0Ev,_ZTvn32_n20_N8S7868C14D0Ev),
  ABISELECT(-1128,-668),
  ABISELECT(-1128,-668),
  (VTBL_ENTRY)&(_ZTI8S7868C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C14D1Ev,_ZTv0_n12_N8S7868C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C14D0Ev,_ZTv0_n12_N8S7868C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S7868C14[];
extern void _ZN8S7868C11D1Ev();
extern void _ZN8S7868C11D0Ev();
extern void _ZN8S7868C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7868C11__8S7868C14[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&_ZN8S7868C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7868C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
};
extern void _ZN7S7868C6D1Ev();
extern void _ZN7S7868C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7868C68S7868C11__8S7868C14[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&_ZN7S7868C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev)();
extern void ABISELECT(_ZThn208_N7S7868C6D1Ev,_ZThn116_N7S7868C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev)();
extern void ABISELECT(_ZThn208_N7S7868C6D0Ev,_ZThn116_N7S7868C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7868C68S7868C11__8S7868C14[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7868C6__8S7868C11__8S7868C14[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev)();
extern void ABISELECT(_ZThn264_N8S7868C11D1Ev,_ZThn148_N8S7868C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev)();
extern void ABISELECT(_ZThn264_N8S7868C11D0Ev,_ZThn148_N8S7868C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7868C11__8S7868C14[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev),
};
static  VTT_ENTRY vtt_S7868C14[] = {
  {&(_ZTV8S7868C14[6]),  6,34},
  {&(_ZTV8S7868C14[12]),  12,34},
  {&(_ZTV8S7868C14[20]),  20,34},
  {&(_ZTV8S7868C14[27]),  27,34},
  {&(_ZTV8S7868C14[32]),  32,34},
  {&(_tg__ZTV8S7868C11__8S7868C14[4]),  4,7},
  {&(_tg__ZTV7S7868C68S7868C11__8S7868C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7868C68S7868C11__8S7868C14[3]),  3,5},
  {&(_tg__ZTV7S7868C6__8S7868C11__8S7868C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7868C11__8S7868C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7868C14[];
extern  VTBL_ENTRY _ZTV8S7868C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7868C14[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7868C11D0Ev,_ZThn148_N8S7868C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7868C11D1Ev,_ZThn148_N8S7868C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7868C6D0Ev,_ZThn116_N7S7868C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7868C6D1Ev,_ZThn116_N7S7868C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7868C14D0Ev,_ZTv0_n20_N8S7868C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S7868C14D0Ev,_ZThn520_N8S7868C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7868C14D1Ev,_ZTv0_n20_N8S7868C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S7868C14D1Ev,_ZThn520_N8S7868C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C14D0Ev,_ZTv0_n12_N8S7868C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N8S7868C14D0Ev,_ZThn668_N8S7868C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7868C14D0Ev,_ZThn504_N8S7868C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C14D1Ev,_ZTv0_n12_N8S7868C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N8S7868C14D1Ev,_ZThn668_N8S7868C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7868C14D1Ev,_ZThn504_N8S7868C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7868C14 = {  "S7868C14", // class name
  bases_S7868C14, 8,
  &(vtc_S7868C14[0]), // expected_vtbl_contents
  &(vtt_S7868C14[0]), // expected_vtt_contents
  ABISELECT(1184,700), // object size
  NSPAIRA(_ZTI8S7868C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7868C14),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7868C14),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7868C4  : virtual S3572C5 , virtual S7868C6 {
  short s7868c4f0;
  int s7868c4f1[2];
  char s7868c4f2;
  __tsi64 s7868c4f3;
  int s7868c4f4;
  ::S3572C6_nt s7868c4f5;
  void *s7868c4f6;
  char s7868c4f7;
  short s7868c4f8;
  ::S3572C4 s7868c4f9;
  int s7868c4f10[2];
  __tsi64 s7868c4f11;
  virtual  ~S7868C4(); // _ZN7S7868C4D2Ev
  S7868C4(); // tgen
};
//SIG(-1 S7868C4) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ VBC2 VBC4{ vd m FC2 FC5{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL}


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

static void Test_S7868C4()
{
  extern Class_Descriptor cd_S7868C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,43)];
    init_test(&cd_S7868C4, buf);
    S7868C4 *dp, &lv = *(dp=new (buf) S7868C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,168), "sizeof(S7868C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7868C4)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(128,92), "S7868C4");
    check_base_class_offset(lv, (S3572C5*)(S7868C6*), ABISELECT(128,92), "S7868C4");
    check_base_class_offset(lv, (S3572C4*)(S7868C6*), ABISELECT(208,136), "S7868C4");
    check_base_class_offset(lv, (S7868C6*), ABISELECT(168,116), "S7868C4");
    check_field_offset(lv, s7868c4f0, ABISELECT(8,4), "S7868C4.s7868c4f0");
    check_field_offset(lv, s7868c4f1, ABISELECT(12,8), "S7868C4.s7868c4f1");
    check_field_offset(lv, s7868c4f2, ABISELECT(20,16), "S7868C4.s7868c4f2");
    check_field_offset(lv, s7868c4f3, ABISELECT(24,20), "S7868C4.s7868c4f3");
    check_field_offset(lv, s7868c4f4, ABISELECT(32,28), "S7868C4.s7868c4f4");
    check_field_offset(lv, s7868c4f5, ABISELECT(36,32), "S7868C4.s7868c4f5");
    check_field_offset(lv, s7868c4f6, ABISELECT(40,36), "S7868C4.s7868c4f6");
    check_field_offset(lv, s7868c4f7, ABISELECT(48,40), "S7868C4.s7868c4f7");
    check_field_offset(lv, s7868c4f8, ABISELECT(50,42), "S7868C4.s7868c4f8");
    check_field_offset(lv, s7868c4f9, ABISELECT(56,44), "S7868C4.s7868c4f9");
    check_field_offset(lv, s7868c4f10, ABISELECT(112,76), "S7868C4.s7868c4f10");
    check_field_offset(lv, s7868c4f11, ABISELECT(120,84), "S7868C4.s7868c4f11");
    test_class_info(&lv, &cd_S7868C4);
    dp->~S7868C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7868C4(Test_S7868C4, "S7868C4", ABISELECT(264,168));

#else // __cplusplus

extern void _ZN7S7868C4C1Ev();
extern void _ZN7S7868C4D2Ev();
Name_Map name_map_S7868C4[] = {
  NSPAIR(_ZN7S7868C4C1Ev),
  NSPAIR(_ZN7S7868C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7868C6;
extern VTBL_ENTRY _ZTI7S7868C6[];
extern  VTBL_ENTRY _ZTV7S7868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C6[];
static Base_Class bases_S7868C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(208,136), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7868C6,    ABISELECT(168,116), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7868C4[];
extern void _ZN7S7868C4D1Ev();
extern void _ZN7S7868C4D0Ev();
extern void ABISELECT(_ZTv0_n40_N7S7868C4D1Ev,_ZTv0_n20_N7S7868C4D1Ev)();
extern void ABISELECT(_ZThn168_N7S7868C4D1Ev,_ZThn116_N7S7868C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7868C4D0Ev,_ZTv0_n20_N7S7868C4D0Ev)();
extern void ABISELECT(_ZThn168_N7S7868C4D0Ev,_ZThn116_N7S7868C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C4D1Ev,_ZTv0_n12_N7S7868C4D1Ev)();
extern void ABISELECT(_ZThn208_N7S7868C4D1Ev,_ZThn136_N7S7868C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C4D0Ev,_ZTv0_n12_N7S7868C4D0Ev)();
extern void ABISELECT(_ZThn208_N7S7868C4D0Ev,_ZThn136_N7S7868C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7868C4[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C4[0]),
  (VTBL_ENTRY)&_ZN7S7868C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C4D0Ev,
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S7868C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C4D1Ev,_ZTv0_n20_N7S7868C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C4D0Ev,_ZTv0_n20_N7S7868C4D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI7S7868C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C4D1Ev,_ZTv0_n12_N7S7868C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C4D0Ev,_ZTv0_n12_N7S7868C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S7868C4[];
extern void _ZN7S7868C6D1Ev();
extern void _ZN7S7868C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7868C6__7S7868C4[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&_ZN7S7868C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S7868C6D1Ev,_ZThn20_N7S7868C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev)();
extern void ABISELECT(_ZThn40_N7S7868C6D0Ev,_ZThn20_N7S7868C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7868C6__7S7868C4[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev),
};
static  VTT_ENTRY vtt_S7868C4[] = {
  {&(_ZTV7S7868C4[5]),  5,19},
  {&(_ZTV7S7868C4[12]),  12,19},
  {&(_ZTV7S7868C4[17]),  17,19},
  {&(_tg__ZTV7S7868C6__7S7868C4[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7868C6__7S7868C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7868C4[];
extern  VTBL_ENTRY _ZTV7S7868C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C4[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7868C6D0Ev,_ZThn20_N7S7868C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7868C6D1Ev,_ZThn20_N7S7868C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C4D0Ev,_ZTv0_n12_N7S7868C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7868C4D0Ev,_ZThn136_N7S7868C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C4D1Ev,_ZTv0_n12_N7S7868C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7868C4D1Ev,_ZThn136_N7S7868C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7868C4D0Ev,_ZTv0_n20_N7S7868C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7868C4D0Ev,_ZThn116_N7S7868C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7868C4D1Ev,_ZTv0_n20_N7S7868C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7868C4D1Ev,_ZThn116_N7S7868C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7868C4 = {  "S7868C4", // class name
  bases_S7868C4, 3,
  &(vtc_S7868C4[0]), // expected_vtbl_contents
  &(vtt_S7868C4[0]), // expected_vtt_contents
  ABISELECT(264,168), // object size
  NSPAIRA(_ZTI7S7868C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7868C4),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7868C4),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7868C1  : S7868C2 , virtual S7868C14 , virtual S3572C24 , S7868C4 , S3572C5 {
  ::S3572C4 s7868c1f0;
  __tsi64 s7868c1f1;
  ::S3572C25 s7868c1f2;
  ::S7867C25 s7868c1f3;
  __tsi64 s7868c1f4;
  int s7868c1f5;
  int s7868c1f6:6;
  char s7868c1f7;
  void *s7868c1f8;
  long double s7868c1f9;
  void *s7868c1f10;
  virtual void  v1(); // _ZN7S7868C12v1Ev
  ~S7868C1(); // tgen
  S7868C1(); // tgen
};
//SIG(1 S7868C1) C1{ BC2{ VBC3{ vd m FC4{ VBC5{ m Fp Fs Fi Fp Fl[2]} VBC6{ VBC5 VBC7{ vd m FC5 FC8{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} FC9{ VBC5 VBC7 BC6 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} VBC10{ BC11{ VBC5 BC7 BC12{ VBC5 VBC7 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v3 v4 v5 Fc Fi} FL Fi[3] Fp Fi[2] FC13{ VBC4 BC7 BC14{ VBC7 BC6 VBC9 vd FC15{ VBC5 BC7 BC6 vd v7 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} Fi[6] Fs Fi FC3} VBC16{ VBC17{ vd m FD} VBC11 BC18{ m Fp Fi[2] FU19{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC5 vd v6 Fc[7] Fp FD FC20{ VBC5 VBC7 BC12 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} FL FL Fl Fi Fi FL[3] FD} VBC21{ vd m Fi[4] FL Fi FC6 Fi FD Fi Fi FL FL Fs} BC22{ VBC5 VBC12 vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} BC5 v1 FC7 FL FC23{ BC24{ BC6 VBC15 vd Fi Fp} VBC14 BC25{ BC17 BC26{ VBC24 BC15 FC3 Fp Fi FD FD FL Fi} BC27{ VBC15 vd v10 Fi Fp Fi:2 FD Fp} VBC28{ VBC17 VBC15 BC18 BC5 vd v11 Fc[7] Fp FD FC9 FL FL Fl Fi Fi FL[3] FD} Fi Fp} v8 v9 Fp[6] Fi FC24 Fi FC6 FL Fi[10] Fi FU29{ m Fi Fi[6] Fc Fi Fi Fp Fp[5] Fi Fc FL Fp Fp Fp}[2] FD Fi Fi:7} FC30{ BC31{ BC32{ VBC5 VBC7 Fc:1 Fp[3]} BC33{ VBC5 VBC7 BC32 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd v12 v13 v14 Fi Fi:2 FD Fp Fp} BC32 vd Fc Fs[10] Fp FC34{ BC28 vd v15 FC14 Fi:7 FC14 FC21} Fp[2] Fs Fp Fi Fi} FL Fi Fi:6 Fc Fp FD Fp}


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

static void Test_S7868C1()
{
  extern Class_Descriptor cd_S7868C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(841,1991)];
    init_test(&cd_S7868C1, buf);
    S7868C1 *dp, &lv = *(dp=new (buf) S7868C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(13440,7960), "sizeof(S7868C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7868C1)");
    check_base_class_offset(lv, (S3572C17*)(S7868C2*), ABISELECT(10816,6396), "S7868C1");
    check_base_class_offset(lv, (S3572C5*)(S7868C11*)(S7868C10*), ABISELECT(11960,7088), "S7868C1");
    check_base_class_offset(lv, (S3572C5*)(S7868C6*)(S7868C11*)(S7868C10*), ABISELECT(11960,7088), "S7868C1");
    /*is_ambiguous_... S7868C1::S7868C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S7868C11*), ABISELECT(11960,7088), "S7868C1");
    /*is_ambiguous_... S7868C1::S7868C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S7868C6*)(S7868C11*), ABISELECT(11960,7088), "S7868C1");
    check_base_class_offset(lv, (S3572C5*)(S7868C4*), ABISELECT(11960,7088), "S7868C1");
    /*is_ambiguous_... S7868C1::S7868C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S7868C6*), ABISELECT(11960,7088), "S7868C1");
    /*is_ambiguous_... S7868C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7868C11*)(S7868C10*), ABISELECT(11728,6956), "S7868C1");
    check_base_class_offset(lv, (S3572C4*)(S7868C6*)(S7868C11*)(S7868C10*), ABISELECT(12000,7112), "S7868C1");
    /*is_ambiguous_... S7868C1::S7868C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7868C6*)(S7868C11*), ABISELECT(12000,7112), "S7868C1");
    /*is_ambiguous_... S7868C1::S7868C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7868C6*), ABISELECT(12000,7112), "S7868C1");
    check_base_class_offset(lv, (S7868C6*)(S7868C11*)(S7868C10*), ABISELECT(11784,6988), "S7868C1");
    check_base_class_offset(lv, (S7868C11*)(S7868C10*), ABISELECT(11728,6956), "S7868C1");
    check_base_class_offset(lv, (S7868C10*)(S7868C2*), ABISELECT(11728,6956), "S7868C1");
    check_base_class_offset(lv, (S7868C2*), 0, "S7868C1");
    check_base_class_offset(lv, (S3572C21*)(S7868C14*), ABISELECT(12896,7648), "S7868C1");
    /*is_ambiguous_... S7868C1::S7868C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S7868C11*), ABISELECT(12928,7664), "S7868C1");
    /*is_ambiguous_... S7868C1::S7868C11 */ AMB_check_base_class_offset(lv, (S7868C6*)(S7868C11*), ABISELECT(12984,7696), "S7868C1");
    check_base_class_offset(lv, (S7868C11*)(S7868C14*), ABISELECT(12928,7664), "S7868C1");
    check_base_class_offset(lv, (S3572C22*)(S7868C14*), ABISELECT(12080,7148), "S7868C1");
    /*is_ambiguous_... S7868C14::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S7868C14*), ABISELECT(12176,7200), "S7868C1");
    check_base_class_offset(lv, (S7868C14*), ABISELECT(12064,7144), "S7868C1");
    check_base_class_offset(lv, (S3572C24*), ABISELECT(13152,7788), "S7868C1");
    check_base_class_offset(lv, (S7868C6*)(S7868C4*), ABISELECT(13392,7940), "S7868C1");
    check_base_class_offset(lv, (S7868C4*), ABISELECT(2240,1364), "S7868C1");
    /*is_ambiguous_... S7868C1::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*), ABISELECT(2368,1456), "S7868C1");
    check_field_offset(lv, s7868c1f0, ABISELECT(2408,1480), "S7868C1.s7868c1f0");
    check_field_offset(lv, s7868c1f1, ABISELECT(2464,1512), "S7868C1.s7868c1f1");
    check_field_offset(lv, s7868c1f2, ABISELECT(2480,1520), "S7868C1.s7868c1f2");
    check_field_offset(lv, s7868c1f3, ABISELECT(6688,3976), "S7868C1.s7868c1f3");
    check_field_offset(lv, s7868c1f4, ABISELECT(10752,6360), "S7868C1.s7868c1f4");
    check_field_offset(lv, s7868c1f5, ABISELECT(10760,6368), "S7868C1.s7868c1f5");
    set_bf_and_test(lv, s7868c1f6, ABISELECT(10764,6372), 0, 6, 1, "S7868C1");
    set_bf_and_test(lv, s7868c1f6, ABISELECT(10764,6372), 0, 6, hide_sll(1LL<<5), "S7868C1");
    check_field_offset(lv, s7868c1f7, ABISELECT(10765,6373), "S7868C1.s7868c1f7");
    check_field_offset(lv, s7868c1f8, ABISELECT(10768,6376), "S7868C1.s7868c1f8");
    check_field_offset(lv, s7868c1f9, ABISELECT(10784,6380), "S7868C1.s7868c1f9");
    check_field_offset(lv, s7868c1f10, ABISELECT(10800,6392), "S7868C1.s7868c1f10");
    test_class_info(&lv, &cd_S7868C1);
    dp->~S7868C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7868C1(Test_S7868C1, "S7868C1", ABISELECT(13440,7960));

#else // __cplusplus

extern void _ZN7S7868C1C1Ev();
extern void _ZN7S7868C1D1Ev();
Name_Map name_map_S7868C1[] = {
  NSPAIR(_ZN7S7868C1C1Ev),
  NSPAIR(_ZN7S7868C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7868C6;
extern VTBL_ENTRY _ZTI7S7868C6[];
extern  VTBL_ENTRY _ZTV7S7868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C6[];
extern Class_Descriptor cd_S7868C11;
extern VTBL_ENTRY _ZTI8S7868C11[];
extern  VTBL_ENTRY _ZTV8S7868C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7868C11[];
extern Class_Descriptor cd_S7868C10;
extern VTBL_ENTRY _ZTI8S7868C10[];
extern  VTBL_ENTRY _ZTV8S7868C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7868C10[];
extern Class_Descriptor cd_S7868C2;
extern VTBL_ENTRY _ZTI7S7868C2[];
extern  VTBL_ENTRY _ZTV7S7868C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C2[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S7868C6;
extern VTBL_ENTRY _ZTI7S7868C6[];
extern  VTBL_ENTRY _ZTV7S7868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C6[];
extern Class_Descriptor cd_S7868C11;
extern VTBL_ENTRY _ZTI8S7868C11[];
extern  VTBL_ENTRY _ZTV8S7868C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7868C11[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S7868C14;
extern VTBL_ENTRY _ZTI8S7868C14[];
extern  VTBL_ENTRY _ZTV8S7868C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7868C14[];
extern Class_Descriptor cd_S3572C24;
extern VTBL_ENTRY _ZTI8S3572C24[];
extern  VTBL_ENTRY _ZTV8S3572C24[];
extern Class_Descriptor cd_S7868C6;
extern VTBL_ENTRY _ZTI7S7868C6[];
extern  VTBL_ENTRY _ZTV7S7868C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C6[];
extern Class_Descriptor cd_S7868C4;
extern VTBL_ENTRY _ZTI7S7868C4[];
extern  VTBL_ENTRY _ZTV7S7868C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
static Base_Class bases_S7868C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C17,    ABISELECT(10816,6396), //bcp->offset
    21, //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
    7, //immediately_derived
  0, 1},
  {&cd_S3572C5,    ABISELECT(11960,7088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(11728,6956), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C4,    ABISELECT(12000,7112), //bcp->offset
    47, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7868C6,    ABISELECT(11784,6988), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7868C11,    ABISELECT(11728,6956), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7868C10,    ABISELECT(11728,6956), //bcp->offset
    26, //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
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7868C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C21,    ABISELECT(12896,7648), //bcp->offset
    63, //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
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(12928,7664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7868C6,    ABISELECT(12984,7696), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7868C11,    ABISELECT(12928,7664), //bcp->offset
    68, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(12080,7148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(12176,7200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7868C14,    ABISELECT(12064,7144), //bcp->offset
    52, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C24,    ABISELECT(13152,7788), //bcp->offset
    83, //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
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7868C6,    ABISELECT(13392,7940), //bcp->offset
    88, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7868C4,    ABISELECT(2240,1364), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C5,    ABISELECT(2368,1456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7868C1[];
extern void _ZN7S7868C1D1Ev();
extern void _ZN7S7868C1D0Ev();
extern void _ZN7S7868C12v1Ev();
extern void ABISELECT(_ZThn2240_N7S7868C1D1Ev,_ZThn1364_N7S7868C1D1Ev)();
extern void ABISELECT(_ZThn2240_N7S7868C1D0Ev,_ZThn1364_N7S7868C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7868C1D1Ev,_ZTv0_n12_N7S7868C1D1Ev)();
extern void ABISELECT(_ZThn10816_N7S7868C1D1Ev,_ZThn6396_N7S7868C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C1D0Ev,_ZTv0_n12_N7S7868C1D0Ev)();
extern void ABISELECT(_ZThn10816_N7S7868C1D0Ev,_ZThn6396_N7S7868C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7868C1D1Ev,_ZTv0_n20_N7S7868C1D1Ev)();
extern void ABISELECT(_ZThn11728_N7S7868C1D1Ev,_ZThn6956_N7S7868C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7868C1D0Ev,_ZTv0_n20_N7S7868C1D0Ev)();
extern void ABISELECT(_ZThn11728_N7S7868C1D0Ev,_ZThn6956_N7S7868C1D0Ev)() __attribute__((weak));
extern void _ZN8S7868C112v2Ev();
extern void _ZN8S7868C102v3Ev();
extern void _ZN8S7868C102v4Ev();
extern void _ZN8S7868C102v5Ev();
extern void ABISELECT(_ZTvn56_n40_N7S7868C1D1Ev,_ZTvn32_n20_N7S7868C1D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S7868C1D0Ev,_ZTvn32_n20_N7S7868C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7868C1D1Ev,_ZTv0_n12_N7S7868C1D1Ev)();
extern void ABISELECT(_ZThn12000_N7S7868C1D1Ev,_ZThn7112_N7S7868C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C1D0Ev,_ZTv0_n12_N7S7868C1D0Ev)();
extern void ABISELECT(_ZThn12000_N7S7868C1D0Ev,_ZThn7112_N7S7868C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7868C1D1Ev,_ZTv0_n28_N7S7868C1D1Ev)();
extern void ABISELECT(_ZThn12064_N7S7868C1D1Ev,_ZThn7144_N7S7868C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7868C1D0Ev,_ZTv0_n28_N7S7868C1D0Ev)();
extern void ABISELECT(_ZThn12064_N7S7868C1D0Ev,_ZThn7144_N7S7868C1D0Ev)() __attribute__((weak));
extern void _ZN8S7868C142v6Ev();
extern void ABISELECT(_ZTv0_n24_N7S7868C1D1Ev,_ZTv0_n12_N7S7868C1D1Ev)();
extern void ABISELECT(_ZThn12896_N7S7868C1D1Ev,_ZThn7648_N7S7868C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C1D0Ev,_ZTv0_n12_N7S7868C1D0Ev)();
extern void ABISELECT(_ZThn12896_N7S7868C1D0Ev,_ZThn7648_N7S7868C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7868C1D1Ev,_ZTv0_n20_N7S7868C1D1Ev)();
extern void ABISELECT(_ZThn12928_N7S7868C1D1Ev,_ZThn7664_N7S7868C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7868C1D0Ev,_ZTv0_n20_N7S7868C1D0Ev)();
extern void ABISELECT(_ZThn12928_N7S7868C1D0Ev,_ZThn7664_N7S7868C1D0Ev)() __attribute__((weak));
extern void _ZN8S7868C112v2Ev();
extern void ABISELECT(_ZTvn56_n40_N7S7868C1D1Ev,_ZTvn32_n20_N7S7868C1D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S7868C1D0Ev,_ZTvn32_n20_N7S7868C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7868C1D1Ev,_ZTv0_n12_N7S7868C1D1Ev)();
extern void ABISELECT(_ZThn13152_N7S7868C1D1Ev,_ZThn7788_N7S7868C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C1D0Ev,_ZTv0_n12_N7S7868C1D0Ev)();
extern void ABISELECT(_ZThn13152_N7S7868C1D0Ev,_ZThn7788_N7S7868C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7868C1D1Ev,_ZTv0_n20_N7S7868C1D1Ev)();
extern void ABISELECT(_ZThn13392_N7S7868C1D1Ev,_ZThn7940_N7S7868C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7868C1D0Ev,_ZTv0_n20_N7S7868C1D0Ev)();
extern void ABISELECT(_ZThn13392_N7S7868C1D0Ev,_ZThn7940_N7S7868C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7868C1[] = {
  ABISELECT(13392,7940),
  ABISELECT(13152,7788),
  ABISELECT(12928,7664),
  ABISELECT(12896,7648),
  ABISELECT(12064,7144),
  ABISELECT(12000,7112),
  ABISELECT(11960,7088),
  ABISELECT(11728,6956),
  ABISELECT(10816,6396),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&_ZN7S7868C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7868C12v1Ev,
  ABISELECT(9760,5748),
  ABISELECT(11152,6576),
  ABISELECT(9720,5724),
  ABISELECT(-2240,-1364),
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn2240_N7S7868C1D1Ev,_ZThn1364_N7S7868C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn2240_N7S7868C1D0Ev,_ZThn1364_N7S7868C1D0Ev),
  ABISELECT(-10816,-6396),
  ABISELECT(-10816,-6396),
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C1D1Ev,_ZTv0_n12_N7S7868C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C1D0Ev,_ZTv0_n12_N7S7868C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-11728,-6956),
  ABISELECT(272,156),
  ABISELECT(232,132),
  ABISELECT(-11728,-6956),
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C1D1Ev,_ZTv0_n20_N7S7868C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C1D0Ev,_ZTv0_n20_N7S7868C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v5Ev,
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-11784,-6988),
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7868C1D1Ev,_ZTvn32_n20_N7S7868C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7868C1D0Ev,_ZTvn32_n20_N7S7868C1D0Ev),
  ABISELECT(-12000,-7112),
  ABISELECT(-12000,-7112),
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C1D1Ev,_ZTv0_n12_N7S7868C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C1D0Ev,_ZTv0_n12_N7S7868C1D0Ev),
  0,
  ABISELECT(-12064,-7144),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(864,520),
  ABISELECT(832,504),
  ABISELECT(-12064,-7144),
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7868C1D1Ev,_ZTv0_n28_N7S7868C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7868C1D0Ev,_ZTv0_n28_N7S7868C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7868C142v6Ev,
  ABISELECT(-12896,-7648),
  ABISELECT(-12896,-7648),
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C1D1Ev,_ZTv0_n12_N7S7868C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C1D0Ev,_ZTv0_n12_N7S7868C1D0Ev),
  0,
  ABISELECT(-12928,-7664),
  ABISELECT(-928,-552),
  ABISELECT(-968,-576),
  ABISELECT(-12928,-7664),
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C1D1Ev,_ZTv0_n20_N7S7868C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C1D0Ev,_ZTv0_n20_N7S7868C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
  ABISELECT(-984,-584),
  ABISELECT(-1024,-608),
  ABISELECT(-12984,-7696),
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7868C1D1Ev,_ZTvn32_n20_N7S7868C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7868C1D0Ev,_ZTvn32_n20_N7S7868C1D0Ev),
  ABISELECT(-13152,-7788),
  ABISELECT(-13152,-7788),
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C1D1Ev,_ZTv0_n12_N7S7868C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C1D0Ev,_ZTv0_n12_N7S7868C1D0Ev),
  ABISELECT(-13392,-7940),
  ABISELECT(-1392,-828),
  ABISELECT(-1432,-852),
  ABISELECT(-13392,-7940),
  (VTBL_ENTRY)&(_ZTI7S7868C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C1D1Ev,_ZTv0_n20_N7S7868C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C1D0Ev,_ZTv0_n20_N7S7868C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7868C1[];
extern void _ZN7S7868C2D1Ev();
extern void _ZN7S7868C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7868C2__7S7868C1[] = {
  ABISELECT(12000,7112),
  ABISELECT(11960,7088),
  ABISELECT(11728,6956),
  ABISELECT(10816,6396),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C2[0]),
  (VTBL_ENTRY)&_ZN7S7868C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7868C2D1Ev,_ZTv0_n12_N7S7868C2D1Ev)();
extern void ABISELECT(_ZThn10816_N7S7868C2D1Ev,_ZThn6396_N7S7868C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C2D0Ev,_ZTv0_n12_N7S7868C2D0Ev)();
extern void ABISELECT(_ZThn10816_N7S7868C2D0Ev,_ZThn6396_N7S7868C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C17__7S7868C2__7S7868C1[] = {
  ABISELECT(-10816,-6396),
  ABISELECT(-10816,-6396),
  (VTBL_ENTRY)&(_ZTI7S7868C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C2D1Ev,_ZTv0_n12_N7S7868C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C2D0Ev,_ZTv0_n12_N7S7868C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7868C2D1Ev,_ZTv0_n20_N7S7868C2D1Ev)();
extern void ABISELECT(_ZThn11728_N7S7868C2D1Ev,_ZThn6956_N7S7868C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7868C2D0Ev,_ZTv0_n20_N7S7868C2D0Ev)();
extern void ABISELECT(_ZThn11728_N7S7868C2D0Ev,_ZThn6956_N7S7868C2D0Ev)() __attribute__((weak));
extern void _ZN8S7868C112v2Ev();
extern void _ZN8S7868C102v3Ev();
extern void _ZN8S7868C102v4Ev();
extern void _ZN8S7868C102v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7868C10__7S7868C2__7S7868C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-11728,-6956),
  ABISELECT(272,156),
  ABISELECT(232,132),
  ABISELECT(-11728,-6956),
  (VTBL_ENTRY)&(_ZTI7S7868C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C2D1Ev,_ZTv0_n20_N7S7868C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C2D0Ev,_ZTv0_n20_N7S7868C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v5Ev,
};
extern void ABISELECT(_ZTvn56_n40_N7S7868C2D1Ev,_ZTvn32_n20_N7S7868C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N7S7868C2D0Ev,_ZTvn32_n20_N7S7868C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7868C68S7868C118S7868C10__7S7868C2__7S7868C1[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-11784,-6988),
  (VTBL_ENTRY)&(_ZTI7S7868C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7868C2D1Ev,_ZTvn32_n20_N7S7868C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N7S7868C2D0Ev,_ZTvn32_n20_N7S7868C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7868C2D1Ev,_ZTv0_n12_N7S7868C2D1Ev)();
extern void ABISELECT(_ZThn12000_N7S7868C2D1Ev,_ZThn7112_N7S7868C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C2D0Ev,_ZTv0_n12_N7S7868C2D0Ev)();
extern void ABISELECT(_ZThn12000_N7S7868C2D0Ev,_ZThn7112_N7S7868C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__7S7868C2__7S7868C1[] = {
  ABISELECT(-12000,-7112),
  ABISELECT(-12000,-7112),
  (VTBL_ENTRY)&(_ZTI7S7868C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C2D1Ev,_ZTv0_n12_N7S7868C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C2D0Ev,_ZTv0_n12_N7S7868C2D0Ev),
};
extern void _ZN7S7868C4D1Ev();
extern void _ZN7S7868C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7868C4__7S7868C1[] = {
  ABISELECT(9760,5748),
  ABISELECT(11152,6576),
  ABISELECT(9720,5724),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C4[0]),
  (VTBL_ENTRY)&_ZN7S7868C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C4D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S7868C4D1Ev,_ZTv0_n20_N7S7868C4D1Ev)();
extern void ABISELECT(_ZThn11152_N7S7868C4D1Ev,_ZThn6576_N7S7868C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7868C4D0Ev,_ZTv0_n20_N7S7868C4D0Ev)();
extern void ABISELECT(_ZThn11152_N7S7868C4D0Ev,_ZThn6576_N7S7868C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7868C6__7S7868C4__7S7868C1[] = {
  ABISELECT(-11152,-6576),
  ABISELECT(-1392,-828),
  ABISELECT(-1432,-852),
  ABISELECT(-11152,-6576),
  (VTBL_ENTRY)&(_ZTI7S7868C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C4D1Ev,_ZTv0_n20_N7S7868C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7868C4D0Ev,_ZTv0_n20_N7S7868C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7868C4D1Ev,_ZTv0_n12_N7S7868C4D1Ev)();
extern void ABISELECT(_ZThn9760_N7S7868C4D1Ev,_ZThn5748_N7S7868C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C4D0Ev,_ZTv0_n12_N7S7868C4D0Ev)();
extern void ABISELECT(_ZThn9760_N7S7868C4D0Ev,_ZThn5748_N7S7868C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7868C4__7S7868C1[] = {
  ABISELECT(-9760,-5748),
  ABISELECT(-9760,-5748),
  (VTBL_ENTRY)&(_ZTI7S7868C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C4D1Ev,_ZTv0_n12_N7S7868C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C4D0Ev,_ZTv0_n12_N7S7868C4D0Ev),
};
extern void _ZN8S7868C10D1Ev();
extern void _ZN8S7868C10D0Ev();
extern void _ZN8S7868C112v2Ev();
extern void _ZN8S7868C102v3Ev();
extern void _ZN8S7868C102v4Ev();
extern void _ZN8S7868C102v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7868C10__7S7868C1[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7868C10[0]),
  (VTBL_ENTRY)&_ZN8S7868C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7868C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v3Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v4Ev,
  (VTBL_ENTRY)&_ZN8S7868C102v5Ev,
};
extern void _ZN8S7868C11D1Ev();
extern void _ZN8S7868C11D0Ev();
extern void _ZN8S7868C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7868C118S7868C10__7S7868C1[] = {
  ABISELECT(272,156),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&_ZN8S7868C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7868C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
};
extern void _ZN7S7868C6D1Ev();
extern void _ZN7S7868C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7868C68S7868C118S7868C10__7S7868C1[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&_ZN7S7868C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev)();
extern void ABISELECT(_ZThn216_N7S7868C6D1Ev,_ZThn124_N7S7868C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev)();
extern void ABISELECT(_ZThn216_N7S7868C6D0Ev,_ZThn124_N7S7868C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7868C68S7868C118S7868C10__7S7868C1[] = {
  ABISELECT(-216,-124),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7868C6__8S7868C118S7868C10__7S7868C1[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev)();
extern void ABISELECT(_ZThn272_N8S7868C11D1Ev,_ZThn156_N8S7868C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev)();
extern void ABISELECT(_ZThn272_N8S7868C11D0Ev,_ZThn156_N8S7868C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7868C118S7868C10__7S7868C1[] = {
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7868C10D1Ev,_ZThn32_N8S7868C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S7868C10D0Ev,_ZThn32_N8S7868C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7868C68S7868C11__8S7868C10__7S7868C1[] = {
  ABISELECT(216,124),
  ABISELECT(176,100),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7868C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C10D1Ev,_ZThn32_N8S7868C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C10D0Ev,_ZThn32_N8S7868C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7868C10D1Ev,_ZTv0_n12_N8S7868C10D1Ev)();
extern void ABISELECT(_ZThn272_N8S7868C10D1Ev,_ZThn156_N8S7868C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7868C10D0Ev,_ZTv0_n12_N8S7868C10D0Ev)();
extern void ABISELECT(_ZThn272_N8S7868C10D0Ev,_ZThn156_N8S7868C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7868C10__7S7868C1[] = {
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S7868C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C10D1Ev,_ZTv0_n12_N8S7868C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C10D0Ev,_ZTv0_n12_N8S7868C10D0Ev),
};
extern void _ZN8S7868C14D1Ev();
extern void _ZN8S7868C14D0Ev();
extern void _ZN8S7868C142v6Ev();
static  VTBL_ENTRY _tg__ZTV8S7868C14__7S7868C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(864,520),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI8S7868C14[0]),
  (VTBL_ENTRY)&_ZN8S7868C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7868C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7868C142v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7868C14D1Ev,_ZTv0_n12_N8S7868C14D1Ev)();
extern void ABISELECT(_ZThn832_N8S7868C14D1Ev,_ZThn504_N8S7868C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7868C14D0Ev,_ZTv0_n12_N8S7868C14D0Ev)();
extern void ABISELECT(_ZThn832_N8S7868C14D0Ev,_ZThn504_N8S7868C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S7868C14__7S7868C1[] = {
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI8S7868C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C14D1Ev,_ZTv0_n12_N8S7868C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C14D0Ev,_ZTv0_n12_N8S7868C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7868C14D1Ev,_ZTv0_n20_N8S7868C14D1Ev)();
extern void ABISELECT(_ZThn864_N8S7868C14D1Ev,_ZThn520_N8S7868C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7868C14D0Ev,_ZTv0_n20_N8S7868C14D0Ev)();
extern void ABISELECT(_ZThn864_N8S7868C14D0Ev,_ZThn520_N8S7868C14D0Ev)() __attribute__((weak));
extern void _ZN8S7868C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7868C11__8S7868C14__7S7868C1[] = {
  0,
  ABISELECT(-864,-520),
  ABISELECT(-928,-552),
  ABISELECT(-968,-576),
  ABISELECT(-864,-520),
  (VTBL_ENTRY)&(_ZTI8S7868C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7868C14D1Ev,_ZTv0_n20_N8S7868C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7868C14D0Ev,_ZTv0_n20_N8S7868C14D0Ev),
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S7868C14D1Ev,_ZTvn32_n20_N8S7868C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S7868C14D0Ev,_ZTvn32_n20_N8S7868C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7868C68S7868C11__8S7868C14__7S7868C1[] = {
  ABISELECT(-984,-584),
  ABISELECT(-1024,-608),
  ABISELECT(-920,-552),
  (VTBL_ENTRY)&(_ZTI8S7868C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S7868C14D1Ev,_ZTvn32_n20_N8S7868C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S7868C14D0Ev,_ZTvn32_n20_N8S7868C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7868C14D1Ev,_ZTv0_n12_N8S7868C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7868C14D0Ev,_ZTv0_n12_N8S7868C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7868C14__7S7868C1[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S7868C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C14D1Ev,_ZTv0_n12_N8S7868C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C14D0Ev,_ZTv0_n12_N8S7868C14D0Ev),
};
extern void _ZN8S7868C11D1Ev();
extern void _ZN8S7868C11D0Ev();
extern void _ZN8S7868C112v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7868C11__A1__7S7868C1[] = {
  ABISELECT(-928,-552),
  ABISELECT(-968,-576),
  0,
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&_ZN8S7868C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7868C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7868C112v2Ev,
};
extern void _ZN7S7868C6D1Ev();
extern void _ZN7S7868C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7868C68S7868C11__A1__7S7868C1[] = {
  ABISELECT(-984,-584),
  ABISELECT(-1024,-608),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&_ZN7S7868C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7868C68S7868C11__A1__7S7868C1[] = {
  ABISELECT(984,584),
  ABISELECT(984,584),
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev),
};
extern void ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7868C6__8S7868C11__A1__7S7868C1[] = {
  ABISELECT(-984,-584),
  ABISELECT(-1024,-608),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D1Ev,_ZThn32_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7868C11D0Ev,_ZThn32_N8S7868C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__8S7868C11__A1__7S7868C1[] = {
  ABISELECT(928,552),
  ABISELECT(928,552),
  (VTBL_ENTRY)&(_ZTI8S7868C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev),
};
extern void _ZN7S7868C6D1Ev();
extern void _ZN7S7868C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7868C6__A2__7S7868C1[] = {
  ABISELECT(-1392,-828),
  ABISELECT(-1432,-852),
  0,
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&_ZN7S7868C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7868C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__7S7868C6__A2__7S7868C1[] = {
  ABISELECT(1392,828),
  ABISELECT(1392,828),
  (VTBL_ENTRY)&(_ZTI7S7868C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev),
};
static  VTT_ENTRY vtt_S7868C1[] = {
  {&(_ZTV7S7868C1[11]),  11,95},
  {&(_tg__ZTV7S7868C2__7S7868C1[6]),  6,8},
  {&(_tg__ZTV8S3572C17__7S7868C2__7S7868C1[3]),  3,5},
  {&(_tg__ZTV8S7868C10__7S7868C2__7S7868C1[9]),  9,15},
  {&(_tg__ZTV7S7868C68S7868C118S7868C10__7S7868C2__7S7868C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__7S7868C2__7S7868C1[3]),  3,5},
  {&(_tg__ZTV7S7868C4__7S7868C1[5]),  5,7},
  {&(_tg__ZTV7S7868C6__7S7868C4__7S7868C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__7S7868C4__7S7868C1[3]),  3,5},
  {&(_ZTV7S7868C1[24]),  24,95},
  {&(_ZTV7S7868C1[35]),  35,95},
  {&(_ZTV7S7868C1[45]),  45,95},
  {&(_ZTV7S7868C1[50]),  50,95},
  {&(_ZTV7S7868C1[60]),  60,95},
  {&(_ZTV7S7868C1[66]),  66,95},
  {&(_ZTV7S7868C1[74]),  74,95},
  {&(_ZTV7S7868C1[81]),  81,95},
  {&(_ZTV7S7868C1[86]),  86,95},
  {&(_ZTV7S7868C1[19]),  19,95},
  {&(_ZTV7S7868C1[93]),  93,95},
  {&(_tg__ZTV8S7868C10__7S7868C1[4]),  4,10},
  {&(_tg__ZTV8S7868C118S7868C10__7S7868C1[4]),  4,7},
  {&(_tg__ZTV7S7868C68S7868C118S7868C10__7S7868C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7868C68S7868C118S7868C10__7S7868C1[3]),  3,5},
  {&(_tg__ZTV7S7868C6__8S7868C118S7868C10__7S7868C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7868C118S7868C10__7S7868C1[3]),  3,5},
  {&(_tg__ZTV7S7868C68S7868C11__8S7868C10__7S7868C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7868C10__7S7868C1[3]),  3,5},
  {&(_tg__ZTV8S7868C14__7S7868C1[6]),  6,9},
  {&(_tg__ZTV8S3572C21__8S7868C14__7S7868C1[3]),  3,5},
  {&(_tg__ZTV8S7868C11__8S7868C14__7S7868C1[6]),  6,9},
  {&(_tg__ZTV7S7868C68S7868C11__8S7868C14__7S7868C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7868C14__7S7868C1[3]),  3,5},
  {&(_tg__ZTV8S7868C11__A1__7S7868C1[4]),  4,7},
  {&(_tg__ZTV7S7868C68S7868C11__A1__7S7868C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7868C68S7868C11__A1__7S7868C1[3]),  3,5},
  {&(_tg__ZTV7S7868C6__8S7868C11__A1__7S7868C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__8S7868C11__A1__7S7868C1[3]),  3,5},
  {&(_tg__ZTV7S7868C6__A2__7S7868C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__7S7868C6__A2__7S7868C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7868C1[];
extern  VTBL_ENTRY _ZTV7S7868C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7868C1[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7868C14D0Ev,_ZTv0_n20_N8S7868C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S7868C14D0Ev,_ZThn520_N8S7868C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7868C14D1Ev,_ZTv0_n20_N8S7868C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N8S7868C14D1Ev,_ZThn520_N8S7868C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C14D0Ev,_ZTv0_n12_N8S7868C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7868C14D0Ev,_ZThn504_N8S7868C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C14D1Ev,_ZTv0_n12_N8S7868C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7868C14D1Ev,_ZThn504_N8S7868C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C10D0Ev,_ZTv0_n12_N8S7868C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C10D0Ev,_ZThn156_N8S7868C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C10D1Ev,_ZTv0_n12_N8S7868C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C10D1Ev,_ZThn156_N8S7868C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C11D0Ev,_ZTv0_n12_N8S7868C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C11D0Ev,_ZThn156_N8S7868C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7868C11D1Ev,_ZTv0_n12_N8S7868C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7868C11D1Ev,_ZThn156_N8S7868C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D0Ev,_ZTv0_n12_N7S7868C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7868C6D0Ev,_ZThn124_N7S7868C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C6D1Ev,_ZTv0_n12_N7S7868C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7868C6D1Ev,_ZThn124_N7S7868C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C4D0Ev,_ZTv0_n12_N7S7868C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9760_N7S7868C4D0Ev,_ZThn5748_N7S7868C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C4D1Ev,_ZTv0_n12_N7S7868C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9760_N7S7868C4D1Ev,_ZThn5748_N7S7868C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7868C4D0Ev,_ZTv0_n20_N7S7868C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11152_N7S7868C4D0Ev,_ZThn6576_N7S7868C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7868C4D1Ev,_ZTv0_n20_N7S7868C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11152_N7S7868C4D1Ev,_ZThn6576_N7S7868C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7868C2D0Ev,_ZTv0_n20_N7S7868C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11728_N7S7868C2D0Ev,_ZThn6956_N7S7868C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7868C2D1Ev,_ZTv0_n20_N7S7868C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11728_N7S7868C2D1Ev,_ZThn6956_N7S7868C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C2D0Ev,_ZTv0_n12_N7S7868C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12000_N7S7868C2D0Ev,_ZThn7112_N7S7868C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10816_N7S7868C2D0Ev,_ZThn6396_N7S7868C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C2D1Ev,_ZTv0_n12_N7S7868C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12000_N7S7868C2D1Ev,_ZThn7112_N7S7868C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10816_N7S7868C2D1Ev,_ZThn6396_N7S7868C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7868C1D0Ev,_ZTv0_n28_N7S7868C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12064_N7S7868C1D0Ev,_ZThn7144_N7S7868C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7868C1D1Ev,_ZTv0_n28_N7S7868C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12064_N7S7868C1D1Ev,_ZThn7144_N7S7868C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7868C1D0Ev,_ZTv0_n20_N7S7868C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13392_N7S7868C1D0Ev,_ZThn7940_N7S7868C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12928_N7S7868C1D0Ev,_ZThn7664_N7S7868C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11728_N7S7868C1D0Ev,_ZThn6956_N7S7868C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7868C1D1Ev,_ZTv0_n20_N7S7868C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13392_N7S7868C1D1Ev,_ZThn7940_N7S7868C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12928_N7S7868C1D1Ev,_ZThn7664_N7S7868C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11728_N7S7868C1D1Ev,_ZThn6956_N7S7868C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C1D0Ev,_ZTv0_n12_N7S7868C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13152_N7S7868C1D0Ev,_ZThn7788_N7S7868C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12896_N7S7868C1D0Ev,_ZThn7648_N7S7868C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12000_N7S7868C1D0Ev,_ZThn7112_N7S7868C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10816_N7S7868C1D0Ev,_ZThn6396_N7S7868C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7868C1D1Ev,_ZTv0_n12_N7S7868C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn13152_N7S7868C1D1Ev,_ZThn7788_N7S7868C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12896_N7S7868C1D1Ev,_ZThn7648_N7S7868C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn12000_N7S7868C1D1Ev,_ZThn7112_N7S7868C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10816_N7S7868C1D1Ev,_ZThn6396_N7S7868C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7868C1 = {  "S7868C1", // class name
  bases_S7868C1, 19,
  &(vtc_S7868C1[0]), // expected_vtbl_contents
  &(vtt_S7868C1[0]), // expected_vtt_contents
  ABISELECT(13440,7960), // object size
  NSPAIRA(_ZTI7S7868C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7868C1),95, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7868C1),40, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C4  : virtual S3572C5 , virtual S3572C4 {
  unsigned char s19568c4f0:1;
  void *s19568c4f1[3];
  ~S19568C4(); // tgen
  S19568C4(); // tgen
};
//SIG(-1 S19568C4) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} Fc:1 Fp[3]}


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

static void Test_S19568C4()
{
  extern Class_Descriptor cd_S19568C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S19568C4, buf);
    S19568C4 *dp, &lv = *(dp=new (buf) S19568C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S19568C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19568C4)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(40,20), "S19568C4");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(80,44), "S19568C4");
    set_bf_and_test(lv, s19568c4f0, ABISELECT(8,4), 0, 1, 1, "S19568C4");
    check_field_offset(lv, s19568c4f1, ABISELECT(16,8), "S19568C4.s19568c4f1");
    test_class_info(&lv, &cd_S19568C4);
    dp->~S19568C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C4(Test_S19568C4, "S19568C4", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN8S19568C4C1Ev();
extern void _ZN8S19568C4D1Ev();
Name_Map name_map_S19568C4[] = {
  NSPAIR(_ZN8S19568C4C1Ev),
  NSPAIR(_ZN8S19568C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
static Base_Class bases_S19568C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(80,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19568C4[];
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19568C4D1Ev,_ZThn44_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19568C4D0Ev,_ZThn44_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C4[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19568C4[];
static  VTT_ENTRY vtt_S19568C4[] = {
  {&(_ZTV8S19568C4[4]),  4,11},
  {&(_ZTV8S19568C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19568C4D0Ev,_ZThn44_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19568C4D1Ev,_ZThn44_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C4 = {  "S19568C4", // class name
  bases_S19568C4, 2,
  &(vtc_S19568C4[0]), // expected_vtbl_contents
  &(vtt_S19568C4[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI8S19568C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19568C4),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19568C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C10  : virtual S3572C5 , virtual S19568C4 {
  short s19568c10f0;
  int s19568c10f1[2];
  char s19568c10f2;
  __tsi64 s19568c10f3;
  int s19568c10f4;
  ::S3572C6_nt s19568c10f5;
  void *s19568c10f6;
  char s19568c10f7;
  short s19568c10f8;
  ::S3572C4 s19568c10f9;
  int s19568c10f10[2];
  __tsi64 s19568c10f11;
  virtual  ~S19568C10(); // _ZN9S19568C10D2Ev
  S19568C10(); // tgen
};
//SIG(-1 S19568C10) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ VBC2 VBC4{ vd m FC2 FC5{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL}


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

static void Test_S19568C10()
{
  extern Class_Descriptor cd_S19568C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,43)];
    init_test(&cd_S19568C10, buf);
    S19568C10 *dp, &lv = *(dp=new (buf) S19568C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,168), "sizeof(S19568C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19568C10)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(128,92), "S19568C10");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*), ABISELECT(128,92), "S19568C10");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*), ABISELECT(208,136), "S19568C10");
    check_base_class_offset(lv, (S19568C4*), ABISELECT(168,116), "S19568C10");
    check_field_offset(lv, s19568c10f0, ABISELECT(8,4), "S19568C10.s19568c10f0");
    check_field_offset(lv, s19568c10f1, ABISELECT(12,8), "S19568C10.s19568c10f1");
    check_field_offset(lv, s19568c10f2, ABISELECT(20,16), "S19568C10.s19568c10f2");
    check_field_offset(lv, s19568c10f3, ABISELECT(24,20), "S19568C10.s19568c10f3");
    check_field_offset(lv, s19568c10f4, ABISELECT(32,28), "S19568C10.s19568c10f4");
    check_field_offset(lv, s19568c10f5, ABISELECT(36,32), "S19568C10.s19568c10f5");
    check_field_offset(lv, s19568c10f6, ABISELECT(40,36), "S19568C10.s19568c10f6");
    check_field_offset(lv, s19568c10f7, ABISELECT(48,40), "S19568C10.s19568c10f7");
    check_field_offset(lv, s19568c10f8, ABISELECT(50,42), "S19568C10.s19568c10f8");
    check_field_offset(lv, s19568c10f9, ABISELECT(56,44), "S19568C10.s19568c10f9");
    check_field_offset(lv, s19568c10f10, ABISELECT(112,76), "S19568C10.s19568c10f10");
    check_field_offset(lv, s19568c10f11, ABISELECT(120,84), "S19568C10.s19568c10f11");
    test_class_info(&lv, &cd_S19568C10);
    dp->~S19568C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C10(Test_S19568C10, "S19568C10", ABISELECT(264,168));

#else // __cplusplus

extern void _ZN9S19568C10C1Ev();
extern void _ZN9S19568C10D2Ev();
Name_Map name_map_S19568C10[] = {
  NSPAIR(_ZN9S19568C10C1Ev),
  NSPAIR(_ZN9S19568C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
static Base_Class bases_S19568C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(208,136), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19568C4,    ABISELECT(168,116), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19568C10[];
extern void _ZN9S19568C10D1Ev();
extern void _ZN9S19568C10D0Ev();
extern void ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev)();
extern void ABISELECT(_ZThn168_N9S19568C10D1Ev,_ZThn116_N9S19568C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev)();
extern void ABISELECT(_ZThn168_N9S19568C10D0Ev,_ZThn116_N9S19568C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev)();
extern void ABISELECT(_ZThn208_N9S19568C10D1Ev,_ZThn136_N9S19568C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev)();
extern void ABISELECT(_ZThn208_N9S19568C10D0Ev,_ZThn136_N9S19568C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C10[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&_ZN9S19568C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C10D0Ev,
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19568C10[];
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C10[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19568C4D1Ev,_ZThn20_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19568C4D0Ev,_ZThn20_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C4__9S19568C10[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
static  VTT_ENTRY vtt_S19568C10[] = {
  {&(_ZTV9S19568C10[5]),  5,19},
  {&(_ZTV9S19568C10[12]),  12,19},
  {&(_ZTV9S19568C10[17]),  17,19},
  {&(_tg__ZTV8S19568C4__9S19568C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C4__9S19568C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19568C10[];
extern  VTBL_ENTRY _ZTV9S19568C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C10[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19568C4D0Ev,_ZThn20_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19568C4D1Ev,_ZThn20_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19568C10D0Ev,_ZThn136_N9S19568C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19568C10D1Ev,_ZThn136_N9S19568C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19568C10D0Ev,_ZThn116_N9S19568C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19568C10D1Ev,_ZThn116_N9S19568C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C10 = {  "S19568C10", // class name
  bases_S19568C10, 3,
  &(vtc_S19568C10[0]), // expected_vtbl_contents
  &(vtt_S19568C10[0]), // expected_vtt_contents
  ABISELECT(264,168), // object size
  NSPAIRA(_ZTI9S19568C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19568C10),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19568C10),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C12  : virtual S3572C5 , virtual S3572C4 , S19568C4 {
  char s19568c12f0;
  int s19568c12f1[3];
  void *s19568c12f2;
  short s19568c12f3:16;
  int s19568c12f4;
  void *s19568c12f5[2];
  int s19568c12f6;
  ::S3572C5 s19568c12f7[9];
  int s19568c12f8;
  virtual  ~S19568C12(); // _ZN9S19568C12D2Ev
  S19568C12(); // tgen
};
//SIG(-1 S19568C12) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC2[9] Fi}


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

static void Test_S19568C12()
{
  extern Class_Descriptor cd_S19568C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(71,85)];
    init_test(&cd_S19568C12, buf);
    S19568C12 *dp, &lv = *(dp=new (buf) S19568C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,336), "sizeof(S19568C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19568C12)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(464,280), "S19568C12");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*), ABISELECT(464,280), "S19568C12");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(504,304), "S19568C12");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*), ABISELECT(504,304), "S19568C12");
    check_base_class_offset(lv, (S19568C4*), 0, "S19568C12");
    check_field_offset(lv, s19568c12f0, ABISELECT(40,20), "S19568C12.s19568c12f0");
    check_field_offset(lv, s19568c12f1, ABISELECT(44,24), "S19568C12.s19568c12f1");
    check_field_offset(lv, s19568c12f2, ABISELECT(56,36), "S19568C12.s19568c12f2");
    set_bf_and_test(lv, s19568c12f3, ABISELECT(64,40), 0, 16, 1, "S19568C12");
    set_bf_and_test(lv, s19568c12f3, ABISELECT(64,40), 0, 16, hide_sll(1LL<<15), "S19568C12");
    check_field_offset(lv, s19568c12f4, ABISELECT(68,44), "S19568C12.s19568c12f4");
    check_field_offset(lv, s19568c12f5, ABISELECT(72,48), "S19568C12.s19568c12f5");
    check_field_offset(lv, s19568c12f6, ABISELECT(88,56), "S19568C12.s19568c12f6");
    check_field_offset(lv, s19568c12f7, ABISELECT(96,60), "S19568C12.s19568c12f7");
    check_field_offset(lv, s19568c12f8, ABISELECT(456,276), "S19568C12.s19568c12f8");
    test_class_info(&lv, &cd_S19568C12);
    dp->~S19568C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C12(Test_S19568C12, "S19568C12", ABISELECT(560,336));

#else // __cplusplus

extern void _ZN9S19568C12C1Ev();
extern void _ZN9S19568C12D2Ev();
Name_Map name_map_S19568C12[] = {
  NSPAIR(_ZN9S19568C12C1Ev),
  NSPAIR(_ZN9S19568C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
static Base_Class bases_S19568C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(464,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(504,304), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19568C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19568C12[];
extern void _ZN9S19568C12D1Ev();
extern void _ZN9S19568C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev)();
extern void ABISELECT(_ZThn504_N9S19568C12D1Ev,_ZThn304_N9S19568C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev)();
extern void ABISELECT(_ZThn504_N9S19568C12D0Ev,_ZThn304_N9S19568C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C12[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&_ZN9S19568C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C12D0Ev,
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19568C12[];
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C12[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn504_N8S19568C4D1Ev,_ZThn304_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn504_N8S19568C4D0Ev,_ZThn304_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C4__9S19568C12[] = {
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
static  VTT_ENTRY vtt_S19568C12[] = {
  {&(_ZTV9S19568C12[4]),  4,11},
  {&(_tg__ZTV8S19568C4__9S19568C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C4__9S19568C12[3]),  3,5},
  {&(_ZTV9S19568C12[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S19568C12[];
extern  VTBL_ENTRY _ZTV9S19568C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C12[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19568C4D0Ev,_ZThn304_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19568C4D1Ev,_ZThn304_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S19568C12D0Ev,_ZThn304_N9S19568C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S19568C12D1Ev,_ZThn304_N9S19568C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C12 = {  "S19568C12", // class name
  bases_S19568C12, 3,
  &(vtc_S19568C12[0]), // expected_vtbl_contents
  &(vtt_S19568C12[0]), // expected_vtt_contents
  ABISELECT(560,336), // object size
  NSPAIRA(_ZTI9S19568C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19568C12),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19568C12),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C13  : virtual S3572C5 , S3572C4 , S19568C4 {
  char s19568c13f0;
  void *s19568c13f1[7];
  long double s19568c13f2;
  void *s19568c13f3[4];
  int s19568c13f4;
  char s19568c13f5;
  void *s19568c13f6;
  virtual  ~S19568C13(); // _ZN9S19568C13D2Ev
  virtual void  v1(); // _ZN9S19568C132v1Ev
  S19568C13(); // tgen
};
//SIG(-1 S19568C13) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} BC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}


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

static void Test_S19568C13()
{
  extern Class_Descriptor cd_S19568C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,46)];
    init_test(&cd_S19568C13, buf);
    S19568C13 *dp, &lv = *(dp=new (buf) S19568C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,180), "sizeof(S19568C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C13)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(224,124), "S19568C13");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*), ABISELECT(224,124), "S19568C13");
    /*is_ambiguous_... S19568C13::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S19568C13");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*), ABISELECT(264,148), "S19568C13");
    check_base_class_offset(lv, (S19568C4*), ABISELECT(56,32), "S19568C13");
    check_field_offset(lv, s19568c13f0, ABISELECT(96,52), "S19568C13.s19568c13f0");
    check_field_offset(lv, s19568c13f1, ABISELECT(104,56), "S19568C13.s19568c13f1");
    check_field_offset(lv, s19568c13f2, ABISELECT(160,84), "S19568C13.s19568c13f2");
    check_field_offset(lv, s19568c13f3, ABISELECT(176,96), "S19568C13.s19568c13f3");
    check_field_offset(lv, s19568c13f4, ABISELECT(208,112), "S19568C13.s19568c13f4");
    check_field_offset(lv, s19568c13f5, ABISELECT(212,116), "S19568C13.s19568c13f5");
    check_field_offset(lv, s19568c13f6, ABISELECT(216,120), "S19568C13.s19568c13f6");
    test_class_info(&lv, &cd_S19568C13);
    dp->~S19568C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C13(Test_S19568C13, "S19568C13", ABISELECT(320,180));

#else // __cplusplus

extern void _ZN9S19568C13C1Ev();
extern void _ZN9S19568C13D2Ev();
Name_Map name_map_S19568C13[] = {
  NSPAIR(_ZN9S19568C13C1Ev),
  NSPAIR(_ZN9S19568C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
static Base_Class bases_S19568C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(224,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
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3572C4,    ABISELECT(264,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19568C4,    ABISELECT(56,32), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19568C13[];
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S19568C13D1Ev,_ZThn148_N9S19568C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S19568C13D0Ev,_ZThn148_N9S19568C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C13[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19568C13[];
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C13[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S19568C4D1Ev,_ZThn116_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S19568C4D0Ev,_ZThn116_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C4__9S19568C13[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
static  VTT_ENTRY vtt_S19568C13[] = {
  {&(_ZTV9S19568C13[4]),  4,18},
  {&(_tg__ZTV8S19568C4__9S19568C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C4__9S19568C13[3]),  3,5},
  {&(_ZTV9S19568C13[11]),  11,18},
  {&(_ZTV9S19568C13[16]),  16,18},
};
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19568C4D0Ev,_ZThn116_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19568C4D1Ev,_ZThn116_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19568C13D0Ev,_ZThn148_N9S19568C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19568C13D1Ev,_ZThn148_N9S19568C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C13 = {  "S19568C13", // class name
  bases_S19568C13, 4,
  &(vtc_S19568C13[0]), // expected_vtbl_contents
  &(vtt_S19568C13[0]), // expected_vtt_contents
  ABISELECT(320,180), // object size
  NSPAIRA(_ZTI9S19568C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19568C13),18, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19568C13),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C11  : virtual S3572C4 , S19568C4 , virtual S19568C12 {
  ::S19568C13 s19568c11f0;
  virtual  ~S19568C11(); // _ZN9S19568C11D2Ev
  S19568C11(); // tgen
};
//SIG(-1 S19568C11) C1{ VBC2{ vd m FC3{ m Fp Fs Fi Fp Fl[2]} FC4{}} BC5{ VBC3 VBC2 Fc:1 Fp[3]} VBC6{ VBC3 VBC2 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC7{ VBC3 BC2 BC5 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}}


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

static void Test_S19568C11()
{
  extern Class_Descriptor cd_S19568C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,135)];
    init_test(&cd_S19568C11, buf);
    S19568C11 *dp, &lv = *(dp=new (buf) S19568C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,536), "sizeof(S19568C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C11)");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(368,200), "S19568C11");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*), ABISELECT(368,200), "S19568C11");
    check_base_class_offset(lv, (S3572C4*)(S19568C12*), ABISELECT(368,200), "S19568C11");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C12*), ABISELECT(368,200), "S19568C11");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*), ABISELECT(424,232), "S19568C11");
    check_base_class_offset(lv, (S3572C5*)(S19568C12*), ABISELECT(424,232), "S19568C11");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C12*), ABISELECT(424,232), "S19568C11");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*), 0, "S19568C11");
    check_base_class_offset(lv, (S19568C4*)(S19568C12*), ABISELECT(464,256), "S19568C11");
    check_base_class_offset(lv, (S19568C12*), ABISELECT(464,256), "S19568C11");
    check_field_offset(lv, s19568c11f0, ABISELECT(48,20), "S19568C11.s19568c11f0");
    test_class_info(&lv, &cd_S19568C11);
    dp->~S19568C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C11(Test_S19568C11, "S19568C11", ABISELECT(928,536));

#else // __cplusplus

extern void _ZN9S19568C11C1Ev();
extern void _ZN9S19568C11D2Ev();
Name_Map name_map_S19568C11[] = {
  NSPAIR(_ZN9S19568C11C1Ev),
  NSPAIR(_ZN9S19568C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C12;
extern VTBL_ENTRY _ZTI9S19568C12[];
extern  VTBL_ENTRY _ZTV9S19568C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C12[];
static Base_Class bases_S19568C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(368,200), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C5,    ABISELECT(424,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19568C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19568C4,    ABISELECT(464,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19568C12,    ABISELECT(464,256), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19568C11[];
extern void _ZN9S19568C11D1Ev();
extern void _ZN9S19568C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19568C11D1Ev,_ZThn200_N9S19568C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev)();
extern void ABISELECT(_ZThn368_N9S19568C11D0Ev,_ZThn200_N9S19568C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19568C11D1Ev,_ZThn256_N9S19568C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev)();
extern void ABISELECT(_ZThn464_N9S19568C11D0Ev,_ZThn256_N9S19568C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C11[] = {
  ABISELECT(464,256),
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&_ZN9S19568C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C11D0Ev,
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev),
  ABISELECT(-464,-256),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19568C11[];
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C11[] = {
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn368_N8S19568C4D1Ev,_ZThn200_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn368_N8S19568C4D0Ev,_ZThn200_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C4__9S19568C11[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void _ZN9S19568C12D1Ev();
extern void _ZN9S19568C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C12__9S19568C11[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&_ZN9S19568C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C12D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C12__A1__9S19568C11[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C12__A1__9S19568C11[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C12__9S19568C11[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev),
};
static  VTT_ENTRY vtt_S19568C11[] = {
  {&(_ZTV9S19568C11[5]),  5,19},
  {&(_tg__ZTV8S19568C4__9S19568C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C4__9S19568C11[3]),  3,5},
  {&(_ZTV9S19568C11[10]),  10,19},
  {&(_ZTV9S19568C11[17]),  17,19},
  {&(_tg__ZTV9S19568C12__9S19568C11[4]),  4,6},
  {&(_tg__ZTV8S19568C49S19568C12__A1__9S19568C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C12__A1__9S19568C11[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C12__9S19568C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19568C11[];
extern  VTBL_ENTRY _ZTV9S19568C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C11[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19568C4D0Ev,_ZThn200_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19568C4D1Ev,_ZThn200_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19568C11D0Ev,_ZThn256_N9S19568C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19568C11D1Ev,_ZThn256_N9S19568C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19568C11D0Ev,_ZThn200_N9S19568C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19568C11D1Ev,_ZThn200_N9S19568C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C11 = {  "S19568C11", // class name
  bases_S19568C11, 5,
  &(vtc_S19568C11[0]), // expected_vtbl_contents
  &(vtt_S19568C11[0]), // expected_vtt_contents
  ABISELECT(928,536), // object size
  NSPAIRA(_ZTI9S19568C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19568C11),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19568C11),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C9  : virtual S19568C10 , S3572C4 , S19568C11 {
  int s19568c9f0[6];
  void *s19568c9f1[8];
  virtual  ~S19568C9(); // _ZN8S19568C9D2Ev
  S19568C9(); // tgen
};
//SIG(-1 S19568C9) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ VBC3 VBC5{ vd m FC3 FC6{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} BC5 BC7{ VBC5 BC4 VBC8{ VBC3 VBC5 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC9{ VBC3 BC5 BC4 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]}


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

static void Test_S19568C9()
{
  extern Class_Descriptor cd_S19568C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(79,185)];
    init_test(&cd_S19568C9, buf);
    S19568C9 *dp, &lv = *(dp=new (buf) S19568C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1248,736), "sizeof(S19568C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C9)");
    check_base_class_offset(lv, (S3572C5*)(S19568C10*), ABISELECT(648,380), "S19568C9");
    /*is_ambiguous_... S19568C9::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*), ABISELECT(648,380), "S19568C9");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C11*), ABISELECT(648,380), "S19568C9");
    check_base_class_offset(lv, (S3572C5*)(S19568C12*), ABISELECT(648,380), "S19568C9");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C12*), ABISELECT(648,380), "S19568C9");
    /*is_ambiguous_... S19568C9::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*), ABISELECT(728,424), "S19568C9");
    check_base_class_offset(lv, (S3572C4*)(S19568C11*), ABISELECT(728,424), "S19568C9");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C11*), ABISELECT(728,424), "S19568C9");
    check_base_class_offset(lv, (S3572C4*)(S19568C12*), ABISELECT(728,424), "S19568C9");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C12*), ABISELECT(728,424), "S19568C9");
    check_base_class_offset(lv, (S19568C4*)(S19568C10*), ABISELECT(688,404), "S19568C9");
    check_base_class_offset(lv, (S19568C10*), ABISELECT(520,288), "S19568C9");
    /*is_ambiguous_... S19568C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S19568C9");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C11*), ABISELECT(64,32), "S19568C9");
    check_base_class_offset(lv, (S19568C4*)(S19568C12*), ABISELECT(784,456), "S19568C9");
    check_base_class_offset(lv, (S19568C12*)(S19568C11*), ABISELECT(784,456), "S19568C9");
    check_base_class_offset(lv, (S19568C11*), ABISELECT(64,32), "S19568C9");
    check_field_offset(lv, s19568c9f0, ABISELECT(432,232), "S19568C9.s19568c9f0");
    check_field_offset(lv, s19568c9f1, ABISELECT(456,256), "S19568C9.s19568c9f1");
    test_class_info(&lv, &cd_S19568C9);
    dp->~S19568C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C9(Test_S19568C9, "S19568C9", ABISELECT(1248,736));

#else // __cplusplus

extern void _ZN8S19568C9C1Ev();
extern void _ZN8S19568C9D2Ev();
Name_Map name_map_S19568C9[] = {
  NSPAIR(_ZN8S19568C9C1Ev),
  NSPAIR(_ZN8S19568C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C10;
extern VTBL_ENTRY _ZTI9S19568C10[];
extern  VTBL_ENTRY _ZTV9S19568C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C12;
extern VTBL_ENTRY _ZTI9S19568C12[];
extern  VTBL_ENTRY _ZTV9S19568C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C12[];
extern Class_Descriptor cd_S19568C11;
extern VTBL_ENTRY _ZTI9S19568C11[];
extern  VTBL_ENTRY _ZTV9S19568C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C11[];
static Base_Class bases_S19568C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(648,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(728,424), //bcp->offset
    31, //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
    2, //immediately_derived
  0, 1},
  {&cd_S19568C4,    ABISELECT(688,404), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19568C10,    ABISELECT(520,288), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19568C4,    ABISELECT(64,32), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(784,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19568C12,    ABISELECT(784,456), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19568C11,    ABISELECT(64,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19568C9[];
extern void _ZN8S19568C9D1Ev();
extern void _ZN8S19568C9D0Ev();
extern void ABISELECT(_ZThn64_N8S19568C9D1Ev,_ZThn32_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19568C9D0Ev,_ZThn32_N8S19568C9D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn520_N8S19568C9D1Ev,_ZThn288_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn520_N8S19568C9D0Ev,_ZThn288_N8S19568C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn688_N8S19568C9D1Ev,_ZThn404_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn688_N8S19568C9D0Ev,_ZThn404_N8S19568C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn728_N8S19568C9D1Ev,_ZThn424_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn728_N8S19568C9D0Ev,_ZThn424_N8S19568C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn784_N8S19568C9D1Ev,_ZThn456_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn784_N8S19568C9D0Ev,_ZThn456_N8S19568C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C9[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&_ZN8S19568C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C9D0Ev,
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C9D1Ev,_ZThn32_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C9D0Ev,_ZThn32_N8S19568C9D0Ev),
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev),
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev),
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev),
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19568C9[];
extern void _ZN9S19568C11D1Ev();
extern void _ZN9S19568C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C11__8S19568C9[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&_ZN9S19568C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C11D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C11__A1__8S19568C9[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn664_N8S19568C4D1Ev,_ZThn392_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn664_N8S19568C4D0Ev,_ZThn392_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C11__A1__8S19568C9[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev)();
extern void ABISELECT(_ZThn664_N9S19568C11D1Ev,_ZThn392_N9S19568C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev)();
extern void ABISELECT(_ZThn664_N9S19568C11D0Ev,_ZThn392_N9S19568C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C11__8S19568C9[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev)();
extern void ABISELECT(_ZThn720_N9S19568C11D1Ev,_ZThn424_N9S19568C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev)();
extern void ABISELECT(_ZThn720_N9S19568C11D0Ev,_ZThn424_N9S19568C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__9S19568C11__8S19568C9[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev),
};
extern void _ZN9S19568C10D1Ev();
extern void _ZN9S19568C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C9[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&_ZN9S19568C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev)();
extern void ABISELECT(_ZThn168_N9S19568C10D1Ev,_ZThn116_N9S19568C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev)();
extern void ABISELECT(_ZThn168_N9S19568C10D0Ev,_ZThn116_N9S19568C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C10__8S19568C9[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev)();
extern void ABISELECT(_ZThn208_N9S19568C10D1Ev,_ZThn136_N9S19568C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev)();
extern void ABISELECT(_ZThn208_N9S19568C10D0Ev,_ZThn136_N9S19568C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C10__8S19568C9[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev),
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C9[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19568C4D1Ev,_ZThn20_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19568C4D0Ev,_ZThn20_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C4__8S19568C9[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void _ZN9S19568C12D1Ev();
extern void _ZN9S19568C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C9[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&_ZN9S19568C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C12D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C12__A2__8S19568C9[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C12__A2__8S19568C9[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C12__8S19568C9[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev),
};
static  VTT_ENTRY vtt_S19568C9[] = {
  {&(_ZTV8S19568C9[7]),  7,43},
  {&(_tg__ZTV9S19568C11__8S19568C9[5]),  5,7},
  {&(_tg__ZTV8S19568C49S19568C11__A1__8S19568C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C11__A1__8S19568C9[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C11__8S19568C9[3]),  3,5},
  {&(_tg__ZTV9S19568C12__9S19568C11__8S19568C9[5]),  5,7},
  {&(_ZTV8S19568C9[22]),  22,43},
  {&(_ZTV8S19568C9[29]),  29,43},
  {&(_ZTV8S19568C9[34]),  34,43},
  {&(_ZTV8S19568C9[14]),  14,43},
  {&(_ZTV8S19568C9[41]),  41,43},
  {&(_tg__ZTV9S19568C10__8S19568C9[5]),  5,7},
  {&(_tg__ZTV8S19568C4__9S19568C10__8S19568C9[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19568C10__8S19568C9[3]),  3,5},
  {&(_tg__ZTV8S19568C4__8S19568C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C4__8S19568C9[3]),  3,5},
  {&(_tg__ZTV9S19568C12__8S19568C9[4]),  4,6},
  {&(_tg__ZTV8S19568C49S19568C12__A2__8S19568C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C12__A2__8S19568C9[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C12__8S19568C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19568C9[];
extern  VTBL_ENTRY _ZTV8S19568C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C9[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19568C10D0Ev,_ZThn136_N9S19568C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19568C10D1Ev,_ZThn136_N9S19568C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19568C10D0Ev,_ZThn116_N9S19568C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19568C10D1Ev,_ZThn116_N9S19568C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19568C11D0Ev,_ZThn424_N9S19568C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19568C11D1Ev,_ZThn424_N9S19568C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19568C11D0Ev,_ZThn392_N9S19568C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19568C11D1Ev,_ZThn392_N9S19568C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19568C4D0Ev,_ZThn20_N8S19568C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19568C4D0Ev,_ZThn392_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19568C4D1Ev,_ZThn20_N8S19568C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19568C4D1Ev,_ZThn392_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S19568C9D0Ev,_ZThn424_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S19568C9D1Ev,_ZThn424_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19568C9D0Ev,_ZThn456_N8S19568C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19568C9D0Ev,_ZThn404_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19568C9D1Ev,_ZThn456_N8S19568C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19568C9D1Ev,_ZThn404_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19568C9D0Ev,_ZThn288_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19568C9D1Ev,_ZThn288_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C9 = {  "S19568C9", // class name
  bases_S19568C9, 9,
  &(vtc_S19568C9[0]), // expected_vtbl_contents
  &(vtt_S19568C9[0]), // expected_vtt_contents
  ABISELECT(1248,736), // object size
  NSPAIRA(_ZTI8S19568C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19568C9),43, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19568C9),20, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C14  : virtual S19568C13 {
  int s19568c14f0;
  void *s19568c14f1;
  int s19568c14f2:2;
  long double s19568c14f3;
  void *s19568c14f4;
  virtual  ~S19568C14(); // _ZN9S19568C14D2Ev
  virtual void  v2(); // _ZN9S19568C142v2Ev
  S19568C14(); // tgen
};
//SIG(-1 S19568C14) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} BC4{ vd m FC3 FC5{}} BC6{ VBC3 VBC4 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v1 Fi Fp Fi:2 FD Fp}


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

static void Test_S19568C14()
{
  extern Class_Descriptor cd_S19568C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,54)];
    init_test(&cd_S19568C14, buf);
    S19568C14 *dp, &lv = *(dp=new (buf) S19568C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,212), "sizeof(S19568C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C14)");
    check_base_class_offset(lv, (S3572C5*)(S19568C13*), ABISELECT(288,156), "S19568C14");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C13*), ABISELECT(288,156), "S19568C14");
    /*is_ambiguous_... S19568C13::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C13*), ABISELECT(64,32), "S19568C14");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C13*), ABISELECT(328,180), "S19568C14");
    check_base_class_offset(lv, (S19568C4*)(S19568C13*), ABISELECT(120,64), "S19568C14");
    check_base_class_offset(lv, (S19568C13*), ABISELECT(64,32), "S19568C14");
    check_field_offset(lv, s19568c14f0, ABISELECT(8,4), "S19568C14.s19568c14f0");
    check_field_offset(lv, s19568c14f1, ABISELECT(16,8), "S19568C14.s19568c14f1");
    set_bf_and_test(lv, s19568c14f2, ABISELECT(24,12), 0, 2, 1, "S19568C14");
    set_bf_and_test(lv, s19568c14f2, ABISELECT(24,12), 0, 2, hide_sll(1LL<<1), "S19568C14");
    check_field_offset(lv, s19568c14f3, ABISELECT(32,16), "S19568C14.s19568c14f3");
    check_field_offset(lv, s19568c14f4, ABISELECT(48,28), "S19568C14.s19568c14f4");
    test_class_info(&lv, &cd_S19568C14);
    dp->~S19568C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C14(Test_S19568C14, "S19568C14", ABISELECT(384,212));

#else // __cplusplus

extern void _ZN9S19568C14C1Ev();
extern void _ZN9S19568C14D2Ev();
Name_Map name_map_S19568C14[] = {
  NSPAIR(_ZN9S19568C14C1Ev),
  NSPAIR(_ZN9S19568C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C13;
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
static Base_Class bases_S19568C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(288,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_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(328,180), //bcp->offset
    23, //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_S19568C4,    ABISELECT(120,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19568C13,    ABISELECT(64,32), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19568C14[];
extern void _ZN9S19568C14D1Ev();
extern void _ZN9S19568C14D0Ev();
extern void _ZN9S19568C142v2Ev();
extern void ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19568C14D1Ev,_ZThn32_N9S19568C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19568C14D0Ev,_ZThn32_N9S19568C14D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev)();
extern void ABISELECT(_ZThn328_N9S19568C14D1Ev,_ZThn180_N9S19568C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev)();
extern void ABISELECT(_ZThn328_N9S19568C14D0Ev,_ZThn180_N9S19568C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C14[] = {
  ABISELECT(328,180),
  ABISELECT(288,156),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&_ZN9S19568C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  0,
  ABISELECT(-64,-32),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev),
  ABISELECT(-328,-180),
  ABISELECT(-328,-180),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19568C14[];
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C14[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C14[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S19568C4D1Ev,_ZThn116_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S19568C4D0Ev,_ZThn116_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C13__9S19568C14[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C13__9S19568C14[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S19568C13D1Ev,_ZThn148_N9S19568C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S19568C13D0Ev,_ZThn148_N9S19568C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C13__9S19568C14[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
static  VTT_ENTRY vtt_S19568C14[] = {
  {&(_ZTV9S19568C14[5]),  5,28},
  {&(_ZTV9S19568C14[14]),  14,28},
  {&(_ZTV9S19568C14[21]),  21,28},
  {&(_ZTV9S19568C14[26]),  26,28},
  {&(_tg__ZTV9S19568C13__9S19568C14[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C13__9S19568C14[3]),  3,5},
  {&(_tg__ZTV8S19568C4__9S19568C13__9S19568C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C13__9S19568C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19568C14[];
extern  VTBL_ENTRY _ZTV9S19568C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C14[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19568C13D0Ev,_ZThn148_N9S19568C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19568C13D1Ev,_ZThn148_N9S19568C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19568C4D0Ev,_ZThn116_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19568C4D1Ev,_ZThn116_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19568C14D0Ev,_ZThn180_N9S19568C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19568C14D1Ev,_ZThn180_N9S19568C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19568C14D0Ev,_ZThn32_N9S19568C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19568C14D1Ev,_ZThn32_N9S19568C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C14 = {  "S19568C14", // class name
  bases_S19568C14, 5,
  &(vtc_S19568C14[0]), // expected_vtbl_contents
  &(vtt_S19568C14[0]), // expected_vtt_contents
  ABISELECT(384,212), // object size
  NSPAIRA(_ZTI9S19568C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19568C14),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19568C14),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C8  : virtual S19568C9 , S19568C14 , S19568C13 {
  int s19568c8f0;
  __tsi64 s19568c8f1;
  int s19568c8f2:6;
  ::S3572C16 s19568c8f3;
  long s19568c8f4;
  int s19568c8f5;
  void *s19568c8f6;
  ::S3572C2 s19568c8f7;
  virtual  ~S19568C8(); // _ZN8S19568C8D2Ev
  virtual void  v3(); // _ZN8S19568C82v3Ev
  S19568C8(); // tgen
};
//SIG(-1 S19568C8) C1{ VBC2{ VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ VBC4 VBC6{ vd m FC4 FC7{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} BC6 BC8{ VBC6 BC5 VBC9{ VBC4 VBC6 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC10{ VBC4 BC6 BC5 vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC11{ VBC10 vd v3 Fi Fp Fi:2 FD Fp} BC10 vd v1 Fi FL Fi:6 FC12{ BC13{ VBC4 VBC6 Fc:1 Fp[3]} VBC14{ VBC4 BC6 BC13 vd v4 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC15{ BC16{ VBC6 BC13 VBC17{ VBC4 VBC6 BC13 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC14} VBC18{ VBC4 VBC13 vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} VBC14 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}}


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

static void Test_S19568C8()
{
  extern Class_Descriptor cd_S19568C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(230,534)];
    init_test(&cd_S19568C8, buf);
    S19568C8 *dp, &lv = *(dp=new (buf) S19568C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3664,2132), "sizeof(S19568C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C8)");
    check_base_class_offset(lv, (S3572C5*)(S19568C10*), ABISELECT(2840,1652), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*), ABISELECT(2840,1652), "S19568C8");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(2840,1652), "S19568C8");
    check_base_class_offset(lv, (S3572C5*)(S19568C12*), ABISELECT(2840,1652), "S19568C8");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C12*), ABISELECT(2840,1652), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C13*), ABISELECT(2840,1652), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C13*), ABISELECT(2840,1652), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C13*), ABISELECT(2840,1652), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C13*), ABISELECT(2840,1652), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*), ABISELECT(2920,1696), "S19568C8");
    check_base_class_offset(lv, (S3572C4*)(S19568C11*)(S19568C9*), ABISELECT(2920,1696), "S19568C8");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(2920,1696), "S19568C8");
    check_base_class_offset(lv, (S3572C4*)(S19568C12*), ABISELECT(2920,1696), "S19568C8");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C12*), ABISELECT(2920,1696), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C13*), ABISELECT(2920,1696), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C13*), ABISELECT(2920,1696), "S19568C8");
    check_base_class_offset(lv, (S19568C4*)(S19568C10*), ABISELECT(2880,1676), "S19568C8");
    check_base_class_offset(lv, (S19568C10*)(S19568C9*), ABISELECT(2712,1560), "S19568C8");
    /*is_ambiguous_... S19568C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C9*), ABISELECT(2192,1272), "S19568C8");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(2256,1304), "S19568C8");
    check_base_class_offset(lv, (S19568C4*)(S19568C12*), ABISELECT(2976,1728), "S19568C8");
    check_base_class_offset(lv, (S19568C12*)(S19568C11*)(S19568C9*), ABISELECT(2976,1728), "S19568C8");
    check_base_class_offset(lv, (S19568C11*)(S19568C9*), ABISELECT(2256,1304), "S19568C8");
    check_base_class_offset(lv, (S19568C9*), ABISELECT(2192,1272), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C13*), ABISELECT(3440,2008), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C13*), ABISELECT(3496,2040), "S19568C8");
    check_base_class_offset(lv, (S19568C13*)(S19568C14*), ABISELECT(3440,2008), "S19568C8");
    check_base_class_offset(lv, (S19568C14*), 0, "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C13*), ABISELECT(64,32), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C13*), ABISELECT(120,64), "S19568C8");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C13*), ABISELECT(64,32), "S19568C8");
    check_field_offset(lv, s19568c8f0, ABISELECT(288,156), "S19568C8.s19568c8f0");
    check_field_offset(lv, s19568c8f1, ABISELECT(296,160), "S19568C8.s19568c8f1");
    set_bf_and_test(lv, s19568c8f2, ABISELECT(304,168), 0, 6, 1, "S19568C8");
    set_bf_and_test(lv, s19568c8f2, ABISELECT(304,168), 0, 6, hide_sll(1LL<<5), "S19568C8");
    check_field_offset(lv, s19568c8f3, ABISELECT(320,172), "S19568C8.s19568c8f3");
    check_field_offset(lv, s19568c8f4, ABISELECT(704,380), "S19568C8.s19568c8f4");
    check_field_offset(lv, s19568c8f5, ABISELECT(712,384), "S19568C8.s19568c8f5");
    check_field_offset(lv, s19568c8f6, ABISELECT(720,388), "S19568C8.s19568c8f6");
    check_field_offset(lv, s19568c8f7, ABISELECT(736,392), "S19568C8.s19568c8f7");
    test_class_info(&lv, &cd_S19568C8);
    dp->~S19568C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C8(Test_S19568C8, "S19568C8", ABISELECT(3664,2132));

#else // __cplusplus

extern void _ZN8S19568C8C1Ev();
extern void _ZN8S19568C8D2Ev();
Name_Map name_map_S19568C8[] = {
  NSPAIR(_ZN8S19568C8C1Ev),
  NSPAIR(_ZN8S19568C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C10;
extern VTBL_ENTRY _ZTI9S19568C10[];
extern  VTBL_ENTRY _ZTV9S19568C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C12;
extern VTBL_ENTRY _ZTI9S19568C12[];
extern  VTBL_ENTRY _ZTV9S19568C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C12[];
extern Class_Descriptor cd_S19568C11;
extern VTBL_ENTRY _ZTI9S19568C11[];
extern  VTBL_ENTRY _ZTV9S19568C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C11[];
extern Class_Descriptor cd_S19568C9;
extern VTBL_ENTRY _ZTI8S19568C9[];
extern  VTBL_ENTRY _ZTV8S19568C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C13;
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
extern Class_Descriptor cd_S19568C14;
extern VTBL_ENTRY _ZTI9S19568C14[];
extern  VTBL_ENTRY _ZTV9S19568C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C13;
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
static Base_Class bases_S19568C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(2840,1652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2920,1696), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19568C4,    ABISELECT(2880,1676), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19568C10,    ABISELECT(2712,1560), //bcp->offset
    43, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2192,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(2256,1304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(2976,1728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19568C12,    ABISELECT(2976,1728), //bcp->offset
    63, //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
    8, //immediately_derived
  0, 1},
  {&cd_S19568C11,    ABISELECT(2256,1304), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19568C9,    ABISELECT(2192,1272), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(3440,2008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(3496,2040), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19568C13,    ABISELECT(3440,2008), //bcp->offset
    70, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19568C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(120,64), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19568C13,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19568C8[];
extern void _ZN8S19568C8D1Ev();
extern void _ZN8S19568C8D0Ev();
extern void _ZN9S19568C142v2Ev();
extern void _ZN8S19568C82v3Ev();
extern void ABISELECT(_ZThn64_N8S19568C8D1Ev,_ZThn32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19568C8D0Ev,_ZThn32_N8S19568C8D0Ev)();
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZThn120_N8S19568C8D1Ev,_ZThn64_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19568C8D0Ev,_ZThn64_N8S19568C8D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2192_N8S19568C8D1Ev,_ZThn1272_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2192_N8S19568C8D0Ev,_ZThn1272_N8S19568C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S19568C8D1Ev,_ZTvn32_n32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19568C8D0Ev,_ZTvn32_n32_N8S19568C8D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2712_N8S19568C8D1Ev,_ZThn1560_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2712_N8S19568C8D0Ev,_ZThn1560_N8S19568C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2880_N8S19568C8D1Ev,_ZThn1676_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2880_N8S19568C8D0Ev,_ZThn1676_N8S19568C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C8D1Ev,_ZTv0_n12_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2920_N8S19568C8D1Ev,_ZThn1696_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C8D0Ev,_ZTv0_n12_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2920_N8S19568C8D0Ev,_ZThn1696_N8S19568C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2976_N8S19568C8D1Ev,_ZThn1728_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2976_N8S19568C8D0Ev,_ZThn1728_N8S19568C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn3440_N8S19568C8D1Ev,_ZThn2008_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn3440_N8S19568C8D0Ev,_ZThn2008_N8S19568C8D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S19568C8D1Ev,_ZTvn32_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19568C8D0Ev,_ZTvn32_n20_N8S19568C8D0Ev)();
static  VTBL_ENTRY vtc_S19568C8[] = {
  ABISELECT(2976,1728),
  ABISELECT(2880,1676),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(2920,1696),
  ABISELECT(2840,1652),
  ABISELECT(3440,2008),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&_ZN8S19568C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C8D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19568C82v3Ev,
  ABISELECT(2856,1664),
  ABISELECT(2776,1620),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C8D1Ev,_ZThn32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C8D0Ev,_ZThn32_N8S19568C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19568C8D1Ev,_ZThn64_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19568C8D0Ev,_ZThn64_N8S19568C8D0Ev),
  ABISELECT(-2192,-1272),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev),
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-2256,-1304),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C8D1Ev,_ZTvn32_n32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C8D0Ev,_ZTvn32_n32_N8S19568C8D0Ev),
  ABISELECT(-2712,-1560),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-2712,-1560),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev),
  ABISELECT(-2880,-1676),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-2880,-1676),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
  ABISELECT(-2920,-1696),
  ABISELECT(-2920,-1696),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C8D1Ev,_ZTv0_n12_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C8D0Ev,_ZTv0_n12_N8S19568C8D0Ev),
  ABISELECT(-2976,-1728),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-2976,-1728),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
  0,
  ABISELECT(-3440,-2008),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2008),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2040),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C8D1Ev,_ZTvn32_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C8D0Ev,_ZTvn32_n20_N8S19568C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19568C8[];
extern void _ZN9S19568C14D1Ev();
extern void _ZN9S19568C14D0Ev();
extern void _ZN9S19568C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C14__8S19568C8[] = {
  ABISELECT(2920,1696),
  ABISELECT(2840,1652),
  ABISELECT(3440,2008),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&_ZN9S19568C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZThn3440_N9S19568C14D1Ev,_ZThn2008_N9S19568C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev)();
extern void ABISELECT(_ZThn3440_N9S19568C14D0Ev,_ZThn2008_N9S19568C14D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C14__8S19568C8[] = {
  0,
  ABISELECT(-3440,-2008),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2008),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C14__8S19568C8[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2040),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev)();
extern void ABISELECT(_ZThn2920_N9S19568C14D1Ev,_ZThn1696_N9S19568C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev)();
extern void ABISELECT(_ZThn2920_N9S19568C14D0Ev,_ZThn1696_N9S19568C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C14__8S19568C8[] = {
  ABISELECT(-2920,-1696),
  ABISELECT(-2920,-1696),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev),
};
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__A__8S19568C8[] = {
  ABISELECT(2856,1664),
  ABISELECT(2776,1620),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A4__8S19568C8[] = {
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn2800_N8S19568C4D1Ev,_ZThn1632_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn2800_N8S19568C4D0Ev,_ZThn1632_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C13__A4__8S19568C8[] = {
  ABISELECT(-2800,-1632),
  ABISELECT(-2800,-1632),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C13__A__8S19568C8[] = {
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn2856_N9S19568C13D1Ev,_ZThn1664_N9S19568C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
extern void ABISELECT(_ZThn2856_N9S19568C13D0Ev,_ZThn1664_N9S19568C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C13__A__8S19568C8[] = {
  ABISELECT(-2856,-1664),
  ABISELECT(-2856,-1664),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
extern void _ZN8S19568C9D1Ev();
extern void _ZN8S19568C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C9__8S19568C8[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&_ZN8S19568C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C9D0Ev,
};
extern void _ZN9S19568C11D1Ev();
extern void _ZN9S19568C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C118S19568C9__8S19568C8[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&_ZN9S19568C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C11D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C118S19568C9__A1__8S19568C8[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn664_N8S19568C4D1Ev,_ZThn392_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn664_N8S19568C4D0Ev,_ZThn392_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C118S19568C9__A1__8S19568C8[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev)();
extern void ABISELECT(_ZThn664_N9S19568C11D1Ev,_ZThn392_N9S19568C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev)();
extern void ABISELECT(_ZThn664_N9S19568C11D0Ev,_ZThn392_N9S19568C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C118S19568C9__8S19568C8[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev)();
extern void ABISELECT(_ZThn720_N9S19568C11D1Ev,_ZThn424_N9S19568C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev)();
extern void ABISELECT(_ZThn720_N9S19568C11D0Ev,_ZThn424_N9S19568C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__9S19568C118S19568C9__8S19568C8[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn520_N8S19568C9D1Ev,_ZThn288_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn520_N8S19568C9D0Ev,_ZThn288_N8S19568C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C9__8S19568C8[] = {
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn688_N8S19568C9D1Ev,_ZThn404_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn688_N8S19568C9D0Ev,_ZThn404_N8S19568C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C9__8S19568C8[] = {
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn728_N8S19568C9D1Ev,_ZThn424_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn728_N8S19568C9D0Ev,_ZThn424_N8S19568C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C9__8S19568C8[] = {
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19568C9D1Ev,_ZThn32_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19568C9D0Ev,_ZThn32_N8S19568C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C11__8S19568C9__8S19568C8[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C9D1Ev,_ZThn32_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C9D0Ev,_ZThn32_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn784_N8S19568C9D1Ev,_ZThn456_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn784_N8S19568C9D0Ev,_ZThn456_N8S19568C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C9__8S19568C8[] = {
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev),
};
extern void _ZN9S19568C10D1Ev();
extern void _ZN9S19568C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C8[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&_ZN9S19568C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev)();
extern void ABISELECT(_ZThn168_N9S19568C10D1Ev,_ZThn116_N9S19568C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev)();
extern void ABISELECT(_ZThn168_N9S19568C10D0Ev,_ZThn116_N9S19568C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C10__8S19568C8[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev)();
extern void ABISELECT(_ZThn208_N9S19568C10D1Ev,_ZThn136_N9S19568C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev)();
extern void ABISELECT(_ZThn208_N9S19568C10D0Ev,_ZThn136_N9S19568C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C10__8S19568C8[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev),
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C8[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19568C4D1Ev,_ZThn20_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19568C4D0Ev,_ZThn20_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C4__8S19568C8[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void _ZN9S19568C12D1Ev();
extern void _ZN9S19568C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C8[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&_ZN9S19568C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C12D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C12__A2__8S19568C8[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C12__A2__8S19568C8[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C12__8S19568C8[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev),
};
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__8S19568C8[] = {
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A3__8S19568C8[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C13__A3__8S19568C8[] = {
  ABISELECT(576,344),
  ABISELECT(576,344),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C13__8S19568C8[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C13__8S19568C8[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
static  VTT_ENTRY vtt_S19568C8[] = {
  {&(_ZTV8S19568C8[9]),  9,85},
  {&(_tg__ZTV9S19568C14__8S19568C8[5]),  5,8},
  {&(_tg__ZTV9S19568C13__9S19568C14__8S19568C8[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C14__8S19568C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C14__8S19568C8[3]),  3,5},
  {&(_tg__ZTV9S19568C13__A__8S19568C8[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C13__A4__8S19568C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C13__A4__8S19568C8[3]),  3,5},
  {&(_tg__ZTV8S19568C4__9S19568C13__A__8S19568C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C13__A__8S19568C8[3]),  3,5},
  {&(_ZTV8S19568C8[34]),  34,85},
  {&(_ZTV8S19568C8[49]),  49,85},
  {&(_ZTV8S19568C8[56]),  56,85},
  {&(_ZTV8S19568C8[61]),  61,85},
  {&(_ZTV8S19568C8[41]),  41,85},
  {&(_ZTV8S19568C8[68]),  68,85},
  {&(_ZTV8S19568C8[76]),  76,85},
  {&(_ZTV8S19568C8[83]),  83,85},
  {&(_ZTV8S19568C8[17]),  17,85},
  {&(_ZTV8S19568C8[24]),  24,85},
  {&(_tg__ZTV8S19568C9__8S19568C8[7]),  7,9},
  {&(_tg__ZTV9S19568C118S19568C9__8S19568C8[5]),  5,7},
  {&(_tg__ZTV8S19568C49S19568C118S19568C9__A1__8S19568C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C118S19568C9__A1__8S19568C8[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C118S19568C9__8S19568C8[3]),  3,5},
  {&(_tg__ZTV9S19568C12__9S19568C118S19568C9__8S19568C8[5]),  5,7},
  {&(_tg__ZTV9S19568C10__8S19568C9__8S19568C8[6]),  6,8},
  {&(_tg__ZTV8S19568C4__8S19568C9__8S19568C8[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19568C9__8S19568C8[3]),  3,5},
  {&(_tg__ZTV9S19568C11__8S19568C9__8S19568C8[5]),  5,7},
  {&(_tg__ZTV9S19568C12__8S19568C9__8S19568C8[5]),  5,7},
  {&(_tg__ZTV9S19568C10__8S19568C8[5]),  5,7},
  {&(_tg__ZTV8S19568C4__9S19568C10__8S19568C8[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19568C10__8S19568C8[3]),  3,5},
  {&(_tg__ZTV8S19568C4__8S19568C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C4__8S19568C8[3]),  3,5},
  {&(_tg__ZTV9S19568C12__8S19568C8[4]),  4,6},
  {&(_tg__ZTV8S19568C49S19568C12__A2__8S19568C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C12__A2__8S19568C8[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C12__8S19568C8[3]),  3,5},
  {&(_tg__ZTV9S19568C13__8S19568C8[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C13__A3__8S19568C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C13__A3__8S19568C8[3]),  3,5},
  {&(_tg__ZTV8S19568C4__9S19568C13__8S19568C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C13__8S19568C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19568C8[];
extern  VTBL_ENTRY _ZTV8S19568C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C8[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19568C10D0Ev,_ZThn136_N9S19568C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19568C10D1Ev,_ZThn136_N9S19568C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19568C10D0Ev,_ZThn116_N9S19568C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19568C10D1Ev,_ZThn116_N9S19568C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S19568C9D0Ev,_ZThn424_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S19568C9D1Ev,_ZThn424_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19568C9D0Ev,_ZThn456_N8S19568C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19568C9D0Ev,_ZThn404_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19568C9D1Ev,_ZThn456_N8S19568C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19568C9D1Ev,_ZThn404_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19568C9D0Ev,_ZThn288_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19568C9D1Ev,_ZThn288_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19568C11D0Ev,_ZThn424_N9S19568C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19568C11D1Ev,_ZThn424_N9S19568C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19568C11D0Ev,_ZThn392_N9S19568C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19568C11D1Ev,_ZThn392_N9S19568C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S19568C13D0Ev,_ZThn1664_N9S19568C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S19568C13D1Ev,_ZThn1664_N9S19568C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19568C4D0Ev,_ZThn20_N8S19568C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19568C4D0Ev,_ZThn392_N8S19568C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S19568C4D0Ev,_ZThn1632_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19568C4D1Ev,_ZThn20_N8S19568C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19568C4D1Ev,_ZThn392_N8S19568C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S19568C4D1Ev,_ZThn1632_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S19568C14D0Ev,_ZThn1696_N9S19568C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S19568C14D1Ev,_ZThn1696_N9S19568C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S19568C14D0Ev,_ZThn2008_N9S19568C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S19568C14D1Ev,_ZThn2008_N9S19568C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C8D0Ev,_ZTv0_n12_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S19568C8D0Ev,_ZThn1696_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C8D1Ev,_ZTv0_n12_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S19568C8D1Ev,_ZThn1696_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S19568C8D0Ev,_ZThn2008_N8S19568C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S19568C8D0Ev,_ZThn1728_N8S19568C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S19568C8D0Ev,_ZThn1676_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S19568C8D1Ev,_ZThn2008_N8S19568C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S19568C8D1Ev,_ZThn1728_N8S19568C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S19568C8D1Ev,_ZThn1676_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19568C8D0Ev,_ZThn1560_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19568C8D1Ev,_ZThn1560_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19568C8D0Ev,_ZThn1272_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19568C8D1Ev,_ZThn1272_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C8 = {  "S19568C8", // class name
  bases_S19568C8, 17,
  &(vtc_S19568C8[0]), // expected_vtbl_contents
  &(vtt_S19568C8[0]), // expected_vtt_contents
  ABISELECT(3664,2132), // object size
  NSPAIRA(_ZTI8S19568C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19568C8),85, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19568C8),45, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C18  : S19568C4 , S19568C12 {
  int s19568c18f0;
  int s19568c18f1:2;
  long double s19568c18f2;
  void *s19568c18f3[2];
  virtual  ~S19568C18(); // _ZN9S19568C18D2Ev
  virtual void  v4(); // _ZN9S19568C182v4Ev
  virtual void  v5(); // _ZN9S19568C182v5Ev
  virtual void  v6(); // _ZN9S19568C182v6Ev
  S19568C18(); // tgen
};
//SIG(-1 S19568C18) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} BC6{ VBC3 VBC4 BC2 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd v1 v2 v3 Fi Fi:2 FD Fp[2]}


 S19568C18 ::~S19568C18(){ note_dtor("S19568C18", this);}
void  S19568C18 ::v4(){vfunc_called(this, "_ZN9S19568C182v4Ev");}
void  S19568C18 ::v5(){vfunc_called(this, "_ZN9S19568C182v5Ev");}
void  S19568C18 ::v6(){vfunc_called(this, "_ZN9S19568C182v6Ev");}
S19568C18 ::S19568C18(){ note_ctor("S19568C18", this);} // tgen

static void Test_S19568C18()
{
  extern Class_Descriptor cd_S19568C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,97)];
    init_test(&cd_S19568C18, buf);
    S19568C18 *dp, &lv = *(dp=new (buf) S19568C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,384), "sizeof(S19568C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C18)");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*), ABISELECT(544,328), "S19568C18");
    check_base_class_offset(lv, (S3572C5*)(S19568C12*), ABISELECT(544,328), "S19568C18");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C12*), ABISELECT(544,328), "S19568C18");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*), ABISELECT(584,352), "S19568C18");
    check_base_class_offset(lv, (S3572C4*)(S19568C12*), ABISELECT(584,352), "S19568C18");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C12*), ABISELECT(584,352), "S19568C18");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*), 0, "S19568C18");
    check_base_class_offset(lv, (S19568C4*)(S19568C12*), ABISELECT(40,20), "S19568C18");
    check_base_class_offset(lv, (S19568C12*), ABISELECT(40,20), "S19568C18");
    check_field_offset(lv, s19568c18f0, ABISELECT(500,300), "S19568C18.s19568c18f0");
    set_bf_and_test(lv, s19568c18f1, ABISELECT(504,304), 0, 2, 1, "S19568C18");
    set_bf_and_test(lv, s19568c18f1, ABISELECT(504,304), 0, 2, hide_sll(1LL<<1), "S19568C18");
    check_field_offset(lv, s19568c18f2, ABISELECT(512,308), "S19568C18.s19568c18f2");
    check_field_offset(lv, s19568c18f3, ABISELECT(528,320), "S19568C18.s19568c18f3");
    test_class_info(&lv, &cd_S19568C18);
    dp->~S19568C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C18(Test_S19568C18, "S19568C18", ABISELECT(640,384));

#else // __cplusplus

extern void _ZN9S19568C18C1Ev();
extern void _ZN9S19568C18D2Ev();
Name_Map name_map_S19568C18[] = {
  NSPAIR(_ZN9S19568C18C1Ev),
  NSPAIR(_ZN9S19568C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C12;
extern VTBL_ENTRY _ZTI9S19568C12[];
extern  VTBL_ENTRY _ZTV9S19568C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C12[];
static Base_Class bases_S19568C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(544,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(584,352), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19568C4,    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_S19568C4,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19568C12,    ABISELECT(40,20), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19568C18[];
extern void _ZN9S19568C18D1Ev();
extern void _ZN9S19568C18D0Ev();
extern void _ZN9S19568C182v4Ev();
extern void _ZN9S19568C182v5Ev();
extern void _ZN9S19568C182v6Ev();
extern void ABISELECT(_ZThn40_N9S19568C18D1Ev,_ZThn20_N9S19568C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S19568C18D0Ev,_ZThn20_N9S19568C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C18D1Ev,_ZTv0_n12_N9S19568C18D1Ev)();
extern void ABISELECT(_ZThn584_N9S19568C18D1Ev,_ZThn352_N9S19568C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C18D0Ev,_ZTv0_n12_N9S19568C18D0Ev)();
extern void ABISELECT(_ZThn584_N9S19568C18D0Ev,_ZThn352_N9S19568C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C18[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&_ZN9S19568C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v6Ev,
  ABISELECT(544,332),
  ABISELECT(504,308),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19568C18D1Ev,_ZThn20_N9S19568C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19568C18D0Ev,_ZThn20_N9S19568C18D0Ev),
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C18D1Ev,_ZTv0_n12_N9S19568C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C18D0Ev,_ZTv0_n12_N9S19568C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S19568C18[];
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C18[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn584_N8S19568C4D1Ev,_ZThn352_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn584_N8S19568C4D0Ev,_ZThn352_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C4__9S19568C18[] = {
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void _ZN9S19568C12D1Ev();
extern void _ZN9S19568C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C12__9S19568C18[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&_ZN9S19568C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C12D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C12__A1__9S19568C18[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn544_N8S19568C4D1Ev,_ZThn332_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn544_N8S19568C4D0Ev,_ZThn332_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C12__A1__9S19568C18[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev)();
extern void ABISELECT(_ZThn544_N9S19568C12D1Ev,_ZThn332_N9S19568C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev)();
extern void ABISELECT(_ZThn544_N9S19568C12D0Ev,_ZThn332_N9S19568C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C12__9S19568C18[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev),
};
static  VTT_ENTRY vtt_S19568C18[] = {
  {&(_ZTV9S19568C18[4]),  4,20},
  {&(_tg__ZTV8S19568C4__9S19568C18[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C4__9S19568C18[3]),  3,5},
  {&(_tg__ZTV9S19568C12__9S19568C18[4]),  4,6},
  {&(_tg__ZTV8S19568C49S19568C12__A1__9S19568C18[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C12__A1__9S19568C18[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C12__9S19568C18[3]),  3,5},
  {&(_ZTV9S19568C18[18]),  18,20},
  {&(_ZTV9S19568C18[13]),  13,20},
};
extern VTBL_ENTRY _ZTI9S19568C18[];
extern  VTBL_ENTRY _ZTV9S19568C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C18[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N9S19568C12D0Ev,_ZThn332_N9S19568C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N9S19568C12D1Ev,_ZThn332_N9S19568C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19568C4D0Ev,_ZThn332_N8S19568C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S19568C4D0Ev,_ZThn352_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19568C4D1Ev,_ZThn332_N8S19568C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S19568C4D1Ev,_ZThn352_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C18D0Ev,_ZTv0_n12_N9S19568C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19568C18D0Ev,_ZThn352_N9S19568C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C18D1Ev,_ZTv0_n12_N9S19568C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19568C18D1Ev,_ZThn352_N9S19568C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C18 = {  "S19568C18", // class name
  bases_S19568C18, 5,
  &(vtc_S19568C18[0]), // expected_vtbl_contents
  &(vtt_S19568C18[0]), // expected_vtt_contents
  ABISELECT(640,384), // object size
  NSPAIRA(_ZTI9S19568C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19568C18),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19568C18),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C3  : virtual S19568C4 , virtual S19568C8 , S3572C17 , virtual S19568C18 , virtual S19568C14 {
  int s19568c3f0;
  __tsi64 s19568c3f1;
  ::S3572C16 s19568c3f2;
  virtual  ~S19568C3(); // _ZN8S19568C3D2Ev
  S19568C3(); // tgen
};
//SIG(-1 S19568C3) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} VBC6{ VBC7{ VBC8{ VBC3 VBC2 vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL} BC4 BC9{ VBC4 BC2 VBC10{ VBC3 VBC4 BC2 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC11{ VBC3 BC4 BC2 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC12{ VBC11 vd v2 Fi Fp Fi:2 FD Fp} BC11 vd v3 Fi FL Fi:6 FC13{ BC14{ VBC3 VBC4 Fc:1 Fp[3]} VBC15{ VBC3 BC4 BC14 vd v7 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC16{ BC17{ VBC4 BC14 VBC18{ VBC3 VBC4 BC14 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC15} VBC19{ VBC3 VBC14 vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL} VBC15 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC20{ vd m FC19 FC18 Fp Fi Fp FL FD Fs Fp FL Fi} VBC21{ BC2 BC10 vd v4 v5 v6 Fi Fi:2 FD Fp[2]} VBC12 vd Fi FL FC13}


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

static void Test_S19568C3()
{
  extern Class_Descriptor cd_S19568C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(351,819)];
    init_test(&cd_S19568C3, buf);
    S19568C3 *dp, &lv = *(dp=new (buf) S19568C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(5600,3272), "sizeof(S19568C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C3)");
    /*is_ambiguous_... S19568C3::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*), ABISELECT(1352,800), "S19568C3");
    check_base_class_offset(lv, (S3572C5*)(S19568C10*), ABISELECT(1352,800), "S19568C3");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(1352,800), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C12*), ABISELECT(1352,800), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C12*), ABISELECT(1352,800), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C13*), ABISELECT(1352,800), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C13*), ABISELECT(1352,800), "S19568C3");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C13*)(S19568C8*), ABISELECT(1352,800), "S19568C3");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C13*)(S19568C8*), ABISELECT(1352,800), "S19568C3");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C18*), ABISELECT(1352,800), "S19568C3");
    check_base_class_offset(lv, (S3572C5*)(S19568C12*)(S19568C18*), ABISELECT(1352,800), "S19568C3");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C12*)(S19568C18*), ABISELECT(1352,800), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*), ABISELECT(1392,824), "S19568C3");
    check_base_class_offset(lv, (S3572C4*)(S19568C11*)(S19568C9*), ABISELECT(1392,824), "S19568C3");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(1392,824), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C12*), ABISELECT(1392,824), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C12*), ABISELECT(1392,824), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C13*), ABISELECT(1392,824), "S19568C3");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C13*)(S19568C8*), ABISELECT(1392,824), "S19568C3");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C18*), ABISELECT(1392,824), "S19568C3");
    check_base_class_offset(lv, (S3572C4*)(S19568C12*)(S19568C18*), ABISELECT(1392,824), "S19568C3");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C12*)(S19568C18*), ABISELECT(1392,824), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*), ABISELECT(1312,780), "S19568C3");
    check_base_class_offset(lv, (S19568C4*)(S19568C10*), ABISELECT(1312,780), "S19568C3");
    check_base_class_offset(lv, (S19568C10*)(S19568C9*), ABISELECT(4168,2416), "S19568C3");
    /*is_ambiguous_... S19568C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C9*), ABISELECT(3648,2128), "S19568C3");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(3712,2160), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C12 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C12*), ABISELECT(4296,2508), "S19568C3");
    check_base_class_offset(lv, (S19568C12*)(S19568C11*)(S19568C9*), ABISELECT(4296,2508), "S19568C3");
    check_base_class_offset(lv, (S19568C11*)(S19568C9*), ABISELECT(3712,2160), "S19568C3");
    check_base_class_offset(lv, (S19568C9*)(S19568C8*), ABISELECT(3648,2128), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C13*), ABISELECT(4768,2788), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C13*), ABISELECT(4824,2820), "S19568C3");
    check_base_class_offset(lv, (S19568C13*)(S19568C14*)(S19568C8*), ABISELECT(4768,2788), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C14 */ AMB_check_base_class_offset(lv, (S19568C13*)(S19568C14*), ABISELECT(4768,2788), "S19568C3");
    check_base_class_offset(lv, (S19568C14*)(S19568C8*), ABISELECT(1456,856), "S19568C3");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C13*)(S19568C8*), ABISELECT(1520,888), "S19568C3");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C13*)(S19568C8*), ABISELECT(1576,920), "S19568C3");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C13*)(S19568C8*), ABISELECT(1520,888), "S19568C3");
    check_base_class_offset(lv, (S19568C8*), ABISELECT(1456,856), "S19568C3");
    check_base_class_offset(lv, (S3572C17*), 0, "S19568C3");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C18*), ABISELECT(4992,2912), "S19568C3");
    check_base_class_offset(lv, (S19568C4*)(S19568C12*)(S19568C18*), ABISELECT(5032,2932), "S19568C3");
    check_base_class_offset(lv, (S19568C12*)(S19568C18*), ABISELECT(5032,2932), "S19568C3");
    check_base_class_offset(lv, (S19568C18*), ABISELECT(4992,2912), "S19568C3");
    /*is_ambiguous_... S19568C3::S19568C14 */ AMB_check_base_class_offset(lv, (S19568C14*), ABISELECT(5536,3240), "S19568C3");
    check_field_offset(lv, s19568c3f0, ABISELECT(908,560), "S19568C3.s19568c3f0");
    check_field_offset(lv, s19568c3f1, ABISELECT(912,564), "S19568C3.s19568c3f1");
    check_field_offset(lv, s19568c3f2, ABISELECT(928,572), "S19568C3.s19568c3f2");
    test_class_info(&lv, &cd_S19568C3);
    dp->~S19568C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C3(Test_S19568C3, "S19568C3", ABISELECT(5600,3272));

#else // __cplusplus

extern void _ZN8S19568C3C1Ev();
extern void _ZN8S19568C3D2Ev();
Name_Map name_map_S19568C3[] = {
  NSPAIR(_ZN8S19568C3C1Ev),
  NSPAIR(_ZN8S19568C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C10;
extern VTBL_ENTRY _ZTI9S19568C10[];
extern  VTBL_ENTRY _ZTV9S19568C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C12;
extern VTBL_ENTRY _ZTI9S19568C12[];
extern  VTBL_ENTRY _ZTV9S19568C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C12[];
extern Class_Descriptor cd_S19568C11;
extern VTBL_ENTRY _ZTI9S19568C11[];
extern  VTBL_ENTRY _ZTV9S19568C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C11[];
extern Class_Descriptor cd_S19568C9;
extern VTBL_ENTRY _ZTI8S19568C9[];
extern  VTBL_ENTRY _ZTV8S19568C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C13;
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
extern Class_Descriptor cd_S19568C14;
extern VTBL_ENTRY _ZTI9S19568C14[];
extern  VTBL_ENTRY _ZTV9S19568C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C13;
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
extern Class_Descriptor cd_S19568C8;
extern VTBL_ENTRY _ZTI8S19568C8[];
extern  VTBL_ENTRY _ZTV8S19568C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C8[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C12;
extern VTBL_ENTRY _ZTI9S19568C12[];
extern  VTBL_ENTRY _ZTV9S19568C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C12[];
extern Class_Descriptor cd_S19568C18;
extern VTBL_ENTRY _ZTI9S19568C18[];
extern  VTBL_ENTRY _ZTV9S19568C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C18[];
extern Class_Descriptor cd_S19568C14;
extern VTBL_ENTRY _ZTI9S19568C14[];
extern  VTBL_ENTRY _ZTV9S19568C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C14[];
static Base_Class bases_S19568C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(1352,800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1392,824), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19568C4,    ABISELECT(1312,780), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19568C10,    ABISELECT(4168,2416), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3648,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
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(3712,2160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(4296,2508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19568C12,    ABISELECT(4296,2508), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19568C11,    ABISELECT(3712,2160), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19568C9,    ABISELECT(3648,2128), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(4768,2788), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(4824,2820), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19568C13,    ABISELECT(4768,2788), //bcp->offset
    88, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19568C14,    ABISELECT(1456,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
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1520,888), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(1576,920), //bcp->offset
    50, //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19568C13,    ABISELECT(1520,888), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19568C8,    ABISELECT(1456,856), //bcp->offset
    26, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19568C4,    ABISELECT(4992,2912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(5032,2932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19568C12,    ABISELECT(5032,2932), //bcp->offset
    116, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19568C18,    ABISELECT(4992,2912), //bcp->offset
    103, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19568C14,    ABISELECT(5536,3240), //bcp->offset
    122, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19568C3[];
extern void _ZN8S19568C3D1Ev();
extern void _ZN8S19568C3D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn1312_N8S19568C3D1Ev,_ZThn780_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn1312_N8S19568C3D0Ev,_ZThn780_N8S19568C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C3D1Ev,_ZTv0_n12_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn1392_N8S19568C3D1Ev,_ZThn824_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C3D0Ev,_ZTv0_n12_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn1392_N8S19568C3D0Ev,_ZThn824_N8S19568C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19568C3D1Ev,_ZTv0_n40_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn1456_N8S19568C3D1Ev,_ZThn856_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19568C3D0Ev,_ZTv0_n40_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn1456_N8S19568C3D0Ev,_ZThn856_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
extern void _ZN8S19568C82v3Ev();
extern void ABISELECT(_ZTvn64_n80_N8S19568C3D1Ev,_ZTvn32_n40_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19568C3D0Ev,_ZTvn32_n40_N8S19568C3D0Ev)();
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZTvn120_n80_N8S19568C3D1Ev,_ZTvn64_n40_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19568C3D0Ev,_ZTvn64_n40_N8S19568C3D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19568C3D1Ev,_ZTv0_n32_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn3648_N8S19568C3D1Ev,_ZThn2128_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19568C3D0Ev,_ZTv0_n32_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn3648_N8S19568C3D0Ev,_ZThn2128_N8S19568C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S19568C3D1Ev,_ZTvn32_n32_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19568C3D0Ev,_ZTvn32_n32_N8S19568C3D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn4168_N8S19568C3D1Ev,_ZThn2416_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn4168_N8S19568C3D0Ev,_ZThn2416_N8S19568C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn4296_N8S19568C3D1Ev,_ZThn2508_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn4296_N8S19568C3D0Ev,_ZThn2508_N8S19568C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn4768_N8S19568C3D1Ev,_ZThn2788_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn4768_N8S19568C3D0Ev,_ZThn2788_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S19568C3D1Ev,_ZTvn32_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19568C3D0Ev,_ZTvn32_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn4992_N8S19568C3D1Ev,_ZThn2912_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn4992_N8S19568C3D0Ev,_ZThn2912_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C182v4Ev();
extern void _ZN9S19568C182v5Ev();
extern void _ZN9S19568C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N8S19568C3D1Ev,_ZTvn20_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19568C3D0Ev,_ZTvn20_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn5536_N8S19568C3D1Ev,_ZThn3240_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn5536_N8S19568C3D0Ev,_ZThn3240_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
static  VTBL_ENTRY vtc_S19568C3[] = {
  ABISELECT(5536,3240),
  ABISELECT(4992,2912),
  ABISELECT(4768,2788),
  ABISELECT(4296,2508),
  ABISELECT(4168,2416),
  ABISELECT(3648,2128),
  ABISELECT(1456,856),
  ABISELECT(1392,824),
  ABISELECT(1352,800),
  ABISELECT(1312,780),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&_ZN8S19568C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C3D0Ev,
  ABISELECT(-1312,-780),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1312,-780),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
  ABISELECT(-1392,-824),
  ABISELECT(-1392,-824),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C3D1Ev,_ZTv0_n12_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C3D0Ev,_ZTv0_n12_N8S19568C3D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1456,-856),
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  ABISELECT(-1456,-856),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C3D1Ev,_ZTv0_n40_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C3D0Ev,_ZTv0_n40_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19568C82v3Ev,
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1520,-888),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C3D1Ev,_ZTvn32_n40_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C3D0Ev,_ZTvn32_n40_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1576,-920),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C3D1Ev,_ZTvn64_n40_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C3D0Ev,_ZTvn64_n40_N8S19568C3D0Ev),
  ABISELECT(-3648,-2128),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-3648,-2128),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C3D1Ev,_ZTv0_n32_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C3D0Ev,_ZTv0_n32_N8S19568C3D0Ev),
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-3712,-2160),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C3D1Ev,_ZTvn32_n32_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C3D0Ev,_ZTvn32_n32_N8S19568C3D0Ev),
  ABISELECT(-4168,-2416),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-4168,-2416),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev),
  ABISELECT(-4296,-2508),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-4296,-2508),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
  0,
  ABISELECT(-4768,-2788),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-4768,-2788),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-4824,-2820),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C3D1Ev,_ZTvn32_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C3D0Ev,_ZTvn32_n20_N8S19568C3D0Ev),
  0,
  0,
  0,
  ABISELECT(-4992,-2912),
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  ABISELECT(-4992,-2912),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v6Ev,
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-5032,-2932),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C3D1Ev,_ZTvn20_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C3D0Ev,_ZTvn20_n20_N8S19568C3D0Ev),
  0,
  ABISELECT(-5536,-3240),
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  ABISELECT(-5536,-3240),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
};
extern VTBL_ENTRY _ZTV8S19568C3[];
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C3[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19568C4D1Ev,_ZThn44_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19568C4D0Ev,_ZThn44_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C4__8S19568C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void _ZN8S19568C8D1Ev();
extern void _ZN8S19568C8D0Ev();
extern void _ZN9S19568C142v2Ev();
extern void _ZN8S19568C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C8__8S19568C3[] = {
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&_ZN8S19568C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C8D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19568C82v3Ev,
};
extern void _ZN9S19568C14D1Ev();
extern void _ZN9S19568C14D0Ev();
extern void _ZN9S19568C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C148S19568C8__8S19568C3[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&_ZN9S19568C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZThn3312_N9S19568C14D1Ev,_ZThn1932_N9S19568C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev)();
extern void ABISELECT(_ZThn3312_N9S19568C14D0Ev,_ZThn1932_N9S19568C14D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C148S19568C8__8S19568C3[] = {
  0,
  ABISELECT(-3312,-1932),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-3312,-1932),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C148S19568C8__8S19568C3[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-3368,-1964),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C148S19568C8__8S19568C3[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev),
};
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C138S19568C8__A1__8S19568C3[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C138S19568C8__A4__8S19568C3[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C138S19568C8__A1__8S19568C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C138S19568C8__A1__8S19568C3[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2192_N8S19568C8D1Ev,_ZThn1272_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2192_N8S19568C8D0Ev,_ZThn1272_N8S19568C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C9__8S19568C8__8S19568C3[] = {
  ABISELECT(-2192,-1272),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2712_N8S19568C8D1Ev,_ZThn1560_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2712_N8S19568C8D0Ev,_ZThn1560_N8S19568C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C8__8S19568C3[] = {
  ABISELECT(-2712,-1560),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-2712,-1560),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C8__8S19568C3[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19568C8D1Ev,_ZTv0_n12_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C8D0Ev,_ZTv0_n12_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C8__8S19568C3[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C8D1Ev,_ZTv0_n12_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C8D0Ev,_ZTv0_n12_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19568C8D1Ev,_ZTvn32_n32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19568C8D0Ev,_ZTvn32_n32_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C118S19568C9__8S19568C8__8S19568C3[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-2256,-1304),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C8D1Ev,_ZTvn32_n32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C8D0Ev,_ZTvn32_n32_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2840_N8S19568C8D1Ev,_ZThn1652_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2840_N8S19568C8D0Ev,_ZThn1652_N8S19568C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C8__8S19568C3[] = {
  ABISELECT(-2840,-1652),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-2840,-1652),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn3312_N8S19568C8D1Ev,_ZThn1932_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn3312_N8S19568C8D0Ev,_ZThn1932_N8S19568C8D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__8S19568C8__8S19568C3[] = {
  0,
  ABISELECT(-3312,-1932),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-3312,-1932),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19568C8D1Ev,_ZTvn32_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19568C8D0Ev,_ZTvn32_n20_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A3__8S19568C8__8S19568C3[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-3368,-1964),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C8D1Ev,_ZTvn32_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C8D0Ev,_ZTvn32_n20_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19568C8D1Ev,_ZThn32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19568C8D0Ev,_ZThn32_N8S19568C8D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__A__8S19568C8__8S19568C3[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C8D1Ev,_ZThn32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C8D0Ev,_ZThn32_N8S19568C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZThn120_N8S19568C8D1Ev,_ZThn64_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19568C8D0Ev,_ZThn64_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A4__8S19568C8__8S19568C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19568C8D1Ev,_ZThn64_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19568C8D0Ev,_ZThn64_N8S19568C8D0Ev),
};
extern void _ZN8S19568C9D1Ev();
extern void _ZN8S19568C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C9__8S19568C3[] = {
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&_ZN8S19568C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C9D0Ev,
};
extern void _ZN9S19568C11D1Ev();
extern void _ZN9S19568C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C118S19568C9__8S19568C3[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&_ZN9S19568C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C11D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C118S19568C9__A1__8S19568C3[] = {
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C118S19568C9__A1__8S19568C3[] = {
  ABISELECT(2320,1336),
  ABISELECT(2320,1336),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C118S19568C9__8S19568C3[] = {
  ABISELECT(2320,1336),
  ABISELECT(2320,1336),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev)();
extern void ABISELECT(_ZThn584_N9S19568C11D1Ev,_ZThn348_N9S19568C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev)();
extern void ABISELECT(_ZThn584_N9S19568C11D0Ev,_ZThn348_N9S19568C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__9S19568C118S19568C9__8S19568C3[] = {
  ABISELECT(-584,-348),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-584,-348),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn520_N8S19568C9D1Ev,_ZThn288_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn520_N8S19568C9D0Ev,_ZThn288_N8S19568C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C9__8S19568C3[] = {
  ABISELECT(-520,-288),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C9__8S19568C3[] = {
  ABISELECT(2336,1348),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2336,1348),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C9__8S19568C3[] = {
  ABISELECT(2256,1304),
  ABISELECT(2256,1304),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19568C9D1Ev,_ZThn32_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19568C9D0Ev,_ZThn32_N8S19568C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C11__8S19568C9__8S19568C3[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C9D1Ev,_ZThn32_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C9D0Ev,_ZThn32_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn648_N8S19568C9D1Ev,_ZThn380_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn648_N8S19568C9D0Ev,_ZThn380_N8S19568C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C9__8S19568C3[] = {
  ABISELECT(-648,-380),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-648,-380),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev),
};
extern void _ZN9S19568C10D1Ev();
extern void _ZN9S19568C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C3[] = {
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&_ZN9S19568C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C10__8S19568C3[] = {
  ABISELECT(2856,1636),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2856,1636),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C10__8S19568C3[] = {
  ABISELECT(2776,1592),
  ABISELECT(2776,1592),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev),
};
extern void _ZN9S19568C12D1Ev();
extern void _ZN9S19568C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C3[] = {
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&_ZN9S19568C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C12D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C12__A2__8S19568C3[] = {
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C12__A2__8S19568C3[] = {
  ABISELECT(2904,1684),
  ABISELECT(2904,1684),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C12__8S19568C3[] = {
  ABISELECT(2904,1684),
  ABISELECT(2904,1684),
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev),
};
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__8S19568C3[] = {
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A3__8S19568C3[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C13__A3__8S19568C3[] = {
  ABISELECT(3432,1996),
  ABISELECT(3432,1996),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C13__8S19568C3[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C13__8S19568C3[] = {
  ABISELECT(3376,1964),
  ABISELECT(3376,1964),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
extern void _ZN9S19568C18D1Ev();
extern void _ZN9S19568C18D0Ev();
extern void _ZN9S19568C182v4Ev();
extern void _ZN9S19568C182v5Ev();
extern void _ZN9S19568C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C18__8S19568C3[] = {
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&_ZN9S19568C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v6Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C18__A5__8S19568C3[] = {
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C18__A5__8S19568C3[] = {
  ABISELECT(3600,2088),
  ABISELECT(3600,2088),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void _ZN9S19568C12D1Ev();
extern void _ZN9S19568C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C129S19568C18__A1__8S19568C3[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&_ZN9S19568C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C12D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C129S19568C18__A6__8S19568C3[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C129S19568C18__A6__8S19568C3[] = {
  ABISELECT(3640,2108),
  ABISELECT(3640,2108),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C129S19568C18__A1__8S19568C3[] = {
  ABISELECT(3640,2108),
  ABISELECT(3640,2108),
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C18D1Ev,_ZTv0_n12_N9S19568C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C18D0Ev,_ZTv0_n12_N9S19568C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C18__8S19568C3[] = {
  ABISELECT(3600,2088),
  ABISELECT(3600,2088),
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C18D1Ev,_ZTv0_n12_N9S19568C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C18D0Ev,_ZTv0_n12_N9S19568C18D0Ev),
};
extern void ABISELECT(_ZThn40_N9S19568C18D1Ev,_ZThn20_N9S19568C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S19568C18D0Ev,_ZThn20_N9S19568C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C12__9S19568C18__8S19568C3[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19568C18D1Ev,_ZThn20_N9S19568C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19568C18D0Ev,_ZThn20_N9S19568C18D0Ev),
};
extern void _ZN9S19568C14D1Ev();
extern void _ZN9S19568C14D0Ev();
extern void _ZN9S19568C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C14__A1__8S19568C3[] = {
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&_ZN9S19568C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C14__A1__8S19568C3[] = {
  0,
  ABISELECT(768,452),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(768,452),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C14__A1__8S19568C3[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(712,420),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C14__A1__8S19568C3[] = {
  ABISELECT(4144,2416),
  ABISELECT(4144,2416),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev),
};
static  VTT_ENTRY vtt_S19568C3[] = {
  {&(_ZTV8S19568C3[12]),  12,132},
  {&(_ZTV8S19568C3[19]),  19,132},
  {&(_ZTV8S19568C3[24]),  24,132},
  {&(_ZTV8S19568C3[39]),  39,132},
  {&(_ZTV8S19568C3[64]),  64,132},
  {&(_ZTV8S19568C3[79]),  79,132},
  {&(_ZTV8S19568C3[71]),  71,132},
  {&(_ZTV8S19568C3[86]),  86,132},
  {&(_ZTV8S19568C3[94]),  94,132},
  {&(_ZTV8S19568C3[101]),  101,132},
  {&(_ZTV8S19568C3[47]),  47,132},
  {&(_ZTV8S19568C3[54]),  54,132},
  {&(_ZTV8S19568C3[111]),  111,132},
  {&(_ZTV8S19568C3[120]),  120,132},
  {&(_ZTV8S19568C3[129]),  129,132},
  {&(_tg__ZTV8S19568C4__8S19568C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C4__8S19568C3[3]),  3,5},
  {&(_tg__ZTV8S19568C8__8S19568C3[9]),  9,13},
  {&(_tg__ZTV9S19568C148S19568C8__8S19568C3[5]),  5,8},
  {&(_tg__ZTV9S19568C13__9S19568C148S19568C8__8S19568C3[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C148S19568C8__8S19568C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C148S19568C8__8S19568C3[3]),  3,5},
  {&(_tg__ZTV9S19568C138S19568C8__A1__8S19568C3[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C138S19568C8__A4__8S19568C3[3]),  3,5},
  {&(_tg__ZTV8S19568C4__9S19568C138S19568C8__A1__8S19568C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C138S19568C8__A1__8S19568C3[3]),  3,5},
  {&(_tg__ZTV8S19568C9__8S19568C8__8S19568C3[8]),  8,10},
  {&(_tg__ZTV9S19568C10__8S19568C8__8S19568C3[6]),  6,8},
  {&(_tg__ZTV8S19568C4__8S19568C8__8S19568C3[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19568C8__8S19568C3[3]),  3,5},
  {&(_tg__ZTV9S19568C118S19568C9__8S19568C8__8S19568C3[5]),  5,7},
  {&(_tg__ZTV9S19568C12__8S19568C8__8S19568C3[5]),  5,7},
  {&(_tg__ZTV9S19568C13__8S19568C8__8S19568C3[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__A3__8S19568C8__8S19568C3[4]),  4,6},
  {&(_tg__ZTV9S19568C13__A__8S19568C8__8S19568C3[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C13__A4__8S19568C8__8S19568C3[4]),  4,6},
  {&(_tg__ZTV8S19568C9__8S19568C3[7]),  7,9},
  {&(_tg__ZTV9S19568C118S19568C9__8S19568C3[5]),  5,7},
  {&(_tg__ZTV8S19568C49S19568C118S19568C9__A1__8S19568C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C118S19568C9__A1__8S19568C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C118S19568C9__8S19568C3[3]),  3,5},
  {&(_tg__ZTV9S19568C12__9S19568C118S19568C9__8S19568C3[5]),  5,7},
  {&(_tg__ZTV9S19568C10__8S19568C9__8S19568C3[6]),  6,8},
  {&(_tg__ZTV8S19568C4__8S19568C9__8S19568C3[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19568C9__8S19568C3[3]),  3,5},
  {&(_tg__ZTV9S19568C11__8S19568C9__8S19568C3[5]),  5,7},
  {&(_tg__ZTV9S19568C12__8S19568C9__8S19568C3[5]),  5,7},
  {&(_tg__ZTV9S19568C10__8S19568C3[5]),  5,7},
  {&(_tg__ZTV8S19568C4__9S19568C10__8S19568C3[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19568C10__8S19568C3[3]),  3,5},
  {&(_tg__ZTV9S19568C12__8S19568C3[4]),  4,6},
  {&(_tg__ZTV8S19568C49S19568C12__A2__8S19568C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C12__A2__8S19568C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C12__8S19568C3[3]),  3,5},
  {&(_tg__ZTV9S19568C13__8S19568C3[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C13__A3__8S19568C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C13__A3__8S19568C3[3]),  3,5},
  {&(_tg__ZTV8S19568C4__9S19568C13__8S19568C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C13__8S19568C3[3]),  3,5},
  {&(_tg__ZTV9S19568C18__8S19568C3[4]),  4,9},
  {&(_tg__ZTV8S19568C49S19568C18__A5__8S19568C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C18__A5__8S19568C3[3]),  3,5},
  {&(_tg__ZTV9S19568C129S19568C18__A1__8S19568C3[4]),  4,6},
  {&(_tg__ZTV8S19568C49S19568C129S19568C18__A6__8S19568C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C129S19568C18__A6__8S19568C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C129S19568C18__A1__8S19568C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C18__8S19568C3[3]),  3,5},
  {&(_tg__ZTV9S19568C12__9S19568C18__8S19568C3[4]),  4,6},
  {&(_tg__ZTV9S19568C14__A1__8S19568C3[5]),  5,8},
  {&(_tg__ZTV9S19568C13__9S19568C14__A1__8S19568C3[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C14__A1__8S19568C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C14__A1__8S19568C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19568C3[];
extern  VTBL_ENTRY _ZTV8S19568C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C3[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19568C9D0Ev,_ZThn380_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19568C9D1Ev,_ZThn380_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19568C9D0Ev,_ZThn288_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19568C9D1Ev,_ZThn288_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19568C11D0Ev,_ZThn348_N9S19568C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19568C11D1Ev,_ZThn348_N9S19568C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19568C8D0Ev,_ZThn1932_N8S19568C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19568C8D0Ev,_ZThn1652_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19568C8D1Ev,_ZThn1932_N8S19568C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19568C8D1Ev,_ZThn1652_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19568C8D0Ev,_ZThn1560_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19568C8D1Ev,_ZThn1560_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19568C8D0Ev,_ZThn1272_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19568C8D1Ev,_ZThn1272_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19568C14D0Ev,_ZThn1932_N9S19568C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19568C14D1Ev,_ZThn1932_N9S19568C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19568C4D0Ev,_ZThn44_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19568C4D1Ev,_ZThn44_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S19568C3D0Ev,_ZThn3240_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4168_N8S19568C3D0Ev,_ZThn2416_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S19568C3D1Ev,_ZThn3240_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4168_N8S19568C3D1Ev,_ZThn2416_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C3D0Ev,_ZTv0_n32_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3648_N8S19568C3D0Ev,_ZThn2128_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C3D1Ev,_ZTv0_n32_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3648_N8S19568C3D1Ev,_ZThn2128_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C3D0Ev,_ZTv0_n40_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S19568C3D0Ev,_ZThn856_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C3D1Ev,_ZTv0_n40_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S19568C3D1Ev,_ZThn856_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C3D0Ev,_ZTv0_n12_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19568C3D0Ev,_ZThn824_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C3D1Ev,_ZTv0_n12_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19568C3D1Ev,_ZThn824_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4992_N8S19568C3D0Ev,_ZThn2912_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N8S19568C3D0Ev,_ZThn2788_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4296_N8S19568C3D0Ev,_ZThn2508_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19568C3D0Ev,_ZThn780_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4992_N8S19568C3D1Ev,_ZThn2912_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N8S19568C3D1Ev,_ZThn2788_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4296_N8S19568C3D1Ev,_ZThn2508_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19568C3D1Ev,_ZThn780_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C3 = {  "S19568C3", // class name
  bases_S19568C3, 24,
  &(vtc_S19568C3[0]), // expected_vtbl_contents
  &(vtt_S19568C3[0]), // expected_vtt_contents
  ABISELECT(5600,3272), // object size
  NSPAIRA(_ZTI8S19568C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19568C3),132, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19568C3),73, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C20  : virtual S3572C21 , virtual S19568C13 , S3572C22 , S3572C5 {
  char s19568c20f0[7];
  void *s19568c20f1;
  long double s19568c20f2;
  ::S19568C12 s19568c20f3;
  __tsi64 s19568c20f4;
  __tsi64 s19568c20f5;
  long s19568c20f6;
  int s19568c20f7;
  int s19568c20f8;
  __tsi64 s19568c20f9[3];
  long double s19568c20f10;
  virtual  ~S19568C20(); // _ZN9S19568C20D2Ev
  virtual void  v7(); // _ZN9S19568C202v7Ev
  S19568C20(); // tgen
};
//SIG(-1 S19568C20) C1{ VBC2{ vd m FD} VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} BC5{ vd m FC4 FC6{}} BC7{ VBC4 VBC5 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} BC8{ m Fp Fi[2] FU9{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v1 Fc[7] Fp FD FC10{ VBC4 VBC5 BC7 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} FL FL Fl Fi Fi FL[3] FD}


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

static void Test_S19568C20()
{
  extern Class_Descriptor cd_S19568C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(75,176)];
    init_test(&cd_S19568C20, buf);
    S19568C20 *dp, &lv = *(dp=new (buf) S19568C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1184,700), "sizeof(S19568C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C20)");
    check_base_class_offset(lv, (S3572C21*), ABISELECT(832,504), "S19568C20");
    check_base_class_offset(lv, (S3572C5*)(S19568C13*), ABISELECT(1088,644), "S19568C20");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C13*), ABISELECT(1088,644), "S19568C20");
    /*is_ambiguous_... S19568C13::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C13*), ABISELECT(864,520), "S19568C20");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C13*), ABISELECT(1128,668), "S19568C20");
    check_base_class_offset(lv, (S19568C4*)(S19568C13*), ABISELECT(920,552), "S19568C20");
    check_base_class_offset(lv, (S19568C13*), ABISELECT(864,520), "S19568C20");
    check_base_class_offset(lv, (S3572C22*), ABISELECT(16,4), "S19568C20");
    /*is_ambiguous_... S19568C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*), ABISELECT(112,56), "S19568C20");
    check_field_offset(lv, s19568c20f0, ABISELECT(152,80), "S19568C20.s19568c20f0");
    check_field_offset(lv, s19568c20f1, ABISELECT(160,88), "S19568C20.s19568c20f1");
    check_field_offset(lv, s19568c20f2, ABISELECT(176,92), "S19568C20.s19568c20f2");
    check_field_offset(lv, s19568c20f3, ABISELECT(192,104), "S19568C20.s19568c20f3");
    check_field_offset(lv, s19568c20f4, ABISELECT(752,440), "S19568C20.s19568c20f4");
    check_field_offset(lv, s19568c20f5, ABISELECT(760,448), "S19568C20.s19568c20f5");
    check_field_offset(lv, s19568c20f6, ABISELECT(768,456), "S19568C20.s19568c20f6");
    check_field_offset(lv, s19568c20f7, ABISELECT(776,460), "S19568C20.s19568c20f7");
    check_field_offset(lv, s19568c20f8, ABISELECT(780,464), "S19568C20.s19568c20f8");
    check_field_offset(lv, s19568c20f9, ABISELECT(784,468), "S19568C20.s19568c20f9");
    check_field_offset(lv, s19568c20f10, ABISELECT(816,492), "S19568C20.s19568c20f10");
    test_class_info(&lv, &cd_S19568C20);
    dp->~S19568C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C20(Test_S19568C20, "S19568C20", ABISELECT(1184,700));

#else // __cplusplus

extern void _ZN9S19568C20C1Ev();
extern void _ZN9S19568C20D2Ev();
Name_Map name_map_S19568C20[] = {
  NSPAIR(_ZN9S19568C20C1Ev),
  NSPAIR(_ZN9S19568C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C13;
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
static Base_Class bases_S19568C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    ABISELECT(832,504), //bcp->offset
    9, //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_S3572C5,    ABISELECT(1088,644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(864,520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1128,668), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19568C4,    ABISELECT(920,552), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19568C13,    ABISELECT(864,520), //bcp->offset
    14, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C22,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C5,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19568C20[];
extern void _ZN9S19568C20D1Ev();
extern void _ZN9S19568C20D0Ev();
extern void _ZN9S19568C202v7Ev();
extern void ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev)();
extern void ABISELECT(_ZThn832_N9S19568C20D1Ev,_ZThn504_N9S19568C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev)();
extern void ABISELECT(_ZThn832_N9S19568C20D0Ev,_ZThn504_N9S19568C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C20D1Ev,_ZTv0_n20_N9S19568C20D1Ev)();
extern void ABISELECT(_ZThn864_N9S19568C20D1Ev,_ZThn520_N9S19568C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C20D0Ev,_ZTv0_n20_N9S19568C20D0Ev)();
extern void ABISELECT(_ZThn864_N9S19568C20D0Ev,_ZThn520_N9S19568C20D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N9S19568C20D1Ev,_ZTvn32_n20_N9S19568C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C20D0Ev,_ZTvn32_n20_N9S19568C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev)();
extern void ABISELECT(_ZThn1128_N9S19568C20D1Ev,_ZThn668_N9S19568C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev)();
extern void ABISELECT(_ZThn1128_N9S19568C20D0Ev,_ZThn668_N9S19568C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C20[] = {
  ABISELECT(1128,668),
  ABISELECT(1088,644),
  ABISELECT(864,520),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&_ZN9S19568C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C202v7Ev,
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev),
  0,
  ABISELECT(-864,-520),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-864,-520),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C20D1Ev,_ZTv0_n20_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C20D0Ev,_ZTv0_n20_N9S19568C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-920,-552),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C20D1Ev,_ZTvn32_n20_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C20D0Ev,_ZTvn32_n20_N9S19568C20D0Ev),
  ABISELECT(-1128,-668),
  ABISELECT(-1128,-668),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S19568C20[];
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C20[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C20[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S19568C4D1Ev,_ZThn116_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S19568C4D0Ev,_ZThn116_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C13__9S19568C20[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C13__9S19568C20[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S19568C13D1Ev,_ZThn148_N9S19568C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S19568C13D0Ev,_ZThn148_N9S19568C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C13__9S19568C20[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
static  VTT_ENTRY vtt_S19568C20[] = {
  {&(_ZTV9S19568C20[6]),  6,34},
  {&(_ZTV9S19568C20[12]),  12,34},
  {&(_ZTV9S19568C20[20]),  20,34},
  {&(_ZTV9S19568C20[27]),  27,34},
  {&(_ZTV9S19568C20[32]),  32,34},
  {&(_tg__ZTV9S19568C13__9S19568C20[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C20[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C13__9S19568C20[3]),  3,5},
  {&(_tg__ZTV8S19568C4__9S19568C13__9S19568C20[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C13__9S19568C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19568C20[];
extern  VTBL_ENTRY _ZTV9S19568C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C20[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19568C13D0Ev,_ZThn148_N9S19568C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19568C13D1Ev,_ZThn148_N9S19568C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19568C4D0Ev,_ZThn116_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19568C4D1Ev,_ZThn116_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C20D0Ev,_ZTv0_n20_N9S19568C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19568C20D0Ev,_ZThn520_N9S19568C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C20D1Ev,_ZTv0_n20_N9S19568C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19568C20D1Ev,_ZThn520_N9S19568C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N9S19568C20D0Ev,_ZThn668_N9S19568C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S19568C20D0Ev,_ZThn504_N9S19568C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N9S19568C20D1Ev,_ZThn668_N9S19568C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S19568C20D1Ev,_ZThn504_N9S19568C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C20 = {  "S19568C20", // class name
  bases_S19568C20, 8,
  &(vtc_S19568C20[0]), // expected_vtbl_contents
  &(vtt_S19568C20[0]), // expected_vtt_contents
  ABISELECT(1184,700), // object size
  NSPAIRA(_ZTI9S19568C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19568C20),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19568C20),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C19  : S19568C20 {
  ::S19568C11 s19568c19f0;
  int s19568c19f1:7;
  ::S19568C11 s19568c19f2;
  ::S3572C24 s19568c19f3;
  virtual  ~S19568C19(); // _ZN9S19568C19D2Ev
  virtual void  v8(); // _ZN9S19568C192v8Ev
  S19568C19(); // tgen
};
//SIG(-1 S19568C19) C1{ BC2{ VBC3{ vd m FD} VBC4{ VBC5{ m Fp Fs Fi Fp Fl[2]} BC6{ vd m FC5 FC7{}} BC8{ VBC5 VBC6 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} BC9{ m Fp Fi[2] FU10{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC5 vd v3 Fc[7] Fp FD FC11{ VBC5 VBC6 BC8 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} FL FL Fl Fi Fi FL[3] FD} vd v1 FC12{ VBC6 BC8 VBC11 vd FC4} Fi:7 FC12 FC13{ vd m Fi[4] FL Fi FC14{ VBC5 VBC6 Fc:1 Fp[3]} Fi FD Fi Fi FL FL Fs}}


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

static void Test_S19568C19()
{
  extern Class_Descriptor cd_S19568C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(207,483)];
    init_test(&cd_S19568C19, buf);
    S19568C19 *dp, &lv = *(dp=new (buf) S19568C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3296,1928), "sizeof(S19568C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C19)");
    check_base_class_offset(lv, (S3572C21*)(S19568C20*), ABISELECT(2944,1732), "S19568C19");
    check_base_class_offset(lv, (S3572C5*)(S19568C13*), ABISELECT(3200,1872), "S19568C19");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C13*), ABISELECT(3200,1872), "S19568C19");
    /*is_ambiguous_... S19568C13::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C13*), ABISELECT(2976,1748), "S19568C19");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C13*), ABISELECT(3240,1896), "S19568C19");
    check_base_class_offset(lv, (S19568C4*)(S19568C13*), ABISELECT(3032,1780), "S19568C19");
    check_base_class_offset(lv, (S19568C13*)(S19568C20*), ABISELECT(2976,1748), "S19568C19");
    check_base_class_offset(lv, (S3572C22*)(S19568C20*), ABISELECT(16,4), "S19568C19");
    /*is_ambiguous_... S19568C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C20*), ABISELECT(112,56), "S19568C19");
    check_base_class_offset(lv, (S19568C20*), 0, "S19568C19");
    check_field_offset(lv, s19568c19f0, ABISELECT(832,504), "S19568C19.s19568c19f0");
    set_bf_and_test(lv, s19568c19f1, ABISELECT(1760,1040), 0, 7, 1, "S19568C19");
    set_bf_and_test(lv, s19568c19f1, ABISELECT(1760,1040), 0, 7, hide_sll(1LL<<6), "S19568C19");
    check_field_offset(lv, s19568c19f2, ABISELECT(1776,1044), "S19568C19.s19568c19f2");
    check_field_offset(lv, s19568c19f3, ABISELECT(2704,1580), "S19568C19.s19568c19f3");
    test_class_info(&lv, &cd_S19568C19);
    dp->~S19568C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C19(Test_S19568C19, "S19568C19", ABISELECT(3296,1928));

#else // __cplusplus

extern void _ZN9S19568C19C1Ev();
extern void _ZN9S19568C19D2Ev();
Name_Map name_map_S19568C19[] = {
  NSPAIR(_ZN9S19568C19C1Ev),
  NSPAIR(_ZN9S19568C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C13;
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S19568C20;
extern VTBL_ENTRY _ZTI9S19568C20[];
extern  VTBL_ENTRY _ZTV9S19568C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C20[];
static Base_Class bases_S19568C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    ABISELECT(2944,1732), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3572C5,    ABISELECT(3200,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
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2976,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(3240,1896), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19568C4,    ABISELECT(3032,1780), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19568C13,    ABISELECT(2976,1748), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3572C5,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19568C20,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19568C19[];
extern void _ZN9S19568C19D1Ev();
extern void _ZN9S19568C19D0Ev();
extern void _ZN9S19568C202v7Ev();
extern void _ZN9S19568C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C19D1Ev,_ZThn1732_N9S19568C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C19D0Ev,_ZThn1732_N9S19568C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C19D1Ev,_ZTv0_n20_N9S19568C19D1Ev)();
extern void ABISELECT(_ZThn2976_N9S19568C19D1Ev,_ZThn1748_N9S19568C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C19D0Ev,_ZTv0_n20_N9S19568C19D0Ev)();
extern void ABISELECT(_ZThn2976_N9S19568C19D0Ev,_ZThn1748_N9S19568C19D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N9S19568C19D1Ev,_ZTvn32_n20_N9S19568C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C19D0Ev,_ZTvn32_n20_N9S19568C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev)();
extern void ABISELECT(_ZThn3240_N9S19568C19D1Ev,_ZThn1896_N9S19568C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev)();
extern void ABISELECT(_ZThn3240_N9S19568C19D0Ev,_ZThn1896_N9S19568C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C19[] = {
  ABISELECT(3240,1896),
  ABISELECT(3200,1872),
  ABISELECT(2976,1748),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&_ZN9S19568C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C19D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19568C192v8Ev,
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev),
  0,
  ABISELECT(-2976,-1748),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-2976,-1748),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C19D1Ev,_ZTv0_n20_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C19D0Ev,_ZTv0_n20_N9S19568C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-3032,-1780),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C19D1Ev,_ZTvn32_n20_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C19D0Ev,_ZTvn32_n20_N9S19568C19D0Ev),
  ABISELECT(-3240,-1896),
  ABISELECT(-3240,-1896),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S19568C19[];
extern void _ZN9S19568C20D1Ev();
extern void _ZN9S19568C20D0Ev();
extern void _ZN9S19568C202v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C20__9S19568C19[] = {
  ABISELECT(3240,1896),
  ABISELECT(3200,1872),
  ABISELECT(2976,1748),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&_ZN9S19568C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C20D1Ev,_ZThn1732_N9S19568C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C20D0Ev,_ZThn1732_N9S19568C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__9S19568C20__9S19568C19[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19568C20D1Ev,_ZTv0_n20_N9S19568C20D1Ev)();
extern void ABISELECT(_ZThn2976_N9S19568C20D1Ev,_ZThn1748_N9S19568C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C20D0Ev,_ZTv0_n20_N9S19568C20D0Ev)();
extern void ABISELECT(_ZThn2976_N9S19568C20D0Ev,_ZThn1748_N9S19568C20D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C20__9S19568C19[] = {
  0,
  ABISELECT(-2976,-1748),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-2976,-1748),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C20D1Ev,_ZTv0_n20_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C20D0Ev,_ZTv0_n20_N9S19568C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C20D1Ev,_ZTvn32_n20_N9S19568C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C20D0Ev,_ZTvn32_n20_N9S19568C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C20__9S19568C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-3032,-1780),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C20D1Ev,_ZTvn32_n20_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C20D0Ev,_ZTvn32_n20_N9S19568C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev)();
extern void ABISELECT(_ZThn3240_N9S19568C20D1Ev,_ZThn1896_N9S19568C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev)();
extern void ABISELECT(_ZThn3240_N9S19568C20D0Ev,_ZThn1896_N9S19568C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C20__9S19568C19[] = {
  ABISELECT(-3240,-1896),
  ABISELECT(-3240,-1896),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev),
};
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C19[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S19568C4D1Ev,_ZThn116_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S19568C4D0Ev,_ZThn116_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C13__9S19568C19[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C13__9S19568C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S19568C13D1Ev,_ZThn148_N9S19568C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S19568C13D0Ev,_ZThn148_N9S19568C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C13__9S19568C19[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
static  VTT_ENTRY vtt_S19568C19[] = {
  {&(_ZTV9S19568C19[6]),  6,35},
  {&(_tg__ZTV9S19568C20__9S19568C19[6]),  6,9},
  {&(_tg__ZTV8S3572C21__9S19568C20__9S19568C19[3]),  3,5},
  {&(_tg__ZTV9S19568C13__9S19568C20__9S19568C19[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C20__9S19568C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C20__9S19568C19[3]),  3,5},
  {&(_ZTV9S19568C19[13]),  13,35},
  {&(_ZTV9S19568C19[21]),  21,35},
  {&(_ZTV9S19568C19[28]),  28,35},
  {&(_ZTV9S19568C19[33]),  33,35},
  {&(_tg__ZTV9S19568C13__9S19568C19[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C13__9S19568C19[3]),  3,5},
  {&(_tg__ZTV8S19568C4__9S19568C13__9S19568C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C13__9S19568C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19568C19[];
extern  VTBL_ENTRY _ZTV9S19568C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C19[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19568C13D0Ev,_ZThn148_N9S19568C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19568C13D1Ev,_ZThn148_N9S19568C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19568C4D0Ev,_ZThn116_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19568C4D1Ev,_ZThn116_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C20D0Ev,_ZTv0_n20_N9S19568C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N9S19568C20D0Ev,_ZThn1748_N9S19568C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C20D1Ev,_ZTv0_n20_N9S19568C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N9S19568C20D1Ev,_ZThn1748_N9S19568C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S19568C20D0Ev,_ZThn1896_N9S19568C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C20D0Ev,_ZThn1732_N9S19568C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S19568C20D1Ev,_ZThn1896_N9S19568C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C20D1Ev,_ZThn1732_N9S19568C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C19D0Ev,_ZTv0_n20_N9S19568C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N9S19568C19D0Ev,_ZThn1748_N9S19568C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C19D1Ev,_ZTv0_n20_N9S19568C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N9S19568C19D1Ev,_ZThn1748_N9S19568C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S19568C19D0Ev,_ZThn1896_N9S19568C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C19D0Ev,_ZThn1732_N9S19568C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S19568C19D1Ev,_ZThn1896_N9S19568C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C19D1Ev,_ZThn1732_N9S19568C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C19 = {  "S19568C19", // class name
  bases_S19568C19, 9,
  &(vtc_S19568C19[0]), // expected_vtbl_contents
  &(vtt_S19568C19[0]), // expected_vtt_contents
  ABISELECT(3296,1928), // object size
  NSPAIRA(_ZTI9S19568C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19568C19),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19568C19),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C2  : S19568C3 , virtual S19568C19 {
  __tsi64 s19568c2f0;
  int s19568c2f1;
  char s19568c2f2;
  virtual void  v9(); // _ZN8S19568C22v9Ev
  ~S19568C2(); // tgen
  S19568C2(); // tgen
};
//SIG(-1 S19568C2) C1{ BC2{ VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ vd m FC4 FC6{}} Fc:1 Fp[3]} VBC7{ VBC8{ VBC9{ VBC4 VBC3 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} BC5 BC10{ VBC5 BC3 VBC11{ VBC4 VBC5 BC3 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC12{ VBC4 BC5 BC3 vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC13{ VBC12 vd v3 Fi Fp Fi:2 FD Fp} BC12 vd v4 Fi FL Fi:6 FC14{ BC15{ VBC4 VBC5 Fc:1 Fp[3]} VBC16{ VBC4 BC5 BC15 vd v10 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC17{ BC18{ VBC5 BC15 VBC19{ VBC4 VBC5 BC15 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC16} VBC20{ VBC4 VBC15 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} VBC16 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC21{ vd m FC20 FC19 Fp Fi Fp FL FD Fs Fp FL Fi} VBC22{ BC3 BC11 vd v5 v6 v7 Fi Fi:2 FD Fp[2]} VBC13 vd Fi FL FC14} VBC23{ BC24{ VBC25{ vd m FD} VBC12 BC26{ m Fp Fi[2] FU27{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v8 Fc[7] Fp FD FC11 FL FL Fl Fi Fi FL[3] FD} vd v9 FC10 Fi:7 FC10 FC28{ vd m Fi[4] FL Fi FC15 Fi FD Fi Fi FL FL Fs}} v1 FL Fi Fc}


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

static void Test_S19568C2()
{
  extern Class_Descriptor cd_S19568C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(538,1260)];
    init_test(&cd_S19568C2, buf);
    S19568C2 *dp, &lv = *(dp=new (buf) S19568C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8592,5036), "sizeof(S19568C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C2)");
    /*is_ambiguous_... S19568C2::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*), ABISELECT(1368,816), "S19568C2");
    check_base_class_offset(lv, (S3572C5*)(S19568C10*), ABISELECT(1368,816), "S19568C2");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(1368,816), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C12*), ABISELECT(1368,816), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C12*), ABISELECT(1368,816), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C13*), ABISELECT(1368,816), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C13*), ABISELECT(1368,816), "S19568C2");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C13*)(S19568C8*), ABISELECT(1368,816), "S19568C2");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C13*)(S19568C8*), ABISELECT(1368,816), "S19568C2");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C18*), ABISELECT(1368,816), "S19568C2");
    check_base_class_offset(lv, (S3572C5*)(S19568C12*)(S19568C18*), ABISELECT(1368,816), "S19568C2");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C12*)(S19568C18*), ABISELECT(1368,816), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*), ABISELECT(1408,840), "S19568C2");
    check_base_class_offset(lv, (S3572C4*)(S19568C11*)(S19568C9*), ABISELECT(1408,840), "S19568C2");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(1408,840), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C12*), ABISELECT(1408,840), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C12*), ABISELECT(1408,840), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C13*), ABISELECT(1408,840), "S19568C2");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C13*)(S19568C8*), ABISELECT(1408,840), "S19568C2");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C18*), ABISELECT(1408,840), "S19568C2");
    check_base_class_offset(lv, (S3572C4*)(S19568C12*)(S19568C18*), ABISELECT(1408,840), "S19568C2");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C12*)(S19568C18*), ABISELECT(1408,840), "S19568C2");
    /*is_ambiguous_... S19568C3::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C3*), ABISELECT(1328,796), "S19568C2");
    check_base_class_offset(lv, (S19568C4*)(S19568C10*), ABISELECT(1328,796), "S19568C2");
    check_base_class_offset(lv, (S19568C10*)(S19568C9*), ABISELECT(4184,2432), "S19568C2");
    /*is_ambiguous_... S19568C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C9*), ABISELECT(3664,2144), "S19568C2");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(3728,2176), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C12 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C12*), ABISELECT(4312,2524), "S19568C2");
    check_base_class_offset(lv, (S19568C12*)(S19568C11*)(S19568C9*), ABISELECT(4312,2524), "S19568C2");
    check_base_class_offset(lv, (S19568C11*)(S19568C9*), ABISELECT(3728,2176), "S19568C2");
    check_base_class_offset(lv, (S19568C9*)(S19568C8*), ABISELECT(3664,2144), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C13*), ABISELECT(4784,2804), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C13*), ABISELECT(4840,2836), "S19568C2");
    check_base_class_offset(lv, (S19568C13*)(S19568C14*)(S19568C8*), ABISELECT(4784,2804), "S19568C2");
    /*is_ambiguous_... S19568C2::S19568C14 */ AMB_check_base_class_offset(lv, (S19568C13*)(S19568C14*), ABISELECT(4784,2804), "S19568C2");
    check_base_class_offset(lv, (S19568C13*)(S19568C20*)(S19568C19*), ABISELECT(4784,2804), "S19568C2");
    check_base_class_offset(lv, (S19568C14*)(S19568C8*), ABISELECT(1472,872), "S19568C2");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C13*)(S19568C8*), ABISELECT(1536,904), "S19568C2");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C13*)(S19568C8*), ABISELECT(1592,936), "S19568C2");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C13*)(S19568C8*), ABISELECT(1536,904), "S19568C2");
    check_base_class_offset(lv, (S19568C8*)(S19568C3*), ABISELECT(1472,872), "S19568C2");
    check_base_class_offset(lv, (S3572C17*)(S19568C3*), 0, "S19568C2");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C18*), ABISELECT(5008,2928), "S19568C2");
    check_base_class_offset(lv, (S19568C4*)(S19568C12*)(S19568C18*), ABISELECT(5048,2948), "S19568C2");
    check_base_class_offset(lv, (S19568C12*)(S19568C18*), ABISELECT(5048,2948), "S19568C2");
    check_base_class_offset(lv, (S19568C18*)(S19568C3*), ABISELECT(5008,2928), "S19568C2");
    /*is_ambiguous_... S19568C3::S19568C14 */ AMB_check_base_class_offset(lv, (S19568C14*)(S19568C3*), ABISELECT(5552,3256), "S19568C2");
    check_base_class_offset(lv, (S19568C3*), 0, "S19568C2");
    check_base_class_offset(lv, (S3572C21*)(S19568C20*)(S19568C19*), ABISELECT(8560,5020), "S19568C2");
    check_base_class_offset(lv, (S3572C22*)(S19568C20*)(S19568C19*), ABISELECT(5632,3292), "S19568C2");
    /*is_ambiguous_... S19568C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C20*)(S19568C19*), ABISELECT(5728,3344), "S19568C2");
    check_base_class_offset(lv, (S19568C20*)(S19568C19*), ABISELECT(5616,3288), "S19568C2");
    check_base_class_offset(lv, (S19568C19*), ABISELECT(5616,3288), "S19568C2");
    check_field_offset(lv, s19568c2f0, ABISELECT(1312,780), "S19568C2.s19568c2f0");
    check_field_offset(lv, s19568c2f1, ABISELECT(1320,788), "S19568C2.s19568c2f1");
    check_field_offset(lv, s19568c2f2, ABISELECT(1324,792), "S19568C2.s19568c2f2");
    test_class_info(&lv, &cd_S19568C2);
    dp->~S19568C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C2(Test_S19568C2, "S19568C2", ABISELECT(8592,5036));

#else // __cplusplus

extern void _ZN8S19568C2C1Ev();
extern void _ZN8S19568C2D1Ev();
Name_Map name_map_S19568C2[] = {
  NSPAIR(_ZN8S19568C2C1Ev),
  NSPAIR(_ZN8S19568C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C10;
extern VTBL_ENTRY _ZTI9S19568C10[];
extern  VTBL_ENTRY _ZTV9S19568C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C12;
extern VTBL_ENTRY _ZTI9S19568C12[];
extern  VTBL_ENTRY _ZTV9S19568C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C12[];
extern Class_Descriptor cd_S19568C11;
extern VTBL_ENTRY _ZTI9S19568C11[];
extern  VTBL_ENTRY _ZTV9S19568C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C11[];
extern Class_Descriptor cd_S19568C9;
extern VTBL_ENTRY _ZTI8S19568C9[];
extern  VTBL_ENTRY _ZTV8S19568C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C13;
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
extern Class_Descriptor cd_S19568C14;
extern VTBL_ENTRY _ZTI9S19568C14[];
extern  VTBL_ENTRY _ZTV9S19568C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C13;
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
extern Class_Descriptor cd_S19568C8;
extern VTBL_ENTRY _ZTI8S19568C8[];
extern  VTBL_ENTRY _ZTV8S19568C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C8[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C12;
extern VTBL_ENTRY _ZTI9S19568C12[];
extern  VTBL_ENTRY _ZTV9S19568C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C12[];
extern Class_Descriptor cd_S19568C18;
extern VTBL_ENTRY _ZTI9S19568C18[];
extern  VTBL_ENTRY _ZTV9S19568C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C18[];
extern Class_Descriptor cd_S19568C14;
extern VTBL_ENTRY _ZTI9S19568C14[];
extern  VTBL_ENTRY _ZTV9S19568C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C14[];
extern Class_Descriptor cd_S19568C3;
extern VTBL_ENTRY _ZTI8S19568C3[];
extern  VTBL_ENTRY _ZTV8S19568C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C3[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S19568C20;
extern VTBL_ENTRY _ZTI9S19568C20[];
extern  VTBL_ENTRY _ZTV9S19568C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C20[];
extern Class_Descriptor cd_S19568C19;
extern VTBL_ENTRY _ZTI9S19568C19[];
extern  VTBL_ENTRY _ZTV9S19568C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C19[];
static Base_Class bases_S19568C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(1368,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
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1408,840), //bcp->offset
    24, //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_S19568C4,    ABISELECT(1328,796), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19568C10,    ABISELECT(4184,2432), //bcp->offset
    76, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3664,2144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(3728,2176), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(4312,2524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19568C12,    ABISELECT(4312,2524), //bcp->offset
    84, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19568C11,    ABISELECT(3728,2176), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19568C9,    ABISELECT(3664,2144), //bcp->offset
    59, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(4784,2804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(4840,2836), //bcp->offset
    100, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19568C13,    ABISELECT(4784,2804), //bcp->offset
    91, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19568C14,    ABISELECT(1472,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1536,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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(1592,936), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19568C13,    ABISELECT(1536,904), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19568C8,    ABISELECT(1472,872), //bcp->offset
    29, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3572C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(5008,2928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(5048,2948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19568C12,    ABISELECT(5048,2948), //bcp->offset
    119, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19568C18,    ABISELECT(5008,2928), //bcp->offset
    106, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19568C14,    ABISELECT(5552,3256), //bcp->offset
    125, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19568C3,    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
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C21,    ABISELECT(8560,5020), //bcp->offset
    148, //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
    28, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(5632,3292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(5728,3344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19568C20,    ABISELECT(5616,3288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19568C19,    ABISELECT(5616,3288), //bcp->offset
    135, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19568C2[];
extern void _ZN8S19568C2D1Ev();
extern void _ZN8S19568C2D0Ev();
extern void _ZN8S19568C22v9Ev();
extern void ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19568C2D1Ev,_ZThn796_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19568C2D0Ev,_ZThn796_N8S19568C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C2D1Ev,_ZTv0_n12_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn1408_N8S19568C2D1Ev,_ZThn840_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C2D0Ev,_ZTv0_n12_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn1408_N8S19568C2D0Ev,_ZThn840_N8S19568C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19568C2D1Ev,_ZTv0_n40_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn1472_N8S19568C2D1Ev,_ZThn872_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19568C2D0Ev,_ZTv0_n40_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn1472_N8S19568C2D0Ev,_ZThn872_N8S19568C2D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
extern void _ZN8S19568C82v3Ev();
extern void ABISELECT(_ZTvn64_n80_N8S19568C2D1Ev,_ZTvn32_n40_N8S19568C2D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19568C2D0Ev,_ZTvn32_n40_N8S19568C2D0Ev)();
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZTvn120_n80_N8S19568C2D1Ev,_ZTvn64_n40_N8S19568C2D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19568C2D0Ev,_ZTvn64_n40_N8S19568C2D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19568C2D1Ev,_ZTv0_n32_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn3664_N8S19568C2D1Ev,_ZThn2144_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19568C2D0Ev,_ZTv0_n32_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn3664_N8S19568C2D0Ev,_ZThn2144_N8S19568C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S19568C2D1Ev,_ZTvn32_n32_N8S19568C2D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19568C2D0Ev,_ZTvn32_n32_N8S19568C2D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19568C2D1Ev,_ZTv0_n24_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn4184_N8S19568C2D1Ev,_ZThn2432_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C2D0Ev,_ZTv0_n24_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn4184_N8S19568C2D0Ev,_ZThn2432_N8S19568C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn4312_N8S19568C2D1Ev,_ZThn2524_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn4312_N8S19568C2D0Ev,_ZThn2524_N8S19568C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn4784_N8S19568C2D1Ev,_ZThn2804_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn4784_N8S19568C2D0Ev,_ZThn2804_N8S19568C2D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S19568C2D1Ev,_ZTvn32_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19568C2D0Ev,_ZTvn32_n20_N8S19568C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn5008_N8S19568C2D1Ev,_ZThn2928_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn5008_N8S19568C2D0Ev,_ZThn2928_N8S19568C2D0Ev)() __attribute__((weak));
extern void _ZN9S19568C182v4Ev();
extern void _ZN9S19568C182v5Ev();
extern void _ZN9S19568C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N8S19568C2D1Ev,_ZTvn20_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19568C2D0Ev,_ZTvn20_n20_N8S19568C2D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19568C2D1Ev,_ZTv0_n24_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn5552_N8S19568C2D1Ev,_ZThn3256_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C2D0Ev,_ZTv0_n24_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn5552_N8S19568C2D0Ev,_ZThn3256_N8S19568C2D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S19568C2D1Ev,_ZTv0_n28_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn5616_N8S19568C2D1Ev,_ZThn3288_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19568C2D0Ev,_ZTv0_n28_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn5616_N8S19568C2D0Ev,_ZThn3288_N8S19568C2D0Ev)() __attribute__((weak));
extern void _ZN9S19568C202v7Ev();
extern void _ZN9S19568C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N8S19568C2D1Ev,_ZTv0_n12_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn8560_N8S19568C2D1Ev,_ZThn5020_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C2D0Ev,_ZTv0_n12_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn8560_N8S19568C2D0Ev,_ZThn5020_N8S19568C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C2[] = {
  ABISELECT(8560,5020),
  ABISELECT(5616,3288),
  ABISELECT(5552,3256),
  ABISELECT(5008,2928),
  ABISELECT(4784,2804),
  ABISELECT(4312,2524),
  ABISELECT(4184,2432),
  ABISELECT(3664,2144),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&_ZN8S19568C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19568C22v9Ev,
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev),
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C2D1Ev,_ZTv0_n12_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C2D0Ev,_ZTv0_n12_N8S19568C2D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C2D1Ev,_ZTv0_n40_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C2D0Ev,_ZTv0_n40_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19568C82v3Ev,
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C2D1Ev,_ZTvn32_n40_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C2D0Ev,_ZTvn32_n40_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C2D1Ev,_ZTvn64_n40_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C2D0Ev,_ZTvn64_n40_N8S19568C2D0Ev),
  ABISELECT(-3664,-2144),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-3664,-2144),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C2D1Ev,_ZTv0_n32_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C2D0Ev,_ZTv0_n32_N8S19568C2D0Ev),
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-3728,-2176),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C2D1Ev,_ZTvn32_n32_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C2D0Ev,_ZTvn32_n32_N8S19568C2D0Ev),
  ABISELECT(-4184,-2432),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-4184,-2432),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C2D1Ev,_ZTv0_n24_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C2D0Ev,_ZTv0_n24_N8S19568C2D0Ev),
  ABISELECT(-4312,-2524),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-4312,-2524),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev),
  0,
  ABISELECT(-4784,-2804),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-4784,-2804),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-4840,-2836),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C2D1Ev,_ZTvn32_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C2D0Ev,_ZTvn32_n20_N8S19568C2D0Ev),
  0,
  0,
  0,
  ABISELECT(-5008,-2928),
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  ABISELECT(-5008,-2928),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v6Ev,
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-5048,-2948),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C2D1Ev,_ZTvn20_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C2D0Ev,_ZTvn20_n20_N8S19568C2D0Ev),
  0,
  ABISELECT(-5552,-3256),
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3256),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C2D1Ev,_ZTv0_n24_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C2D0Ev,_ZTv0_n24_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  0,
  0,
  ABISELECT(-5616,-3288),
  ABISELECT(-4208,-2448),
  ABISELECT(-4248,-2472),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  ABISELECT(-5616,-3288),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19568C2D1Ev,_ZTv0_n28_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19568C2D0Ev,_ZTv0_n28_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19568C192v8Ev,
  ABISELECT(-8560,-5020),
  ABISELECT(-8560,-5020),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C2D1Ev,_ZTv0_n12_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C2D0Ev,_ZTv0_n12_N8S19568C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19568C2[];
extern void _ZN8S19568C3D1Ev();
extern void _ZN8S19568C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C3__8S19568C2[] = {
  ABISELECT(5552,3256),
  ABISELECT(5008,2928),
  ABISELECT(4784,2804),
  ABISELECT(4312,2524),
  ABISELECT(4184,2432),
  ABISELECT(3664,2144),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&_ZN8S19568C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C3D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19568C3D1Ev,_ZThn796_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19568C3D0Ev,_ZThn796_N8S19568C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C3__8S19568C2[] = {
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19568C3D1Ev,_ZTv0_n12_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn1408_N8S19568C3D1Ev,_ZThn840_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C3D0Ev,_ZTv0_n12_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn1408_N8S19568C3D0Ev,_ZThn840_N8S19568C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C3__8S19568C2[] = {
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C3D1Ev,_ZTv0_n12_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C3D0Ev,_ZTv0_n12_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S19568C3D1Ev,_ZTv0_n40_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn1472_N8S19568C3D1Ev,_ZThn872_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19568C3D0Ev,_ZTv0_n40_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn1472_N8S19568C3D0Ev,_ZThn872_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
extern void _ZN8S19568C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C8__8S19568C3__8S19568C2[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C3D1Ev,_ZTv0_n40_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C3D0Ev,_ZTv0_n40_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19568C82v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19568C3D1Ev,_ZTv0_n32_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn3664_N8S19568C3D1Ev,_ZThn2144_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19568C3D0Ev,_ZTv0_n32_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn3664_N8S19568C3D0Ev,_ZThn2144_N8S19568C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C9__8S19568C3__8S19568C2[] = {
  ABISELECT(-3664,-2144),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-3664,-2144),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C3D1Ev,_ZTv0_n32_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C3D0Ev,_ZTv0_n32_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn4184_N8S19568C3D1Ev,_ZThn2432_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn4184_N8S19568C3D0Ev,_ZThn2432_N8S19568C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C3__8S19568C2[] = {
  ABISELECT(-4184,-2432),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-4184,-2432),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19568C3D1Ev,_ZTvn32_n32_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19568C3D0Ev,_ZTvn32_n32_N8S19568C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C118S19568C9__8S19568C3__8S19568C2[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-3728,-2176),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C3D1Ev,_ZTvn32_n32_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C3D0Ev,_ZTvn32_n32_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn4312_N8S19568C3D1Ev,_ZThn2524_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn4312_N8S19568C3D0Ev,_ZThn2524_N8S19568C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C3__8S19568C2[] = {
  ABISELECT(-4312,-2524),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-4312,-2524),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn4784_N8S19568C3D1Ev,_ZThn2804_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn4784_N8S19568C3D0Ev,_ZThn2804_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__8S19568C3__8S19568C2[] = {
  0,
  ABISELECT(-4784,-2804),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-4784,-2804),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19568C3D1Ev,_ZTvn32_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19568C3D0Ev,_ZTvn32_n20_N8S19568C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A3__8S19568C3__8S19568C2[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-4840,-2836),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C3D1Ev,_ZTvn32_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C3D0Ev,_ZTvn32_n20_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S19568C3D1Ev,_ZTvn32_n40_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19568C3D0Ev,_ZTvn32_n40_N8S19568C3D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C138S19568C8__A1__8S19568C3__8S19568C2[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C3D1Ev,_ZTvn32_n40_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C3D0Ev,_ZTvn32_n40_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S19568C3D1Ev,_ZTvn64_n40_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19568C3D0Ev,_ZTvn64_n40_N8S19568C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C3__8S19568C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C3D1Ev,_ZTvn64_n40_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C3D0Ev,_ZTvn64_n40_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn5008_N8S19568C3D1Ev,_ZThn2928_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn5008_N8S19568C3D0Ev,_ZThn2928_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C182v4Ev();
extern void _ZN9S19568C182v5Ev();
extern void _ZN9S19568C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C18__8S19568C3__8S19568C2[] = {
  0,
  0,
  0,
  ABISELECT(-5008,-2928),
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  ABISELECT(-5008,-2928),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S19568C3D1Ev,_ZTvn20_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19568C3D0Ev,_ZTvn20_n20_N8S19568C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C129S19568C18__A1__8S19568C3__8S19568C2[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-5048,-2948),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C3D1Ev,_ZTvn20_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C3D0Ev,_ZTvn20_n20_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn5552_N8S19568C3D1Ev,_ZThn3256_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn5552_N8S19568C3D0Ev,_ZThn3256_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C14__A1__8S19568C3__8S19568C2[] = {
  0,
  ABISELECT(-5552,-3256),
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3256),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C2[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19568C4D1Ev,_ZThn44_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19568C4D0Ev,_ZThn44_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C4__8S19568C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void _ZN8S19568C8D1Ev();
extern void _ZN8S19568C8D0Ev();
extern void _ZN9S19568C142v2Ev();
extern void _ZN8S19568C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C8__8S19568C2[] = {
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&_ZN8S19568C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C8D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19568C82v3Ev,
};
extern void _ZN9S19568C14D1Ev();
extern void _ZN9S19568C14D0Ev();
extern void _ZN9S19568C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C148S19568C8__8S19568C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&_ZN9S19568C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZThn3312_N9S19568C14D1Ev,_ZThn1932_N9S19568C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev)();
extern void ABISELECT(_ZThn3312_N9S19568C14D0Ev,_ZThn1932_N9S19568C14D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C148S19568C8__8S19568C2[] = {
  0,
  ABISELECT(-3312,-1932),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-3312,-1932),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C148S19568C8__8S19568C2[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-3368,-1964),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C148S19568C8__8S19568C2[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev),
};
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C138S19568C8__A1__8S19568C2[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C138S19568C8__A4__8S19568C2[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C138S19568C8__A1__8S19568C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C138S19568C8__A1__8S19568C2[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2192_N8S19568C8D1Ev,_ZThn1272_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2192_N8S19568C8D0Ev,_ZThn1272_N8S19568C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C9__8S19568C8__8S19568C2[] = {
  ABISELECT(-2192,-1272),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2712_N8S19568C8D1Ev,_ZThn1560_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2712_N8S19568C8D0Ev,_ZThn1560_N8S19568C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C8__8S19568C2[] = {
  ABISELECT(-2712,-1560),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-2712,-1560),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C8__8S19568C2[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19568C8D1Ev,_ZTv0_n12_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C8D0Ev,_ZTv0_n12_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C8__8S19568C2[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C8D1Ev,_ZTv0_n12_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C8D0Ev,_ZTv0_n12_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19568C8D1Ev,_ZTvn32_n32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19568C8D0Ev,_ZTvn32_n32_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C118S19568C9__8S19568C8__8S19568C2[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-2256,-1304),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C8D1Ev,_ZTvn32_n32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C8D0Ev,_ZTvn32_n32_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2840_N8S19568C8D1Ev,_ZThn1652_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2840_N8S19568C8D0Ev,_ZThn1652_N8S19568C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C8__8S19568C2[] = {
  ABISELECT(-2840,-1652),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-2840,-1652),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn3312_N8S19568C8D1Ev,_ZThn1932_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn3312_N8S19568C8D0Ev,_ZThn1932_N8S19568C8D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__8S19568C8__8S19568C2[] = {
  0,
  ABISELECT(-3312,-1932),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-3312,-1932),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19568C8D1Ev,_ZTvn32_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19568C8D0Ev,_ZTvn32_n20_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A3__8S19568C8__8S19568C2[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-3368,-1964),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C8D1Ev,_ZTvn32_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C8D0Ev,_ZTvn32_n20_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19568C8D1Ev,_ZThn32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19568C8D0Ev,_ZThn32_N8S19568C8D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__A__8S19568C8__8S19568C2[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C8D1Ev,_ZThn32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C8D0Ev,_ZThn32_N8S19568C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZThn120_N8S19568C8D1Ev,_ZThn64_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19568C8D0Ev,_ZThn64_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A4__8S19568C8__8S19568C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19568C8D1Ev,_ZThn64_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19568C8D0Ev,_ZThn64_N8S19568C8D0Ev),
};
extern void _ZN8S19568C9D1Ev();
extern void _ZN8S19568C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C9__8S19568C2[] = {
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&_ZN8S19568C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C9D0Ev,
};
extern void _ZN9S19568C11D1Ev();
extern void _ZN9S19568C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C118S19568C9__8S19568C2[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&_ZN9S19568C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C11D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C118S19568C9__A1__8S19568C2[] = {
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C118S19568C9__A1__8S19568C2[] = {
  ABISELECT(2320,1336),
  ABISELECT(2320,1336),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C118S19568C9__8S19568C2[] = {
  ABISELECT(2320,1336),
  ABISELECT(2320,1336),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev)();
extern void ABISELECT(_ZThn584_N9S19568C11D1Ev,_ZThn348_N9S19568C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev)();
extern void ABISELECT(_ZThn584_N9S19568C11D0Ev,_ZThn348_N9S19568C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__9S19568C118S19568C9__8S19568C2[] = {
  ABISELECT(-584,-348),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-584,-348),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn520_N8S19568C9D1Ev,_ZThn288_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn520_N8S19568C9D0Ev,_ZThn288_N8S19568C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C9__8S19568C2[] = {
  ABISELECT(-520,-288),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C9__8S19568C2[] = {
  ABISELECT(2336,1348),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2336,1348),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C9__8S19568C2[] = {
  ABISELECT(2256,1304),
  ABISELECT(2256,1304),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19568C9D1Ev,_ZThn32_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19568C9D0Ev,_ZThn32_N8S19568C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C11__8S19568C9__8S19568C2[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C9D1Ev,_ZThn32_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C9D0Ev,_ZThn32_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn648_N8S19568C9D1Ev,_ZThn380_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn648_N8S19568C9D0Ev,_ZThn380_N8S19568C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C9__8S19568C2[] = {
  ABISELECT(-648,-380),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-648,-380),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev),
};
extern void _ZN9S19568C10D1Ev();
extern void _ZN9S19568C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C2[] = {
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&_ZN9S19568C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C10__8S19568C2[] = {
  ABISELECT(2856,1636),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2856,1636),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C10__8S19568C2[] = {
  ABISELECT(2776,1592),
  ABISELECT(2776,1592),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev),
};
extern void _ZN9S19568C12D1Ev();
extern void _ZN9S19568C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C2[] = {
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&_ZN9S19568C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C12D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C12__A2__8S19568C2[] = {
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C12__A2__8S19568C2[] = {
  ABISELECT(2904,1684),
  ABISELECT(2904,1684),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C12__8S19568C2[] = {
  ABISELECT(2904,1684),
  ABISELECT(2904,1684),
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev),
};
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__8S19568C2[] = {
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A3__8S19568C2[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C13__A3__8S19568C2[] = {
  ABISELECT(3432,1996),
  ABISELECT(3432,1996),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C13__8S19568C2[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C13__8S19568C2[] = {
  ABISELECT(3376,1964),
  ABISELECT(3376,1964),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
extern void _ZN9S19568C18D1Ev();
extern void _ZN9S19568C18D0Ev();
extern void _ZN9S19568C182v4Ev();
extern void _ZN9S19568C182v5Ev();
extern void _ZN9S19568C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C18__8S19568C2[] = {
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&_ZN9S19568C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v6Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C18__A5__8S19568C2[] = {
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C18__A5__8S19568C2[] = {
  ABISELECT(3600,2088),
  ABISELECT(3600,2088),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void _ZN9S19568C12D1Ev();
extern void _ZN9S19568C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C129S19568C18__A1__8S19568C2[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&_ZN9S19568C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C12D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C129S19568C18__A6__8S19568C2[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C129S19568C18__A6__8S19568C2[] = {
  ABISELECT(3640,2108),
  ABISELECT(3640,2108),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C129S19568C18__A1__8S19568C2[] = {
  ABISELECT(3640,2108),
  ABISELECT(3640,2108),
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C18D1Ev,_ZTv0_n12_N9S19568C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C18D0Ev,_ZTv0_n12_N9S19568C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C18__8S19568C2[] = {
  ABISELECT(3600,2088),
  ABISELECT(3600,2088),
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C18D1Ev,_ZTv0_n12_N9S19568C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C18D0Ev,_ZTv0_n12_N9S19568C18D0Ev),
};
extern void ABISELECT(_ZThn40_N9S19568C18D1Ev,_ZThn20_N9S19568C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S19568C18D0Ev,_ZThn20_N9S19568C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C12__9S19568C18__8S19568C2[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19568C18D1Ev,_ZThn20_N9S19568C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19568C18D0Ev,_ZThn20_N9S19568C18D0Ev),
};
extern void _ZN9S19568C14D1Ev();
extern void _ZN9S19568C14D0Ev();
extern void _ZN9S19568C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C14__A1__8S19568C2[] = {
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&_ZN9S19568C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C14__A1__8S19568C2[] = {
  0,
  ABISELECT(768,452),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(768,452),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C14__A1__8S19568C2[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(712,420),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C14__A1__8S19568C2[] = {
  ABISELECT(4144,2416),
  ABISELECT(4144,2416),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev),
};
extern void _ZN9S19568C19D1Ev();
extern void _ZN9S19568C19D0Ev();
extern void _ZN9S19568C202v7Ev();
extern void _ZN9S19568C192v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C19__8S19568C2[] = {
  ABISELECT(-4208,-2448),
  ABISELECT(-4248,-2472),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&_ZN9S19568C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C19D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19568C192v8Ev,
};
extern void _ZN9S19568C20D1Ev();
extern void _ZN9S19568C20D0Ev();
extern void _ZN9S19568C202v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C209S19568C19__8S19568C2[] = {
  ABISELECT(-4208,-2448),
  ABISELECT(-4248,-2472),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&_ZN9S19568C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C20D1Ev,_ZThn1732_N9S19568C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C20D0Ev,_ZThn1732_N9S19568C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__9S19568C209S19568C19__8S19568C2[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19568C20D1Ev,_ZTv0_n20_N9S19568C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19568C20D0Ev,_ZTv0_n20_N9S19568C20D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C209S19568C19__8S19568C2[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C20D1Ev,_ZTv0_n20_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C20D0Ev,_ZTv0_n20_N9S19568C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C20D1Ev,_ZTvn32_n20_N9S19568C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C20D0Ev,_ZTvn32_n20_N9S19568C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C209S19568C19__8S19568C2[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C20D1Ev,_ZTvn32_n20_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C20D0Ev,_ZTvn32_n20_N9S19568C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C209S19568C19__8S19568C2[] = {
  ABISELECT(4208,2448),
  ABISELECT(4208,2448),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C19D1Ev,_ZThn1732_N9S19568C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C19D0Ev,_ZThn1732_N9S19568C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__9S19568C19__8S19568C2[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19568C19D1Ev,_ZTv0_n20_N9S19568C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19568C19D0Ev,_ZTv0_n20_N9S19568C19D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C19__8S19568C2[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C19D1Ev,_ZTv0_n20_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C19D0Ev,_ZTv0_n20_N9S19568C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C19D1Ev,_ZTvn32_n20_N9S19568C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C19D0Ev,_ZTvn32_n20_N9S19568C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C19__8S19568C2[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C19D1Ev,_ZTvn32_n20_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C19D0Ev,_ZTvn32_n20_N9S19568C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C19__8S19568C2[] = {
  ABISELECT(4208,2448),
  ABISELECT(4208,2448),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev),
};
static  VTT_ENTRY vtt_S19568C2[] = {
  {&(_ZTV8S19568C2[14]),  14,153},
  {&(_tg__ZTV8S19568C3__8S19568C2[12]),  12,14},
  {&(_tg__ZTV8S19568C4__8S19568C3__8S19568C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19568C3__8S19568C2[3]),  3,5},
  {&(_tg__ZTV8S19568C8__8S19568C3__8S19568C2[13]),  13,17},
  {&(_tg__ZTV8S19568C9__8S19568C3__8S19568C2[8]),  8,10},
  {&(_tg__ZTV9S19568C10__8S19568C3__8S19568C2[6]),  6,8},
  {&(_tg__ZTV9S19568C118S19568C9__8S19568C3__8S19568C2[5]),  5,7},
  {&(_tg__ZTV9S19568C12__8S19568C3__8S19568C2[5]),  5,7},
  {&(_tg__ZTV9S19568C13__8S19568C3__8S19568C2[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__A3__8S19568C3__8S19568C2[4]),  4,6},
  {&(_tg__ZTV9S19568C138S19568C8__A1__8S19568C3__8S19568C2[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C3__8S19568C2[4]),  4,6},
  {&(_tg__ZTV9S19568C18__8S19568C3__8S19568C2[8]),  8,13},
  {&(_tg__ZTV9S19568C129S19568C18__A1__8S19568C3__8S19568C2[4]),  4,6},
  {&(_tg__ZTV9S19568C14__A1__8S19568C3__8S19568C2[7]),  7,10},
  {&(_ZTV8S19568C2[22]),  22,153},
  {&(_ZTV8S19568C2[27]),  27,153},
  {&(_ZTV8S19568C2[42]),  42,153},
  {&(_ZTV8S19568C2[67]),  67,153},
  {&(_ZTV8S19568C2[82]),  82,153},
  {&(_ZTV8S19568C2[74]),  74,153},
  {&(_ZTV8S19568C2[89]),  89,153},
  {&(_ZTV8S19568C2[97]),  97,153},
  {&(_ZTV8S19568C2[104]),  104,153},
  {&(_ZTV8S19568C2[50]),  50,153},
  {&(_ZTV8S19568C2[57]),  57,153},
  {&(_ZTV8S19568C2[114]),  114,153},
  {&(_ZTV8S19568C2[123]),  123,153},
  {&(_ZTV8S19568C2[132]),  132,153},
  {&(_ZTV8S19568C2[144]),  144,153},
  {&(_ZTV8S19568C2[151]),  151,153},
  {&(_tg__ZTV8S19568C4__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C4__8S19568C2[3]),  3,5},
  {&(_tg__ZTV8S19568C8__8S19568C2[9]),  9,13},
  {&(_tg__ZTV9S19568C148S19568C8__8S19568C2[5]),  5,8},
  {&(_tg__ZTV9S19568C13__9S19568C148S19568C8__8S19568C2[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C148S19568C8__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C148S19568C8__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C138S19568C8__A1__8S19568C2[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C138S19568C8__A4__8S19568C2[3]),  3,5},
  {&(_tg__ZTV8S19568C4__9S19568C138S19568C8__A1__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C138S19568C8__A1__8S19568C2[3]),  3,5},
  {&(_tg__ZTV8S19568C9__8S19568C8__8S19568C2[8]),  8,10},
  {&(_tg__ZTV9S19568C10__8S19568C8__8S19568C2[6]),  6,8},
  {&(_tg__ZTV8S19568C4__8S19568C8__8S19568C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19568C8__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C118S19568C9__8S19568C8__8S19568C2[5]),  5,7},
  {&(_tg__ZTV9S19568C12__8S19568C8__8S19568C2[5]),  5,7},
  {&(_tg__ZTV9S19568C13__8S19568C8__8S19568C2[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__A3__8S19568C8__8S19568C2[4]),  4,6},
  {&(_tg__ZTV9S19568C13__A__8S19568C8__8S19568C2[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C13__A4__8S19568C8__8S19568C2[4]),  4,6},
  {&(_tg__ZTV8S19568C9__8S19568C2[7]),  7,9},
  {&(_tg__ZTV9S19568C118S19568C9__8S19568C2[5]),  5,7},
  {&(_tg__ZTV8S19568C49S19568C118S19568C9__A1__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C118S19568C9__A1__8S19568C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C118S19568C9__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C12__9S19568C118S19568C9__8S19568C2[5]),  5,7},
  {&(_tg__ZTV9S19568C10__8S19568C9__8S19568C2[6]),  6,8},
  {&(_tg__ZTV8S19568C4__8S19568C9__8S19568C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19568C9__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C11__8S19568C9__8S19568C2[5]),  5,7},
  {&(_tg__ZTV9S19568C12__8S19568C9__8S19568C2[5]),  5,7},
  {&(_tg__ZTV9S19568C10__8S19568C2[5]),  5,7},
  {&(_tg__ZTV8S19568C4__9S19568C10__8S19568C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19568C10__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C12__8S19568C2[4]),  4,6},
  {&(_tg__ZTV8S19568C49S19568C12__A2__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C12__A2__8S19568C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C12__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C13__8S19568C2[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C13__A3__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C13__A3__8S19568C2[3]),  3,5},
  {&(_tg__ZTV8S19568C4__9S19568C13__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C13__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C18__8S19568C2[4]),  4,9},
  {&(_tg__ZTV8S19568C49S19568C18__A5__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C18__A5__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C129S19568C18__A1__8S19568C2[4]),  4,6},
  {&(_tg__ZTV8S19568C49S19568C129S19568C18__A6__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C129S19568C18__A6__8S19568C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C129S19568C18__A1__8S19568C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C18__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C12__9S19568C18__8S19568C2[4]),  4,6},
  {&(_tg__ZTV9S19568C14__A1__8S19568C2[5]),  5,8},
  {&(_tg__ZTV9S19568C13__9S19568C14__A1__8S19568C2[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C14__A1__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C14__A1__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C19__8S19568C2[6]),  6,10},
  {&(_tg__ZTV9S19568C209S19568C19__8S19568C2[6]),  6,9},
  {&(_tg__ZTV8S3572C21__9S19568C209S19568C19__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C13__9S19568C209S19568C19__8S19568C2[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C209S19568C19__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C209S19568C19__8S19568C2[3]),  3,5},
  {&(_tg__ZTV8S3572C21__9S19568C19__8S19568C2[3]),  3,5},
  {&(_tg__ZTV9S19568C13__9S19568C19__8S19568C2[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C19__8S19568C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C19__8S19568C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19568C2[];
extern  VTBL_ENTRY _ZTV8S19568C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C2[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C19D0Ev,_ZThn1732_N9S19568C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C19D1Ev,_ZThn1732_N9S19568C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C20D0Ev,_ZThn1732_N9S19568C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C20D1Ev,_ZThn1732_N9S19568C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19568C9D0Ev,_ZThn380_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19568C9D1Ev,_ZThn380_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19568C9D0Ev,_ZThn288_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19568C9D1Ev,_ZThn288_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19568C11D0Ev,_ZThn348_N9S19568C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19568C11D1Ev,_ZThn348_N9S19568C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19568C8D0Ev,_ZThn1932_N8S19568C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19568C8D0Ev,_ZThn1652_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19568C8D1Ev,_ZThn1932_N8S19568C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19568C8D1Ev,_ZThn1652_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19568C8D0Ev,_ZThn1560_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19568C8D1Ev,_ZThn1560_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19568C8D0Ev,_ZThn1272_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19568C8D1Ev,_ZThn1272_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19568C14D0Ev,_ZThn1932_N9S19568C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19568C14D1Ev,_ZThn1932_N9S19568C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19568C4D0Ev,_ZThn44_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19568C4D1Ev,_ZThn44_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19568C3D0Ev,_ZThn3256_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19568C3D0Ev,_ZThn2432_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19568C3D1Ev,_ZThn3256_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19568C3D1Ev,_ZThn2432_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C3D0Ev,_ZTv0_n32_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19568C3D0Ev,_ZThn2144_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C3D1Ev,_ZTv0_n32_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19568C3D1Ev,_ZThn2144_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C3D0Ev,_ZTv0_n40_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19568C3D0Ev,_ZThn872_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C3D1Ev,_ZTv0_n40_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19568C3D1Ev,_ZThn872_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C3D0Ev,_ZTv0_n12_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19568C3D0Ev,_ZThn840_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C3D1Ev,_ZTv0_n12_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19568C3D1Ev,_ZThn840_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19568C3D0Ev,_ZThn2928_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19568C3D0Ev,_ZThn2804_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19568C3D0Ev,_ZThn2524_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19568C3D0Ev,_ZThn796_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19568C3D1Ev,_ZThn2928_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19568C3D1Ev,_ZThn2804_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19568C3D1Ev,_ZThn2524_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19568C3D1Ev,_ZThn796_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19568C2D0Ev,_ZTv0_n28_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S19568C2D0Ev,_ZThn3288_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19568C2D1Ev,_ZTv0_n28_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S19568C2D1Ev,_ZThn3288_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C2D0Ev,_ZTv0_n24_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19568C2D0Ev,_ZThn3256_N8S19568C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19568C2D0Ev,_ZThn2432_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C2D1Ev,_ZTv0_n24_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19568C2D1Ev,_ZThn3256_N8S19568C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19568C2D1Ev,_ZThn2432_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C2D0Ev,_ZTv0_n32_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19568C2D0Ev,_ZThn2144_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C2D1Ev,_ZTv0_n32_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19568C2D1Ev,_ZThn2144_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C2D0Ev,_ZTv0_n40_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19568C2D0Ev,_ZThn872_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C2D1Ev,_ZTv0_n40_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19568C2D1Ev,_ZThn872_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C2D0Ev,_ZTv0_n12_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19568C2D0Ev,_ZThn5020_N8S19568C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19568C2D0Ev,_ZThn840_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C2D1Ev,_ZTv0_n12_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19568C2D1Ev,_ZThn5020_N8S19568C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19568C2D1Ev,_ZThn840_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19568C2D0Ev,_ZThn2928_N8S19568C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19568C2D0Ev,_ZThn2804_N8S19568C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19568C2D0Ev,_ZThn2524_N8S19568C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19568C2D0Ev,_ZThn796_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19568C2D1Ev,_ZThn2928_N8S19568C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19568C2D1Ev,_ZThn2804_N8S19568C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19568C2D1Ev,_ZThn2524_N8S19568C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19568C2D1Ev,_ZThn796_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C2 = {  "S19568C2", // class name
  bases_S19568C2, 30,
  &(vtc_S19568C2[0]), // expected_vtbl_contents
  &(vtt_S19568C2[0]), // expected_vtt_contents
  ABISELECT(8592,5036), // object size
  NSPAIRA(_ZTI8S19568C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19568C2),153, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19568C2),100, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C25  : S19568C10 {
  int s19568c25f0;
  void *s19568c25f1;
  int s19568c25f2[2];
  int s19568c25f3[3];
  int s19568c25f4;
  long double s19568c25f5;
  short s19568c25f6;
  ::S19568C2 s19568c25f7;
  void *s19568c25f8;
  virtual void  v10(); // _ZN9S19568C253v10Ev
  virtual void  v11(); // _ZN9S19568C253v11Ev
  virtual void  v12(); // _ZN9S19568C253v12Ev
  ~S19568C25(); // tgen
  S19568C25(); // tgen
};
//SIG(-1 S19568C25) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ VBC3 VBC5{ vd m FC3 FC6{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} v1 v2 v3 Fi Fp Fi[6] FD Fs FC7{ BC8{ VBC4 VBC9{ VBC10{ VBC2 BC5 BC11{ VBC5 BC4 VBC12{ VBC3 VBC5 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC13{ VBC3 BC5 BC4 vd v5 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC14{ VBC13 vd v6 Fi Fp Fi:2 FD Fp} BC13 vd v7 Fi FL Fi:6 FC15{ BC16{ VBC3 VBC5 Fc:1 Fp[3]} VBC17{ VBC3 BC5 BC16 vd v13 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC18{ BC19{ VBC5 BC16 VBC20{ VBC3 VBC5 BC16 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC17} VBC21{ VBC3 VBC16 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} VBC17 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC22{ vd m FC21 FC20 Fp Fi Fp FL FD Fs Fp FL Fi} VBC23{ BC4 BC12 vd v8 v9 v10 Fi Fi:2 FD Fp[2]} VBC14 vd Fi FL FC15} VBC24{ BC25{ VBC26{ vd m FD} VBC13 BC27{ m Fp Fi[2] FU28{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC3 vd v11 Fc[7] Fp FD FC12 FL FL Fl Fi Fi FL[3] FD} vd v12 FC11 Fi:7 FC11 FC29{ vd m Fi[4] FL Fi FC16 Fi FD Fi Fi FL FL Fs}} v4 FL Fi Fc} Fp}


void  S19568C25 ::v10(){vfunc_called(this, "_ZN9S19568C253v10Ev");}
void  S19568C25 ::v11(){vfunc_called(this, "_ZN9S19568C253v11Ev");}
void  S19568C25 ::v12(){vfunc_called(this, "_ZN9S19568C253v12Ev");}
S19568C25 ::~S19568C25(){ note_dtor("S19568C25", this);} // tgen
S19568C25 ::S19568C25(){ note_ctor("S19568C25", this);} // tgen

static void Test_S19568C25()
{
  extern Class_Descriptor cd_S19568C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(560,1315)];
    init_test(&cd_S19568C25, buf);
    S19568C25 *dp, &lv = *(dp=new (buf) S19568C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8944,5256), "sizeof(S19568C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C25)");
    check_base_class_offset(lv, (S3572C5*)(S19568C10*), ABISELECT(8808,5180), "S19568C25");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*), ABISELECT(8808,5180), "S19568C25");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*), ABISELECT(8888,5224), "S19568C25");
    check_base_class_offset(lv, (S19568C4*)(S19568C10*), ABISELECT(8848,5204), "S19568C25");
    check_base_class_offset(lv, (S19568C10*), 0, "S19568C25");
    check_field_offset(lv, s19568c25f0, ABISELECT(128,92), "S19568C25.s19568c25f0");
    check_field_offset(lv, s19568c25f1, ABISELECT(136,96), "S19568C25.s19568c25f1");
    check_field_offset(lv, s19568c25f2, ABISELECT(144,100), "S19568C25.s19568c25f2");
    check_field_offset(lv, s19568c25f3, ABISELECT(152,108), "S19568C25.s19568c25f3");
    check_field_offset(lv, s19568c25f4, ABISELECT(164,120), "S19568C25.s19568c25f4");
    check_field_offset(lv, s19568c25f5, ABISELECT(176,124), "S19568C25.s19568c25f5");
    check_field_offset(lv, s19568c25f6, ABISELECT(192,136), "S19568C25.s19568c25f6");
    check_field_offset(lv, s19568c25f7, ABISELECT(208,140), "S19568C25.s19568c25f7");
    check_field_offset(lv, s19568c25f8, ABISELECT(8800,5176), "S19568C25.s19568c25f8");
    test_class_info(&lv, &cd_S19568C25);
    dp->~S19568C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C25(Test_S19568C25, "S19568C25", ABISELECT(8944,5256));

#else // __cplusplus

extern void _ZN9S19568C25C1Ev();
extern void _ZN9S19568C25D1Ev();
Name_Map name_map_S19568C25[] = {
  NSPAIR(_ZN9S19568C25C1Ev),
  NSPAIR(_ZN9S19568C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C10;
extern VTBL_ENTRY _ZTI9S19568C10[];
extern  VTBL_ENTRY _ZTV9S19568C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C10[];
static Base_Class bases_S19568C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(8808,5180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(8888,5224), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19568C4,    ABISELECT(8848,5204), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19568C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19568C25[];
extern void _ZN9S19568C25D1Ev();
extern void _ZN9S19568C25D0Ev();
extern void _ZN9S19568C253v10Ev();
extern void _ZN9S19568C253v11Ev();
extern void _ZN9S19568C253v12Ev();
extern void ABISELECT(_ZTv0_n40_N9S19568C25D1Ev,_ZTv0_n20_N9S19568C25D1Ev)();
extern void ABISELECT(_ZThn8848_N9S19568C25D1Ev,_ZThn5204_N9S19568C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C25D0Ev,_ZTv0_n20_N9S19568C25D0Ev)();
extern void ABISELECT(_ZThn8848_N9S19568C25D0Ev,_ZThn5204_N9S19568C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C25D1Ev,_ZTv0_n12_N9S19568C25D1Ev)();
extern void ABISELECT(_ZThn8888_N9S19568C25D1Ev,_ZThn5224_N9S19568C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C25D0Ev,_ZTv0_n12_N9S19568C25D0Ev)();
extern void ABISELECT(_ZThn8888_N9S19568C25D0Ev,_ZThn5224_N9S19568C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C25[] = {
  ABISELECT(8888,5224),
  ABISELECT(8848,5204),
  ABISELECT(8808,5180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C25[0]),
  (VTBL_ENTRY)&_ZN9S19568C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C25D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C253v10Ev,
  (VTBL_ENTRY)&_ZN9S19568C253v11Ev,
  (VTBL_ENTRY)&_ZN9S19568C253v12Ev,
  ABISELECT(-8848,-5204),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-8848,-5204),
  (VTBL_ENTRY)&(_ZTI9S19568C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C25D1Ev,_ZTv0_n20_N9S19568C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C25D0Ev,_ZTv0_n20_N9S19568C25D0Ev),
  ABISELECT(-8888,-5224),
  ABISELECT(-8888,-5224),
  (VTBL_ENTRY)&(_ZTI9S19568C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C25D1Ev,_ZTv0_n12_N9S19568C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C25D0Ev,_ZTv0_n12_N9S19568C25D0Ev),
};
extern VTBL_ENTRY _ZTV9S19568C25[];
extern void _ZN9S19568C10D1Ev();
extern void _ZN9S19568C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C10__9S19568C25[] = {
  ABISELECT(8888,5224),
  ABISELECT(8848,5204),
  ABISELECT(8808,5180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&_ZN9S19568C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev)();
extern void ABISELECT(_ZThn8848_N9S19568C10D1Ev,_ZThn5204_N9S19568C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev)();
extern void ABISELECT(_ZThn8848_N9S19568C10D0Ev,_ZThn5204_N9S19568C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C10__9S19568C25[] = {
  ABISELECT(-8848,-5204),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-8848,-5204),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev)();
extern void ABISELECT(_ZThn8888_N9S19568C10D1Ev,_ZThn5224_N9S19568C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev)();
extern void ABISELECT(_ZThn8888_N9S19568C10D0Ev,_ZThn5224_N9S19568C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C10__9S19568C25[] = {
  ABISELECT(-8888,-5224),
  ABISELECT(-8888,-5224),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev),
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C25[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19568C4D1Ev,_ZThn20_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19568C4D0Ev,_ZThn20_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C4__9S19568C25[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
static  VTT_ENTRY vtt_S19568C25[] = {
  {&(_ZTV9S19568C25[5]),  5,22},
  {&(_tg__ZTV9S19568C10__9S19568C25[5]),  5,7},
  {&(_tg__ZTV8S19568C4__9S19568C10__9S19568C25[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19568C10__9S19568C25[3]),  3,5},
  {&(_ZTV9S19568C25[15]),  15,22},
  {&(_ZTV9S19568C25[20]),  20,22},
  {&(_tg__ZTV8S19568C4__9S19568C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C4__9S19568C25[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19568C25[];
extern  VTBL_ENTRY _ZTV9S19568C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C25[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19568C4D0Ev,_ZThn20_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19568C4D1Ev,_ZThn20_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8888_N9S19568C10D0Ev,_ZThn5224_N9S19568C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8888_N9S19568C10D1Ev,_ZThn5224_N9S19568C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8848_N9S19568C10D0Ev,_ZThn5204_N9S19568C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8848_N9S19568C10D1Ev,_ZThn5204_N9S19568C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C25D0Ev,_ZTv0_n12_N9S19568C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8888_N9S19568C25D0Ev,_ZThn5224_N9S19568C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C25D1Ev,_ZTv0_n12_N9S19568C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8888_N9S19568C25D1Ev,_ZThn5224_N9S19568C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C25D0Ev,_ZTv0_n20_N9S19568C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8848_N9S19568C25D0Ev,_ZThn5204_N9S19568C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C25D1Ev,_ZTv0_n20_N9S19568C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8848_N9S19568C25D1Ev,_ZThn5204_N9S19568C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C25 = {  "S19568C25", // class name
  bases_S19568C25, 4,
  &(vtc_S19568C25[0]), // expected_vtbl_contents
  &(vtt_S19568C25[0]), // expected_vtt_contents
  ABISELECT(8944,5256), // object size
  NSPAIRA(_ZTI9S19568C25),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19568C25),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19568C25),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19568C1  : virtual S19568C2 {
  short s19568c1f0;
  __tsi64 s19568c1f1;
  int s19568c1f2;
  int s19568c1f3;
  ::S19568C25 s19568c1f4;
  long double s19568c1f5;
  int s19568c1f6;
  ~S19568C1(); // tgen
  S19568C1(); // tgen
};
//SIG(1 S19568C1) C1{ VBC2{ BC3{ VBC4{ VBC5{ m Fp Fs Fi Fp Fl[2]} VBC6{ vd m FC5 FC7{}} Fc:1 Fp[3]} VBC8{ VBC9{ VBC10{ VBC5 VBC4 vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} BC6 BC11{ VBC6 BC4 VBC12{ VBC5 VBC6 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd FC13{ VBC5 BC6 BC4 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC14{ VBC13 vd v2 Fi Fp Fi:2 FD Fp} BC13 vd v3 Fi FL Fi:6 FC15{ BC16{ VBC5 VBC6 Fc:1 Fp[3]} VBC17{ VBC5 BC6 BC16 vd v13 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC18{ BC19{ VBC6 BC16 VBC20{ VBC5 VBC6 BC16 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd FC17} VBC21{ VBC5 VBC16 vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} VBC17 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC22{ vd m FC21 FC20 Fp Fi Fp FL FD Fs Fp FL Fi} VBC23{ BC4 BC12 vd v4 v5 v6 Fi Fi:2 FD Fp[2]} VBC14 vd Fi FL FC15} VBC24{ BC25{ VBC26{ vd m FD} VBC13 BC27{ m Fp Fi[2] FU28{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC5 vd v7 Fc[7] Fp FD FC12 FL FL Fl Fi Fi FL[3] FD} vd v8 FC11 Fi:7 FC11 FC29{ vd m Fi[4] FL Fi FC16 Fi FD Fi Fi FL FL Fs}} v9 FL Fi Fc} Fs FL Fi Fi FC30{ BC10 v10 v11 v12 Fi Fp Fi[2] Fi[3] Fi FD Fs FC2 Fp} FD Fi}


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

static void Test_S19568C1()
{
  extern Class_Descriptor cd_S19568C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1101,2584)];
    init_test(&cd_S19568C1, buf);
    S19568C1 *dp, &lv = *(dp=new (buf) S19568C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(17600,10332), "sizeof(S19568C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19568C1)");
    /*is_ambiguous_... S19568C1::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*), ABISELECT(10376,6112), "S19568C1");
    check_base_class_offset(lv, (S3572C5*)(S19568C10*), ABISELECT(10376,6112), "S19568C1");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(10376,6112), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C12*), ABISELECT(10376,6112), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C12*), ABISELECT(10376,6112), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C13*), ABISELECT(10376,6112), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C13*), ABISELECT(10376,6112), "S19568C1");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C13*)(S19568C8*), ABISELECT(10376,6112), "S19568C1");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C13*)(S19568C8*), ABISELECT(10376,6112), "S19568C1");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C18*), ABISELECT(10376,6112), "S19568C1");
    check_base_class_offset(lv, (S3572C5*)(S19568C12*)(S19568C18*), ABISELECT(10376,6112), "S19568C1");
    check_base_class_offset(lv, (S3572C5*)(S19568C4*)(S19568C12*)(S19568C18*), ABISELECT(10376,6112), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*), ABISELECT(10416,6136), "S19568C1");
    check_base_class_offset(lv, (S3572C4*)(S19568C11*)(S19568C9*), ABISELECT(10416,6136), "S19568C1");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(10416,6136), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C12*), ABISELECT(10416,6136), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C12*), ABISELECT(10416,6136), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C13*), ABISELECT(10416,6136), "S19568C1");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C13*)(S19568C8*), ABISELECT(10416,6136), "S19568C1");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C18*), ABISELECT(10416,6136), "S19568C1");
    check_base_class_offset(lv, (S3572C4*)(S19568C12*)(S19568C18*), ABISELECT(10416,6136), "S19568C1");
    check_base_class_offset(lv, (S3572C4*)(S19568C4*)(S19568C12*)(S19568C18*), ABISELECT(10416,6136), "S19568C1");
    /*is_ambiguous_... S19568C3::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C3*)(S19568C2*), ABISELECT(10336,6092), "S19568C1");
    check_base_class_offset(lv, (S19568C4*)(S19568C10*), ABISELECT(10336,6092), "S19568C1");
    check_base_class_offset(lv, (S19568C10*)(S19568C9*), ABISELECT(13192,7728), "S19568C1");
    /*is_ambiguous_... S19568C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C9*), ABISELECT(12672,7440), "S19568C1");
    /*is_ambiguous_... S19568C11::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C11*)(S19568C9*), ABISELECT(12736,7472), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C12 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C12*), ABISELECT(13320,7820), "S19568C1");
    check_base_class_offset(lv, (S19568C12*)(S19568C11*)(S19568C9*), ABISELECT(13320,7820), "S19568C1");
    check_base_class_offset(lv, (S19568C11*)(S19568C9*), ABISELECT(12736,7472), "S19568C1");
    check_base_class_offset(lv, (S19568C9*)(S19568C8*), ABISELECT(12672,7440), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C13*), ABISELECT(13792,8100), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C13*), ABISELECT(13848,8132), "S19568C1");
    check_base_class_offset(lv, (S19568C13*)(S19568C14*)(S19568C8*), ABISELECT(13792,8100), "S19568C1");
    /*is_ambiguous_... S19568C1::S19568C14 */ AMB_check_base_class_offset(lv, (S19568C13*)(S19568C14*), ABISELECT(13792,8100), "S19568C1");
    check_base_class_offset(lv, (S19568C13*)(S19568C20*)(S19568C19*), ABISELECT(13792,8100), "S19568C1");
    check_base_class_offset(lv, (S19568C14*)(S19568C8*), ABISELECT(10480,6168), "S19568C1");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19568C13*)(S19568C8*), ABISELECT(10544,6200), "S19568C1");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C13*)(S19568C8*), ABISELECT(10600,6232), "S19568C1");
    /*is_ambiguous_... S19568C8::S19568C13 */ AMB_check_base_class_offset(lv, (S19568C13*)(S19568C8*), ABISELECT(10544,6200), "S19568C1");
    check_base_class_offset(lv, (S19568C8*)(S19568C3*)(S19568C2*), ABISELECT(10480,6168), "S19568C1");
    check_base_class_offset(lv, (S3572C17*)(S19568C3*)(S19568C2*), ABISELECT(9008,5296), "S19568C1");
    /*is_ambiguous_... S19568C18::S19568C4 */ AMB_check_base_class_offset(lv, (S19568C4*)(S19568C18*), ABISELECT(14016,8224), "S19568C1");
    check_base_class_offset(lv, (S19568C4*)(S19568C12*)(S19568C18*), ABISELECT(14056,8244), "S19568C1");
    check_base_class_offset(lv, (S19568C12*)(S19568C18*), ABISELECT(14056,8244), "S19568C1");
    check_base_class_offset(lv, (S19568C18*)(S19568C3*)(S19568C2*), ABISELECT(14016,8224), "S19568C1");
    /*is_ambiguous_... S19568C3::S19568C14 */ AMB_check_base_class_offset(lv, (S19568C14*)(S19568C3*)(S19568C2*), ABISELECT(14560,8552), "S19568C1");
    check_base_class_offset(lv, (S19568C3*)(S19568C2*), ABISELECT(9008,5296), "S19568C1");
    check_base_class_offset(lv, (S3572C21*)(S19568C20*)(S19568C19*), ABISELECT(17568,10316), "S19568C1");
    check_base_class_offset(lv, (S3572C22*)(S19568C20*)(S19568C19*), ABISELECT(14640,8588), "S19568C1");
    /*is_ambiguous_... S19568C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19568C20*)(S19568C19*), ABISELECT(14736,8640), "S19568C1");
    check_base_class_offset(lv, (S19568C20*)(S19568C19*), ABISELECT(14624,8584), "S19568C1");
    check_base_class_offset(lv, (S19568C19*)(S19568C2*), ABISELECT(14624,8584), "S19568C1");
    check_base_class_offset(lv, (S19568C2*), ABISELECT(9008,5296), "S19568C1");
    check_field_offset(lv, s19568c1f0, ABISELECT(8,4), "S19568C1.s19568c1f0");
    check_field_offset(lv, s19568c1f1, ABISELECT(16,8), "S19568C1.s19568c1f1");
    check_field_offset(lv, s19568c1f2, ABISELECT(24,16), "S19568C1.s19568c1f2");
    check_field_offset(lv, s19568c1f3, ABISELECT(28,20), "S19568C1.s19568c1f3");
    check_field_offset(lv, s19568c1f4, ABISELECT(32,24), "S19568C1.s19568c1f4");
    check_field_offset(lv, s19568c1f5, ABISELECT(8976,5280), "S19568C1.s19568c1f5");
    check_field_offset(lv, s19568c1f6, ABISELECT(8992,5292), "S19568C1.s19568c1f6");
    test_class_info(&lv, &cd_S19568C1);
    dp->~S19568C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19568C1(Test_S19568C1, "S19568C1", ABISELECT(17600,10332));

#else // __cplusplus

extern void _ZN8S19568C1C1Ev();
extern void _ZN8S19568C1D1Ev();
Name_Map name_map_S19568C1[] = {
  NSPAIR(_ZN8S19568C1C1Ev),
  NSPAIR(_ZN8S19568C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C10;
extern VTBL_ENTRY _ZTI9S19568C10[];
extern  VTBL_ENTRY _ZTV9S19568C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C12;
extern VTBL_ENTRY _ZTI9S19568C12[];
extern  VTBL_ENTRY _ZTV9S19568C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C12[];
extern Class_Descriptor cd_S19568C11;
extern VTBL_ENTRY _ZTI9S19568C11[];
extern  VTBL_ENTRY _ZTV9S19568C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C11[];
extern Class_Descriptor cd_S19568C9;
extern VTBL_ENTRY _ZTI8S19568C9[];
extern  VTBL_ENTRY _ZTV8S19568C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C13;
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
extern Class_Descriptor cd_S19568C14;
extern VTBL_ENTRY _ZTI9S19568C14[];
extern  VTBL_ENTRY _ZTV9S19568C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C13;
extern VTBL_ENTRY _ZTI9S19568C13[];
extern  VTBL_ENTRY _ZTV9S19568C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C13[];
extern Class_Descriptor cd_S19568C8;
extern VTBL_ENTRY _ZTI8S19568C8[];
extern  VTBL_ENTRY _ZTV8S19568C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C8[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C4;
extern VTBL_ENTRY _ZTI8S19568C4[];
extern  VTBL_ENTRY _ZTV8S19568C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C4[];
extern Class_Descriptor cd_S19568C12;
extern VTBL_ENTRY _ZTI9S19568C12[];
extern  VTBL_ENTRY _ZTV9S19568C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C12[];
extern Class_Descriptor cd_S19568C18;
extern VTBL_ENTRY _ZTI9S19568C18[];
extern  VTBL_ENTRY _ZTV9S19568C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C18[];
extern Class_Descriptor cd_S19568C14;
extern VTBL_ENTRY _ZTI9S19568C14[];
extern  VTBL_ENTRY _ZTV9S19568C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C14[];
extern Class_Descriptor cd_S19568C3;
extern VTBL_ENTRY _ZTI8S19568C3[];
extern  VTBL_ENTRY _ZTV8S19568C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C3[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S19568C20;
extern VTBL_ENTRY _ZTI9S19568C20[];
extern  VTBL_ENTRY _ZTV9S19568C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C20[];
extern Class_Descriptor cd_S19568C19;
extern VTBL_ENTRY _ZTI9S19568C19[];
extern  VTBL_ENTRY _ZTV9S19568C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19568C19[];
extern Class_Descriptor cd_S19568C2;
extern VTBL_ENTRY _ZTI8S19568C2[];
extern  VTBL_ENTRY _ZTV8S19568C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C2[];
static Base_Class bases_S19568C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(10376,6112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(10416,6136), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19568C4,    ABISELECT(10336,6092), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19568C10,    ABISELECT(13192,7728), //bcp->offset
    95, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(12672,7440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(12736,7472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(13320,7820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19568C12,    ABISELECT(13320,7820), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19568C11,    ABISELECT(12736,7472), //bcp->offset
    88, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19568C9,    ABISELECT(12672,7440), //bcp->offset
    78, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(13792,8100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(13848,8132), //bcp->offset
    119, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19568C13,    ABISELECT(13792,8100), //bcp->offset
    110, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19568C14,    ABISELECT(10480,6168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(10544,6200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(10600,6232), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19568C13,    ABISELECT(10544,6200), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19568C8,    ABISELECT(10480,6168), //bcp->offset
    48, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3572C17,    ABISELECT(9008,5296), //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(14016,8224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19568C4,    ABISELECT(14056,8244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19568C12,    ABISELECT(14056,8244), //bcp->offset
    138, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19568C18,    ABISELECT(14016,8224), //bcp->offset
    125, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19568C14,    ABISELECT(14560,8552), //bcp->offset
    144, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19568C3,    ABISELECT(9008,5296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3572C21,    ABISELECT(17568,10316), //bcp->offset
    167, //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
    23, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(14640,8588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(14736,8640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19568C20,    ABISELECT(14624,8584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19568C19,    ABISELECT(14624,8584), //bcp->offset
    154, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19568C2,    ABISELECT(9008,5296), //bcp->offset
    17, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19568C1[];
extern void _ZN8S19568C1D1Ev();
extern void _ZN8S19568C1D0Ev();
extern void ABISELECT(_ZTv0_n120_N8S19568C1D1Ev,_ZTv0_n60_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn9008_N8S19568C1D1Ev,_ZThn5296_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19568C1D0Ev,_ZTv0_n60_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn9008_N8S19568C1D0Ev,_ZThn5296_N8S19568C1D0Ev)() __attribute__((weak));
extern void _ZN8S19568C22v9Ev();
extern void ABISELECT(_ZTv0_n40_N8S19568C1D1Ev,_ZTv0_n20_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn10336_N8S19568C1D1Ev,_ZThn6092_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C1D0Ev,_ZTv0_n20_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn10336_N8S19568C1D0Ev,_ZThn6092_N8S19568C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C1D1Ev,_ZTv0_n12_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn10416_N8S19568C1D1Ev,_ZThn6136_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C1D0Ev,_ZTv0_n12_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn10416_N8S19568C1D0Ev,_ZThn6136_N8S19568C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19568C1D1Ev,_ZTv0_n40_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn10480_N8S19568C1D1Ev,_ZThn6168_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19568C1D0Ev,_ZTv0_n40_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn10480_N8S19568C1D0Ev,_ZThn6168_N8S19568C1D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
extern void _ZN8S19568C82v3Ev();
extern void ABISELECT(_ZTvn64_n80_N8S19568C1D1Ev,_ZTvn32_n40_N8S19568C1D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19568C1D0Ev,_ZTvn32_n40_N8S19568C1D0Ev)();
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZTvn120_n80_N8S19568C1D1Ev,_ZTvn64_n40_N8S19568C1D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19568C1D0Ev,_ZTvn64_n40_N8S19568C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19568C1D1Ev,_ZTv0_n32_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn12672_N8S19568C1D1Ev,_ZThn7440_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19568C1D0Ev,_ZTv0_n32_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn12672_N8S19568C1D0Ev,_ZThn7440_N8S19568C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S19568C1D1Ev,_ZTvn32_n32_N8S19568C1D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19568C1D0Ev,_ZTvn32_n32_N8S19568C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19568C1D1Ev,_ZTv0_n24_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn13192_N8S19568C1D1Ev,_ZThn7728_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C1D0Ev,_ZTv0_n24_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn13192_N8S19568C1D0Ev,_ZThn7728_N8S19568C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C1D1Ev,_ZTv0_n20_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn13320_N8S19568C1D1Ev,_ZThn7820_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C1D0Ev,_ZTv0_n20_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn13320_N8S19568C1D0Ev,_ZThn7820_N8S19568C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C1D1Ev,_ZTv0_n20_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn13792_N8S19568C1D1Ev,_ZThn8100_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C1D0Ev,_ZTv0_n20_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn13792_N8S19568C1D0Ev,_ZThn8100_N8S19568C1D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S19568C1D1Ev,_ZTvn32_n20_N8S19568C1D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19568C1D0Ev,_ZTvn32_n20_N8S19568C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19568C1D1Ev,_ZTv0_n20_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn14016_N8S19568C1D1Ev,_ZThn8224_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C1D0Ev,_ZTv0_n20_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn14016_N8S19568C1D0Ev,_ZThn8224_N8S19568C1D0Ev)() __attribute__((weak));
extern void _ZN9S19568C182v4Ev();
extern void _ZN9S19568C182v5Ev();
extern void _ZN9S19568C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N8S19568C1D1Ev,_ZTvn20_n20_N8S19568C1D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19568C1D0Ev,_ZTvn20_n20_N8S19568C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19568C1D1Ev,_ZTv0_n24_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn14560_N8S19568C1D1Ev,_ZThn8552_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C1D0Ev,_ZTv0_n24_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn14560_N8S19568C1D0Ev,_ZThn8552_N8S19568C1D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S19568C1D1Ev,_ZTv0_n28_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn14624_N8S19568C1D1Ev,_ZThn8584_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19568C1D0Ev,_ZTv0_n28_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn14624_N8S19568C1D0Ev,_ZThn8584_N8S19568C1D0Ev)() __attribute__((weak));
extern void _ZN9S19568C202v7Ev();
extern void _ZN9S19568C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N8S19568C1D1Ev,_ZTv0_n12_N8S19568C1D1Ev)();
extern void ABISELECT(_ZThn17568_N8S19568C1D1Ev,_ZThn10316_N8S19568C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C1D0Ev,_ZTv0_n12_N8S19568C1D0Ev)();
extern void ABISELECT(_ZThn17568_N8S19568C1D0Ev,_ZThn10316_N8S19568C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19568C1[] = {
  ABISELECT(17568,10316),
  ABISELECT(14624,8584),
  ABISELECT(14560,8552),
  ABISELECT(14016,8224),
  ABISELECT(13792,8100),
  ABISELECT(13320,7820),
  ABISELECT(13192,7728),
  ABISELECT(12672,7440),
  ABISELECT(10480,6168),
  ABISELECT(10416,6136),
  ABISELECT(10376,6112),
  ABISELECT(10336,6092),
  ABISELECT(9008,5296),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&_ZN8S19568C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C1D0Ev,
  0,
  ABISELECT(-9008,-5296),
  ABISELECT(8560,5020),
  ABISELECT(5616,3288),
  ABISELECT(5552,3256),
  ABISELECT(5008,2928),
  ABISELECT(4784,2804),
  ABISELECT(4312,2524),
  ABISELECT(4184,2432),
  ABISELECT(3664,2144),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  ABISELECT(-9008,-5296),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19568C1D1Ev,_ZTv0_n60_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19568C1D0Ev,_ZTv0_n60_N8S19568C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19568C22v9Ev,
  ABISELECT(-10336,-6092),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-10336,-6092),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C1D1Ev,_ZTv0_n20_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C1D0Ev,_ZTv0_n20_N8S19568C1D0Ev),
  ABISELECT(-10416,-6136),
  ABISELECT(-10416,-6136),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C1D1Ev,_ZTv0_n12_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C1D0Ev,_ZTv0_n12_N8S19568C1D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-10480,-6168),
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  ABISELECT(-10480,-6168),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C1D1Ev,_ZTv0_n40_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C1D0Ev,_ZTv0_n40_N8S19568C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19568C82v3Ev,
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-10544,-6200),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C1D1Ev,_ZTvn32_n40_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C1D0Ev,_ZTvn32_n40_N8S19568C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-10600,-6232),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C1D1Ev,_ZTvn64_n40_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C1D0Ev,_ZTvn64_n40_N8S19568C1D0Ev),
  ABISELECT(-12672,-7440),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-12672,-7440),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C1D1Ev,_ZTv0_n32_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C1D0Ev,_ZTv0_n32_N8S19568C1D0Ev),
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-12736,-7472),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C1D1Ev,_ZTvn32_n32_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C1D0Ev,_ZTvn32_n32_N8S19568C1D0Ev),
  ABISELECT(-13192,-7728),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-13192,-7728),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C1D1Ev,_ZTv0_n24_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C1D0Ev,_ZTv0_n24_N8S19568C1D0Ev),
  ABISELECT(-13320,-7820),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-13320,-7820),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C1D1Ev,_ZTv0_n20_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C1D0Ev,_ZTv0_n20_N8S19568C1D0Ev),
  0,
  ABISELECT(-13792,-8100),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-13792,-8100),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C1D1Ev,_ZTv0_n20_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C1D0Ev,_ZTv0_n20_N8S19568C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-13848,-8132),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C1D1Ev,_ZTvn32_n20_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C1D0Ev,_ZTvn32_n20_N8S19568C1D0Ev),
  0,
  0,
  0,
  ABISELECT(-14016,-8224),
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  ABISELECT(-14016,-8224),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C1D1Ev,_ZTv0_n20_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C1D0Ev,_ZTv0_n20_N8S19568C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v6Ev,
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-14056,-8244),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C1D1Ev,_ZTvn20_n20_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C1D0Ev,_ZTvn20_n20_N8S19568C1D0Ev),
  0,
  ABISELECT(-14560,-8552),
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  ABISELECT(-14560,-8552),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C1D1Ev,_ZTv0_n24_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C1D0Ev,_ZTv0_n24_N8S19568C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  0,
  0,
  ABISELECT(-14624,-8584),
  ABISELECT(-4208,-2448),
  ABISELECT(-4248,-2472),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  ABISELECT(-14624,-8584),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19568C1D1Ev,_ZTv0_n28_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19568C1D0Ev,_ZTv0_n28_N8S19568C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19568C192v8Ev,
  ABISELECT(-17568,-10316),
  ABISELECT(-17568,-10316),
  (VTBL_ENTRY)&(_ZTI8S19568C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C1D1Ev,_ZTv0_n12_N8S19568C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C1D0Ev,_ZTv0_n12_N8S19568C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19568C1[];
extern void _ZN8S19568C2D1Ev();
extern void _ZN8S19568C2D0Ev();
extern void _ZN8S19568C22v9Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C2__8S19568C1[] = {
  ABISELECT(8560,5020),
  ABISELECT(5616,3288),
  ABISELECT(5552,3256),
  ABISELECT(5008,2928),
  ABISELECT(4784,2804),
  ABISELECT(4312,2524),
  ABISELECT(4184,2432),
  ABISELECT(3664,2144),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&_ZN8S19568C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19568C22v9Ev,
};
extern void _ZN8S19568C3D1Ev();
extern void _ZN8S19568C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(5552,3256),
  ABISELECT(5008,2928),
  ABISELECT(4784,2804),
  ABISELECT(4312,2524),
  ABISELECT(4184,2432),
  ABISELECT(3664,2144),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&_ZN8S19568C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C3D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19568C3D1Ev,_ZThn796_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19568C3D0Ev,_ZThn796_N8S19568C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19568C3D1Ev,_ZTv0_n12_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn1408_N8S19568C3D1Ev,_ZThn840_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C3D0Ev,_ZTv0_n12_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn1408_N8S19568C3D0Ev,_ZThn840_N8S19568C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C3D1Ev,_ZTv0_n12_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C3D0Ev,_ZTv0_n12_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S19568C3D1Ev,_ZTv0_n40_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn1472_N8S19568C3D1Ev,_ZThn872_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19568C3D0Ev,_ZTv0_n40_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn1472_N8S19568C3D0Ev,_ZThn872_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
extern void _ZN8S19568C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C8__8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C3D1Ev,_ZTv0_n40_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C3D0Ev,_ZTv0_n40_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19568C82v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19568C3D1Ev,_ZTv0_n32_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn3664_N8S19568C3D1Ev,_ZThn2144_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19568C3D0Ev,_ZTv0_n32_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn3664_N8S19568C3D0Ev,_ZThn2144_N8S19568C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C9__8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(-3664,-2144),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-3664,-2144),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C3D1Ev,_ZTv0_n32_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C3D0Ev,_ZTv0_n32_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn4184_N8S19568C3D1Ev,_ZThn2432_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn4184_N8S19568C3D0Ev,_ZThn2432_N8S19568C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(-4184,-2432),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-4184,-2432),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19568C3D1Ev,_ZTvn32_n32_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19568C3D0Ev,_ZTvn32_n32_N8S19568C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C118S19568C9__8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-3728,-2176),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C3D1Ev,_ZTvn32_n32_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C3D0Ev,_ZTvn32_n32_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn4312_N8S19568C3D1Ev,_ZThn2524_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn4312_N8S19568C3D0Ev,_ZThn2524_N8S19568C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(-4312,-2524),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-4312,-2524),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn4784_N8S19568C3D1Ev,_ZThn2804_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn4784_N8S19568C3D0Ev,_ZThn2804_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__8S19568C38S19568C2__8S19568C1[] = {
  0,
  ABISELECT(-4784,-2804),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-4784,-2804),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19568C3D1Ev,_ZTvn32_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19568C3D0Ev,_ZTvn32_n20_N8S19568C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A3__8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-4840,-2836),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C3D1Ev,_ZTvn32_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C3D0Ev,_ZTvn32_n20_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S19568C3D1Ev,_ZTvn32_n40_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19568C3D0Ev,_ZTvn32_n40_N8S19568C3D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C138S19568C8__A1__8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C3D1Ev,_ZTvn32_n40_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C3D0Ev,_ZTvn32_n40_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S19568C3D1Ev,_ZTvn64_n40_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19568C3D0Ev,_ZTvn64_n40_N8S19568C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C3D1Ev,_ZTvn64_n40_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C3D0Ev,_ZTvn64_n40_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn5008_N8S19568C3D1Ev,_ZThn2928_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn5008_N8S19568C3D0Ev,_ZThn2928_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C182v4Ev();
extern void _ZN9S19568C182v5Ev();
extern void _ZN9S19568C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C18__8S19568C38S19568C2__8S19568C1[] = {
  0,
  0,
  0,
  ABISELECT(-5008,-2928),
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  ABISELECT(-5008,-2928),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S19568C3D1Ev,_ZTvn20_n20_N8S19568C3D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19568C3D0Ev,_ZTvn20_n20_N8S19568C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C129S19568C18__A1__8S19568C38S19568C2__8S19568C1[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-5048,-2948),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C3D1Ev,_ZTvn20_n20_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C3D0Ev,_ZTvn20_n20_N8S19568C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev)();
extern void ABISELECT(_ZThn5552_N8S19568C3D1Ev,_ZThn3256_N8S19568C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev)();
extern void ABISELECT(_ZThn5552_N8S19568C3D0Ev,_ZThn3256_N8S19568C3D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C14__A1__8S19568C38S19568C2__8S19568C1[] = {
  0,
  ABISELECT(-5552,-3256),
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3256),
  (VTBL_ENTRY)&(_ZTI8S19568C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19568C2D1Ev,_ZThn796_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19568C2D0Ev,_ZThn796_N8S19568C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C2__8S19568C1[] = {
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19568C2D1Ev,_ZTv0_n12_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn1408_N8S19568C2D1Ev,_ZThn840_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C2D0Ev,_ZTv0_n12_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn1408_N8S19568C2D0Ev,_ZThn840_N8S19568C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C2__8S19568C1[] = {
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C2D1Ev,_ZTv0_n12_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C2D0Ev,_ZTv0_n12_N8S19568C2D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S19568C2D1Ev,_ZTv0_n40_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn1472_N8S19568C2D1Ev,_ZThn872_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19568C2D0Ev,_ZTv0_n40_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn1472_N8S19568C2D0Ev,_ZThn872_N8S19568C2D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
extern void _ZN8S19568C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C8__8S19568C2__8S19568C1[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C2D1Ev,_ZTv0_n40_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19568C2D0Ev,_ZTv0_n40_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19568C82v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19568C2D1Ev,_ZTv0_n32_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn3664_N8S19568C2D1Ev,_ZThn2144_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19568C2D0Ev,_ZTv0_n32_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn3664_N8S19568C2D0Ev,_ZThn2144_N8S19568C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C9__8S19568C2__8S19568C1[] = {
  ABISELECT(-3664,-2144),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-3664,-2144),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C2D1Ev,_ZTv0_n32_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C2D0Ev,_ZTv0_n32_N8S19568C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C2D1Ev,_ZTv0_n24_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn4184_N8S19568C2D1Ev,_ZThn2432_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C2D0Ev,_ZTv0_n24_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn4184_N8S19568C2D0Ev,_ZThn2432_N8S19568C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C2__8S19568C1[] = {
  ABISELECT(-4184,-2432),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-4184,-2432),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C2D1Ev,_ZTv0_n24_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C2D0Ev,_ZTv0_n24_N8S19568C2D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19568C2D1Ev,_ZTvn32_n32_N8S19568C2D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19568C2D0Ev,_ZTvn32_n32_N8S19568C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C118S19568C9__8S19568C2__8S19568C1[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-3728,-2176),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C2D1Ev,_ZTvn32_n32_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C2D0Ev,_ZTvn32_n32_N8S19568C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn4312_N8S19568C2D1Ev,_ZThn2524_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn4312_N8S19568C2D0Ev,_ZThn2524_N8S19568C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C2__8S19568C1[] = {
  ABISELECT(-4312,-2524),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-4312,-2524),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn4784_N8S19568C2D1Ev,_ZThn2804_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn4784_N8S19568C2D0Ev,_ZThn2804_N8S19568C2D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__8S19568C2__8S19568C1[] = {
  0,
  ABISELECT(-4784,-2804),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-4784,-2804),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19568C2D1Ev,_ZTvn32_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19568C2D0Ev,_ZTvn32_n20_N8S19568C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A3__8S19568C2__8S19568C1[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-4840,-2836),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C2D1Ev,_ZTvn32_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C2D0Ev,_ZTvn32_n20_N8S19568C2D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S19568C2D1Ev,_ZTvn32_n40_N8S19568C2D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19568C2D0Ev,_ZTvn32_n40_N8S19568C2D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C138S19568C8__A1__8S19568C2__8S19568C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C2D1Ev,_ZTvn32_n40_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19568C2D0Ev,_ZTvn32_n40_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S19568C2D1Ev,_ZTvn64_n40_N8S19568C2D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19568C2D0Ev,_ZTvn64_n40_N8S19568C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C2__8S19568C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C2D1Ev,_ZTvn64_n40_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19568C2D0Ev,_ZTvn64_n40_N8S19568C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn5008_N8S19568C2D1Ev,_ZThn2928_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn5008_N8S19568C2D0Ev,_ZThn2928_N8S19568C2D0Ev)() __attribute__((weak));
extern void _ZN9S19568C182v4Ev();
extern void _ZN9S19568C182v5Ev();
extern void _ZN9S19568C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C18__8S19568C2__8S19568C1[] = {
  0,
  0,
  0,
  ABISELECT(-5008,-2928),
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  ABISELECT(-5008,-2928),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S19568C2D1Ev,_ZTvn20_n20_N8S19568C2D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19568C2D0Ev,_ZTvn20_n20_N8S19568C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C129S19568C18__A1__8S19568C2__8S19568C1[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-5048,-2948),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C2D1Ev,_ZTvn20_n20_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19568C2D0Ev,_ZTvn20_n20_N8S19568C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C2D1Ev,_ZTv0_n24_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn5552_N8S19568C2D1Ev,_ZThn3256_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C2D0Ev,_ZTv0_n24_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn5552_N8S19568C2D0Ev,_ZThn3256_N8S19568C2D0Ev)() __attribute__((weak));
extern void _ZN9S19568C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C14__A1__8S19568C2__8S19568C1[] = {
  0,
  ABISELECT(-5552,-3256),
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3256),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C2D1Ev,_ZTv0_n24_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C2D0Ev,_ZTv0_n24_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S19568C2D1Ev,_ZTv0_n28_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn5616_N8S19568C2D1Ev,_ZThn3288_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19568C2D0Ev,_ZTv0_n28_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn5616_N8S19568C2D0Ev,_ZThn3288_N8S19568C2D0Ev)() __attribute__((weak));
extern void _ZN9S19568C202v7Ev();
extern void _ZN9S19568C192v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C19__8S19568C2__8S19568C1[] = {
  0,
  0,
  ABISELECT(-5616,-3288),
  ABISELECT(-4208,-2448),
  ABISELECT(-4248,-2472),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  ABISELECT(-5616,-3288),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19568C2D1Ev,_ZTv0_n28_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19568C2D0Ev,_ZTv0_n28_N8S19568C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19568C192v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C2D1Ev,_ZTv0_n12_N8S19568C2D1Ev)();
extern void ABISELECT(_ZThn8560_N8S19568C2D1Ev,_ZThn5020_N8S19568C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C2D0Ev,_ZTv0_n12_N8S19568C2D0Ev)();
extern void ABISELECT(_ZThn8560_N8S19568C2D0Ev,_ZThn5020_N8S19568C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S19568C2__8S19568C1[] = {
  ABISELECT(-8560,-5020),
  ABISELECT(-8560,-5020),
  (VTBL_ENTRY)&(_ZTI8S19568C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C2D1Ev,_ZTv0_n12_N8S19568C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C2D0Ev,_ZTv0_n12_N8S19568C2D0Ev),
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C1[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19568C4D1Ev,_ZThn44_N8S19568C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19568C4D0Ev,_ZThn44_N8S19568C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C4__8S19568C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void _ZN8S19568C8D1Ev();
extern void _ZN8S19568C8D0Ev();
extern void _ZN9S19568C142v2Ev();
extern void _ZN8S19568C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C8__8S19568C1[] = {
  ABISELECT(2840,1652),
  ABISELECT(-144,-76),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&_ZN8S19568C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C8D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19568C82v3Ev,
};
extern void _ZN9S19568C14D1Ev();
extern void _ZN9S19568C14D0Ev();
extern void _ZN9S19568C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C148S19568C8__8S19568C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1932),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&_ZN9S19568C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZThn3312_N9S19568C14D1Ev,_ZThn1932_N9S19568C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev)();
extern void ABISELECT(_ZThn3312_N9S19568C14D0Ev,_ZThn1932_N9S19568C14D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C148S19568C8__8S19568C1[] = {
  0,
  ABISELECT(-3312,-1932),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-3312,-1932),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C148S19568C8__8S19568C1[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-3368,-1964),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C148S19568C8__8S19568C1[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev),
};
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C138S19568C8__A1__8S19568C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C138S19568C8__A4__8S19568C1[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C138S19568C8__A1__8S19568C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C138S19568C8__A1__8S19568C1[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2192_N8S19568C8D1Ev,_ZThn1272_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2192_N8S19568C8D0Ev,_ZThn1272_N8S19568C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19568C9__8S19568C8__8S19568C1[] = {
  ABISELECT(-2192,-1272),
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2712_N8S19568C8D1Ev,_ZThn1560_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2712_N8S19568C8D0Ev,_ZThn1560_N8S19568C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C8__8S19568C1[] = {
  ABISELECT(-2712,-1560),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-2712,-1560),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C8__8S19568C1[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19568C8D1Ev,_ZTv0_n12_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C8D0Ev,_ZTv0_n12_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C8__8S19568C1[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C8D1Ev,_ZTv0_n12_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C8D0Ev,_ZTv0_n12_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19568C8D1Ev,_ZTvn32_n32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19568C8D0Ev,_ZTvn32_n32_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C118S19568C9__8S19568C8__8S19568C1[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-2256,-1304),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C8D1Ev,_ZTvn32_n32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19568C8D0Ev,_ZTvn32_n32_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn2840_N8S19568C8D1Ev,_ZThn1652_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn2840_N8S19568C8D0Ev,_ZThn1652_N8S19568C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C8__8S19568C1[] = {
  ABISELECT(-2840,-1652),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-2840,-1652),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn3312_N8S19568C8D1Ev,_ZThn1932_N8S19568C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev)();
extern void ABISELECT(_ZThn3312_N8S19568C8D0Ev,_ZThn1932_N8S19568C8D0Ev)() __attribute__((weak));
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__8S19568C8__8S19568C1[] = {
  0,
  ABISELECT(-3312,-1932),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(-3312,-1932),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19568C8D1Ev,_ZTvn32_n20_N8S19568C8D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19568C8D0Ev,_ZTvn32_n20_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A3__8S19568C8__8S19568C1[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-3368,-1964),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C8D1Ev,_ZTvn32_n20_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19568C8D0Ev,_ZTvn32_n20_N8S19568C8D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19568C8D1Ev,_ZThn32_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19568C8D0Ev,_ZThn32_N8S19568C8D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__A__8S19568C8__8S19568C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C8D1Ev,_ZThn32_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C8D0Ev,_ZThn32_N8S19568C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZThn120_N8S19568C8D1Ev,_ZThn64_N8S19568C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19568C8D0Ev,_ZThn64_N8S19568C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A4__8S19568C8__8S19568C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19568C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19568C8D1Ev,_ZThn64_N8S19568C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19568C8D0Ev,_ZThn64_N8S19568C8D0Ev),
};
extern void _ZN8S19568C9D1Ev();
extern void _ZN8S19568C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C9__8S19568C1[] = {
  ABISELECT(648,380),
  ABISELECT(-2256,-1304),
  ABISELECT(-2336,-1348),
  ABISELECT(-2296,-1328),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&_ZN8S19568C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C9D0Ev,
};
extern void _ZN9S19568C11D1Ev();
extern void _ZN9S19568C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C118S19568C9__8S19568C1[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&_ZN9S19568C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C11D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C118S19568C9__A1__8S19568C1[] = {
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C118S19568C9__A1__8S19568C1[] = {
  ABISELECT(2320,1336),
  ABISELECT(2320,1336),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C118S19568C9__8S19568C1[] = {
  ABISELECT(2320,1336),
  ABISELECT(2320,1336),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D1Ev,_ZTv0_n12_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C11D0Ev,_ZTv0_n12_N9S19568C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev)();
extern void ABISELECT(_ZThn584_N9S19568C11D1Ev,_ZThn348_N9S19568C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev)();
extern void ABISELECT(_ZThn584_N9S19568C11D0Ev,_ZThn348_N9S19568C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__9S19568C118S19568C9__8S19568C1[] = {
  ABISELECT(-584,-348),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-584,-348),
  (VTBL_ENTRY)&(_ZTI9S19568C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn520_N8S19568C9D1Ev,_ZThn288_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn520_N8S19568C9D0Ev,_ZThn288_N8S19568C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C9__8S19568C1[] = {
  ABISELECT(-520,-288),
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__8S19568C9__8S19568C1[] = {
  ABISELECT(2336,1348),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2336,1348),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C9__8S19568C1[] = {
  ABISELECT(2256,1304),
  ABISELECT(2256,1304),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C9D1Ev,_ZTv0_n12_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C9D0Ev,_ZTv0_n12_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19568C9D1Ev,_ZThn32_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19568C9D0Ev,_ZThn32_N8S19568C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C11__8S19568C9__8S19568C1[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1336),
  ABISELECT(-2360,-1360),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C9D1Ev,_ZThn32_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19568C9D0Ev,_ZThn32_N8S19568C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev)();
extern void ABISELECT(_ZThn648_N8S19568C9D1Ev,_ZThn380_N8S19568C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev)();
extern void ABISELECT(_ZThn648_N8S19568C9D0Ev,_ZThn380_N8S19568C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C9__8S19568C1[] = {
  ABISELECT(-648,-380),
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  ABISELECT(-648,-380),
  (VTBL_ENTRY)&(_ZTI8S19568C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev),
};
extern void _ZN9S19568C10D1Ev();
extern void _ZN9S19568C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C10__8S19568C1[] = {
  ABISELECT(-2776,-1592),
  ABISELECT(-2856,-1636),
  ABISELECT(-2816,-1616),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&_ZN9S19568C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C10__8S19568C1[] = {
  ABISELECT(2856,1636),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2856,1636),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D1Ev,_ZTv0_n20_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C10D0Ev,_ZTv0_n20_N9S19568C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C10__8S19568C1[] = {
  ABISELECT(2776,1592),
  ABISELECT(2776,1592),
  (VTBL_ENTRY)&(_ZTI9S19568C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D1Ev,_ZTv0_n12_N9S19568C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C10D0Ev,_ZTv0_n12_N9S19568C10D0Ev),
};
extern void _ZN9S19568C12D1Ev();
extern void _ZN9S19568C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C12__8S19568C1[] = {
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&_ZN9S19568C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C12D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C12__A2__8S19568C1[] = {
  ABISELECT(-2904,-1684),
  ABISELECT(-2944,-1708),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C12__A2__8S19568C1[] = {
  ABISELECT(2904,1684),
  ABISELECT(2904,1684),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C12__8S19568C1[] = {
  ABISELECT(2904,1684),
  ABISELECT(2904,1684),
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev),
};
extern void _ZN9S19568C13D1Ev();
extern void _ZN9S19568C13D0Ev();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__8S19568C1[] = {
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&_ZN9S19568C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__A3__8S19568C1[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C13__A3__8S19568C1[] = {
  ABISELECT(3432,1996),
  ABISELECT(3432,1996),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C4__9S19568C13__8S19568C1[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D1Ev,_ZThn32_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19568C13D0Ev,_ZThn32_N9S19568C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C13__8S19568C1[] = {
  ABISELECT(3376,1964),
  ABISELECT(3376,1964),
  (VTBL_ENTRY)&(_ZTI9S19568C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D1Ev,_ZTv0_n12_N9S19568C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C13D0Ev,_ZTv0_n12_N9S19568C13D0Ev),
};
extern void _ZN9S19568C18D1Ev();
extern void _ZN9S19568C18D0Ev();
extern void _ZN9S19568C182v4Ev();
extern void _ZN9S19568C182v5Ev();
extern void _ZN9S19568C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C18__8S19568C1[] = {
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&_ZN9S19568C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19568C182v6Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C18__A5__8S19568C1[] = {
  ABISELECT(-3600,-2088),
  ABISELECT(-3640,-2112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C18__A5__8S19568C1[] = {
  ABISELECT(3600,2088),
  ABISELECT(3600,2088),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void _ZN9S19568C12D1Ev();
extern void _ZN9S19568C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C129S19568C18__A1__8S19568C1[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&_ZN9S19568C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C12D0Ev,
};
extern void _ZN8S19568C4D1Ev();
extern void _ZN8S19568C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C129S19568C18__A6__8S19568C1[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&_ZN8S19568C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19568C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19568C49S19568C129S19568C18__A6__8S19568C1[] = {
  ABISELECT(3640,2108),
  ABISELECT(3640,2108),
  (VTBL_ENTRY)&(_ZTI8S19568C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C129S19568C18__A1__8S19568C1[] = {
  ABISELECT(3640,2108),
  ABISELECT(3640,2108),
  (VTBL_ENTRY)&(_ZTI9S19568C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D1Ev,_ZTv0_n12_N9S19568C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C12D0Ev,_ZTv0_n12_N9S19568C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C18D1Ev,_ZTv0_n12_N9S19568C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C18D0Ev,_ZTv0_n12_N9S19568C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19568C18__8S19568C1[] = {
  ABISELECT(3600,2088),
  ABISELECT(3600,2088),
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C18D1Ev,_ZTv0_n12_N9S19568C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C18D0Ev,_ZTv0_n12_N9S19568C18D0Ev),
};
extern void ABISELECT(_ZThn40_N9S19568C18D1Ev,_ZThn20_N9S19568C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S19568C18D0Ev,_ZThn20_N9S19568C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19568C12__9S19568C18__8S19568C1[] = {
  ABISELECT(-3640,-2108),
  ABISELECT(-3680,-2132),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19568C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19568C18D1Ev,_ZThn20_N9S19568C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19568C18D0Ev,_ZThn20_N9S19568C18D0Ev),
};
extern void _ZN9S19568C14D1Ev();
extern void _ZN9S19568C14D0Ev();
extern void _ZN9S19568C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C14__A1__8S19568C1[] = {
  ABISELECT(-4144,-2416),
  ABISELECT(-4184,-2440),
  ABISELECT(-768,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&_ZN9S19568C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C14__A1__8S19568C1[] = {
  0,
  ABISELECT(768,452),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(768,452),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C14__A1__8S19568C1[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(712,420),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D1Ev,_ZTvn32_n20_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C14D0Ev,_ZTvn32_n20_N9S19568C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C14__A1__8S19568C1[] = {
  ABISELECT(4144,2416),
  ABISELECT(4144,2416),
  (VTBL_ENTRY)&(_ZTI9S19568C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D1Ev,_ZTv0_n12_N9S19568C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C14D0Ev,_ZTv0_n12_N9S19568C14D0Ev),
};
extern void _ZN9S19568C19D1Ev();
extern void _ZN9S19568C19D0Ev();
extern void _ZN9S19568C202v7Ev();
extern void _ZN9S19568C192v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C19__8S19568C1[] = {
  ABISELECT(-4208,-2448),
  ABISELECT(-4248,-2472),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&_ZN9S19568C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C19D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19568C192v8Ev,
};
extern void _ZN9S19568C20D1Ev();
extern void _ZN9S19568C20D0Ev();
extern void _ZN9S19568C202v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C209S19568C19__8S19568C1[] = {
  ABISELECT(-4208,-2448),
  ABISELECT(-4248,-2472),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&_ZN9S19568C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19568C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19568C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C20D1Ev,_ZThn1732_N9S19568C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C20D0Ev,_ZThn1732_N9S19568C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__9S19568C209S19568C19__8S19568C1[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19568C20D1Ev,_ZTv0_n20_N9S19568C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19568C20D0Ev,_ZTv0_n20_N9S19568C20D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C209S19568C19__8S19568C1[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C20D1Ev,_ZTv0_n20_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C20D0Ev,_ZTv0_n20_N9S19568C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C20D1Ev,_ZTvn32_n20_N9S19568C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C20D0Ev,_ZTvn32_n20_N9S19568C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C209S19568C19__8S19568C1[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C20D1Ev,_ZTvn32_n20_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C20D0Ev,_ZTvn32_n20_N9S19568C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C209S19568C19__8S19568C1[] = {
  ABISELECT(4208,2448),
  ABISELECT(4208,2448),
  (VTBL_ENTRY)&(_ZTI9S19568C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C19D1Ev,_ZThn1732_N9S19568C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19568C19D0Ev,_ZThn1732_N9S19568C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__9S19568C19__8S19568C1[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19568C19D1Ev,_ZTv0_n20_N9S19568C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19568C19D0Ev,_ZTv0_n20_N9S19568C19D0Ev)();
extern void _ZN9S19568C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19568C13__9S19568C19__8S19568C1[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1964),
  ABISELECT(-3416,-1988),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C19D1Ev,_ZTv0_n20_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19568C19D0Ev,_ZTv0_n20_N9S19568C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19568C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19568C19D1Ev,_ZTvn32_n20_N9S19568C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19568C19D0Ev,_ZTvn32_n20_N9S19568C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19568C49S19568C13__9S19568C19__8S19568C1[] = {
  ABISELECT(-3432,-1996),
  ABISELECT(-3472,-2020),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C19D1Ev,_ZTvn32_n20_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19568C19D0Ev,_ZTvn32_n20_N9S19568C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19568C19__8S19568C1[] = {
  ABISELECT(4208,2448),
  ABISELECT(4208,2448),
  (VTBL_ENTRY)&(_ZTI9S19568C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev),
};
static  VTT_ENTRY vtt_S19568C1[] = {
  {&(_ZTV8S19568C1[15]),  15,172},
  {&(_ZTV8S19568C1[33]),  33,172},
  {&(_ZTV8S19568C1[41]),  41,172},
  {&(_ZTV8S19568C1[46]),  46,172},
  {&(_ZTV8S19568C1[61]),  61,172},
  {&(_ZTV8S19568C1[86]),  86,172},
  {&(_ZTV8S19568C1[101]),  101,172},
  {&(_ZTV8S19568C1[93]),  93,172},
  {&(_ZTV8S19568C1[108]),  108,172},
  {&(_ZTV8S19568C1[116]),  116,172},
  {&(_ZTV8S19568C1[123]),  123,172},
  {&(_ZTV8S19568C1[69]),  69,172},
  {&(_ZTV8S19568C1[76]),  76,172},
  {&(_ZTV8S19568C1[133]),  133,172},
  {&(_ZTV8S19568C1[142]),  142,172},
  {&(_ZTV8S19568C1[151]),  151,172},
  {&(_ZTV8S19568C1[163]),  163,172},
  {&(_ZTV8S19568C1[170]),  170,172},
  {&(_tg__ZTV8S19568C2__8S19568C1[14]),  14,17},
  {&(_tg__ZTV8S19568C38S19568C2__8S19568C1[12]),  12,14},
  {&(_tg__ZTV8S19568C4__8S19568C38S19568C2__8S19568C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19568C38S19568C2__8S19568C1[3]),  3,5},
  {&(_tg__ZTV8S19568C8__8S19568C38S19568C2__8S19568C1[13]),  13,17},
  {&(_tg__ZTV8S19568C9__8S19568C38S19568C2__8S19568C1[8]),  8,10},
  {&(_tg__ZTV9S19568C10__8S19568C38S19568C2__8S19568C1[6]),  6,8},
  {&(_tg__ZTV9S19568C118S19568C9__8S19568C38S19568C2__8S19568C1[5]),  5,7},
  {&(_tg__ZTV9S19568C12__8S19568C38S19568C2__8S19568C1[5]),  5,7},
  {&(_tg__ZTV9S19568C13__8S19568C38S19568C2__8S19568C1[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__A3__8S19568C38S19568C2__8S19568C1[4]),  4,6},
  {&(_tg__ZTV9S19568C138S19568C8__A1__8S19568C38S19568C2__8S19568C1[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C38S19568C2__8S19568C1[4]),  4,6},
  {&(_tg__ZTV9S19568C18__8S19568C38S19568C2__8S19568C1[8]),  8,13},
  {&(_tg__ZTV9S19568C129S19568C18__A1__8S19568C38S19568C2__8S19568C1[4]),  4,6},
  {&(_tg__ZTV9S19568C14__A1__8S19568C38S19568C2__8S19568C1[7]),  7,10},
  {&(_tg__ZTV8S19568C4__8S19568C2__8S19568C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19568C2__8S19568C1[3]),  3,5},
  {&(_tg__ZTV8S19568C8__8S19568C2__8S19568C1[13]),  13,17},
  {&(_tg__ZTV8S19568C9__8S19568C2__8S19568C1[8]),  8,10},
  {&(_tg__ZTV9S19568C10__8S19568C2__8S19568C1[6]),  6,8},
  {&(_tg__ZTV9S19568C118S19568C9__8S19568C2__8S19568C1[5]),  5,7},
  {&(_tg__ZTV9S19568C12__8S19568C2__8S19568C1[5]),  5,7},
  {&(_tg__ZTV9S19568C13__8S19568C2__8S19568C1[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__A3__8S19568C2__8S19568C1[4]),  4,6},
  {&(_tg__ZTV9S19568C138S19568C8__A1__8S19568C2__8S19568C1[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C2__8S19568C1[4]),  4,6},
  {&(_tg__ZTV9S19568C18__8S19568C2__8S19568C1[8]),  8,13},
  {&(_tg__ZTV9S19568C129S19568C18__A1__8S19568C2__8S19568C1[4]),  4,6},
  {&(_tg__ZTV9S19568C14__A1__8S19568C2__8S19568C1[7]),  7,10},
  {&(_tg__ZTV9S19568C19__8S19568C2__8S19568C1[9]),  9,13},
  {&(_tg__ZTV8S3572C21__8S19568C2__8S19568C1[3]),  3,5},
  {&(_tg__ZTV8S19568C4__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C4__8S19568C1[3]),  3,5},
  {&(_tg__ZTV8S19568C8__8S19568C1[9]),  9,13},
  {&(_tg__ZTV9S19568C148S19568C8__8S19568C1[5]),  5,8},
  {&(_tg__ZTV9S19568C13__9S19568C148S19568C8__8S19568C1[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C148S19568C8__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C148S19568C8__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C138S19568C8__A1__8S19568C1[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C138S19568C8__A4__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C138S19568C8__A4__8S19568C1[3]),  3,5},
  {&(_tg__ZTV8S19568C4__9S19568C138S19568C8__A1__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C138S19568C8__A1__8S19568C1[3]),  3,5},
  {&(_tg__ZTV8S19568C9__8S19568C8__8S19568C1[8]),  8,10},
  {&(_tg__ZTV9S19568C10__8S19568C8__8S19568C1[6]),  6,8},
  {&(_tg__ZTV8S19568C4__8S19568C8__8S19568C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19568C8__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C118S19568C9__8S19568C8__8S19568C1[5]),  5,7},
  {&(_tg__ZTV9S19568C12__8S19568C8__8S19568C1[5]),  5,7},
  {&(_tg__ZTV9S19568C13__8S19568C8__8S19568C1[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__A3__8S19568C8__8S19568C1[4]),  4,6},
  {&(_tg__ZTV9S19568C13__A__8S19568C8__8S19568C1[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C13__A4__8S19568C8__8S19568C1[4]),  4,6},
  {&(_tg__ZTV8S19568C9__8S19568C1[7]),  7,9},
  {&(_tg__ZTV9S19568C118S19568C9__8S19568C1[5]),  5,7},
  {&(_tg__ZTV8S19568C49S19568C118S19568C9__A1__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C118S19568C9__A1__8S19568C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C118S19568C9__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C12__9S19568C118S19568C9__8S19568C1[5]),  5,7},
  {&(_tg__ZTV9S19568C10__8S19568C9__8S19568C1[6]),  6,8},
  {&(_tg__ZTV8S19568C4__8S19568C9__8S19568C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19568C9__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C11__8S19568C9__8S19568C1[5]),  5,7},
  {&(_tg__ZTV9S19568C12__8S19568C9__8S19568C1[5]),  5,7},
  {&(_tg__ZTV9S19568C10__8S19568C1[5]),  5,7},
  {&(_tg__ZTV8S19568C4__9S19568C10__8S19568C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19568C10__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C12__8S19568C1[4]),  4,6},
  {&(_tg__ZTV8S19568C49S19568C12__A2__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C12__A2__8S19568C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C12__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C13__8S19568C1[4]),  4,7},
  {&(_tg__ZTV8S19568C49S19568C13__A3__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C13__A3__8S19568C1[3]),  3,5},
  {&(_tg__ZTV8S19568C4__9S19568C13__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C13__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C18__8S19568C1[4]),  4,9},
  {&(_tg__ZTV8S19568C49S19568C18__A5__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C18__A5__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C129S19568C18__A1__8S19568C1[4]),  4,6},
  {&(_tg__ZTV8S19568C49S19568C129S19568C18__A6__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19568C49S19568C129S19568C18__A6__8S19568C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C129S19568C18__A1__8S19568C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19568C18__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C12__9S19568C18__8S19568C1[4]),  4,6},
  {&(_tg__ZTV9S19568C14__A1__8S19568C1[5]),  5,8},
  {&(_tg__ZTV9S19568C13__9S19568C14__A1__8S19568C1[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C14__A1__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C14__A1__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C19__8S19568C1[6]),  6,10},
  {&(_tg__ZTV9S19568C209S19568C19__8S19568C1[6]),  6,9},
  {&(_tg__ZTV8S3572C21__9S19568C209S19568C19__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C13__9S19568C209S19568C19__8S19568C1[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C209S19568C19__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C209S19568C19__8S19568C1[3]),  3,5},
  {&(_tg__ZTV8S3572C21__9S19568C19__8S19568C1[3]),  3,5},
  {&(_tg__ZTV9S19568C13__9S19568C19__8S19568C1[6]),  6,9},
  {&(_tg__ZTV8S19568C49S19568C13__9S19568C19__8S19568C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19568C19__8S19568C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19568C1[];
extern  VTBL_ENTRY _ZTV8S19568C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19568C1[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C19D0Ev,_ZTv0_n12_N9S19568C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C19D0Ev,_ZThn1732_N9S19568C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C19D1Ev,_ZTv0_n12_N9S19568C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C19D1Ev,_ZThn1732_N9S19568C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C20D0Ev,_ZTv0_n12_N9S19568C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C20D0Ev,_ZThn1732_N9S19568C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19568C20D1Ev,_ZTv0_n12_N9S19568C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19568C20D1Ev,_ZThn1732_N9S19568C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C9D0Ev,_ZTv0_n20_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19568C9D0Ev,_ZThn380_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C9D1Ev,_ZTv0_n20_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19568C9D1Ev,_ZThn380_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C9D0Ev,_ZTv0_n24_N8S19568C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19568C9D0Ev,_ZThn288_N8S19568C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C9D1Ev,_ZTv0_n24_N8S19568C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19568C9D1Ev,_ZThn288_N8S19568C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D0Ev,_ZTv0_n20_N9S19568C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19568C11D0Ev,_ZThn348_N9S19568C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C11D1Ev,_ZTv0_n20_N9S19568C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19568C11D1Ev,_ZThn348_N9S19568C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C8D0Ev,_ZTv0_n20_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19568C8D0Ev,_ZThn1932_N8S19568C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19568C8D0Ev,_ZThn1652_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C8D1Ev,_ZTv0_n20_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19568C8D1Ev,_ZThn1932_N8S19568C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19568C8D1Ev,_ZThn1652_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C8D0Ev,_ZTv0_n24_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19568C8D0Ev,_ZThn1560_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C8D1Ev,_ZTv0_n24_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19568C8D1Ev,_ZThn1560_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C8D0Ev,_ZTv0_n32_N8S19568C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19568C8D0Ev,_ZThn1272_N8S19568C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C8D1Ev,_ZTv0_n32_N8S19568C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19568C8D1Ev,_ZThn1272_N8S19568C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C14D0Ev,_ZTv0_n20_N9S19568C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19568C14D0Ev,_ZThn1932_N9S19568C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19568C14D1Ev,_ZTv0_n20_N9S19568C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19568C14D1Ev,_ZThn1932_N9S19568C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D0Ev,_ZTv0_n12_N8S19568C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19568C4D0Ev,_ZThn44_N8S19568C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C4D1Ev,_ZTv0_n12_N8S19568C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19568C4D1Ev,_ZThn44_N8S19568C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19568C2D0Ev,_ZTv0_n28_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S19568C2D0Ev,_ZThn3288_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19568C2D1Ev,_ZTv0_n28_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S19568C2D1Ev,_ZThn3288_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C2D0Ev,_ZTv0_n24_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19568C2D0Ev,_ZThn3256_N8S19568C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19568C2D0Ev,_ZThn2432_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C2D1Ev,_ZTv0_n24_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19568C2D1Ev,_ZThn3256_N8S19568C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19568C2D1Ev,_ZThn2432_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C2D0Ev,_ZTv0_n32_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19568C2D0Ev,_ZThn2144_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C2D1Ev,_ZTv0_n32_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19568C2D1Ev,_ZThn2144_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C2D0Ev,_ZTv0_n40_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19568C2D0Ev,_ZThn872_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C2D1Ev,_ZTv0_n40_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19568C2D1Ev,_ZThn872_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C2D0Ev,_ZTv0_n12_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19568C2D0Ev,_ZThn5020_N8S19568C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19568C2D0Ev,_ZThn840_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C2D1Ev,_ZTv0_n12_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19568C2D1Ev,_ZThn5020_N8S19568C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19568C2D1Ev,_ZThn840_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C2D0Ev,_ZTv0_n20_N8S19568C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19568C2D0Ev,_ZThn2928_N8S19568C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19568C2D0Ev,_ZThn2804_N8S19568C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19568C2D0Ev,_ZThn2524_N8S19568C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19568C2D0Ev,_ZThn796_N8S19568C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C2D1Ev,_ZTv0_n20_N8S19568C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19568C2D1Ev,_ZThn2928_N8S19568C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19568C2D1Ev,_ZThn2804_N8S19568C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19568C2D1Ev,_ZThn2524_N8S19568C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19568C2D1Ev,_ZThn796_N8S19568C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C3D0Ev,_ZTv0_n24_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19568C3D0Ev,_ZThn3256_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19568C3D0Ev,_ZThn2432_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C3D1Ev,_ZTv0_n24_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19568C3D1Ev,_ZThn3256_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19568C3D1Ev,_ZThn2432_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C3D0Ev,_ZTv0_n32_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19568C3D0Ev,_ZThn2144_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C3D1Ev,_ZTv0_n32_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19568C3D1Ev,_ZThn2144_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C3D0Ev,_ZTv0_n40_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19568C3D0Ev,_ZThn872_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C3D1Ev,_ZTv0_n40_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19568C3D1Ev,_ZThn872_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C3D0Ev,_ZTv0_n12_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19568C3D0Ev,_ZThn840_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C3D1Ev,_ZTv0_n12_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19568C3D1Ev,_ZThn840_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C3D0Ev,_ZTv0_n20_N8S19568C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19568C3D0Ev,_ZThn2928_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19568C3D0Ev,_ZThn2804_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19568C3D0Ev,_ZThn2524_N8S19568C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19568C3D0Ev,_ZThn796_N8S19568C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C3D1Ev,_ZTv0_n20_N8S19568C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19568C3D1Ev,_ZThn2928_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19568C3D1Ev,_ZThn2804_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19568C3D1Ev,_ZThn2524_N8S19568C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19568C3D1Ev,_ZThn796_N8S19568C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19568C1D0Ev,_ZTv0_n28_N8S19568C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14624_N8S19568C1D0Ev,_ZThn8584_N8S19568C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19568C1D1Ev,_ZTv0_n28_N8S19568C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14624_N8S19568C1D1Ev,_ZThn8584_N8S19568C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C1D0Ev,_ZTv0_n24_N8S19568C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14560_N8S19568C1D0Ev,_ZThn8552_N8S19568C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13192_N8S19568C1D0Ev,_ZThn7728_N8S19568C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19568C1D1Ev,_ZTv0_n24_N8S19568C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14560_N8S19568C1D1Ev,_ZThn8552_N8S19568C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13192_N8S19568C1D1Ev,_ZThn7728_N8S19568C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C1D0Ev,_ZTv0_n32_N8S19568C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12672_N8S19568C1D0Ev,_ZThn7440_N8S19568C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19568C1D1Ev,_ZTv0_n32_N8S19568C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12672_N8S19568C1D1Ev,_ZThn7440_N8S19568C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C1D0Ev,_ZTv0_n40_N8S19568C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10480_N8S19568C1D0Ev,_ZThn6168_N8S19568C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19568C1D1Ev,_ZTv0_n40_N8S19568C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10480_N8S19568C1D1Ev,_ZThn6168_N8S19568C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C1D0Ev,_ZTv0_n12_N8S19568C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17568_N8S19568C1D0Ev,_ZThn10316_N8S19568C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N8S19568C1D0Ev,_ZThn6136_N8S19568C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19568C1D1Ev,_ZTv0_n12_N8S19568C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17568_N8S19568C1D1Ev,_ZThn10316_N8S19568C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N8S19568C1D1Ev,_ZThn6136_N8S19568C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C1D0Ev,_ZTv0_n20_N8S19568C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14016_N8S19568C1D0Ev,_ZThn8224_N8S19568C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13792_N8S19568C1D0Ev,_ZThn8100_N8S19568C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13320_N8S19568C1D0Ev,_ZThn7820_N8S19568C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10336_N8S19568C1D0Ev,_ZThn6092_N8S19568C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19568C1D1Ev,_ZTv0_n20_N8S19568C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14016_N8S19568C1D1Ev,_ZThn8224_N8S19568C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13792_N8S19568C1D1Ev,_ZThn8100_N8S19568C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13320_N8S19568C1D1Ev,_ZThn7820_N8S19568C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10336_N8S19568C1D1Ev,_ZThn6092_N8S19568C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19568C1D0Ev,_ZTv0_n60_N8S19568C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9008_N8S19568C1D0Ev,_ZThn5296_N8S19568C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19568C1D1Ev,_ZTv0_n60_N8S19568C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9008_N8S19568C1D1Ev,_ZThn5296_N8S19568C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19568C1 = {  "S19568C1", // class name
  bases_S19568C1, 31,
  &(vtc_S19568C1[0]), // expected_vtbl_contents
  &(vtt_S19568C1[0]), // expected_vtt_contents
  ABISELECT(17600,10332), // object size
  NSPAIRA(_ZTI8S19568C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19568C1),172, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19568C1),118, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C4  : virtual S3572C5 , virtual S3572C4 {
  unsigned char s19567c4f0:1;
  void *s19567c4f1[3];
  ~S19567C4(); // tgen
  S19567C4(); // tgen
};
//SIG(-1 S19567C4) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} Fc:1 Fp[3]}


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

static void Test_S19567C4()
{
  extern Class_Descriptor cd_S19567C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S19567C4, buf);
    S19567C4 *dp, &lv = *(dp=new (buf) S19567C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S19567C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19567C4)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(40,20), "S19567C4");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(80,44), "S19567C4");
    set_bf_and_test(lv, s19567c4f0, ABISELECT(8,4), 0, 1, 1, "S19567C4");
    check_field_offset(lv, s19567c4f1, ABISELECT(16,8), "S19567C4.s19567c4f1");
    test_class_info(&lv, &cd_S19567C4);
    dp->~S19567C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C4(Test_S19567C4, "S19567C4", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN8S19567C4C1Ev();
extern void _ZN8S19567C4D1Ev();
Name_Map name_map_S19567C4[] = {
  NSPAIR(_ZN8S19567C4C1Ev),
  NSPAIR(_ZN8S19567C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
static Base_Class bases_S19567C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(80,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19567C4[];
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19567C4D1Ev,_ZThn44_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19567C4D0Ev,_ZThn44_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C4[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19567C4[];
static  VTT_ENTRY vtt_S19567C4[] = {
  {&(_ZTV8S19567C4[4]),  4,11},
  {&(_ZTV8S19567C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19567C4D0Ev,_ZThn44_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19567C4D1Ev,_ZThn44_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C4 = {  "S19567C4", // class name
  bases_S19567C4, 2,
  &(vtc_S19567C4[0]), // expected_vtbl_contents
  &(vtt_S19567C4[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI8S19567C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19567C4),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19567C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C10  : virtual S3572C5 , virtual S19567C4 {
  short s19567c10f0;
  int s19567c10f1[2];
  char s19567c10f2;
  __tsi64 s19567c10f3;
  int s19567c10f4;
  ::S3572C6_nt s19567c10f5;
  void *s19567c10f6;
  char s19567c10f7;
  short s19567c10f8;
  ::S3572C4 s19567c10f9;
  int s19567c10f10[2];
  __tsi64 s19567c10f11;
  virtual  ~S19567C10(); // _ZN9S19567C10D2Ev
  S19567C10(); // tgen
};
//SIG(-1 S19567C10) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ VBC2 VBC4{ vd m FC2 FC5{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL}


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

static void Test_S19567C10()
{
  extern Class_Descriptor cd_S19567C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,43)];
    init_test(&cd_S19567C10, buf);
    S19567C10 *dp, &lv = *(dp=new (buf) S19567C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,168), "sizeof(S19567C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19567C10)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(128,92), "S19567C10");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*), ABISELECT(128,92), "S19567C10");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*), ABISELECT(208,136), "S19567C10");
    check_base_class_offset(lv, (S19567C4*), ABISELECT(168,116), "S19567C10");
    check_field_offset(lv, s19567c10f0, ABISELECT(8,4), "S19567C10.s19567c10f0");
    check_field_offset(lv, s19567c10f1, ABISELECT(12,8), "S19567C10.s19567c10f1");
    check_field_offset(lv, s19567c10f2, ABISELECT(20,16), "S19567C10.s19567c10f2");
    check_field_offset(lv, s19567c10f3, ABISELECT(24,20), "S19567C10.s19567c10f3");
    check_field_offset(lv, s19567c10f4, ABISELECT(32,28), "S19567C10.s19567c10f4");
    check_field_offset(lv, s19567c10f5, ABISELECT(36,32), "S19567C10.s19567c10f5");
    check_field_offset(lv, s19567c10f6, ABISELECT(40,36), "S19567C10.s19567c10f6");
    check_field_offset(lv, s19567c10f7, ABISELECT(48,40), "S19567C10.s19567c10f7");
    check_field_offset(lv, s19567c10f8, ABISELECT(50,42), "S19567C10.s19567c10f8");
    check_field_offset(lv, s19567c10f9, ABISELECT(56,44), "S19567C10.s19567c10f9");
    check_field_offset(lv, s19567c10f10, ABISELECT(112,76), "S19567C10.s19567c10f10");
    check_field_offset(lv, s19567c10f11, ABISELECT(120,84), "S19567C10.s19567c10f11");
    test_class_info(&lv, &cd_S19567C10);
    dp->~S19567C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C10(Test_S19567C10, "S19567C10", ABISELECT(264,168));

#else // __cplusplus

extern void _ZN9S19567C10C1Ev();
extern void _ZN9S19567C10D2Ev();
Name_Map name_map_S19567C10[] = {
  NSPAIR(_ZN9S19567C10C1Ev),
  NSPAIR(_ZN9S19567C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
static Base_Class bases_S19567C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(208,136), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19567C4,    ABISELECT(168,116), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19567C10[];
extern void _ZN9S19567C10D1Ev();
extern void _ZN9S19567C10D0Ev();
extern void ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev)();
extern void ABISELECT(_ZThn168_N9S19567C10D1Ev,_ZThn116_N9S19567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev)();
extern void ABISELECT(_ZThn168_N9S19567C10D0Ev,_ZThn116_N9S19567C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev)();
extern void ABISELECT(_ZThn208_N9S19567C10D1Ev,_ZThn136_N9S19567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev)();
extern void ABISELECT(_ZThn208_N9S19567C10D0Ev,_ZThn136_N9S19567C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C10[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&_ZN9S19567C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C10D0Ev,
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19567C10[];
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C10[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19567C4D1Ev,_ZThn20_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19567C4D0Ev,_ZThn20_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C4__9S19567C10[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
static  VTT_ENTRY vtt_S19567C10[] = {
  {&(_ZTV9S19567C10[5]),  5,19},
  {&(_ZTV9S19567C10[12]),  12,19},
  {&(_ZTV9S19567C10[17]),  17,19},
  {&(_tg__ZTV8S19567C4__9S19567C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C4__9S19567C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19567C10[];
extern  VTBL_ENTRY _ZTV9S19567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C10[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19567C4D0Ev,_ZThn20_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19567C4D1Ev,_ZThn20_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19567C10D0Ev,_ZThn136_N9S19567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19567C10D1Ev,_ZThn136_N9S19567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19567C10D0Ev,_ZThn116_N9S19567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19567C10D1Ev,_ZThn116_N9S19567C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C10 = {  "S19567C10", // class name
  bases_S19567C10, 3,
  &(vtc_S19567C10[0]), // expected_vtbl_contents
  &(vtt_S19567C10[0]), // expected_vtt_contents
  ABISELECT(264,168), // object size
  NSPAIRA(_ZTI9S19567C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19567C10),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19567C10),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C12  : virtual S3572C5 , virtual S3572C4 , S19567C4 {
  char s19567c12f0;
  int s19567c12f1[3];
  void *s19567c12f2;
  short s19567c12f3:16;
  int s19567c12f4;
  void *s19567c12f5[2];
  int s19567c12f6;
  ::S3572C5 s19567c12f7[9];
  int s19567c12f8;
  virtual  ~S19567C12(); // _ZN9S19567C12D2Ev
  S19567C12(); // tgen
};
//SIG(-1 S19567C12) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC2[9] Fi}


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

static void Test_S19567C12()
{
  extern Class_Descriptor cd_S19567C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(71,85)];
    init_test(&cd_S19567C12, buf);
    S19567C12 *dp, &lv = *(dp=new (buf) S19567C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,336), "sizeof(S19567C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19567C12)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(464,280), "S19567C12");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*), ABISELECT(464,280), "S19567C12");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(504,304), "S19567C12");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*), ABISELECT(504,304), "S19567C12");
    check_base_class_offset(lv, (S19567C4*), 0, "S19567C12");
    check_field_offset(lv, s19567c12f0, ABISELECT(40,20), "S19567C12.s19567c12f0");
    check_field_offset(lv, s19567c12f1, ABISELECT(44,24), "S19567C12.s19567c12f1");
    check_field_offset(lv, s19567c12f2, ABISELECT(56,36), "S19567C12.s19567c12f2");
    set_bf_and_test(lv, s19567c12f3, ABISELECT(64,40), 0, 16, 1, "S19567C12");
    set_bf_and_test(lv, s19567c12f3, ABISELECT(64,40), 0, 16, hide_sll(1LL<<15), "S19567C12");
    check_field_offset(lv, s19567c12f4, ABISELECT(68,44), "S19567C12.s19567c12f4");
    check_field_offset(lv, s19567c12f5, ABISELECT(72,48), "S19567C12.s19567c12f5");
    check_field_offset(lv, s19567c12f6, ABISELECT(88,56), "S19567C12.s19567c12f6");
    check_field_offset(lv, s19567c12f7, ABISELECT(96,60), "S19567C12.s19567c12f7");
    check_field_offset(lv, s19567c12f8, ABISELECT(456,276), "S19567C12.s19567c12f8");
    test_class_info(&lv, &cd_S19567C12);
    dp->~S19567C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C12(Test_S19567C12, "S19567C12", ABISELECT(560,336));

#else // __cplusplus

extern void _ZN9S19567C12C1Ev();
extern void _ZN9S19567C12D2Ev();
Name_Map name_map_S19567C12[] = {
  NSPAIR(_ZN9S19567C12C1Ev),
  NSPAIR(_ZN9S19567C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
static Base_Class bases_S19567C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(464,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(504,304), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19567C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19567C12[];
extern void _ZN9S19567C12D1Ev();
extern void _ZN9S19567C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev)();
extern void ABISELECT(_ZThn504_N9S19567C12D1Ev,_ZThn304_N9S19567C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev)();
extern void ABISELECT(_ZThn504_N9S19567C12D0Ev,_ZThn304_N9S19567C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C12[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&_ZN9S19567C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C12D0Ev,
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19567C12[];
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C12[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn504_N8S19567C4D1Ev,_ZThn304_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn504_N8S19567C4D0Ev,_ZThn304_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C4__9S19567C12[] = {
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
static  VTT_ENTRY vtt_S19567C12[] = {
  {&(_ZTV9S19567C12[4]),  4,11},
  {&(_tg__ZTV8S19567C4__9S19567C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C4__9S19567C12[3]),  3,5},
  {&(_ZTV9S19567C12[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S19567C12[];
extern  VTBL_ENTRY _ZTV9S19567C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C12[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19567C4D0Ev,_ZThn304_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19567C4D1Ev,_ZThn304_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S19567C12D0Ev,_ZThn304_N9S19567C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S19567C12D1Ev,_ZThn304_N9S19567C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C12 = {  "S19567C12", // class name
  bases_S19567C12, 3,
  &(vtc_S19567C12[0]), // expected_vtbl_contents
  &(vtt_S19567C12[0]), // expected_vtt_contents
  ABISELECT(560,336), // object size
  NSPAIRA(_ZTI9S19567C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19567C12),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19567C12),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C13  : virtual S3572C5 , S3572C4 , S19567C4 {
  char s19567c13f0;
  void *s19567c13f1[7];
  long double s19567c13f2;
  void *s19567c13f3[4];
  int s19567c13f4;
  char s19567c13f5;
  void *s19567c13f6;
  virtual  ~S19567C13(); // _ZN9S19567C13D2Ev
  virtual void  v1(); // _ZN9S19567C132v1Ev
  S19567C13(); // tgen
};
//SIG(-1 S19567C13) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} BC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}


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

static void Test_S19567C13()
{
  extern Class_Descriptor cd_S19567C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,46)];
    init_test(&cd_S19567C13, buf);
    S19567C13 *dp, &lv = *(dp=new (buf) S19567C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,180), "sizeof(S19567C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C13)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(224,124), "S19567C13");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*), ABISELECT(224,124), "S19567C13");
    /*is_ambiguous_... S19567C13::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S19567C13");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*), ABISELECT(264,148), "S19567C13");
    check_base_class_offset(lv, (S19567C4*), ABISELECT(56,32), "S19567C13");
    check_field_offset(lv, s19567c13f0, ABISELECT(96,52), "S19567C13.s19567c13f0");
    check_field_offset(lv, s19567c13f1, ABISELECT(104,56), "S19567C13.s19567c13f1");
    check_field_offset(lv, s19567c13f2, ABISELECT(160,84), "S19567C13.s19567c13f2");
    check_field_offset(lv, s19567c13f3, ABISELECT(176,96), "S19567C13.s19567c13f3");
    check_field_offset(lv, s19567c13f4, ABISELECT(208,112), "S19567C13.s19567c13f4");
    check_field_offset(lv, s19567c13f5, ABISELECT(212,116), "S19567C13.s19567c13f5");
    check_field_offset(lv, s19567c13f6, ABISELECT(216,120), "S19567C13.s19567c13f6");
    test_class_info(&lv, &cd_S19567C13);
    dp->~S19567C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C13(Test_S19567C13, "S19567C13", ABISELECT(320,180));

#else // __cplusplus

extern void _ZN9S19567C13C1Ev();
extern void _ZN9S19567C13D2Ev();
Name_Map name_map_S19567C13[] = {
  NSPAIR(_ZN9S19567C13C1Ev),
  NSPAIR(_ZN9S19567C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
static Base_Class bases_S19567C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(224,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
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3572C4,    ABISELECT(264,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19567C4,    ABISELECT(56,32), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19567C13[];
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S19567C13D1Ev,_ZThn148_N9S19567C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S19567C13D0Ev,_ZThn148_N9S19567C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C13[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19567C13[];
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C13[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S19567C4D1Ev,_ZThn116_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S19567C4D0Ev,_ZThn116_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C4__9S19567C13[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
static  VTT_ENTRY vtt_S19567C13[] = {
  {&(_ZTV9S19567C13[4]),  4,18},
  {&(_tg__ZTV8S19567C4__9S19567C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C4__9S19567C13[3]),  3,5},
  {&(_ZTV9S19567C13[11]),  11,18},
  {&(_ZTV9S19567C13[16]),  16,18},
};
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19567C4D0Ev,_ZThn116_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19567C4D1Ev,_ZThn116_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19567C13D0Ev,_ZThn148_N9S19567C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19567C13D1Ev,_ZThn148_N9S19567C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C13 = {  "S19567C13", // class name
  bases_S19567C13, 4,
  &(vtc_S19567C13[0]), // expected_vtbl_contents
  &(vtt_S19567C13[0]), // expected_vtt_contents
  ABISELECT(320,180), // object size
  NSPAIRA(_ZTI9S19567C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19567C13),18, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19567C13),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C11  : virtual S3572C4 , S19567C4 , virtual S19567C12 {
  ::S19567C13 s19567c11f0;
  virtual  ~S19567C11(); // _ZN9S19567C11D2Ev
  S19567C11(); // tgen
};
//SIG(-1 S19567C11) C1{ VBC2{ vd m FC3{ m Fp Fs Fi Fp Fl[2]} FC4{}} BC5{ VBC3 VBC2 Fc:1 Fp[3]} VBC6{ VBC3 VBC2 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC7{ VBC3 BC2 BC5 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}}


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

static void Test_S19567C11()
{
  extern Class_Descriptor cd_S19567C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,135)];
    init_test(&cd_S19567C11, buf);
    S19567C11 *dp, &lv = *(dp=new (buf) S19567C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,536), "sizeof(S19567C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C11)");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(368,200), "S19567C11");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*), ABISELECT(368,200), "S19567C11");
    check_base_class_offset(lv, (S3572C4*)(S19567C12*), ABISELECT(368,200), "S19567C11");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C12*), ABISELECT(368,200), "S19567C11");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*), ABISELECT(424,232), "S19567C11");
    check_base_class_offset(lv, (S3572C5*)(S19567C12*), ABISELECT(424,232), "S19567C11");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C12*), ABISELECT(424,232), "S19567C11");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*), 0, "S19567C11");
    check_base_class_offset(lv, (S19567C4*)(S19567C12*), ABISELECT(464,256), "S19567C11");
    check_base_class_offset(lv, (S19567C12*), ABISELECT(464,256), "S19567C11");
    check_field_offset(lv, s19567c11f0, ABISELECT(48,20), "S19567C11.s19567c11f0");
    test_class_info(&lv, &cd_S19567C11);
    dp->~S19567C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C11(Test_S19567C11, "S19567C11", ABISELECT(928,536));

#else // __cplusplus

extern void _ZN9S19567C11C1Ev();
extern void _ZN9S19567C11D2Ev();
Name_Map name_map_S19567C11[] = {
  NSPAIR(_ZN9S19567C11C1Ev),
  NSPAIR(_ZN9S19567C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C12;
extern VTBL_ENTRY _ZTI9S19567C12[];
extern  VTBL_ENTRY _ZTV9S19567C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C12[];
static Base_Class bases_S19567C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(368,200), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C5,    ABISELECT(424,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19567C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19567C4,    ABISELECT(464,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19567C12,    ABISELECT(464,256), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19567C11[];
extern void _ZN9S19567C11D1Ev();
extern void _ZN9S19567C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19567C11D1Ev,_ZThn200_N9S19567C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev)();
extern void ABISELECT(_ZThn368_N9S19567C11D0Ev,_ZThn200_N9S19567C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19567C11D1Ev,_ZThn256_N9S19567C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev)();
extern void ABISELECT(_ZThn464_N9S19567C11D0Ev,_ZThn256_N9S19567C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C11[] = {
  ABISELECT(464,256),
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&_ZN9S19567C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C11D0Ev,
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev),
  ABISELECT(-464,-256),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19567C11[];
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C11[] = {
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn368_N8S19567C4D1Ev,_ZThn200_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn368_N8S19567C4D0Ev,_ZThn200_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C4__9S19567C11[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void _ZN9S19567C12D1Ev();
extern void _ZN9S19567C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C12__9S19567C11[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&_ZN9S19567C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C12D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C12__A1__9S19567C11[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C12__A1__9S19567C11[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C12__9S19567C11[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev),
};
static  VTT_ENTRY vtt_S19567C11[] = {
  {&(_ZTV9S19567C11[5]),  5,19},
  {&(_tg__ZTV8S19567C4__9S19567C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C4__9S19567C11[3]),  3,5},
  {&(_ZTV9S19567C11[10]),  10,19},
  {&(_ZTV9S19567C11[17]),  17,19},
  {&(_tg__ZTV9S19567C12__9S19567C11[4]),  4,6},
  {&(_tg__ZTV8S19567C49S19567C12__A1__9S19567C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C12__A1__9S19567C11[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C12__9S19567C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19567C11[];
extern  VTBL_ENTRY _ZTV9S19567C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C11[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19567C4D0Ev,_ZThn200_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19567C4D1Ev,_ZThn200_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19567C11D0Ev,_ZThn256_N9S19567C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19567C11D1Ev,_ZThn256_N9S19567C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19567C11D0Ev,_ZThn200_N9S19567C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19567C11D1Ev,_ZThn200_N9S19567C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C11 = {  "S19567C11", // class name
  bases_S19567C11, 5,
  &(vtc_S19567C11[0]), // expected_vtbl_contents
  &(vtt_S19567C11[0]), // expected_vtt_contents
  ABISELECT(928,536), // object size
  NSPAIRA(_ZTI9S19567C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19567C11),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19567C11),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C9  : virtual S19567C10 , S3572C4 , S19567C11 {
  int s19567c9f0[6];
  void *s19567c9f1[8];
  virtual  ~S19567C9(); // _ZN8S19567C9D2Ev
  S19567C9(); // tgen
};
//SIG(-1 S19567C9) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ VBC3 VBC5{ vd m FC3 FC6{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} BC5 BC7{ VBC5 BC4 VBC8{ VBC3 VBC5 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC9{ VBC3 BC5 BC4 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]}


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

static void Test_S19567C9()
{
  extern Class_Descriptor cd_S19567C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(79,185)];
    init_test(&cd_S19567C9, buf);
    S19567C9 *dp, &lv = *(dp=new (buf) S19567C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1248,736), "sizeof(S19567C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C9)");
    check_base_class_offset(lv, (S3572C5*)(S19567C10*), ABISELECT(648,380), "S19567C9");
    /*is_ambiguous_... S19567C9::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*), ABISELECT(648,380), "S19567C9");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C11*), ABISELECT(648,380), "S19567C9");
    check_base_class_offset(lv, (S3572C5*)(S19567C12*), ABISELECT(648,380), "S19567C9");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C12*), ABISELECT(648,380), "S19567C9");
    /*is_ambiguous_... S19567C9::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*), ABISELECT(728,424), "S19567C9");
    check_base_class_offset(lv, (S3572C4*)(S19567C11*), ABISELECT(728,424), "S19567C9");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C11*), ABISELECT(728,424), "S19567C9");
    check_base_class_offset(lv, (S3572C4*)(S19567C12*), ABISELECT(728,424), "S19567C9");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C12*), ABISELECT(728,424), "S19567C9");
    check_base_class_offset(lv, (S19567C4*)(S19567C10*), ABISELECT(688,404), "S19567C9");
    check_base_class_offset(lv, (S19567C10*), ABISELECT(520,288), "S19567C9");
    /*is_ambiguous_... S19567C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S19567C9");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C11*), ABISELECT(64,32), "S19567C9");
    check_base_class_offset(lv, (S19567C4*)(S19567C12*), ABISELECT(784,456), "S19567C9");
    check_base_class_offset(lv, (S19567C12*)(S19567C11*), ABISELECT(784,456), "S19567C9");
    check_base_class_offset(lv, (S19567C11*), ABISELECT(64,32), "S19567C9");
    check_field_offset(lv, s19567c9f0, ABISELECT(432,232), "S19567C9.s19567c9f0");
    check_field_offset(lv, s19567c9f1, ABISELECT(456,256), "S19567C9.s19567c9f1");
    test_class_info(&lv, &cd_S19567C9);
    dp->~S19567C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C9(Test_S19567C9, "S19567C9", ABISELECT(1248,736));

#else // __cplusplus

extern void _ZN8S19567C9C1Ev();
extern void _ZN8S19567C9D2Ev();
Name_Map name_map_S19567C9[] = {
  NSPAIR(_ZN8S19567C9C1Ev),
  NSPAIR(_ZN8S19567C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C10;
extern VTBL_ENTRY _ZTI9S19567C10[];
extern  VTBL_ENTRY _ZTV9S19567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C12;
extern VTBL_ENTRY _ZTI9S19567C12[];
extern  VTBL_ENTRY _ZTV9S19567C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C12[];
extern Class_Descriptor cd_S19567C11;
extern VTBL_ENTRY _ZTI9S19567C11[];
extern  VTBL_ENTRY _ZTV9S19567C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C11[];
static Base_Class bases_S19567C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(648,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(728,424), //bcp->offset
    31, //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
    2, //immediately_derived
  0, 1},
  {&cd_S19567C4,    ABISELECT(688,404), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19567C10,    ABISELECT(520,288), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19567C4,    ABISELECT(64,32), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(784,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19567C12,    ABISELECT(784,456), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19567C11,    ABISELECT(64,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19567C9[];
extern void _ZN8S19567C9D1Ev();
extern void _ZN8S19567C9D0Ev();
extern void ABISELECT(_ZThn64_N8S19567C9D1Ev,_ZThn32_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19567C9D0Ev,_ZThn32_N8S19567C9D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn520_N8S19567C9D1Ev,_ZThn288_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn520_N8S19567C9D0Ev,_ZThn288_N8S19567C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn688_N8S19567C9D1Ev,_ZThn404_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn688_N8S19567C9D0Ev,_ZThn404_N8S19567C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn728_N8S19567C9D1Ev,_ZThn424_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn728_N8S19567C9D0Ev,_ZThn424_N8S19567C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn784_N8S19567C9D1Ev,_ZThn456_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn784_N8S19567C9D0Ev,_ZThn456_N8S19567C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C9[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&_ZN8S19567C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C9D0Ev,
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C9D1Ev,_ZThn32_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C9D0Ev,_ZThn32_N8S19567C9D0Ev),
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev),
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev),
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev),
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19567C9[];
extern void _ZN9S19567C11D1Ev();
extern void _ZN9S19567C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C11__8S19567C9[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&_ZN9S19567C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C11D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C11__A1__8S19567C9[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn664_N8S19567C4D1Ev,_ZThn392_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn664_N8S19567C4D0Ev,_ZThn392_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C11__A1__8S19567C9[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev)();
extern void ABISELECT(_ZThn664_N9S19567C11D1Ev,_ZThn392_N9S19567C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev)();
extern void ABISELECT(_ZThn664_N9S19567C11D0Ev,_ZThn392_N9S19567C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C11__8S19567C9[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev)();
extern void ABISELECT(_ZThn720_N9S19567C11D1Ev,_ZThn424_N9S19567C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev)();
extern void ABISELECT(_ZThn720_N9S19567C11D0Ev,_ZThn424_N9S19567C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__9S19567C11__8S19567C9[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev),
};
extern void _ZN9S19567C10D1Ev();
extern void _ZN9S19567C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C9[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&_ZN9S19567C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev)();
extern void ABISELECT(_ZThn168_N9S19567C10D1Ev,_ZThn116_N9S19567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev)();
extern void ABISELECT(_ZThn168_N9S19567C10D0Ev,_ZThn116_N9S19567C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C10__8S19567C9[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev)();
extern void ABISELECT(_ZThn208_N9S19567C10D1Ev,_ZThn136_N9S19567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev)();
extern void ABISELECT(_ZThn208_N9S19567C10D0Ev,_ZThn136_N9S19567C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C10__8S19567C9[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev),
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C9[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19567C4D1Ev,_ZThn20_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19567C4D0Ev,_ZThn20_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C4__8S19567C9[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void _ZN9S19567C12D1Ev();
extern void _ZN9S19567C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C9[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&_ZN9S19567C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C12D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C12__A2__8S19567C9[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C12__A2__8S19567C9[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C12__8S19567C9[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev),
};
static  VTT_ENTRY vtt_S19567C9[] = {
  {&(_ZTV8S19567C9[7]),  7,43},
  {&(_tg__ZTV9S19567C11__8S19567C9[5]),  5,7},
  {&(_tg__ZTV8S19567C49S19567C11__A1__8S19567C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C11__A1__8S19567C9[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C11__8S19567C9[3]),  3,5},
  {&(_tg__ZTV9S19567C12__9S19567C11__8S19567C9[5]),  5,7},
  {&(_ZTV8S19567C9[22]),  22,43},
  {&(_ZTV8S19567C9[29]),  29,43},
  {&(_ZTV8S19567C9[34]),  34,43},
  {&(_ZTV8S19567C9[14]),  14,43},
  {&(_ZTV8S19567C9[41]),  41,43},
  {&(_tg__ZTV9S19567C10__8S19567C9[5]),  5,7},
  {&(_tg__ZTV8S19567C4__9S19567C10__8S19567C9[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19567C10__8S19567C9[3]),  3,5},
  {&(_tg__ZTV8S19567C4__8S19567C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C4__8S19567C9[3]),  3,5},
  {&(_tg__ZTV9S19567C12__8S19567C9[4]),  4,6},
  {&(_tg__ZTV8S19567C49S19567C12__A2__8S19567C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C12__A2__8S19567C9[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C12__8S19567C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19567C9[];
extern  VTBL_ENTRY _ZTV8S19567C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C9[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19567C10D0Ev,_ZThn136_N9S19567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19567C10D1Ev,_ZThn136_N9S19567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19567C10D0Ev,_ZThn116_N9S19567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19567C10D1Ev,_ZThn116_N9S19567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19567C11D0Ev,_ZThn424_N9S19567C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19567C11D1Ev,_ZThn424_N9S19567C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19567C11D0Ev,_ZThn392_N9S19567C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19567C11D1Ev,_ZThn392_N9S19567C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19567C4D0Ev,_ZThn20_N8S19567C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19567C4D0Ev,_ZThn392_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19567C4D1Ev,_ZThn20_N8S19567C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19567C4D1Ev,_ZThn392_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S19567C9D0Ev,_ZThn424_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S19567C9D1Ev,_ZThn424_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19567C9D0Ev,_ZThn456_N8S19567C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19567C9D0Ev,_ZThn404_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19567C9D1Ev,_ZThn456_N8S19567C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19567C9D1Ev,_ZThn404_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19567C9D0Ev,_ZThn288_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19567C9D1Ev,_ZThn288_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C9 = {  "S19567C9", // class name
  bases_S19567C9, 9,
  &(vtc_S19567C9[0]), // expected_vtbl_contents
  &(vtt_S19567C9[0]), // expected_vtt_contents
  ABISELECT(1248,736), // object size
  NSPAIRA(_ZTI8S19567C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19567C9),43, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19567C9),20, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C14  : virtual S19567C13 {
  int s19567c14f0;
  void *s19567c14f1;
  int s19567c14f2:2;
  long double s19567c14f3;
  void *s19567c14f4;
  virtual  ~S19567C14(); // _ZN9S19567C14D2Ev
  virtual void  v2(); // _ZN9S19567C142v2Ev
  S19567C14(); // tgen
};
//SIG(-1 S19567C14) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} BC4{ vd m FC3 FC5{}} BC6{ VBC3 VBC4 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v1 Fi Fp Fi:2 FD Fp}


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

static void Test_S19567C14()
{
  extern Class_Descriptor cd_S19567C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,54)];
    init_test(&cd_S19567C14, buf);
    S19567C14 *dp, &lv = *(dp=new (buf) S19567C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,212), "sizeof(S19567C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C14)");
    check_base_class_offset(lv, (S3572C5*)(S19567C13*), ABISELECT(288,156), "S19567C14");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C13*), ABISELECT(288,156), "S19567C14");
    /*is_ambiguous_... S19567C13::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C13*), ABISELECT(64,32), "S19567C14");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C13*), ABISELECT(328,180), "S19567C14");
    check_base_class_offset(lv, (S19567C4*)(S19567C13*), ABISELECT(120,64), "S19567C14");
    check_base_class_offset(lv, (S19567C13*), ABISELECT(64,32), "S19567C14");
    check_field_offset(lv, s19567c14f0, ABISELECT(8,4), "S19567C14.s19567c14f0");
    check_field_offset(lv, s19567c14f1, ABISELECT(16,8), "S19567C14.s19567c14f1");
    set_bf_and_test(lv, s19567c14f2, ABISELECT(24,12), 0, 2, 1, "S19567C14");
    set_bf_and_test(lv, s19567c14f2, ABISELECT(24,12), 0, 2, hide_sll(1LL<<1), "S19567C14");
    check_field_offset(lv, s19567c14f3, ABISELECT(32,16), "S19567C14.s19567c14f3");
    check_field_offset(lv, s19567c14f4, ABISELECT(48,28), "S19567C14.s19567c14f4");
    test_class_info(&lv, &cd_S19567C14);
    dp->~S19567C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C14(Test_S19567C14, "S19567C14", ABISELECT(384,212));

#else // __cplusplus

extern void _ZN9S19567C14C1Ev();
extern void _ZN9S19567C14D2Ev();
Name_Map name_map_S19567C14[] = {
  NSPAIR(_ZN9S19567C14C1Ev),
  NSPAIR(_ZN9S19567C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C13;
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
static Base_Class bases_S19567C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(288,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_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(328,180), //bcp->offset
    23, //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_S19567C4,    ABISELECT(120,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19567C13,    ABISELECT(64,32), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19567C14[];
extern void _ZN9S19567C14D1Ev();
extern void _ZN9S19567C14D0Ev();
extern void _ZN9S19567C142v2Ev();
extern void ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19567C14D1Ev,_ZThn32_N9S19567C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19567C14D0Ev,_ZThn32_N9S19567C14D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev)();
extern void ABISELECT(_ZThn328_N9S19567C14D1Ev,_ZThn180_N9S19567C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev)();
extern void ABISELECT(_ZThn328_N9S19567C14D0Ev,_ZThn180_N9S19567C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C14[] = {
  ABISELECT(328,180),
  ABISELECT(288,156),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&_ZN9S19567C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  0,
  ABISELECT(-64,-32),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev),
  ABISELECT(-328,-180),
  ABISELECT(-328,-180),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19567C14[];
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C14[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C14[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S19567C4D1Ev,_ZThn116_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S19567C4D0Ev,_ZThn116_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C13__9S19567C14[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C13__9S19567C14[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S19567C13D1Ev,_ZThn148_N9S19567C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S19567C13D0Ev,_ZThn148_N9S19567C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C13__9S19567C14[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
static  VTT_ENTRY vtt_S19567C14[] = {
  {&(_ZTV9S19567C14[5]),  5,28},
  {&(_ZTV9S19567C14[14]),  14,28},
  {&(_ZTV9S19567C14[21]),  21,28},
  {&(_ZTV9S19567C14[26]),  26,28},
  {&(_tg__ZTV9S19567C13__9S19567C14[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C13__9S19567C14[3]),  3,5},
  {&(_tg__ZTV8S19567C4__9S19567C13__9S19567C14[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C13__9S19567C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19567C14[];
extern  VTBL_ENTRY _ZTV9S19567C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C14[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19567C13D0Ev,_ZThn148_N9S19567C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19567C13D1Ev,_ZThn148_N9S19567C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19567C4D0Ev,_ZThn116_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19567C4D1Ev,_ZThn116_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19567C14D0Ev,_ZThn180_N9S19567C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S19567C14D1Ev,_ZThn180_N9S19567C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19567C14D0Ev,_ZThn32_N9S19567C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19567C14D1Ev,_ZThn32_N9S19567C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C14 = {  "S19567C14", // class name
  bases_S19567C14, 5,
  &(vtc_S19567C14[0]), // expected_vtbl_contents
  &(vtt_S19567C14[0]), // expected_vtt_contents
  ABISELECT(384,212), // object size
  NSPAIRA(_ZTI9S19567C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19567C14),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19567C14),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  S19567C8  : virtual S19567C9 , S19567C14 , S19567C13 {
  int s19567c8f0;
  long s19567c8f1;
  int s19567c8f2:6;
  ::S3572C16 s19567c8f3;
  long s19567c8f4;
  int s19567c8f5;
  void *s19567c8f6;
  ::S3572C2 s19567c8f7;
  virtual  ~S19567C8(); // _ZN8S19567C8D2Ev
  virtual void  v3(); // _ZN8S19567C82v3Ev
  S19567C8(); // tgen
};
//SIG(-1 S19567C8) C1{ VBC2{ VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ VBC4 VBC6{ vd m FC4 FC7{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} BC6 BC8{ VBC6 BC5 VBC9{ VBC4 VBC6 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC10{ VBC4 BC6 BC5 vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC11{ VBC10 vd v3 Fi Fp Fi:2 FD Fp} BC10 vd v1 Fi Fl Fi:6 FC12{ BC13{ VBC4 VBC6 Fc:1 Fp[3]} VBC14{ VBC4 BC6 BC13 vd v4 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC15{ BC16{ VBC6 BC13 VBC17{ VBC4 VBC6 BC13 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC14} VBC18{ VBC4 VBC13 vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} VBC14 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}}


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

static void Test_S19567C8()
{
  extern Class_Descriptor cd_S19567C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(230,533)];
    init_test(&cd_S19567C8, buf);
    S19567C8 *dp, &lv = *(dp=new (buf) S19567C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3664,2128), "sizeof(S19567C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C8)");
    check_base_class_offset(lv, (S3572C5*)(S19567C10*), ABISELECT(2840,1648), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*), ABISELECT(2840,1648), "S19567C8");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(2840,1648), "S19567C8");
    check_base_class_offset(lv, (S3572C5*)(S19567C12*), ABISELECT(2840,1648), "S19567C8");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C12*), ABISELECT(2840,1648), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C13*), ABISELECT(2840,1648), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C13*), ABISELECT(2840,1648), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C13*), ABISELECT(2840,1648), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C13*), ABISELECT(2840,1648), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*), ABISELECT(2920,1692), "S19567C8");
    check_base_class_offset(lv, (S3572C4*)(S19567C11*)(S19567C9*), ABISELECT(2920,1692), "S19567C8");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(2920,1692), "S19567C8");
    check_base_class_offset(lv, (S3572C4*)(S19567C12*), ABISELECT(2920,1692), "S19567C8");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C12*), ABISELECT(2920,1692), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C13*), ABISELECT(2920,1692), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C13*), ABISELECT(2920,1692), "S19567C8");
    check_base_class_offset(lv, (S19567C4*)(S19567C10*), ABISELECT(2880,1672), "S19567C8");
    check_base_class_offset(lv, (S19567C10*)(S19567C9*), ABISELECT(2712,1556), "S19567C8");
    /*is_ambiguous_... S19567C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C9*), ABISELECT(2192,1268), "S19567C8");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(2256,1300), "S19567C8");
    check_base_class_offset(lv, (S19567C4*)(S19567C12*), ABISELECT(2976,1724), "S19567C8");
    check_base_class_offset(lv, (S19567C12*)(S19567C11*)(S19567C9*), ABISELECT(2976,1724), "S19567C8");
    check_base_class_offset(lv, (S19567C11*)(S19567C9*), ABISELECT(2256,1300), "S19567C8");
    check_base_class_offset(lv, (S19567C9*), ABISELECT(2192,1268), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C13*), ABISELECT(3440,2004), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C13*), ABISELECT(3496,2036), "S19567C8");
    check_base_class_offset(lv, (S19567C13*)(S19567C14*), ABISELECT(3440,2004), "S19567C8");
    check_base_class_offset(lv, (S19567C14*), 0, "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C13*), ABISELECT(64,32), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C13*), ABISELECT(120,64), "S19567C8");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C13*), ABISELECT(64,32), "S19567C8");
    check_field_offset(lv, s19567c8f0, ABISELECT(288,156), "S19567C8.s19567c8f0");
    check_field_offset(lv, s19567c8f1, ABISELECT(296,160), "S19567C8.s19567c8f1");
    set_bf_and_test(lv, s19567c8f2, ABISELECT(304,164), 0, 6, 1, "S19567C8");
    set_bf_and_test(lv, s19567c8f2, ABISELECT(304,164), 0, 6, hide_sll(1LL<<5), "S19567C8");
    check_field_offset(lv, s19567c8f3, ABISELECT(320,168), "S19567C8.s19567c8f3");
    check_field_offset(lv, s19567c8f4, ABISELECT(704,376), "S19567C8.s19567c8f4");
    check_field_offset(lv, s19567c8f5, ABISELECT(712,380), "S19567C8.s19567c8f5");
    check_field_offset(lv, s19567c8f6, ABISELECT(720,384), "S19567C8.s19567c8f6");
    check_field_offset(lv, s19567c8f7, ABISELECT(736,388), "S19567C8.s19567c8f7");
    test_class_info(&lv, &cd_S19567C8);
    dp->~S19567C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C8(Test_S19567C8, "S19567C8", ABISELECT(3664,2128));

#else // __cplusplus

extern void _ZN8S19567C8C1Ev();
extern void _ZN8S19567C8D2Ev();
Name_Map name_map_S19567C8[] = {
  NSPAIR(_ZN8S19567C8C1Ev),
  NSPAIR(_ZN8S19567C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C10;
extern VTBL_ENTRY _ZTI9S19567C10[];
extern  VTBL_ENTRY _ZTV9S19567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C12;
extern VTBL_ENTRY _ZTI9S19567C12[];
extern  VTBL_ENTRY _ZTV9S19567C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C12[];
extern Class_Descriptor cd_S19567C11;
extern VTBL_ENTRY _ZTI9S19567C11[];
extern  VTBL_ENTRY _ZTV9S19567C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C11[];
extern Class_Descriptor cd_S19567C9;
extern VTBL_ENTRY _ZTI8S19567C9[];
extern  VTBL_ENTRY _ZTV8S19567C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C13;
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
extern Class_Descriptor cd_S19567C14;
extern VTBL_ENTRY _ZTI9S19567C14[];
extern  VTBL_ENTRY _ZTV9S19567C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C13;
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
static Base_Class bases_S19567C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(2840,1648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2920,1692), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19567C4,    ABISELECT(2880,1672), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19567C10,    ABISELECT(2712,1556), //bcp->offset
    43, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2192,1268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(2256,1300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(2976,1724), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19567C12,    ABISELECT(2976,1724), //bcp->offset
    63, //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
    8, //immediately_derived
  0, 1},
  {&cd_S19567C11,    ABISELECT(2256,1300), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19567C9,    ABISELECT(2192,1268), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(3440,2004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(3496,2036), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19567C13,    ABISELECT(3440,2004), //bcp->offset
    70, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19567C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(120,64), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19567C13,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19567C8[];
extern void _ZN8S19567C8D1Ev();
extern void _ZN8S19567C8D0Ev();
extern void _ZN9S19567C142v2Ev();
extern void _ZN8S19567C82v3Ev();
extern void ABISELECT(_ZThn64_N8S19567C8D1Ev,_ZThn32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19567C8D0Ev,_ZThn32_N8S19567C8D0Ev)();
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZThn120_N8S19567C8D1Ev,_ZThn64_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19567C8D0Ev,_ZThn64_N8S19567C8D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2192_N8S19567C8D1Ev,_ZThn1268_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2192_N8S19567C8D0Ev,_ZThn1268_N8S19567C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S19567C8D1Ev,_ZTvn32_n32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19567C8D0Ev,_ZTvn32_n32_N8S19567C8D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2712_N8S19567C8D1Ev,_ZThn1556_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2712_N8S19567C8D0Ev,_ZThn1556_N8S19567C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2880_N8S19567C8D1Ev,_ZThn1672_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2880_N8S19567C8D0Ev,_ZThn1672_N8S19567C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C8D1Ev,_ZTv0_n12_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2920_N8S19567C8D1Ev,_ZThn1692_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C8D0Ev,_ZTv0_n12_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2920_N8S19567C8D0Ev,_ZThn1692_N8S19567C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2976_N8S19567C8D1Ev,_ZThn1724_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2976_N8S19567C8D0Ev,_ZThn1724_N8S19567C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn3440_N8S19567C8D1Ev,_ZThn2004_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn3440_N8S19567C8D0Ev,_ZThn2004_N8S19567C8D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S19567C8D1Ev,_ZTvn32_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19567C8D0Ev,_ZTvn32_n20_N8S19567C8D0Ev)();
static  VTBL_ENTRY vtc_S19567C8[] = {
  ABISELECT(2976,1724),
  ABISELECT(2880,1672),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(2920,1692),
  ABISELECT(2840,1648),
  ABISELECT(3440,2004),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&_ZN8S19567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C8D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19567C82v3Ev,
  ABISELECT(2856,1660),
  ABISELECT(2776,1616),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C8D1Ev,_ZThn32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C8D0Ev,_ZThn32_N8S19567C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19567C8D1Ev,_ZThn64_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19567C8D0Ev,_ZThn64_N8S19567C8D0Ev),
  ABISELECT(-2192,-1268),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-2192,-1268),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev),
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-2256,-1300),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C8D1Ev,_ZTvn32_n32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C8D0Ev,_ZTvn32_n32_N8S19567C8D0Ev),
  ABISELECT(-2712,-1556),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-2712,-1556),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev),
  ABISELECT(-2880,-1672),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-2880,-1672),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
  ABISELECT(-2920,-1692),
  ABISELECT(-2920,-1692),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C8D1Ev,_ZTv0_n12_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C8D0Ev,_ZTv0_n12_N8S19567C8D0Ev),
  ABISELECT(-2976,-1724),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-2976,-1724),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
  0,
  ABISELECT(-3440,-2004),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2004),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2036),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C8D1Ev,_ZTvn32_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C8D0Ev,_ZTvn32_n20_N8S19567C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19567C8[];
extern void _ZN9S19567C14D1Ev();
extern void _ZN9S19567C14D0Ev();
extern void _ZN9S19567C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C14__8S19567C8[] = {
  ABISELECT(2920,1692),
  ABISELECT(2840,1648),
  ABISELECT(3440,2004),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&_ZN9S19567C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZThn3440_N9S19567C14D1Ev,_ZThn2004_N9S19567C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev)();
extern void ABISELECT(_ZThn3440_N9S19567C14D0Ev,_ZThn2004_N9S19567C14D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C14__8S19567C8[] = {
  0,
  ABISELECT(-3440,-2004),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2004),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C14__8S19567C8[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2036),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev)();
extern void ABISELECT(_ZThn2920_N9S19567C14D1Ev,_ZThn1692_N9S19567C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev)();
extern void ABISELECT(_ZThn2920_N9S19567C14D0Ev,_ZThn1692_N9S19567C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C14__8S19567C8[] = {
  ABISELECT(-2920,-1692),
  ABISELECT(-2920,-1692),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev),
};
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__A__8S19567C8[] = {
  ABISELECT(2856,1660),
  ABISELECT(2776,1616),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A4__8S19567C8[] = {
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn2800_N8S19567C4D1Ev,_ZThn1628_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn2800_N8S19567C4D0Ev,_ZThn1628_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C13__A4__8S19567C8[] = {
  ABISELECT(-2800,-1628),
  ABISELECT(-2800,-1628),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C13__A__8S19567C8[] = {
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn2856_N9S19567C13D1Ev,_ZThn1660_N9S19567C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
extern void ABISELECT(_ZThn2856_N9S19567C13D0Ev,_ZThn1660_N9S19567C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C13__A__8S19567C8[] = {
  ABISELECT(-2856,-1660),
  ABISELECT(-2856,-1660),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
extern void _ZN8S19567C9D1Ev();
extern void _ZN8S19567C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C9__8S19567C8[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&_ZN8S19567C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C9D0Ev,
};
extern void _ZN9S19567C11D1Ev();
extern void _ZN9S19567C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C118S19567C9__8S19567C8[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&_ZN9S19567C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C11D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C118S19567C9__A1__8S19567C8[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn664_N8S19567C4D1Ev,_ZThn392_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn664_N8S19567C4D0Ev,_ZThn392_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C118S19567C9__A1__8S19567C8[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev)();
extern void ABISELECT(_ZThn664_N9S19567C11D1Ev,_ZThn392_N9S19567C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev)();
extern void ABISELECT(_ZThn664_N9S19567C11D0Ev,_ZThn392_N9S19567C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C118S19567C9__8S19567C8[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev)();
extern void ABISELECT(_ZThn720_N9S19567C11D1Ev,_ZThn424_N9S19567C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev)();
extern void ABISELECT(_ZThn720_N9S19567C11D0Ev,_ZThn424_N9S19567C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__9S19567C118S19567C9__8S19567C8[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn520_N8S19567C9D1Ev,_ZThn288_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn520_N8S19567C9D0Ev,_ZThn288_N8S19567C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C9__8S19567C8[] = {
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn688_N8S19567C9D1Ev,_ZThn404_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn688_N8S19567C9D0Ev,_ZThn404_N8S19567C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C9__8S19567C8[] = {
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn728_N8S19567C9D1Ev,_ZThn424_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn728_N8S19567C9D0Ev,_ZThn424_N8S19567C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C9__8S19567C8[] = {
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19567C9D1Ev,_ZThn32_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19567C9D0Ev,_ZThn32_N8S19567C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C11__8S19567C9__8S19567C8[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C9D1Ev,_ZThn32_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C9D0Ev,_ZThn32_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn784_N8S19567C9D1Ev,_ZThn456_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn784_N8S19567C9D0Ev,_ZThn456_N8S19567C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C9__8S19567C8[] = {
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev),
};
extern void _ZN9S19567C10D1Ev();
extern void _ZN9S19567C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C8[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&_ZN9S19567C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev)();
extern void ABISELECT(_ZThn168_N9S19567C10D1Ev,_ZThn116_N9S19567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev)();
extern void ABISELECT(_ZThn168_N9S19567C10D0Ev,_ZThn116_N9S19567C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C10__8S19567C8[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev)();
extern void ABISELECT(_ZThn208_N9S19567C10D1Ev,_ZThn136_N9S19567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev)();
extern void ABISELECT(_ZThn208_N9S19567C10D0Ev,_ZThn136_N9S19567C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C10__8S19567C8[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev),
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C8[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19567C4D1Ev,_ZThn20_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19567C4D0Ev,_ZThn20_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C4__8S19567C8[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void _ZN9S19567C12D1Ev();
extern void _ZN9S19567C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C8[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&_ZN9S19567C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C12D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C12__A2__8S19567C8[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C12__A2__8S19567C8[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C12__8S19567C8[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev),
};
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__8S19567C8[] = {
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A3__8S19567C8[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C13__A3__8S19567C8[] = {
  ABISELECT(576,344),
  ABISELECT(576,344),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C13__8S19567C8[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C13__8S19567C8[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
static  VTT_ENTRY vtt_S19567C8[] = {
  {&(_ZTV8S19567C8[9]),  9,85},
  {&(_tg__ZTV9S19567C14__8S19567C8[5]),  5,8},
  {&(_tg__ZTV9S19567C13__9S19567C14__8S19567C8[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C14__8S19567C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C14__8S19567C8[3]),  3,5},
  {&(_tg__ZTV9S19567C13__A__8S19567C8[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C13__A4__8S19567C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C13__A4__8S19567C8[3]),  3,5},
  {&(_tg__ZTV8S19567C4__9S19567C13__A__8S19567C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C13__A__8S19567C8[3]),  3,5},
  {&(_ZTV8S19567C8[34]),  34,85},
  {&(_ZTV8S19567C8[49]),  49,85},
  {&(_ZTV8S19567C8[56]),  56,85},
  {&(_ZTV8S19567C8[61]),  61,85},
  {&(_ZTV8S19567C8[41]),  41,85},
  {&(_ZTV8S19567C8[68]),  68,85},
  {&(_ZTV8S19567C8[76]),  76,85},
  {&(_ZTV8S19567C8[83]),  83,85},
  {&(_ZTV8S19567C8[17]),  17,85},
  {&(_ZTV8S19567C8[24]),  24,85},
  {&(_tg__ZTV8S19567C9__8S19567C8[7]),  7,9},
  {&(_tg__ZTV9S19567C118S19567C9__8S19567C8[5]),  5,7},
  {&(_tg__ZTV8S19567C49S19567C118S19567C9__A1__8S19567C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C118S19567C9__A1__8S19567C8[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C118S19567C9__8S19567C8[3]),  3,5},
  {&(_tg__ZTV9S19567C12__9S19567C118S19567C9__8S19567C8[5]),  5,7},
  {&(_tg__ZTV9S19567C10__8S19567C9__8S19567C8[6]),  6,8},
  {&(_tg__ZTV8S19567C4__8S19567C9__8S19567C8[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19567C9__8S19567C8[3]),  3,5},
  {&(_tg__ZTV9S19567C11__8S19567C9__8S19567C8[5]),  5,7},
  {&(_tg__ZTV9S19567C12__8S19567C9__8S19567C8[5]),  5,7},
  {&(_tg__ZTV9S19567C10__8S19567C8[5]),  5,7},
  {&(_tg__ZTV8S19567C4__9S19567C10__8S19567C8[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19567C10__8S19567C8[3]),  3,5},
  {&(_tg__ZTV8S19567C4__8S19567C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C4__8S19567C8[3]),  3,5},
  {&(_tg__ZTV9S19567C12__8S19567C8[4]),  4,6},
  {&(_tg__ZTV8S19567C49S19567C12__A2__8S19567C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C12__A2__8S19567C8[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C12__8S19567C8[3]),  3,5},
  {&(_tg__ZTV9S19567C13__8S19567C8[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C13__A3__8S19567C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C13__A3__8S19567C8[3]),  3,5},
  {&(_tg__ZTV8S19567C4__9S19567C13__8S19567C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C13__8S19567C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19567C8[];
extern  VTBL_ENTRY _ZTV8S19567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C8[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19567C10D0Ev,_ZThn136_N9S19567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19567C10D1Ev,_ZThn136_N9S19567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19567C10D0Ev,_ZThn116_N9S19567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19567C10D1Ev,_ZThn116_N9S19567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S19567C9D0Ev,_ZThn424_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S19567C9D1Ev,_ZThn424_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19567C9D0Ev,_ZThn456_N8S19567C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19567C9D0Ev,_ZThn404_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19567C9D1Ev,_ZThn456_N8S19567C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19567C9D1Ev,_ZThn404_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19567C9D0Ev,_ZThn288_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19567C9D1Ev,_ZThn288_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19567C11D0Ev,_ZThn424_N9S19567C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19567C11D1Ev,_ZThn424_N9S19567C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19567C11D0Ev,_ZThn392_N9S19567C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19567C11D1Ev,_ZThn392_N9S19567C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S19567C13D0Ev,_ZThn1660_N9S19567C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S19567C13D1Ev,_ZThn1660_N9S19567C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19567C4D0Ev,_ZThn20_N8S19567C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19567C4D0Ev,_ZThn392_N8S19567C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S19567C4D0Ev,_ZThn1628_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19567C4D1Ev,_ZThn20_N8S19567C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19567C4D1Ev,_ZThn392_N8S19567C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S19567C4D1Ev,_ZThn1628_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S19567C14D0Ev,_ZThn1692_N9S19567C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S19567C14D1Ev,_ZThn1692_N9S19567C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S19567C14D0Ev,_ZThn2004_N9S19567C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S19567C14D1Ev,_ZThn2004_N9S19567C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C8D0Ev,_ZTv0_n12_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S19567C8D0Ev,_ZThn1692_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C8D1Ev,_ZTv0_n12_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S19567C8D1Ev,_ZThn1692_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S19567C8D0Ev,_ZThn2004_N8S19567C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S19567C8D0Ev,_ZThn1724_N8S19567C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S19567C8D0Ev,_ZThn1672_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S19567C8D1Ev,_ZThn2004_N8S19567C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S19567C8D1Ev,_ZThn1724_N8S19567C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S19567C8D1Ev,_ZThn1672_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19567C8D0Ev,_ZThn1556_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19567C8D1Ev,_ZThn1556_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19567C8D0Ev,_ZThn1268_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19567C8D1Ev,_ZThn1268_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C8 = {  "S19567C8", // class name
  bases_S19567C8, 17,
  &(vtc_S19567C8[0]), // expected_vtbl_contents
  &(vtt_S19567C8[0]), // expected_vtt_contents
  ABISELECT(3664,2128), // object size
  NSPAIRA(_ZTI8S19567C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19567C8),85, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19567C8),45, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C18  : S19567C4 , S19567C12 {
  int s19567c18f0;
  int s19567c18f1:2;
  long double s19567c18f2;
  void *s19567c18f3[2];
  virtual  ~S19567C18(); // _ZN9S19567C18D2Ev
  virtual void  v4(); // _ZN9S19567C182v4Ev
  virtual void  v5(); // _ZN9S19567C182v5Ev
  virtual void  v6(); // _ZN9S19567C182v6Ev
  S19567C18(); // tgen
};
//SIG(-1 S19567C18) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} BC6{ VBC3 VBC4 BC2 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd v1 v2 v3 Fi Fi:2 FD Fp[2]}


 S19567C18 ::~S19567C18(){ note_dtor("S19567C18", this);}
void  S19567C18 ::v4(){vfunc_called(this, "_ZN9S19567C182v4Ev");}
void  S19567C18 ::v5(){vfunc_called(this, "_ZN9S19567C182v5Ev");}
void  S19567C18 ::v6(){vfunc_called(this, "_ZN9S19567C182v6Ev");}
S19567C18 ::S19567C18(){ note_ctor("S19567C18", this);} // tgen

static void Test_S19567C18()
{
  extern Class_Descriptor cd_S19567C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,97)];
    init_test(&cd_S19567C18, buf);
    S19567C18 *dp, &lv = *(dp=new (buf) S19567C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,384), "sizeof(S19567C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C18)");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*), ABISELECT(544,328), "S19567C18");
    check_base_class_offset(lv, (S3572C5*)(S19567C12*), ABISELECT(544,328), "S19567C18");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C12*), ABISELECT(544,328), "S19567C18");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*), ABISELECT(584,352), "S19567C18");
    check_base_class_offset(lv, (S3572C4*)(S19567C12*), ABISELECT(584,352), "S19567C18");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C12*), ABISELECT(584,352), "S19567C18");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*), 0, "S19567C18");
    check_base_class_offset(lv, (S19567C4*)(S19567C12*), ABISELECT(40,20), "S19567C18");
    check_base_class_offset(lv, (S19567C12*), ABISELECT(40,20), "S19567C18");
    check_field_offset(lv, s19567c18f0, ABISELECT(500,300), "S19567C18.s19567c18f0");
    set_bf_and_test(lv, s19567c18f1, ABISELECT(504,304), 0, 2, 1, "S19567C18");
    set_bf_and_test(lv, s19567c18f1, ABISELECT(504,304), 0, 2, hide_sll(1LL<<1), "S19567C18");
    check_field_offset(lv, s19567c18f2, ABISELECT(512,308), "S19567C18.s19567c18f2");
    check_field_offset(lv, s19567c18f3, ABISELECT(528,320), "S19567C18.s19567c18f3");
    test_class_info(&lv, &cd_S19567C18);
    dp->~S19567C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C18(Test_S19567C18, "S19567C18", ABISELECT(640,384));

#else // __cplusplus

extern void _ZN9S19567C18C1Ev();
extern void _ZN9S19567C18D2Ev();
Name_Map name_map_S19567C18[] = {
  NSPAIR(_ZN9S19567C18C1Ev),
  NSPAIR(_ZN9S19567C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C12;
extern VTBL_ENTRY _ZTI9S19567C12[];
extern  VTBL_ENTRY _ZTV9S19567C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C12[];
static Base_Class bases_S19567C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(544,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(584,352), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19567C4,    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_S19567C4,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19567C12,    ABISELECT(40,20), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19567C18[];
extern void _ZN9S19567C18D1Ev();
extern void _ZN9S19567C18D0Ev();
extern void _ZN9S19567C182v4Ev();
extern void _ZN9S19567C182v5Ev();
extern void _ZN9S19567C182v6Ev();
extern void ABISELECT(_ZThn40_N9S19567C18D1Ev,_ZThn20_N9S19567C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S19567C18D0Ev,_ZThn20_N9S19567C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C18D1Ev,_ZTv0_n12_N9S19567C18D1Ev)();
extern void ABISELECT(_ZThn584_N9S19567C18D1Ev,_ZThn352_N9S19567C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C18D0Ev,_ZTv0_n12_N9S19567C18D0Ev)();
extern void ABISELECT(_ZThn584_N9S19567C18D0Ev,_ZThn352_N9S19567C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C18[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&_ZN9S19567C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v6Ev,
  ABISELECT(544,332),
  ABISELECT(504,308),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19567C18D1Ev,_ZThn20_N9S19567C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19567C18D0Ev,_ZThn20_N9S19567C18D0Ev),
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C18D1Ev,_ZTv0_n12_N9S19567C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C18D0Ev,_ZTv0_n12_N9S19567C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S19567C18[];
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C18[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn584_N8S19567C4D1Ev,_ZThn352_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn584_N8S19567C4D0Ev,_ZThn352_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C4__9S19567C18[] = {
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void _ZN9S19567C12D1Ev();
extern void _ZN9S19567C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C12__9S19567C18[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&_ZN9S19567C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C12D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C12__A1__9S19567C18[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn544_N8S19567C4D1Ev,_ZThn332_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn544_N8S19567C4D0Ev,_ZThn332_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C12__A1__9S19567C18[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev)();
extern void ABISELECT(_ZThn544_N9S19567C12D1Ev,_ZThn332_N9S19567C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev)();
extern void ABISELECT(_ZThn544_N9S19567C12D0Ev,_ZThn332_N9S19567C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C12__9S19567C18[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev),
};
static  VTT_ENTRY vtt_S19567C18[] = {
  {&(_ZTV9S19567C18[4]),  4,20},
  {&(_tg__ZTV8S19567C4__9S19567C18[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C4__9S19567C18[3]),  3,5},
  {&(_tg__ZTV9S19567C12__9S19567C18[4]),  4,6},
  {&(_tg__ZTV8S19567C49S19567C12__A1__9S19567C18[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C12__A1__9S19567C18[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C12__9S19567C18[3]),  3,5},
  {&(_ZTV9S19567C18[18]),  18,20},
  {&(_ZTV9S19567C18[13]),  13,20},
};
extern VTBL_ENTRY _ZTI9S19567C18[];
extern  VTBL_ENTRY _ZTV9S19567C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C18[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N9S19567C12D0Ev,_ZThn332_N9S19567C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N9S19567C12D1Ev,_ZThn332_N9S19567C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19567C4D0Ev,_ZThn332_N8S19567C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S19567C4D0Ev,_ZThn352_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19567C4D1Ev,_ZThn332_N8S19567C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S19567C4D1Ev,_ZThn352_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C18D0Ev,_ZTv0_n12_N9S19567C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19567C18D0Ev,_ZThn352_N9S19567C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C18D1Ev,_ZTv0_n12_N9S19567C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19567C18D1Ev,_ZThn352_N9S19567C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C18 = {  "S19567C18", // class name
  bases_S19567C18, 5,
  &(vtc_S19567C18[0]), // expected_vtbl_contents
  &(vtt_S19567C18[0]), // expected_vtt_contents
  ABISELECT(640,384), // object size
  NSPAIRA(_ZTI9S19567C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19567C18),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19567C18),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C3  : virtual S19567C4 , virtual S19567C8 , S3572C17 , virtual S19567C18 , virtual S19567C14 {
  int s19567c3f0;
  __tsi64 s19567c3f1;
  ::S3572C16 s19567c3f2;
  virtual  ~S19567C3(); // _ZN8S19567C3D2Ev
  S19567C3(); // tgen
};
//SIG(-1 S19567C3) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} VBC6{ VBC7{ VBC8{ VBC3 VBC2 vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL} BC4 BC9{ VBC4 BC2 VBC10{ VBC3 VBC4 BC2 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC11{ VBC3 BC4 BC2 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC12{ VBC11 vd v2 Fi Fp Fi:2 FD Fp} BC11 vd v3 Fi Fl Fi:6 FC13{ BC14{ VBC3 VBC4 Fc:1 Fp[3]} VBC15{ VBC3 BC4 BC14 vd v7 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC16{ BC17{ VBC4 BC14 VBC18{ VBC3 VBC4 BC14 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC15} VBC19{ VBC3 VBC14 vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL} VBC15 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC20{ vd m FC19 FC18 Fp Fi Fp FL FD Fs Fp FL Fi} VBC21{ BC2 BC10 vd v4 v5 v6 Fi Fi:2 FD Fp[2]} VBC12 vd Fi FL FC13}


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

static void Test_S19567C3()
{
  extern Class_Descriptor cd_S19567C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(351,818)];
    init_test(&cd_S19567C3, buf);
    S19567C3 *dp, &lv = *(dp=new (buf) S19567C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(5600,3268), "sizeof(S19567C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C3)");
    /*is_ambiguous_... S19567C3::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*), ABISELECT(1352,800), "S19567C3");
    check_base_class_offset(lv, (S3572C5*)(S19567C10*), ABISELECT(1352,800), "S19567C3");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(1352,800), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C12*), ABISELECT(1352,800), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C12*), ABISELECT(1352,800), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C13*), ABISELECT(1352,800), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C13*), ABISELECT(1352,800), "S19567C3");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C13*)(S19567C8*), ABISELECT(1352,800), "S19567C3");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C13*)(S19567C8*), ABISELECT(1352,800), "S19567C3");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C18*), ABISELECT(1352,800), "S19567C3");
    check_base_class_offset(lv, (S3572C5*)(S19567C12*)(S19567C18*), ABISELECT(1352,800), "S19567C3");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C12*)(S19567C18*), ABISELECT(1352,800), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*), ABISELECT(1392,824), "S19567C3");
    check_base_class_offset(lv, (S3572C4*)(S19567C11*)(S19567C9*), ABISELECT(1392,824), "S19567C3");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(1392,824), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C12*), ABISELECT(1392,824), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C12*), ABISELECT(1392,824), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C13*), ABISELECT(1392,824), "S19567C3");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C13*)(S19567C8*), ABISELECT(1392,824), "S19567C3");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C18*), ABISELECT(1392,824), "S19567C3");
    check_base_class_offset(lv, (S3572C4*)(S19567C12*)(S19567C18*), ABISELECT(1392,824), "S19567C3");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C12*)(S19567C18*), ABISELECT(1392,824), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*), ABISELECT(1312,780), "S19567C3");
    check_base_class_offset(lv, (S19567C4*)(S19567C10*), ABISELECT(1312,780), "S19567C3");
    check_base_class_offset(lv, (S19567C10*)(S19567C9*), ABISELECT(4168,2412), "S19567C3");
    /*is_ambiguous_... S19567C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C9*), ABISELECT(3648,2124), "S19567C3");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(3712,2156), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C12 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C12*), ABISELECT(4296,2504), "S19567C3");
    check_base_class_offset(lv, (S19567C12*)(S19567C11*)(S19567C9*), ABISELECT(4296,2504), "S19567C3");
    check_base_class_offset(lv, (S19567C11*)(S19567C9*), ABISELECT(3712,2156), "S19567C3");
    check_base_class_offset(lv, (S19567C9*)(S19567C8*), ABISELECT(3648,2124), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C13*), ABISELECT(4768,2784), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C13*), ABISELECT(4824,2816), "S19567C3");
    check_base_class_offset(lv, (S19567C13*)(S19567C14*)(S19567C8*), ABISELECT(4768,2784), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C14 */ AMB_check_base_class_offset(lv, (S19567C13*)(S19567C14*), ABISELECT(4768,2784), "S19567C3");
    check_base_class_offset(lv, (S19567C14*)(S19567C8*), ABISELECT(1456,856), "S19567C3");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C13*)(S19567C8*), ABISELECT(1520,888), "S19567C3");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C13*)(S19567C8*), ABISELECT(1576,920), "S19567C3");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C13*)(S19567C8*), ABISELECT(1520,888), "S19567C3");
    check_base_class_offset(lv, (S19567C8*), ABISELECT(1456,856), "S19567C3");
    check_base_class_offset(lv, (S3572C17*), 0, "S19567C3");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C18*), ABISELECT(4992,2908), "S19567C3");
    check_base_class_offset(lv, (S19567C4*)(S19567C12*)(S19567C18*), ABISELECT(5032,2928), "S19567C3");
    check_base_class_offset(lv, (S19567C12*)(S19567C18*), ABISELECT(5032,2928), "S19567C3");
    check_base_class_offset(lv, (S19567C18*), ABISELECT(4992,2908), "S19567C3");
    /*is_ambiguous_... S19567C3::S19567C14 */ AMB_check_base_class_offset(lv, (S19567C14*), ABISELECT(5536,3236), "S19567C3");
    check_field_offset(lv, s19567c3f0, ABISELECT(908,560), "S19567C3.s19567c3f0");
    check_field_offset(lv, s19567c3f1, ABISELECT(912,564), "S19567C3.s19567c3f1");
    check_field_offset(lv, s19567c3f2, ABISELECT(928,572), "S19567C3.s19567c3f2");
    test_class_info(&lv, &cd_S19567C3);
    dp->~S19567C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C3(Test_S19567C3, "S19567C3", ABISELECT(5600,3268));

#else // __cplusplus

extern void _ZN8S19567C3C1Ev();
extern void _ZN8S19567C3D2Ev();
Name_Map name_map_S19567C3[] = {
  NSPAIR(_ZN8S19567C3C1Ev),
  NSPAIR(_ZN8S19567C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C10;
extern VTBL_ENTRY _ZTI9S19567C10[];
extern  VTBL_ENTRY _ZTV9S19567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C12;
extern VTBL_ENTRY _ZTI9S19567C12[];
extern  VTBL_ENTRY _ZTV9S19567C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C12[];
extern Class_Descriptor cd_S19567C11;
extern VTBL_ENTRY _ZTI9S19567C11[];
extern  VTBL_ENTRY _ZTV9S19567C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C11[];
extern Class_Descriptor cd_S19567C9;
extern VTBL_ENTRY _ZTI8S19567C9[];
extern  VTBL_ENTRY _ZTV8S19567C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C13;
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
extern Class_Descriptor cd_S19567C14;
extern VTBL_ENTRY _ZTI9S19567C14[];
extern  VTBL_ENTRY _ZTV9S19567C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C13;
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
extern Class_Descriptor cd_S19567C8;
extern VTBL_ENTRY _ZTI8S19567C8[];
extern  VTBL_ENTRY _ZTV8S19567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C8[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C12;
extern VTBL_ENTRY _ZTI9S19567C12[];
extern  VTBL_ENTRY _ZTV9S19567C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C12[];
extern Class_Descriptor cd_S19567C18;
extern VTBL_ENTRY _ZTI9S19567C18[];
extern  VTBL_ENTRY _ZTV9S19567C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C18[];
extern Class_Descriptor cd_S19567C14;
extern VTBL_ENTRY _ZTI9S19567C14[];
extern  VTBL_ENTRY _ZTV9S19567C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C14[];
static Base_Class bases_S19567C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(1352,800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1392,824), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19567C4,    ABISELECT(1312,780), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19567C10,    ABISELECT(4168,2412), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3648,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
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(3712,2156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(4296,2504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19567C12,    ABISELECT(4296,2504), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19567C11,    ABISELECT(3712,2156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19567C9,    ABISELECT(3648,2124), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(4768,2784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(4824,2816), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19567C13,    ABISELECT(4768,2784), //bcp->offset
    88, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19567C14,    ABISELECT(1456,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
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1520,888), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(1576,920), //bcp->offset
    50, //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19567C13,    ABISELECT(1520,888), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19567C8,    ABISELECT(1456,856), //bcp->offset
    26, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19567C4,    ABISELECT(4992,2908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(5032,2928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19567C12,    ABISELECT(5032,2928), //bcp->offset
    116, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19567C18,    ABISELECT(4992,2908), //bcp->offset
    103, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19567C14,    ABISELECT(5536,3236), //bcp->offset
    122, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19567C3[];
extern void _ZN8S19567C3D1Ev();
extern void _ZN8S19567C3D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn1312_N8S19567C3D1Ev,_ZThn780_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn1312_N8S19567C3D0Ev,_ZThn780_N8S19567C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C3D1Ev,_ZTv0_n12_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn1392_N8S19567C3D1Ev,_ZThn824_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C3D0Ev,_ZTv0_n12_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn1392_N8S19567C3D0Ev,_ZThn824_N8S19567C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19567C3D1Ev,_ZTv0_n40_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn1456_N8S19567C3D1Ev,_ZThn856_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19567C3D0Ev,_ZTv0_n40_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn1456_N8S19567C3D0Ev,_ZThn856_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
extern void _ZN8S19567C82v3Ev();
extern void ABISELECT(_ZTvn64_n80_N8S19567C3D1Ev,_ZTvn32_n40_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19567C3D0Ev,_ZTvn32_n40_N8S19567C3D0Ev)();
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZTvn120_n80_N8S19567C3D1Ev,_ZTvn64_n40_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19567C3D0Ev,_ZTvn64_n40_N8S19567C3D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19567C3D1Ev,_ZTv0_n32_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn3648_N8S19567C3D1Ev,_ZThn2124_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19567C3D0Ev,_ZTv0_n32_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn3648_N8S19567C3D0Ev,_ZThn2124_N8S19567C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S19567C3D1Ev,_ZTvn32_n32_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19567C3D0Ev,_ZTvn32_n32_N8S19567C3D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn4168_N8S19567C3D1Ev,_ZThn2412_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn4168_N8S19567C3D0Ev,_ZThn2412_N8S19567C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn4296_N8S19567C3D1Ev,_ZThn2504_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn4296_N8S19567C3D0Ev,_ZThn2504_N8S19567C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn4768_N8S19567C3D1Ev,_ZThn2784_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn4768_N8S19567C3D0Ev,_ZThn2784_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S19567C3D1Ev,_ZTvn32_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19567C3D0Ev,_ZTvn32_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn4992_N8S19567C3D1Ev,_ZThn2908_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn4992_N8S19567C3D0Ev,_ZThn2908_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C182v4Ev();
extern void _ZN9S19567C182v5Ev();
extern void _ZN9S19567C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N8S19567C3D1Ev,_ZTvn20_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19567C3D0Ev,_ZTvn20_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn5536_N8S19567C3D1Ev,_ZThn3236_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn5536_N8S19567C3D0Ev,_ZThn3236_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
static  VTBL_ENTRY vtc_S19567C3[] = {
  ABISELECT(5536,3236),
  ABISELECT(4992,2908),
  ABISELECT(4768,2784),
  ABISELECT(4296,2504),
  ABISELECT(4168,2412),
  ABISELECT(3648,2124),
  ABISELECT(1456,856),
  ABISELECT(1392,824),
  ABISELECT(1352,800),
  ABISELECT(1312,780),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&_ZN8S19567C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C3D0Ev,
  ABISELECT(-1312,-780),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1312,-780),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
  ABISELECT(-1392,-824),
  ABISELECT(-1392,-824),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C3D1Ev,_ZTv0_n12_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C3D0Ev,_ZTv0_n12_N8S19567C3D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1456,-856),
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  ABISELECT(-1456,-856),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C3D1Ev,_ZTv0_n40_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C3D0Ev,_ZTv0_n40_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19567C82v3Ev,
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1520,-888),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C3D1Ev,_ZTvn32_n40_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C3D0Ev,_ZTvn32_n40_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1576,-920),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C3D1Ev,_ZTvn64_n40_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C3D0Ev,_ZTvn64_n40_N8S19567C3D0Ev),
  ABISELECT(-3648,-2124),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-3648,-2124),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C3D1Ev,_ZTv0_n32_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C3D0Ev,_ZTv0_n32_N8S19567C3D0Ev),
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-3712,-2156),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C3D1Ev,_ZTvn32_n32_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C3D0Ev,_ZTvn32_n32_N8S19567C3D0Ev),
  ABISELECT(-4168,-2412),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-4168,-2412),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev),
  ABISELECT(-4296,-2504),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-4296,-2504),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
  0,
  ABISELECT(-4768,-2784),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-4768,-2784),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-4824,-2816),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C3D1Ev,_ZTvn32_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C3D0Ev,_ZTvn32_n20_N8S19567C3D0Ev),
  0,
  0,
  0,
  ABISELECT(-4992,-2908),
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  ABISELECT(-4992,-2908),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v6Ev,
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-5032,-2928),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C3D1Ev,_ZTvn20_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C3D0Ev,_ZTvn20_n20_N8S19567C3D0Ev),
  0,
  ABISELECT(-5536,-3236),
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  ABISELECT(-5536,-3236),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
};
extern VTBL_ENTRY _ZTV8S19567C3[];
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C3[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19567C4D1Ev,_ZThn44_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19567C4D0Ev,_ZThn44_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C4__8S19567C3[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void _ZN8S19567C8D1Ev();
extern void _ZN8S19567C8D0Ev();
extern void _ZN9S19567C142v2Ev();
extern void _ZN8S19567C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C8__8S19567C3[] = {
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&_ZN8S19567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C8D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19567C82v3Ev,
};
extern void _ZN9S19567C14D1Ev();
extern void _ZN9S19567C14D0Ev();
extern void _ZN9S19567C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C148S19567C8__8S19567C3[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&_ZN9S19567C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZThn3312_N9S19567C14D1Ev,_ZThn1928_N9S19567C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev)();
extern void ABISELECT(_ZThn3312_N9S19567C14D0Ev,_ZThn1928_N9S19567C14D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C148S19567C8__8S19567C3[] = {
  0,
  ABISELECT(-3312,-1928),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-3312,-1928),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C148S19567C8__8S19567C3[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-3368,-1960),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C148S19567C8__8S19567C3[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev),
};
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C138S19567C8__A1__8S19567C3[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C138S19567C8__A4__8S19567C3[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C138S19567C8__A1__8S19567C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C138S19567C8__A1__8S19567C3[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2192_N8S19567C8D1Ev,_ZThn1268_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2192_N8S19567C8D0Ev,_ZThn1268_N8S19567C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C9__8S19567C8__8S19567C3[] = {
  ABISELECT(-2192,-1268),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-2192,-1268),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2712_N8S19567C8D1Ev,_ZThn1556_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2712_N8S19567C8D0Ev,_ZThn1556_N8S19567C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C8__8S19567C3[] = {
  ABISELECT(-2712,-1556),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-2712,-1556),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C8__8S19567C3[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19567C8D1Ev,_ZTv0_n12_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C8D0Ev,_ZTv0_n12_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C8__8S19567C3[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C8D1Ev,_ZTv0_n12_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C8D0Ev,_ZTv0_n12_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19567C8D1Ev,_ZTvn32_n32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19567C8D0Ev,_ZTvn32_n32_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C118S19567C9__8S19567C8__8S19567C3[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-2256,-1300),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C8D1Ev,_ZTvn32_n32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C8D0Ev,_ZTvn32_n32_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2840_N8S19567C8D1Ev,_ZThn1648_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2840_N8S19567C8D0Ev,_ZThn1648_N8S19567C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C8__8S19567C3[] = {
  ABISELECT(-2840,-1648),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-2840,-1648),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn3312_N8S19567C8D1Ev,_ZThn1928_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn3312_N8S19567C8D0Ev,_ZThn1928_N8S19567C8D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__8S19567C8__8S19567C3[] = {
  0,
  ABISELECT(-3312,-1928),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-3312,-1928),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19567C8D1Ev,_ZTvn32_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19567C8D0Ev,_ZTvn32_n20_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A3__8S19567C8__8S19567C3[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-3368,-1960),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C8D1Ev,_ZTvn32_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C8D0Ev,_ZTvn32_n20_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19567C8D1Ev,_ZThn32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19567C8D0Ev,_ZThn32_N8S19567C8D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__A__8S19567C8__8S19567C3[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C8D1Ev,_ZThn32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C8D0Ev,_ZThn32_N8S19567C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZThn120_N8S19567C8D1Ev,_ZThn64_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19567C8D0Ev,_ZThn64_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A4__8S19567C8__8S19567C3[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19567C8D1Ev,_ZThn64_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19567C8D0Ev,_ZThn64_N8S19567C8D0Ev),
};
extern void _ZN8S19567C9D1Ev();
extern void _ZN8S19567C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C9__8S19567C3[] = {
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&_ZN8S19567C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C9D0Ev,
};
extern void _ZN9S19567C11D1Ev();
extern void _ZN9S19567C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C118S19567C9__8S19567C3[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&_ZN9S19567C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C11D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C118S19567C9__A1__8S19567C3[] = {
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C118S19567C9__A1__8S19567C3[] = {
  ABISELECT(2320,1332),
  ABISELECT(2320,1332),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C118S19567C9__8S19567C3[] = {
  ABISELECT(2320,1332),
  ABISELECT(2320,1332),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev)();
extern void ABISELECT(_ZThn584_N9S19567C11D1Ev,_ZThn348_N9S19567C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev)();
extern void ABISELECT(_ZThn584_N9S19567C11D0Ev,_ZThn348_N9S19567C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__9S19567C118S19567C9__8S19567C3[] = {
  ABISELECT(-584,-348),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-584,-348),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn520_N8S19567C9D1Ev,_ZThn288_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn520_N8S19567C9D0Ev,_ZThn288_N8S19567C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C9__8S19567C3[] = {
  ABISELECT(-520,-288),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C9__8S19567C3[] = {
  ABISELECT(2336,1344),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2336,1344),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C9__8S19567C3[] = {
  ABISELECT(2256,1300),
  ABISELECT(2256,1300),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19567C9D1Ev,_ZThn32_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19567C9D0Ev,_ZThn32_N8S19567C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C11__8S19567C9__8S19567C3[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C9D1Ev,_ZThn32_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C9D0Ev,_ZThn32_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn648_N8S19567C9D1Ev,_ZThn380_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn648_N8S19567C9D0Ev,_ZThn380_N8S19567C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C9__8S19567C3[] = {
  ABISELECT(-648,-380),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-648,-380),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev),
};
extern void _ZN9S19567C10D1Ev();
extern void _ZN9S19567C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C3[] = {
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&_ZN9S19567C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C10__8S19567C3[] = {
  ABISELECT(2856,1632),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2856,1632),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C10__8S19567C3[] = {
  ABISELECT(2776,1588),
  ABISELECT(2776,1588),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev),
};
extern void _ZN9S19567C12D1Ev();
extern void _ZN9S19567C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C3[] = {
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&_ZN9S19567C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C12D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C12__A2__8S19567C3[] = {
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C12__A2__8S19567C3[] = {
  ABISELECT(2904,1680),
  ABISELECT(2904,1680),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C12__8S19567C3[] = {
  ABISELECT(2904,1680),
  ABISELECT(2904,1680),
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev),
};
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__8S19567C3[] = {
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A3__8S19567C3[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C13__A3__8S19567C3[] = {
  ABISELECT(3432,1992),
  ABISELECT(3432,1992),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C13__8S19567C3[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C13__8S19567C3[] = {
  ABISELECT(3376,1960),
  ABISELECT(3376,1960),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
extern void _ZN9S19567C18D1Ev();
extern void _ZN9S19567C18D0Ev();
extern void _ZN9S19567C182v4Ev();
extern void _ZN9S19567C182v5Ev();
extern void _ZN9S19567C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C18__8S19567C3[] = {
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&_ZN9S19567C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v6Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C18__A5__8S19567C3[] = {
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C18__A5__8S19567C3[] = {
  ABISELECT(3600,2084),
  ABISELECT(3600,2084),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void _ZN9S19567C12D1Ev();
extern void _ZN9S19567C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C129S19567C18__A1__8S19567C3[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&_ZN9S19567C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C12D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C129S19567C18__A6__8S19567C3[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C129S19567C18__A6__8S19567C3[] = {
  ABISELECT(3640,2104),
  ABISELECT(3640,2104),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C129S19567C18__A1__8S19567C3[] = {
  ABISELECT(3640,2104),
  ABISELECT(3640,2104),
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C18D1Ev,_ZTv0_n12_N9S19567C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C18D0Ev,_ZTv0_n12_N9S19567C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C18__8S19567C3[] = {
  ABISELECT(3600,2084),
  ABISELECT(3600,2084),
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C18D1Ev,_ZTv0_n12_N9S19567C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C18D0Ev,_ZTv0_n12_N9S19567C18D0Ev),
};
extern void ABISELECT(_ZThn40_N9S19567C18D1Ev,_ZThn20_N9S19567C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S19567C18D0Ev,_ZThn20_N9S19567C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C12__9S19567C18__8S19567C3[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19567C18D1Ev,_ZThn20_N9S19567C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19567C18D0Ev,_ZThn20_N9S19567C18D0Ev),
};
extern void _ZN9S19567C14D1Ev();
extern void _ZN9S19567C14D0Ev();
extern void _ZN9S19567C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C14__A1__8S19567C3[] = {
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&_ZN9S19567C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C14__A1__8S19567C3[] = {
  0,
  ABISELECT(768,452),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(768,452),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C14__A1__8S19567C3[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(712,420),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C14__A1__8S19567C3[] = {
  ABISELECT(4144,2412),
  ABISELECT(4144,2412),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev),
};
static  VTT_ENTRY vtt_S19567C3[] = {
  {&(_ZTV8S19567C3[12]),  12,132},
  {&(_ZTV8S19567C3[19]),  19,132},
  {&(_ZTV8S19567C3[24]),  24,132},
  {&(_ZTV8S19567C3[39]),  39,132},
  {&(_ZTV8S19567C3[64]),  64,132},
  {&(_ZTV8S19567C3[79]),  79,132},
  {&(_ZTV8S19567C3[71]),  71,132},
  {&(_ZTV8S19567C3[86]),  86,132},
  {&(_ZTV8S19567C3[94]),  94,132},
  {&(_ZTV8S19567C3[101]),  101,132},
  {&(_ZTV8S19567C3[47]),  47,132},
  {&(_ZTV8S19567C3[54]),  54,132},
  {&(_ZTV8S19567C3[111]),  111,132},
  {&(_ZTV8S19567C3[120]),  120,132},
  {&(_ZTV8S19567C3[129]),  129,132},
  {&(_tg__ZTV8S19567C4__8S19567C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C4__8S19567C3[3]),  3,5},
  {&(_tg__ZTV8S19567C8__8S19567C3[9]),  9,13},
  {&(_tg__ZTV9S19567C148S19567C8__8S19567C3[5]),  5,8},
  {&(_tg__ZTV9S19567C13__9S19567C148S19567C8__8S19567C3[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C148S19567C8__8S19567C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C148S19567C8__8S19567C3[3]),  3,5},
  {&(_tg__ZTV9S19567C138S19567C8__A1__8S19567C3[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C138S19567C8__A4__8S19567C3[3]),  3,5},
  {&(_tg__ZTV8S19567C4__9S19567C138S19567C8__A1__8S19567C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C138S19567C8__A1__8S19567C3[3]),  3,5},
  {&(_tg__ZTV8S19567C9__8S19567C8__8S19567C3[8]),  8,10},
  {&(_tg__ZTV9S19567C10__8S19567C8__8S19567C3[6]),  6,8},
  {&(_tg__ZTV8S19567C4__8S19567C8__8S19567C3[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19567C8__8S19567C3[3]),  3,5},
  {&(_tg__ZTV9S19567C118S19567C9__8S19567C8__8S19567C3[5]),  5,7},
  {&(_tg__ZTV9S19567C12__8S19567C8__8S19567C3[5]),  5,7},
  {&(_tg__ZTV9S19567C13__8S19567C8__8S19567C3[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__A3__8S19567C8__8S19567C3[4]),  4,6},
  {&(_tg__ZTV9S19567C13__A__8S19567C8__8S19567C3[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C13__A4__8S19567C8__8S19567C3[4]),  4,6},
  {&(_tg__ZTV8S19567C9__8S19567C3[7]),  7,9},
  {&(_tg__ZTV9S19567C118S19567C9__8S19567C3[5]),  5,7},
  {&(_tg__ZTV8S19567C49S19567C118S19567C9__A1__8S19567C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C118S19567C9__A1__8S19567C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C118S19567C9__8S19567C3[3]),  3,5},
  {&(_tg__ZTV9S19567C12__9S19567C118S19567C9__8S19567C3[5]),  5,7},
  {&(_tg__ZTV9S19567C10__8S19567C9__8S19567C3[6]),  6,8},
  {&(_tg__ZTV8S19567C4__8S19567C9__8S19567C3[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19567C9__8S19567C3[3]),  3,5},
  {&(_tg__ZTV9S19567C11__8S19567C9__8S19567C3[5]),  5,7},
  {&(_tg__ZTV9S19567C12__8S19567C9__8S19567C3[5]),  5,7},
  {&(_tg__ZTV9S19567C10__8S19567C3[5]),  5,7},
  {&(_tg__ZTV8S19567C4__9S19567C10__8S19567C3[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19567C10__8S19567C3[3]),  3,5},
  {&(_tg__ZTV9S19567C12__8S19567C3[4]),  4,6},
  {&(_tg__ZTV8S19567C49S19567C12__A2__8S19567C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C12__A2__8S19567C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C12__8S19567C3[3]),  3,5},
  {&(_tg__ZTV9S19567C13__8S19567C3[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C13__A3__8S19567C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C13__A3__8S19567C3[3]),  3,5},
  {&(_tg__ZTV8S19567C4__9S19567C13__8S19567C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C13__8S19567C3[3]),  3,5},
  {&(_tg__ZTV9S19567C18__8S19567C3[4]),  4,9},
  {&(_tg__ZTV8S19567C49S19567C18__A5__8S19567C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C18__A5__8S19567C3[3]),  3,5},
  {&(_tg__ZTV9S19567C129S19567C18__A1__8S19567C3[4]),  4,6},
  {&(_tg__ZTV8S19567C49S19567C129S19567C18__A6__8S19567C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C129S19567C18__A6__8S19567C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C129S19567C18__A1__8S19567C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C18__8S19567C3[3]),  3,5},
  {&(_tg__ZTV9S19567C12__9S19567C18__8S19567C3[4]),  4,6},
  {&(_tg__ZTV9S19567C14__A1__8S19567C3[5]),  5,8},
  {&(_tg__ZTV9S19567C13__9S19567C14__A1__8S19567C3[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C14__A1__8S19567C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C14__A1__8S19567C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19567C3[];
extern  VTBL_ENTRY _ZTV8S19567C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C3[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19567C9D0Ev,_ZThn380_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19567C9D1Ev,_ZThn380_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19567C9D0Ev,_ZThn288_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19567C9D1Ev,_ZThn288_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19567C11D0Ev,_ZThn348_N9S19567C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19567C11D1Ev,_ZThn348_N9S19567C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19567C8D0Ev,_ZThn1928_N8S19567C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19567C8D0Ev,_ZThn1648_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19567C8D1Ev,_ZThn1928_N8S19567C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19567C8D1Ev,_ZThn1648_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19567C8D0Ev,_ZThn1556_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19567C8D1Ev,_ZThn1556_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19567C8D0Ev,_ZThn1268_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19567C8D1Ev,_ZThn1268_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19567C14D0Ev,_ZThn1928_N9S19567C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19567C14D1Ev,_ZThn1928_N9S19567C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19567C4D0Ev,_ZThn44_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19567C4D1Ev,_ZThn44_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S19567C3D0Ev,_ZThn3236_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4168_N8S19567C3D0Ev,_ZThn2412_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5536_N8S19567C3D1Ev,_ZThn3236_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4168_N8S19567C3D1Ev,_ZThn2412_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C3D0Ev,_ZTv0_n32_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3648_N8S19567C3D0Ev,_ZThn2124_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C3D1Ev,_ZTv0_n32_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3648_N8S19567C3D1Ev,_ZThn2124_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C3D0Ev,_ZTv0_n40_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S19567C3D0Ev,_ZThn856_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C3D1Ev,_ZTv0_n40_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N8S19567C3D1Ev,_ZThn856_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C3D0Ev,_ZTv0_n12_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19567C3D0Ev,_ZThn824_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C3D1Ev,_ZTv0_n12_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19567C3D1Ev,_ZThn824_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4992_N8S19567C3D0Ev,_ZThn2908_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N8S19567C3D0Ev,_ZThn2784_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4296_N8S19567C3D0Ev,_ZThn2504_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19567C3D0Ev,_ZThn780_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4992_N8S19567C3D1Ev,_ZThn2908_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4768_N8S19567C3D1Ev,_ZThn2784_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4296_N8S19567C3D1Ev,_ZThn2504_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S19567C3D1Ev,_ZThn780_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C3 = {  "S19567C3", // class name
  bases_S19567C3, 24,
  &(vtc_S19567C3[0]), // expected_vtbl_contents
  &(vtt_S19567C3[0]), // expected_vtt_contents
  ABISELECT(5600,3268), // object size
  NSPAIRA(_ZTI8S19567C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19567C3),132, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19567C3),73, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C20  : virtual S3572C21 , virtual S19567C13 , S3572C22 , S3572C5 {
  char s19567c20f0[7];
  void *s19567c20f1;
  long double s19567c20f2;
  ::S19567C12 s19567c20f3;
  __tsi64 s19567c20f4;
  __tsi64 s19567c20f5;
  long s19567c20f6;
  int s19567c20f7;
  int s19567c20f8;
  __tsi64 s19567c20f9[3];
  long double s19567c20f10;
  virtual  ~S19567C20(); // _ZN9S19567C20D2Ev
  virtual void  v7(); // _ZN9S19567C202v7Ev
  S19567C20(); // tgen
};
//SIG(-1 S19567C20) C1{ VBC2{ vd m FD} VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} BC5{ vd m FC4 FC6{}} BC7{ VBC4 VBC5 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} BC8{ m Fp Fi[2] FU9{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v1 Fc[7] Fp FD FC10{ VBC4 VBC5 BC7 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} FL FL Fl Fi Fi FL[3] FD}


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

static void Test_S19567C20()
{
  extern Class_Descriptor cd_S19567C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(75,176)];
    init_test(&cd_S19567C20, buf);
    S19567C20 *dp, &lv = *(dp=new (buf) S19567C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1184,700), "sizeof(S19567C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C20)");
    check_base_class_offset(lv, (S3572C21*), ABISELECT(832,504), "S19567C20");
    check_base_class_offset(lv, (S3572C5*)(S19567C13*), ABISELECT(1088,644), "S19567C20");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C13*), ABISELECT(1088,644), "S19567C20");
    /*is_ambiguous_... S19567C13::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C13*), ABISELECT(864,520), "S19567C20");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C13*), ABISELECT(1128,668), "S19567C20");
    check_base_class_offset(lv, (S19567C4*)(S19567C13*), ABISELECT(920,552), "S19567C20");
    check_base_class_offset(lv, (S19567C13*), ABISELECT(864,520), "S19567C20");
    check_base_class_offset(lv, (S3572C22*), ABISELECT(16,4), "S19567C20");
    /*is_ambiguous_... S19567C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*), ABISELECT(112,56), "S19567C20");
    check_field_offset(lv, s19567c20f0, ABISELECT(152,80), "S19567C20.s19567c20f0");
    check_field_offset(lv, s19567c20f1, ABISELECT(160,88), "S19567C20.s19567c20f1");
    check_field_offset(lv, s19567c20f2, ABISELECT(176,92), "S19567C20.s19567c20f2");
    check_field_offset(lv, s19567c20f3, ABISELECT(192,104), "S19567C20.s19567c20f3");
    check_field_offset(lv, s19567c20f4, ABISELECT(752,440), "S19567C20.s19567c20f4");
    check_field_offset(lv, s19567c20f5, ABISELECT(760,448), "S19567C20.s19567c20f5");
    check_field_offset(lv, s19567c20f6, ABISELECT(768,456), "S19567C20.s19567c20f6");
    check_field_offset(lv, s19567c20f7, ABISELECT(776,460), "S19567C20.s19567c20f7");
    check_field_offset(lv, s19567c20f8, ABISELECT(780,464), "S19567C20.s19567c20f8");
    check_field_offset(lv, s19567c20f9, ABISELECT(784,468), "S19567C20.s19567c20f9");
    check_field_offset(lv, s19567c20f10, ABISELECT(816,492), "S19567C20.s19567c20f10");
    test_class_info(&lv, &cd_S19567C20);
    dp->~S19567C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C20(Test_S19567C20, "S19567C20", ABISELECT(1184,700));

#else // __cplusplus

extern void _ZN9S19567C20C1Ev();
extern void _ZN9S19567C20D2Ev();
Name_Map name_map_S19567C20[] = {
  NSPAIR(_ZN9S19567C20C1Ev),
  NSPAIR(_ZN9S19567C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C13;
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
static Base_Class bases_S19567C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    ABISELECT(832,504), //bcp->offset
    9, //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_S3572C5,    ABISELECT(1088,644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(864,520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1128,668), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19567C4,    ABISELECT(920,552), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19567C13,    ABISELECT(864,520), //bcp->offset
    14, //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C22,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C5,    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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19567C20[];
extern void _ZN9S19567C20D1Ev();
extern void _ZN9S19567C20D0Ev();
extern void _ZN9S19567C202v7Ev();
extern void ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev)();
extern void ABISELECT(_ZThn832_N9S19567C20D1Ev,_ZThn504_N9S19567C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev)();
extern void ABISELECT(_ZThn832_N9S19567C20D0Ev,_ZThn504_N9S19567C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C20D1Ev,_ZTv0_n20_N9S19567C20D1Ev)();
extern void ABISELECT(_ZThn864_N9S19567C20D1Ev,_ZThn520_N9S19567C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C20D0Ev,_ZTv0_n20_N9S19567C20D0Ev)();
extern void ABISELECT(_ZThn864_N9S19567C20D0Ev,_ZThn520_N9S19567C20D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N9S19567C20D1Ev,_ZTvn32_n20_N9S19567C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C20D0Ev,_ZTvn32_n20_N9S19567C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev)();
extern void ABISELECT(_ZThn1128_N9S19567C20D1Ev,_ZThn668_N9S19567C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev)();
extern void ABISELECT(_ZThn1128_N9S19567C20D0Ev,_ZThn668_N9S19567C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C20[] = {
  ABISELECT(1128,668),
  ABISELECT(1088,644),
  ABISELECT(864,520),
  ABISELECT(832,504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&_ZN9S19567C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C202v7Ev,
  ABISELECT(-832,-504),
  ABISELECT(-832,-504),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev),
  0,
  ABISELECT(-864,-520),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-864,-520),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C20D1Ev,_ZTv0_n20_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C20D0Ev,_ZTv0_n20_N9S19567C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-920,-552),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C20D1Ev,_ZTvn32_n20_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C20D0Ev,_ZTvn32_n20_N9S19567C20D0Ev),
  ABISELECT(-1128,-668),
  ABISELECT(-1128,-668),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S19567C20[];
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C20[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C20[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S19567C4D1Ev,_ZThn116_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S19567C4D0Ev,_ZThn116_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C13__9S19567C20[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C13__9S19567C20[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S19567C13D1Ev,_ZThn148_N9S19567C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S19567C13D0Ev,_ZThn148_N9S19567C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C13__9S19567C20[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
static  VTT_ENTRY vtt_S19567C20[] = {
  {&(_ZTV9S19567C20[6]),  6,34},
  {&(_ZTV9S19567C20[12]),  12,34},
  {&(_ZTV9S19567C20[20]),  20,34},
  {&(_ZTV9S19567C20[27]),  27,34},
  {&(_ZTV9S19567C20[32]),  32,34},
  {&(_tg__ZTV9S19567C13__9S19567C20[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C20[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C13__9S19567C20[3]),  3,5},
  {&(_tg__ZTV8S19567C4__9S19567C13__9S19567C20[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C13__9S19567C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19567C20[];
extern  VTBL_ENTRY _ZTV9S19567C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C20[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19567C13D0Ev,_ZThn148_N9S19567C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19567C13D1Ev,_ZThn148_N9S19567C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19567C4D0Ev,_ZThn116_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19567C4D1Ev,_ZThn116_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C20D0Ev,_ZTv0_n20_N9S19567C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19567C20D0Ev,_ZThn520_N9S19567C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C20D1Ev,_ZTv0_n20_N9S19567C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19567C20D1Ev,_ZThn520_N9S19567C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N9S19567C20D0Ev,_ZThn668_N9S19567C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S19567C20D0Ev,_ZThn504_N9S19567C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N9S19567C20D1Ev,_ZThn668_N9S19567C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S19567C20D1Ev,_ZThn504_N9S19567C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C20 = {  "S19567C20", // class name
  bases_S19567C20, 8,
  &(vtc_S19567C20[0]), // expected_vtbl_contents
  &(vtt_S19567C20[0]), // expected_vtt_contents
  ABISELECT(1184,700), // object size
  NSPAIRA(_ZTI9S19567C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19567C20),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19567C20),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C19  : S19567C20 {
  ::S19567C11 s19567c19f0;
  int s19567c19f1:7;
  ::S19567C11 s19567c19f2;
  ::S3572C24 s19567c19f3;
  virtual  ~S19567C19(); // _ZN9S19567C19D2Ev
  virtual void  v8(); // _ZN9S19567C192v8Ev
  S19567C19(); // tgen
};
//SIG(-1 S19567C19) C1{ BC2{ VBC3{ vd m FD} VBC4{ VBC5{ m Fp Fs Fi Fp Fl[2]} BC6{ vd m FC5 FC7{}} BC8{ VBC5 VBC6 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} BC9{ m Fp Fi[2] FU10{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC5 vd v3 Fc[7] Fp FD FC11{ VBC5 VBC6 BC8 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} FL FL Fl Fi Fi FL[3] FD} vd v1 FC12{ VBC6 BC8 VBC11 vd FC4} Fi:7 FC12 FC13{ vd m Fi[4] FL Fi FC14{ VBC5 VBC6 Fc:1 Fp[3]} Fi FD Fi Fi FL FL Fs}}


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

static void Test_S19567C19()
{
  extern Class_Descriptor cd_S19567C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(207,483)];
    init_test(&cd_S19567C19, buf);
    S19567C19 *dp, &lv = *(dp=new (buf) S19567C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3296,1928), "sizeof(S19567C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C19)");
    check_base_class_offset(lv, (S3572C21*)(S19567C20*), ABISELECT(2944,1732), "S19567C19");
    check_base_class_offset(lv, (S3572C5*)(S19567C13*), ABISELECT(3200,1872), "S19567C19");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C13*), ABISELECT(3200,1872), "S19567C19");
    /*is_ambiguous_... S19567C13::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C13*), ABISELECT(2976,1748), "S19567C19");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C13*), ABISELECT(3240,1896), "S19567C19");
    check_base_class_offset(lv, (S19567C4*)(S19567C13*), ABISELECT(3032,1780), "S19567C19");
    check_base_class_offset(lv, (S19567C13*)(S19567C20*), ABISELECT(2976,1748), "S19567C19");
    check_base_class_offset(lv, (S3572C22*)(S19567C20*), ABISELECT(16,4), "S19567C19");
    /*is_ambiguous_... S19567C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C20*), ABISELECT(112,56), "S19567C19");
    check_base_class_offset(lv, (S19567C20*), 0, "S19567C19");
    check_field_offset(lv, s19567c19f0, ABISELECT(832,504), "S19567C19.s19567c19f0");
    set_bf_and_test(lv, s19567c19f1, ABISELECT(1760,1040), 0, 7, 1, "S19567C19");
    set_bf_and_test(lv, s19567c19f1, ABISELECT(1760,1040), 0, 7, hide_sll(1LL<<6), "S19567C19");
    check_field_offset(lv, s19567c19f2, ABISELECT(1776,1044), "S19567C19.s19567c19f2");
    check_field_offset(lv, s19567c19f3, ABISELECT(2704,1580), "S19567C19.s19567c19f3");
    test_class_info(&lv, &cd_S19567C19);
    dp->~S19567C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C19(Test_S19567C19, "S19567C19", ABISELECT(3296,1928));

#else // __cplusplus

extern void _ZN9S19567C19C1Ev();
extern void _ZN9S19567C19D2Ev();
Name_Map name_map_S19567C19[] = {
  NSPAIR(_ZN9S19567C19C1Ev),
  NSPAIR(_ZN9S19567C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C13;
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S19567C20;
extern VTBL_ENTRY _ZTI9S19567C20[];
extern  VTBL_ENTRY _ZTV9S19567C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C20[];
static Base_Class bases_S19567C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C21,    ABISELECT(2944,1732), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3572C5,    ABISELECT(3200,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
    4, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2976,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(3240,1896), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19567C4,    ABISELECT(3032,1780), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19567C13,    ABISELECT(2976,1748), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3572C5,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19567C20,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19567C19[];
extern void _ZN9S19567C19D1Ev();
extern void _ZN9S19567C19D0Ev();
extern void _ZN9S19567C202v7Ev();
extern void _ZN9S19567C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C19D1Ev,_ZThn1732_N9S19567C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C19D0Ev,_ZThn1732_N9S19567C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C19D1Ev,_ZTv0_n20_N9S19567C19D1Ev)();
extern void ABISELECT(_ZThn2976_N9S19567C19D1Ev,_ZThn1748_N9S19567C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C19D0Ev,_ZTv0_n20_N9S19567C19D0Ev)();
extern void ABISELECT(_ZThn2976_N9S19567C19D0Ev,_ZThn1748_N9S19567C19D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N9S19567C19D1Ev,_ZTvn32_n20_N9S19567C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C19D0Ev,_ZTvn32_n20_N9S19567C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev)();
extern void ABISELECT(_ZThn3240_N9S19567C19D1Ev,_ZThn1896_N9S19567C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev)();
extern void ABISELECT(_ZThn3240_N9S19567C19D0Ev,_ZThn1896_N9S19567C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C19[] = {
  ABISELECT(3240,1896),
  ABISELECT(3200,1872),
  ABISELECT(2976,1748),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&_ZN9S19567C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C19D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19567C192v8Ev,
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev),
  0,
  ABISELECT(-2976,-1748),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-2976,-1748),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C19D1Ev,_ZTv0_n20_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C19D0Ev,_ZTv0_n20_N9S19567C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-3032,-1780),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C19D1Ev,_ZTvn32_n20_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C19D0Ev,_ZTvn32_n20_N9S19567C19D0Ev),
  ABISELECT(-3240,-1896),
  ABISELECT(-3240,-1896),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S19567C19[];
extern void _ZN9S19567C20D1Ev();
extern void _ZN9S19567C20D0Ev();
extern void _ZN9S19567C202v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C20__9S19567C19[] = {
  ABISELECT(3240,1896),
  ABISELECT(3200,1872),
  ABISELECT(2976,1748),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&_ZN9S19567C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C20D1Ev,_ZThn1732_N9S19567C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C20D0Ev,_ZThn1732_N9S19567C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__9S19567C20__9S19567C19[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19567C20D1Ev,_ZTv0_n20_N9S19567C20D1Ev)();
extern void ABISELECT(_ZThn2976_N9S19567C20D1Ev,_ZThn1748_N9S19567C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C20D0Ev,_ZTv0_n20_N9S19567C20D0Ev)();
extern void ABISELECT(_ZThn2976_N9S19567C20D0Ev,_ZThn1748_N9S19567C20D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C20__9S19567C19[] = {
  0,
  ABISELECT(-2976,-1748),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-2976,-1748),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C20D1Ev,_ZTv0_n20_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C20D0Ev,_ZTv0_n20_N9S19567C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C20D1Ev,_ZTvn32_n20_N9S19567C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C20D0Ev,_ZTvn32_n20_N9S19567C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C20__9S19567C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-3032,-1780),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C20D1Ev,_ZTvn32_n20_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C20D0Ev,_ZTvn32_n20_N9S19567C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev)();
extern void ABISELECT(_ZThn3240_N9S19567C20D1Ev,_ZThn1896_N9S19567C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev)();
extern void ABISELECT(_ZThn3240_N9S19567C20D0Ev,_ZThn1896_N9S19567C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C20__9S19567C19[] = {
  ABISELECT(-3240,-1896),
  ABISELECT(-3240,-1896),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev),
};
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C19[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S19567C4D1Ev,_ZThn116_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S19567C4D0Ev,_ZThn116_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C13__9S19567C19[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C13__9S19567C19[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S19567C13D1Ev,_ZThn148_N9S19567C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S19567C13D0Ev,_ZThn148_N9S19567C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C13__9S19567C19[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
static  VTT_ENTRY vtt_S19567C19[] = {
  {&(_ZTV9S19567C19[6]),  6,35},
  {&(_tg__ZTV9S19567C20__9S19567C19[6]),  6,9},
  {&(_tg__ZTV8S3572C21__9S19567C20__9S19567C19[3]),  3,5},
  {&(_tg__ZTV9S19567C13__9S19567C20__9S19567C19[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C20__9S19567C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C20__9S19567C19[3]),  3,5},
  {&(_ZTV9S19567C19[13]),  13,35},
  {&(_ZTV9S19567C19[21]),  21,35},
  {&(_ZTV9S19567C19[28]),  28,35},
  {&(_ZTV9S19567C19[33]),  33,35},
  {&(_tg__ZTV9S19567C13__9S19567C19[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C13__9S19567C19[3]),  3,5},
  {&(_tg__ZTV8S19567C4__9S19567C13__9S19567C19[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C13__9S19567C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19567C19[];
extern  VTBL_ENTRY _ZTV9S19567C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C19[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19567C13D0Ev,_ZThn148_N9S19567C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19567C13D1Ev,_ZThn148_N9S19567C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19567C4D0Ev,_ZThn116_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19567C4D1Ev,_ZThn116_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C20D0Ev,_ZTv0_n20_N9S19567C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N9S19567C20D0Ev,_ZThn1748_N9S19567C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C20D1Ev,_ZTv0_n20_N9S19567C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N9S19567C20D1Ev,_ZThn1748_N9S19567C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S19567C20D0Ev,_ZThn1896_N9S19567C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C20D0Ev,_ZThn1732_N9S19567C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S19567C20D1Ev,_ZThn1896_N9S19567C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C20D1Ev,_ZThn1732_N9S19567C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C19D0Ev,_ZTv0_n20_N9S19567C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N9S19567C19D0Ev,_ZThn1748_N9S19567C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C19D1Ev,_ZTv0_n20_N9S19567C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N9S19567C19D1Ev,_ZThn1748_N9S19567C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S19567C19D0Ev,_ZThn1896_N9S19567C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C19D0Ev,_ZThn1732_N9S19567C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S19567C19D1Ev,_ZThn1896_N9S19567C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C19D1Ev,_ZThn1732_N9S19567C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C19 = {  "S19567C19", // class name
  bases_S19567C19, 9,
  &(vtc_S19567C19[0]), // expected_vtbl_contents
  &(vtt_S19567C19[0]), // expected_vtt_contents
  ABISELECT(3296,1928), // object size
  NSPAIRA(_ZTI9S19567C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19567C19),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19567C19),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C2  : S19567C3 , virtual S19567C19 {
  __tsi64 s19567c2f0;
  int s19567c2f1;
  char s19567c2f2;
  virtual void  v9(); // _ZN8S19567C22v9Ev
  ~S19567C2(); // tgen
  S19567C2(); // tgen
};
//SIG(-1 S19567C2) C1{ BC2{ VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ vd m FC4 FC6{}} Fc:1 Fp[3]} VBC7{ VBC8{ VBC9{ VBC4 VBC3 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} BC5 BC10{ VBC5 BC3 VBC11{ VBC4 VBC5 BC3 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC12{ VBC4 BC5 BC3 vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC13{ VBC12 vd v3 Fi Fp Fi:2 FD Fp} BC12 vd v4 Fi Fl Fi:6 FC14{ BC15{ VBC4 VBC5 Fc:1 Fp[3]} VBC16{ VBC4 BC5 BC15 vd v10 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC17{ BC18{ VBC5 BC15 VBC19{ VBC4 VBC5 BC15 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC16} VBC20{ VBC4 VBC15 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} VBC16 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC21{ vd m FC20 FC19 Fp Fi Fp FL FD Fs Fp FL Fi} VBC22{ BC3 BC11 vd v5 v6 v7 Fi Fi:2 FD Fp[2]} VBC13 vd Fi FL FC14} VBC23{ BC24{ VBC25{ vd m FD} VBC12 BC26{ m Fp Fi[2] FU27{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC4 vd v8 Fc[7] Fp FD FC11 FL FL Fl Fi Fi FL[3] FD} vd v9 FC10 Fi:7 FC10 FC28{ vd m Fi[4] FL Fi FC15 Fi FD Fi Fi FL FL Fs}} v1 FL Fi Fc}


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

static void Test_S19567C2()
{
  extern Class_Descriptor cd_S19567C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(538,1259)];
    init_test(&cd_S19567C2, buf);
    S19567C2 *dp, &lv = *(dp=new (buf) S19567C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8592,5032), "sizeof(S19567C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C2)");
    /*is_ambiguous_... S19567C2::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*), ABISELECT(1368,816), "S19567C2");
    check_base_class_offset(lv, (S3572C5*)(S19567C10*), ABISELECT(1368,816), "S19567C2");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(1368,816), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C12*), ABISELECT(1368,816), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C12*), ABISELECT(1368,816), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C13*), ABISELECT(1368,816), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C13*), ABISELECT(1368,816), "S19567C2");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C13*)(S19567C8*), ABISELECT(1368,816), "S19567C2");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C13*)(S19567C8*), ABISELECT(1368,816), "S19567C2");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C18*), ABISELECT(1368,816), "S19567C2");
    check_base_class_offset(lv, (S3572C5*)(S19567C12*)(S19567C18*), ABISELECT(1368,816), "S19567C2");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C12*)(S19567C18*), ABISELECT(1368,816), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*), ABISELECT(1408,840), "S19567C2");
    check_base_class_offset(lv, (S3572C4*)(S19567C11*)(S19567C9*), ABISELECT(1408,840), "S19567C2");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(1408,840), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C12*), ABISELECT(1408,840), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C12*), ABISELECT(1408,840), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C13*), ABISELECT(1408,840), "S19567C2");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C13*)(S19567C8*), ABISELECT(1408,840), "S19567C2");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C18*), ABISELECT(1408,840), "S19567C2");
    check_base_class_offset(lv, (S3572C4*)(S19567C12*)(S19567C18*), ABISELECT(1408,840), "S19567C2");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C12*)(S19567C18*), ABISELECT(1408,840), "S19567C2");
    /*is_ambiguous_... S19567C3::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C3*), ABISELECT(1328,796), "S19567C2");
    check_base_class_offset(lv, (S19567C4*)(S19567C10*), ABISELECT(1328,796), "S19567C2");
    check_base_class_offset(lv, (S19567C10*)(S19567C9*), ABISELECT(4184,2428), "S19567C2");
    /*is_ambiguous_... S19567C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C9*), ABISELECT(3664,2140), "S19567C2");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(3728,2172), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C12 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C12*), ABISELECT(4312,2520), "S19567C2");
    check_base_class_offset(lv, (S19567C12*)(S19567C11*)(S19567C9*), ABISELECT(4312,2520), "S19567C2");
    check_base_class_offset(lv, (S19567C11*)(S19567C9*), ABISELECT(3728,2172), "S19567C2");
    check_base_class_offset(lv, (S19567C9*)(S19567C8*), ABISELECT(3664,2140), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C13*), ABISELECT(4784,2800), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C13*), ABISELECT(4840,2832), "S19567C2");
    check_base_class_offset(lv, (S19567C13*)(S19567C14*)(S19567C8*), ABISELECT(4784,2800), "S19567C2");
    /*is_ambiguous_... S19567C2::S19567C14 */ AMB_check_base_class_offset(lv, (S19567C13*)(S19567C14*), ABISELECT(4784,2800), "S19567C2");
    check_base_class_offset(lv, (S19567C13*)(S19567C20*)(S19567C19*), ABISELECT(4784,2800), "S19567C2");
    check_base_class_offset(lv, (S19567C14*)(S19567C8*), ABISELECT(1472,872), "S19567C2");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C13*)(S19567C8*), ABISELECT(1536,904), "S19567C2");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C13*)(S19567C8*), ABISELECT(1592,936), "S19567C2");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C13*)(S19567C8*), ABISELECT(1536,904), "S19567C2");
    check_base_class_offset(lv, (S19567C8*)(S19567C3*), ABISELECT(1472,872), "S19567C2");
    check_base_class_offset(lv, (S3572C17*)(S19567C3*), 0, "S19567C2");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C18*), ABISELECT(5008,2924), "S19567C2");
    check_base_class_offset(lv, (S19567C4*)(S19567C12*)(S19567C18*), ABISELECT(5048,2944), "S19567C2");
    check_base_class_offset(lv, (S19567C12*)(S19567C18*), ABISELECT(5048,2944), "S19567C2");
    check_base_class_offset(lv, (S19567C18*)(S19567C3*), ABISELECT(5008,2924), "S19567C2");
    /*is_ambiguous_... S19567C3::S19567C14 */ AMB_check_base_class_offset(lv, (S19567C14*)(S19567C3*), ABISELECT(5552,3252), "S19567C2");
    check_base_class_offset(lv, (S19567C3*), 0, "S19567C2");
    check_base_class_offset(lv, (S3572C21*)(S19567C20*)(S19567C19*), ABISELECT(8560,5016), "S19567C2");
    check_base_class_offset(lv, (S3572C22*)(S19567C20*)(S19567C19*), ABISELECT(5632,3288), "S19567C2");
    /*is_ambiguous_... S19567C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C20*)(S19567C19*), ABISELECT(5728,3340), "S19567C2");
    check_base_class_offset(lv, (S19567C20*)(S19567C19*), ABISELECT(5616,3284), "S19567C2");
    check_base_class_offset(lv, (S19567C19*), ABISELECT(5616,3284), "S19567C2");
    check_field_offset(lv, s19567c2f0, ABISELECT(1312,780), "S19567C2.s19567c2f0");
    check_field_offset(lv, s19567c2f1, ABISELECT(1320,788), "S19567C2.s19567c2f1");
    check_field_offset(lv, s19567c2f2, ABISELECT(1324,792), "S19567C2.s19567c2f2");
    test_class_info(&lv, &cd_S19567C2);
    dp->~S19567C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C2(Test_S19567C2, "S19567C2", ABISELECT(8592,5032));

#else // __cplusplus

extern void _ZN8S19567C2C1Ev();
extern void _ZN8S19567C2D1Ev();
Name_Map name_map_S19567C2[] = {
  NSPAIR(_ZN8S19567C2C1Ev),
  NSPAIR(_ZN8S19567C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C10;
extern VTBL_ENTRY _ZTI9S19567C10[];
extern  VTBL_ENTRY _ZTV9S19567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C12;
extern VTBL_ENTRY _ZTI9S19567C12[];
extern  VTBL_ENTRY _ZTV9S19567C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C12[];
extern Class_Descriptor cd_S19567C11;
extern VTBL_ENTRY _ZTI9S19567C11[];
extern  VTBL_ENTRY _ZTV9S19567C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C11[];
extern Class_Descriptor cd_S19567C9;
extern VTBL_ENTRY _ZTI8S19567C9[];
extern  VTBL_ENTRY _ZTV8S19567C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C13;
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
extern Class_Descriptor cd_S19567C14;
extern VTBL_ENTRY _ZTI9S19567C14[];
extern  VTBL_ENTRY _ZTV9S19567C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C13;
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
extern Class_Descriptor cd_S19567C8;
extern VTBL_ENTRY _ZTI8S19567C8[];
extern  VTBL_ENTRY _ZTV8S19567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C8[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C12;
extern VTBL_ENTRY _ZTI9S19567C12[];
extern  VTBL_ENTRY _ZTV9S19567C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C12[];
extern Class_Descriptor cd_S19567C18;
extern VTBL_ENTRY _ZTI9S19567C18[];
extern  VTBL_ENTRY _ZTV9S19567C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C18[];
extern Class_Descriptor cd_S19567C14;
extern VTBL_ENTRY _ZTI9S19567C14[];
extern  VTBL_ENTRY _ZTV9S19567C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C14[];
extern Class_Descriptor cd_S19567C3;
extern VTBL_ENTRY _ZTI8S19567C3[];
extern  VTBL_ENTRY _ZTV8S19567C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C3[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S19567C20;
extern VTBL_ENTRY _ZTI9S19567C20[];
extern  VTBL_ENTRY _ZTV9S19567C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C20[];
extern Class_Descriptor cd_S19567C19;
extern VTBL_ENTRY _ZTI9S19567C19[];
extern  VTBL_ENTRY _ZTV9S19567C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C19[];
static Base_Class bases_S19567C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(1368,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
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1408,840), //bcp->offset
    24, //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_S19567C4,    ABISELECT(1328,796), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19567C10,    ABISELECT(4184,2428), //bcp->offset
    76, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3664,2140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(3728,2172), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(4312,2520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19567C12,    ABISELECT(4312,2520), //bcp->offset
    84, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19567C11,    ABISELECT(3728,2172), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19567C9,    ABISELECT(3664,2140), //bcp->offset
    59, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(4784,2800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(4840,2832), //bcp->offset
    100, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19567C13,    ABISELECT(4784,2800), //bcp->offset
    91, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19567C14,    ABISELECT(1472,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1536,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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(1592,936), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19567C13,    ABISELECT(1536,904), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19567C8,    ABISELECT(1472,872), //bcp->offset
    29, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3572C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(5008,2924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(5048,2944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19567C12,    ABISELECT(5048,2944), //bcp->offset
    119, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19567C18,    ABISELECT(5008,2924), //bcp->offset
    106, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19567C14,    ABISELECT(5552,3252), //bcp->offset
    125, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19567C3,    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
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C21,    ABISELECT(8560,5016), //bcp->offset
    148, //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
    28, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(5632,3288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(5728,3340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19567C20,    ABISELECT(5616,3284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19567C19,    ABISELECT(5616,3284), //bcp->offset
    135, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19567C2[];
extern void _ZN8S19567C2D1Ev();
extern void _ZN8S19567C2D0Ev();
extern void _ZN8S19567C22v9Ev();
extern void ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19567C2D1Ev,_ZThn796_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19567C2D0Ev,_ZThn796_N8S19567C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C2D1Ev,_ZTv0_n12_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn1408_N8S19567C2D1Ev,_ZThn840_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C2D0Ev,_ZTv0_n12_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn1408_N8S19567C2D0Ev,_ZThn840_N8S19567C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19567C2D1Ev,_ZTv0_n40_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn1472_N8S19567C2D1Ev,_ZThn872_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19567C2D0Ev,_ZTv0_n40_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn1472_N8S19567C2D0Ev,_ZThn872_N8S19567C2D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
extern void _ZN8S19567C82v3Ev();
extern void ABISELECT(_ZTvn64_n80_N8S19567C2D1Ev,_ZTvn32_n40_N8S19567C2D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19567C2D0Ev,_ZTvn32_n40_N8S19567C2D0Ev)();
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZTvn120_n80_N8S19567C2D1Ev,_ZTvn64_n40_N8S19567C2D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19567C2D0Ev,_ZTvn64_n40_N8S19567C2D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19567C2D1Ev,_ZTv0_n32_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn3664_N8S19567C2D1Ev,_ZThn2140_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19567C2D0Ev,_ZTv0_n32_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn3664_N8S19567C2D0Ev,_ZThn2140_N8S19567C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S19567C2D1Ev,_ZTvn32_n32_N8S19567C2D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19567C2D0Ev,_ZTvn32_n32_N8S19567C2D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19567C2D1Ev,_ZTv0_n24_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn4184_N8S19567C2D1Ev,_ZThn2428_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C2D0Ev,_ZTv0_n24_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn4184_N8S19567C2D0Ev,_ZThn2428_N8S19567C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn4312_N8S19567C2D1Ev,_ZThn2520_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn4312_N8S19567C2D0Ev,_ZThn2520_N8S19567C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn4784_N8S19567C2D1Ev,_ZThn2800_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn4784_N8S19567C2D0Ev,_ZThn2800_N8S19567C2D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S19567C2D1Ev,_ZTvn32_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19567C2D0Ev,_ZTvn32_n20_N8S19567C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn5008_N8S19567C2D1Ev,_ZThn2924_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn5008_N8S19567C2D0Ev,_ZThn2924_N8S19567C2D0Ev)() __attribute__((weak));
extern void _ZN9S19567C182v4Ev();
extern void _ZN9S19567C182v5Ev();
extern void _ZN9S19567C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N8S19567C2D1Ev,_ZTvn20_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19567C2D0Ev,_ZTvn20_n20_N8S19567C2D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19567C2D1Ev,_ZTv0_n24_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn5552_N8S19567C2D1Ev,_ZThn3252_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C2D0Ev,_ZTv0_n24_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn5552_N8S19567C2D0Ev,_ZThn3252_N8S19567C2D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S19567C2D1Ev,_ZTv0_n28_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn5616_N8S19567C2D1Ev,_ZThn3284_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19567C2D0Ev,_ZTv0_n28_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn5616_N8S19567C2D0Ev,_ZThn3284_N8S19567C2D0Ev)() __attribute__((weak));
extern void _ZN9S19567C202v7Ev();
extern void _ZN9S19567C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N8S19567C2D1Ev,_ZTv0_n12_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn8560_N8S19567C2D1Ev,_ZThn5016_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C2D0Ev,_ZTv0_n12_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn8560_N8S19567C2D0Ev,_ZThn5016_N8S19567C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C2[] = {
  ABISELECT(8560,5016),
  ABISELECT(5616,3284),
  ABISELECT(5552,3252),
  ABISELECT(5008,2924),
  ABISELECT(4784,2800),
  ABISELECT(4312,2520),
  ABISELECT(4184,2428),
  ABISELECT(3664,2140),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&_ZN8S19567C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19567C22v9Ev,
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev),
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C2D1Ev,_ZTv0_n12_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C2D0Ev,_ZTv0_n12_N8S19567C2D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C2D1Ev,_ZTv0_n40_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C2D0Ev,_ZTv0_n40_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19567C82v3Ev,
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C2D1Ev,_ZTvn32_n40_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C2D0Ev,_ZTvn32_n40_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C2D1Ev,_ZTvn64_n40_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C2D0Ev,_ZTvn64_n40_N8S19567C2D0Ev),
  ABISELECT(-3664,-2140),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-3664,-2140),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C2D1Ev,_ZTv0_n32_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C2D0Ev,_ZTv0_n32_N8S19567C2D0Ev),
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-3728,-2172),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C2D1Ev,_ZTvn32_n32_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C2D0Ev,_ZTvn32_n32_N8S19567C2D0Ev),
  ABISELECT(-4184,-2428),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-4184,-2428),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C2D1Ev,_ZTv0_n24_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C2D0Ev,_ZTv0_n24_N8S19567C2D0Ev),
  ABISELECT(-4312,-2520),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-4312,-2520),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev),
  0,
  ABISELECT(-4784,-2800),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-4784,-2800),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-4840,-2832),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C2D1Ev,_ZTvn32_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C2D0Ev,_ZTvn32_n20_N8S19567C2D0Ev),
  0,
  0,
  0,
  ABISELECT(-5008,-2924),
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  ABISELECT(-5008,-2924),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v6Ev,
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-5048,-2944),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C2D1Ev,_ZTvn20_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C2D0Ev,_ZTvn20_n20_N8S19567C2D0Ev),
  0,
  ABISELECT(-5552,-3252),
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3252),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C2D1Ev,_ZTv0_n24_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C2D0Ev,_ZTv0_n24_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  0,
  0,
  ABISELECT(-5616,-3284),
  ABISELECT(-4208,-2444),
  ABISELECT(-4248,-2468),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  ABISELECT(-5616,-3284),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19567C2D1Ev,_ZTv0_n28_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19567C2D0Ev,_ZTv0_n28_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19567C192v8Ev,
  ABISELECT(-8560,-5016),
  ABISELECT(-8560,-5016),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C2D1Ev,_ZTv0_n12_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C2D0Ev,_ZTv0_n12_N8S19567C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19567C2[];
extern void _ZN8S19567C3D1Ev();
extern void _ZN8S19567C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C3__8S19567C2[] = {
  ABISELECT(5552,3252),
  ABISELECT(5008,2924),
  ABISELECT(4784,2800),
  ABISELECT(4312,2520),
  ABISELECT(4184,2428),
  ABISELECT(3664,2140),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&_ZN8S19567C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C3D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19567C3D1Ev,_ZThn796_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19567C3D0Ev,_ZThn796_N8S19567C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C3__8S19567C2[] = {
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19567C3D1Ev,_ZTv0_n12_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn1408_N8S19567C3D1Ev,_ZThn840_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C3D0Ev,_ZTv0_n12_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn1408_N8S19567C3D0Ev,_ZThn840_N8S19567C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C3__8S19567C2[] = {
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C3D1Ev,_ZTv0_n12_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C3D0Ev,_ZTv0_n12_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S19567C3D1Ev,_ZTv0_n40_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn1472_N8S19567C3D1Ev,_ZThn872_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19567C3D0Ev,_ZTv0_n40_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn1472_N8S19567C3D0Ev,_ZThn872_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
extern void _ZN8S19567C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C8__8S19567C3__8S19567C2[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C3D1Ev,_ZTv0_n40_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C3D0Ev,_ZTv0_n40_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19567C82v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19567C3D1Ev,_ZTv0_n32_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn3664_N8S19567C3D1Ev,_ZThn2140_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19567C3D0Ev,_ZTv0_n32_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn3664_N8S19567C3D0Ev,_ZThn2140_N8S19567C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C9__8S19567C3__8S19567C2[] = {
  ABISELECT(-3664,-2140),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-3664,-2140),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C3D1Ev,_ZTv0_n32_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C3D0Ev,_ZTv0_n32_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn4184_N8S19567C3D1Ev,_ZThn2428_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn4184_N8S19567C3D0Ev,_ZThn2428_N8S19567C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C3__8S19567C2[] = {
  ABISELECT(-4184,-2428),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-4184,-2428),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19567C3D1Ev,_ZTvn32_n32_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19567C3D0Ev,_ZTvn32_n32_N8S19567C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C118S19567C9__8S19567C3__8S19567C2[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-3728,-2172),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C3D1Ev,_ZTvn32_n32_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C3D0Ev,_ZTvn32_n32_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn4312_N8S19567C3D1Ev,_ZThn2520_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn4312_N8S19567C3D0Ev,_ZThn2520_N8S19567C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C3__8S19567C2[] = {
  ABISELECT(-4312,-2520),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-4312,-2520),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn4784_N8S19567C3D1Ev,_ZThn2800_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn4784_N8S19567C3D0Ev,_ZThn2800_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__8S19567C3__8S19567C2[] = {
  0,
  ABISELECT(-4784,-2800),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-4784,-2800),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19567C3D1Ev,_ZTvn32_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19567C3D0Ev,_ZTvn32_n20_N8S19567C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A3__8S19567C3__8S19567C2[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-4840,-2832),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C3D1Ev,_ZTvn32_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C3D0Ev,_ZTvn32_n20_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S19567C3D1Ev,_ZTvn32_n40_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19567C3D0Ev,_ZTvn32_n40_N8S19567C3D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C138S19567C8__A1__8S19567C3__8S19567C2[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C3D1Ev,_ZTvn32_n40_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C3D0Ev,_ZTvn32_n40_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S19567C3D1Ev,_ZTvn64_n40_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19567C3D0Ev,_ZTvn64_n40_N8S19567C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C3__8S19567C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C3D1Ev,_ZTvn64_n40_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C3D0Ev,_ZTvn64_n40_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn5008_N8S19567C3D1Ev,_ZThn2924_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn5008_N8S19567C3D0Ev,_ZThn2924_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C182v4Ev();
extern void _ZN9S19567C182v5Ev();
extern void _ZN9S19567C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C18__8S19567C3__8S19567C2[] = {
  0,
  0,
  0,
  ABISELECT(-5008,-2924),
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  ABISELECT(-5008,-2924),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S19567C3D1Ev,_ZTvn20_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19567C3D0Ev,_ZTvn20_n20_N8S19567C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C129S19567C18__A1__8S19567C3__8S19567C2[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-5048,-2944),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C3D1Ev,_ZTvn20_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C3D0Ev,_ZTvn20_n20_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn5552_N8S19567C3D1Ev,_ZThn3252_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn5552_N8S19567C3D0Ev,_ZThn3252_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C14__A1__8S19567C3__8S19567C2[] = {
  0,
  ABISELECT(-5552,-3252),
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3252),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C2[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19567C4D1Ev,_ZThn44_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19567C4D0Ev,_ZThn44_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C4__8S19567C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void _ZN8S19567C8D1Ev();
extern void _ZN8S19567C8D0Ev();
extern void _ZN9S19567C142v2Ev();
extern void _ZN8S19567C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C8__8S19567C2[] = {
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&_ZN8S19567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C8D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19567C82v3Ev,
};
extern void _ZN9S19567C14D1Ev();
extern void _ZN9S19567C14D0Ev();
extern void _ZN9S19567C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C148S19567C8__8S19567C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&_ZN9S19567C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZThn3312_N9S19567C14D1Ev,_ZThn1928_N9S19567C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev)();
extern void ABISELECT(_ZThn3312_N9S19567C14D0Ev,_ZThn1928_N9S19567C14D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C148S19567C8__8S19567C2[] = {
  0,
  ABISELECT(-3312,-1928),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-3312,-1928),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C148S19567C8__8S19567C2[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-3368,-1960),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C148S19567C8__8S19567C2[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev),
};
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C138S19567C8__A1__8S19567C2[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C138S19567C8__A4__8S19567C2[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C138S19567C8__A1__8S19567C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C138S19567C8__A1__8S19567C2[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2192_N8S19567C8D1Ev,_ZThn1268_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2192_N8S19567C8D0Ev,_ZThn1268_N8S19567C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C9__8S19567C8__8S19567C2[] = {
  ABISELECT(-2192,-1268),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-2192,-1268),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2712_N8S19567C8D1Ev,_ZThn1556_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2712_N8S19567C8D0Ev,_ZThn1556_N8S19567C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C8__8S19567C2[] = {
  ABISELECT(-2712,-1556),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-2712,-1556),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C8__8S19567C2[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19567C8D1Ev,_ZTv0_n12_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C8D0Ev,_ZTv0_n12_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C8__8S19567C2[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C8D1Ev,_ZTv0_n12_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C8D0Ev,_ZTv0_n12_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19567C8D1Ev,_ZTvn32_n32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19567C8D0Ev,_ZTvn32_n32_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C118S19567C9__8S19567C8__8S19567C2[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-2256,-1300),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C8D1Ev,_ZTvn32_n32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C8D0Ev,_ZTvn32_n32_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2840_N8S19567C8D1Ev,_ZThn1648_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2840_N8S19567C8D0Ev,_ZThn1648_N8S19567C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C8__8S19567C2[] = {
  ABISELECT(-2840,-1648),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-2840,-1648),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn3312_N8S19567C8D1Ev,_ZThn1928_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn3312_N8S19567C8D0Ev,_ZThn1928_N8S19567C8D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__8S19567C8__8S19567C2[] = {
  0,
  ABISELECT(-3312,-1928),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-3312,-1928),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19567C8D1Ev,_ZTvn32_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19567C8D0Ev,_ZTvn32_n20_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A3__8S19567C8__8S19567C2[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-3368,-1960),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C8D1Ev,_ZTvn32_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C8D0Ev,_ZTvn32_n20_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19567C8D1Ev,_ZThn32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19567C8D0Ev,_ZThn32_N8S19567C8D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__A__8S19567C8__8S19567C2[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C8D1Ev,_ZThn32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C8D0Ev,_ZThn32_N8S19567C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZThn120_N8S19567C8D1Ev,_ZThn64_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19567C8D0Ev,_ZThn64_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A4__8S19567C8__8S19567C2[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19567C8D1Ev,_ZThn64_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19567C8D0Ev,_ZThn64_N8S19567C8D0Ev),
};
extern void _ZN8S19567C9D1Ev();
extern void _ZN8S19567C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C9__8S19567C2[] = {
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&_ZN8S19567C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C9D0Ev,
};
extern void _ZN9S19567C11D1Ev();
extern void _ZN9S19567C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C118S19567C9__8S19567C2[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&_ZN9S19567C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C11D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C118S19567C9__A1__8S19567C2[] = {
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C118S19567C9__A1__8S19567C2[] = {
  ABISELECT(2320,1332),
  ABISELECT(2320,1332),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C118S19567C9__8S19567C2[] = {
  ABISELECT(2320,1332),
  ABISELECT(2320,1332),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev)();
extern void ABISELECT(_ZThn584_N9S19567C11D1Ev,_ZThn348_N9S19567C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev)();
extern void ABISELECT(_ZThn584_N9S19567C11D0Ev,_ZThn348_N9S19567C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__9S19567C118S19567C9__8S19567C2[] = {
  ABISELECT(-584,-348),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-584,-348),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn520_N8S19567C9D1Ev,_ZThn288_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn520_N8S19567C9D0Ev,_ZThn288_N8S19567C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C9__8S19567C2[] = {
  ABISELECT(-520,-288),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C9__8S19567C2[] = {
  ABISELECT(2336,1344),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2336,1344),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C9__8S19567C2[] = {
  ABISELECT(2256,1300),
  ABISELECT(2256,1300),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19567C9D1Ev,_ZThn32_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19567C9D0Ev,_ZThn32_N8S19567C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C11__8S19567C9__8S19567C2[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C9D1Ev,_ZThn32_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C9D0Ev,_ZThn32_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn648_N8S19567C9D1Ev,_ZThn380_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn648_N8S19567C9D0Ev,_ZThn380_N8S19567C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C9__8S19567C2[] = {
  ABISELECT(-648,-380),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-648,-380),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev),
};
extern void _ZN9S19567C10D1Ev();
extern void _ZN9S19567C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C2[] = {
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&_ZN9S19567C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C10__8S19567C2[] = {
  ABISELECT(2856,1632),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2856,1632),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C10__8S19567C2[] = {
  ABISELECT(2776,1588),
  ABISELECT(2776,1588),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev),
};
extern void _ZN9S19567C12D1Ev();
extern void _ZN9S19567C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C2[] = {
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&_ZN9S19567C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C12D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C12__A2__8S19567C2[] = {
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C12__A2__8S19567C2[] = {
  ABISELECT(2904,1680),
  ABISELECT(2904,1680),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C12__8S19567C2[] = {
  ABISELECT(2904,1680),
  ABISELECT(2904,1680),
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev),
};
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__8S19567C2[] = {
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A3__8S19567C2[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C13__A3__8S19567C2[] = {
  ABISELECT(3432,1992),
  ABISELECT(3432,1992),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C13__8S19567C2[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C13__8S19567C2[] = {
  ABISELECT(3376,1960),
  ABISELECT(3376,1960),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
extern void _ZN9S19567C18D1Ev();
extern void _ZN9S19567C18D0Ev();
extern void _ZN9S19567C182v4Ev();
extern void _ZN9S19567C182v5Ev();
extern void _ZN9S19567C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C18__8S19567C2[] = {
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&_ZN9S19567C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v6Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C18__A5__8S19567C2[] = {
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C18__A5__8S19567C2[] = {
  ABISELECT(3600,2084),
  ABISELECT(3600,2084),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void _ZN9S19567C12D1Ev();
extern void _ZN9S19567C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C129S19567C18__A1__8S19567C2[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&_ZN9S19567C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C12D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C129S19567C18__A6__8S19567C2[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C129S19567C18__A6__8S19567C2[] = {
  ABISELECT(3640,2104),
  ABISELECT(3640,2104),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C129S19567C18__A1__8S19567C2[] = {
  ABISELECT(3640,2104),
  ABISELECT(3640,2104),
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C18D1Ev,_ZTv0_n12_N9S19567C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C18D0Ev,_ZTv0_n12_N9S19567C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C18__8S19567C2[] = {
  ABISELECT(3600,2084),
  ABISELECT(3600,2084),
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C18D1Ev,_ZTv0_n12_N9S19567C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C18D0Ev,_ZTv0_n12_N9S19567C18D0Ev),
};
extern void ABISELECT(_ZThn40_N9S19567C18D1Ev,_ZThn20_N9S19567C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S19567C18D0Ev,_ZThn20_N9S19567C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C12__9S19567C18__8S19567C2[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19567C18D1Ev,_ZThn20_N9S19567C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19567C18D0Ev,_ZThn20_N9S19567C18D0Ev),
};
extern void _ZN9S19567C14D1Ev();
extern void _ZN9S19567C14D0Ev();
extern void _ZN9S19567C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C14__A1__8S19567C2[] = {
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&_ZN9S19567C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C14__A1__8S19567C2[] = {
  0,
  ABISELECT(768,452),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(768,452),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C14__A1__8S19567C2[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(712,420),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C14__A1__8S19567C2[] = {
  ABISELECT(4144,2412),
  ABISELECT(4144,2412),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev),
};
extern void _ZN9S19567C19D1Ev();
extern void _ZN9S19567C19D0Ev();
extern void _ZN9S19567C202v7Ev();
extern void _ZN9S19567C192v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C19__8S19567C2[] = {
  ABISELECT(-4208,-2444),
  ABISELECT(-4248,-2468),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&_ZN9S19567C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C19D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19567C192v8Ev,
};
extern void _ZN9S19567C20D1Ev();
extern void _ZN9S19567C20D0Ev();
extern void _ZN9S19567C202v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C209S19567C19__8S19567C2[] = {
  ABISELECT(-4208,-2444),
  ABISELECT(-4248,-2468),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&_ZN9S19567C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C20D1Ev,_ZThn1732_N9S19567C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C20D0Ev,_ZThn1732_N9S19567C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__9S19567C209S19567C19__8S19567C2[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19567C20D1Ev,_ZTv0_n20_N9S19567C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19567C20D0Ev,_ZTv0_n20_N9S19567C20D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C209S19567C19__8S19567C2[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C20D1Ev,_ZTv0_n20_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C20D0Ev,_ZTv0_n20_N9S19567C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C20D1Ev,_ZTvn32_n20_N9S19567C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C20D0Ev,_ZTvn32_n20_N9S19567C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C209S19567C19__8S19567C2[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C20D1Ev,_ZTvn32_n20_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C20D0Ev,_ZTvn32_n20_N9S19567C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C209S19567C19__8S19567C2[] = {
  ABISELECT(4208,2444),
  ABISELECT(4208,2444),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C19D1Ev,_ZThn1732_N9S19567C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C19D0Ev,_ZThn1732_N9S19567C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__9S19567C19__8S19567C2[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19567C19D1Ev,_ZTv0_n20_N9S19567C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19567C19D0Ev,_ZTv0_n20_N9S19567C19D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C19__8S19567C2[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C19D1Ev,_ZTv0_n20_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C19D0Ev,_ZTv0_n20_N9S19567C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C19D1Ev,_ZTvn32_n20_N9S19567C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C19D0Ev,_ZTvn32_n20_N9S19567C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C19__8S19567C2[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C19D1Ev,_ZTvn32_n20_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C19D0Ev,_ZTvn32_n20_N9S19567C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C19__8S19567C2[] = {
  ABISELECT(4208,2444),
  ABISELECT(4208,2444),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev),
};
static  VTT_ENTRY vtt_S19567C2[] = {
  {&(_ZTV8S19567C2[14]),  14,153},
  {&(_tg__ZTV8S19567C3__8S19567C2[12]),  12,14},
  {&(_tg__ZTV8S19567C4__8S19567C3__8S19567C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19567C3__8S19567C2[3]),  3,5},
  {&(_tg__ZTV8S19567C8__8S19567C3__8S19567C2[13]),  13,17},
  {&(_tg__ZTV8S19567C9__8S19567C3__8S19567C2[8]),  8,10},
  {&(_tg__ZTV9S19567C10__8S19567C3__8S19567C2[6]),  6,8},
  {&(_tg__ZTV9S19567C118S19567C9__8S19567C3__8S19567C2[5]),  5,7},
  {&(_tg__ZTV9S19567C12__8S19567C3__8S19567C2[5]),  5,7},
  {&(_tg__ZTV9S19567C13__8S19567C3__8S19567C2[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__A3__8S19567C3__8S19567C2[4]),  4,6},
  {&(_tg__ZTV9S19567C138S19567C8__A1__8S19567C3__8S19567C2[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C3__8S19567C2[4]),  4,6},
  {&(_tg__ZTV9S19567C18__8S19567C3__8S19567C2[8]),  8,13},
  {&(_tg__ZTV9S19567C129S19567C18__A1__8S19567C3__8S19567C2[4]),  4,6},
  {&(_tg__ZTV9S19567C14__A1__8S19567C3__8S19567C2[7]),  7,10},
  {&(_ZTV8S19567C2[22]),  22,153},
  {&(_ZTV8S19567C2[27]),  27,153},
  {&(_ZTV8S19567C2[42]),  42,153},
  {&(_ZTV8S19567C2[67]),  67,153},
  {&(_ZTV8S19567C2[82]),  82,153},
  {&(_ZTV8S19567C2[74]),  74,153},
  {&(_ZTV8S19567C2[89]),  89,153},
  {&(_ZTV8S19567C2[97]),  97,153},
  {&(_ZTV8S19567C2[104]),  104,153},
  {&(_ZTV8S19567C2[50]),  50,153},
  {&(_ZTV8S19567C2[57]),  57,153},
  {&(_ZTV8S19567C2[114]),  114,153},
  {&(_ZTV8S19567C2[123]),  123,153},
  {&(_ZTV8S19567C2[132]),  132,153},
  {&(_ZTV8S19567C2[144]),  144,153},
  {&(_ZTV8S19567C2[151]),  151,153},
  {&(_tg__ZTV8S19567C4__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C4__8S19567C2[3]),  3,5},
  {&(_tg__ZTV8S19567C8__8S19567C2[9]),  9,13},
  {&(_tg__ZTV9S19567C148S19567C8__8S19567C2[5]),  5,8},
  {&(_tg__ZTV9S19567C13__9S19567C148S19567C8__8S19567C2[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C148S19567C8__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C148S19567C8__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C138S19567C8__A1__8S19567C2[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C138S19567C8__A4__8S19567C2[3]),  3,5},
  {&(_tg__ZTV8S19567C4__9S19567C138S19567C8__A1__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C138S19567C8__A1__8S19567C2[3]),  3,5},
  {&(_tg__ZTV8S19567C9__8S19567C8__8S19567C2[8]),  8,10},
  {&(_tg__ZTV9S19567C10__8S19567C8__8S19567C2[6]),  6,8},
  {&(_tg__ZTV8S19567C4__8S19567C8__8S19567C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19567C8__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C118S19567C9__8S19567C8__8S19567C2[5]),  5,7},
  {&(_tg__ZTV9S19567C12__8S19567C8__8S19567C2[5]),  5,7},
  {&(_tg__ZTV9S19567C13__8S19567C8__8S19567C2[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__A3__8S19567C8__8S19567C2[4]),  4,6},
  {&(_tg__ZTV9S19567C13__A__8S19567C8__8S19567C2[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C13__A4__8S19567C8__8S19567C2[4]),  4,6},
  {&(_tg__ZTV8S19567C9__8S19567C2[7]),  7,9},
  {&(_tg__ZTV9S19567C118S19567C9__8S19567C2[5]),  5,7},
  {&(_tg__ZTV8S19567C49S19567C118S19567C9__A1__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C118S19567C9__A1__8S19567C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C118S19567C9__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C12__9S19567C118S19567C9__8S19567C2[5]),  5,7},
  {&(_tg__ZTV9S19567C10__8S19567C9__8S19567C2[6]),  6,8},
  {&(_tg__ZTV8S19567C4__8S19567C9__8S19567C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19567C9__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C11__8S19567C9__8S19567C2[5]),  5,7},
  {&(_tg__ZTV9S19567C12__8S19567C9__8S19567C2[5]),  5,7},
  {&(_tg__ZTV9S19567C10__8S19567C2[5]),  5,7},
  {&(_tg__ZTV8S19567C4__9S19567C10__8S19567C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19567C10__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C12__8S19567C2[4]),  4,6},
  {&(_tg__ZTV8S19567C49S19567C12__A2__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C12__A2__8S19567C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C12__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C13__8S19567C2[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C13__A3__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C13__A3__8S19567C2[3]),  3,5},
  {&(_tg__ZTV8S19567C4__9S19567C13__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C13__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C18__8S19567C2[4]),  4,9},
  {&(_tg__ZTV8S19567C49S19567C18__A5__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C18__A5__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C129S19567C18__A1__8S19567C2[4]),  4,6},
  {&(_tg__ZTV8S19567C49S19567C129S19567C18__A6__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C129S19567C18__A6__8S19567C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C129S19567C18__A1__8S19567C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C18__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C12__9S19567C18__8S19567C2[4]),  4,6},
  {&(_tg__ZTV9S19567C14__A1__8S19567C2[5]),  5,8},
  {&(_tg__ZTV9S19567C13__9S19567C14__A1__8S19567C2[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C14__A1__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C14__A1__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C19__8S19567C2[6]),  6,10},
  {&(_tg__ZTV9S19567C209S19567C19__8S19567C2[6]),  6,9},
  {&(_tg__ZTV8S3572C21__9S19567C209S19567C19__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C13__9S19567C209S19567C19__8S19567C2[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C209S19567C19__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C209S19567C19__8S19567C2[3]),  3,5},
  {&(_tg__ZTV8S3572C21__9S19567C19__8S19567C2[3]),  3,5},
  {&(_tg__ZTV9S19567C13__9S19567C19__8S19567C2[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C19__8S19567C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C19__8S19567C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19567C2[];
extern  VTBL_ENTRY _ZTV8S19567C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C2[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C19D0Ev,_ZThn1732_N9S19567C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C19D1Ev,_ZThn1732_N9S19567C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C20D0Ev,_ZThn1732_N9S19567C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C20D1Ev,_ZThn1732_N9S19567C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19567C9D0Ev,_ZThn380_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19567C9D1Ev,_ZThn380_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19567C9D0Ev,_ZThn288_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19567C9D1Ev,_ZThn288_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19567C11D0Ev,_ZThn348_N9S19567C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19567C11D1Ev,_ZThn348_N9S19567C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19567C8D0Ev,_ZThn1928_N8S19567C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19567C8D0Ev,_ZThn1648_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19567C8D1Ev,_ZThn1928_N8S19567C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19567C8D1Ev,_ZThn1648_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19567C8D0Ev,_ZThn1556_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19567C8D1Ev,_ZThn1556_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19567C8D0Ev,_ZThn1268_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19567C8D1Ev,_ZThn1268_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19567C14D0Ev,_ZThn1928_N9S19567C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19567C14D1Ev,_ZThn1928_N9S19567C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19567C4D0Ev,_ZThn44_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19567C4D1Ev,_ZThn44_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19567C3D0Ev,_ZThn3252_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19567C3D0Ev,_ZThn2428_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19567C3D1Ev,_ZThn3252_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19567C3D1Ev,_ZThn2428_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C3D0Ev,_ZTv0_n32_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19567C3D0Ev,_ZThn2140_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C3D1Ev,_ZTv0_n32_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19567C3D1Ev,_ZThn2140_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C3D0Ev,_ZTv0_n40_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19567C3D0Ev,_ZThn872_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C3D1Ev,_ZTv0_n40_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19567C3D1Ev,_ZThn872_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C3D0Ev,_ZTv0_n12_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19567C3D0Ev,_ZThn840_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C3D1Ev,_ZTv0_n12_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19567C3D1Ev,_ZThn840_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19567C3D0Ev,_ZThn2924_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19567C3D0Ev,_ZThn2800_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19567C3D0Ev,_ZThn2520_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19567C3D0Ev,_ZThn796_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19567C3D1Ev,_ZThn2924_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19567C3D1Ev,_ZThn2800_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19567C3D1Ev,_ZThn2520_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19567C3D1Ev,_ZThn796_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19567C2D0Ev,_ZTv0_n28_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S19567C2D0Ev,_ZThn3284_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19567C2D1Ev,_ZTv0_n28_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S19567C2D1Ev,_ZThn3284_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C2D0Ev,_ZTv0_n24_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19567C2D0Ev,_ZThn3252_N8S19567C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19567C2D0Ev,_ZThn2428_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C2D1Ev,_ZTv0_n24_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19567C2D1Ev,_ZThn3252_N8S19567C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19567C2D1Ev,_ZThn2428_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C2D0Ev,_ZTv0_n32_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19567C2D0Ev,_ZThn2140_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C2D1Ev,_ZTv0_n32_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19567C2D1Ev,_ZThn2140_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C2D0Ev,_ZTv0_n40_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19567C2D0Ev,_ZThn872_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C2D1Ev,_ZTv0_n40_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19567C2D1Ev,_ZThn872_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C2D0Ev,_ZTv0_n12_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19567C2D0Ev,_ZThn5016_N8S19567C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19567C2D0Ev,_ZThn840_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C2D1Ev,_ZTv0_n12_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19567C2D1Ev,_ZThn5016_N8S19567C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19567C2D1Ev,_ZThn840_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19567C2D0Ev,_ZThn2924_N8S19567C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19567C2D0Ev,_ZThn2800_N8S19567C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19567C2D0Ev,_ZThn2520_N8S19567C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19567C2D0Ev,_ZThn796_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19567C2D1Ev,_ZThn2924_N8S19567C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19567C2D1Ev,_ZThn2800_N8S19567C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19567C2D1Ev,_ZThn2520_N8S19567C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19567C2D1Ev,_ZThn796_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C2 = {  "S19567C2", // class name
  bases_S19567C2, 30,
  &(vtc_S19567C2[0]), // expected_vtbl_contents
  &(vtt_S19567C2[0]), // expected_vtt_contents
  ABISELECT(8592,5032), // object size
  NSPAIRA(_ZTI8S19567C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19567C2),153, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19567C2),100, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C25  : S19567C10 {
  int s19567c25f0;
  void *s19567c25f1;
  int s19567c25f2[2];
  int s19567c25f3[3];
  int s19567c25f4;
  long double s19567c25f5;
  short s19567c25f6;
  ::S19567C2 s19567c25f7;
  void *s19567c25f8;
  virtual void  v10(); // _ZN9S19567C253v10Ev
  virtual void  v11(); // _ZN9S19567C253v11Ev
  virtual void  v12(); // _ZN9S19567C253v12Ev
  ~S19567C25(); // tgen
  S19567C25(); // tgen
};
//SIG(-1 S19567C25) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ VBC3 VBC5{ vd m FC3 FC6{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} v1 v2 v3 Fi Fp Fi[6] FD Fs FC7{ BC8{ VBC4 VBC9{ VBC10{ VBC2 BC5 BC11{ VBC5 BC4 VBC12{ VBC3 VBC5 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC13{ VBC3 BC5 BC4 vd v5 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC14{ VBC13 vd v6 Fi Fp Fi:2 FD Fp} BC13 vd v7 Fi Fl Fi:6 FC15{ BC16{ VBC3 VBC5 Fc:1 Fp[3]} VBC17{ VBC3 BC5 BC16 vd v13 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC18{ BC19{ VBC5 BC16 VBC20{ VBC3 VBC5 BC16 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC17} VBC21{ VBC3 VBC16 vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} VBC17 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC22{ vd m FC21 FC20 Fp Fi Fp FL FD Fs Fp FL Fi} VBC23{ BC4 BC12 vd v8 v9 v10 Fi Fi:2 FD Fp[2]} VBC14 vd Fi FL FC15} VBC24{ BC25{ VBC26{ vd m FD} VBC13 BC27{ m Fp Fi[2] FU28{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC3 vd v11 Fc[7] Fp FD FC12 FL FL Fl Fi Fi FL[3] FD} vd v12 FC11 Fi:7 FC11 FC29{ vd m Fi[4] FL Fi FC16 Fi FD Fi Fi FL FL Fs}} v4 FL Fi Fc} Fp}


void  S19567C25 ::v10(){vfunc_called(this, "_ZN9S19567C253v10Ev");}
void  S19567C25 ::v11(){vfunc_called(this, "_ZN9S19567C253v11Ev");}
void  S19567C25 ::v12(){vfunc_called(this, "_ZN9S19567C253v12Ev");}
S19567C25 ::~S19567C25(){ note_dtor("S19567C25", this);} // tgen
S19567C25 ::S19567C25(){ note_ctor("S19567C25", this);} // tgen

static void Test_S19567C25()
{
  extern Class_Descriptor cd_S19567C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(560,1314)];
    init_test(&cd_S19567C25, buf);
    S19567C25 *dp, &lv = *(dp=new (buf) S19567C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8944,5252), "sizeof(S19567C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C25)");
    check_base_class_offset(lv, (S3572C5*)(S19567C10*), ABISELECT(8808,5176), "S19567C25");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*), ABISELECT(8808,5176), "S19567C25");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*), ABISELECT(8888,5220), "S19567C25");
    check_base_class_offset(lv, (S19567C4*)(S19567C10*), ABISELECT(8848,5200), "S19567C25");
    check_base_class_offset(lv, (S19567C10*), 0, "S19567C25");
    check_field_offset(lv, s19567c25f0, ABISELECT(128,92), "S19567C25.s19567c25f0");
    check_field_offset(lv, s19567c25f1, ABISELECT(136,96), "S19567C25.s19567c25f1");
    check_field_offset(lv, s19567c25f2, ABISELECT(144,100), "S19567C25.s19567c25f2");
    check_field_offset(lv, s19567c25f3, ABISELECT(152,108), "S19567C25.s19567c25f3");
    check_field_offset(lv, s19567c25f4, ABISELECT(164,120), "S19567C25.s19567c25f4");
    check_field_offset(lv, s19567c25f5, ABISELECT(176,124), "S19567C25.s19567c25f5");
    check_field_offset(lv, s19567c25f6, ABISELECT(192,136), "S19567C25.s19567c25f6");
    check_field_offset(lv, s19567c25f7, ABISELECT(208,140), "S19567C25.s19567c25f7");
    check_field_offset(lv, s19567c25f8, ABISELECT(8800,5172), "S19567C25.s19567c25f8");
    test_class_info(&lv, &cd_S19567C25);
    dp->~S19567C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C25(Test_S19567C25, "S19567C25", ABISELECT(8944,5252));

#else // __cplusplus

extern void _ZN9S19567C25C1Ev();
extern void _ZN9S19567C25D1Ev();
Name_Map name_map_S19567C25[] = {
  NSPAIR(_ZN9S19567C25C1Ev),
  NSPAIR(_ZN9S19567C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C10;
extern VTBL_ENTRY _ZTI9S19567C10[];
extern  VTBL_ENTRY _ZTV9S19567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C10[];
static Base_Class bases_S19567C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(8808,5176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(8888,5220), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19567C4,    ABISELECT(8848,5200), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19567C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19567C25[];
extern void _ZN9S19567C25D1Ev();
extern void _ZN9S19567C25D0Ev();
extern void _ZN9S19567C253v10Ev();
extern void _ZN9S19567C253v11Ev();
extern void _ZN9S19567C253v12Ev();
extern void ABISELECT(_ZTv0_n40_N9S19567C25D1Ev,_ZTv0_n20_N9S19567C25D1Ev)();
extern void ABISELECT(_ZThn8848_N9S19567C25D1Ev,_ZThn5200_N9S19567C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C25D0Ev,_ZTv0_n20_N9S19567C25D0Ev)();
extern void ABISELECT(_ZThn8848_N9S19567C25D0Ev,_ZThn5200_N9S19567C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C25D1Ev,_ZTv0_n12_N9S19567C25D1Ev)();
extern void ABISELECT(_ZThn8888_N9S19567C25D1Ev,_ZThn5220_N9S19567C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C25D0Ev,_ZTv0_n12_N9S19567C25D0Ev)();
extern void ABISELECT(_ZThn8888_N9S19567C25D0Ev,_ZThn5220_N9S19567C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C25[] = {
  ABISELECT(8888,5220),
  ABISELECT(8848,5200),
  ABISELECT(8808,5176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C25[0]),
  (VTBL_ENTRY)&_ZN9S19567C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C25D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C253v10Ev,
  (VTBL_ENTRY)&_ZN9S19567C253v11Ev,
  (VTBL_ENTRY)&_ZN9S19567C253v12Ev,
  ABISELECT(-8848,-5200),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-8848,-5200),
  (VTBL_ENTRY)&(_ZTI9S19567C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C25D1Ev,_ZTv0_n20_N9S19567C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C25D0Ev,_ZTv0_n20_N9S19567C25D0Ev),
  ABISELECT(-8888,-5220),
  ABISELECT(-8888,-5220),
  (VTBL_ENTRY)&(_ZTI9S19567C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C25D1Ev,_ZTv0_n12_N9S19567C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C25D0Ev,_ZTv0_n12_N9S19567C25D0Ev),
};
extern VTBL_ENTRY _ZTV9S19567C25[];
extern void _ZN9S19567C10D1Ev();
extern void _ZN9S19567C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C10__9S19567C25[] = {
  ABISELECT(8888,5220),
  ABISELECT(8848,5200),
  ABISELECT(8808,5176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&_ZN9S19567C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev)();
extern void ABISELECT(_ZThn8848_N9S19567C10D1Ev,_ZThn5200_N9S19567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev)();
extern void ABISELECT(_ZThn8848_N9S19567C10D0Ev,_ZThn5200_N9S19567C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C10__9S19567C25[] = {
  ABISELECT(-8848,-5200),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-8848,-5200),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev)();
extern void ABISELECT(_ZThn8888_N9S19567C10D1Ev,_ZThn5220_N9S19567C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev)();
extern void ABISELECT(_ZThn8888_N9S19567C10D0Ev,_ZThn5220_N9S19567C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C10__9S19567C25[] = {
  ABISELECT(-8888,-5220),
  ABISELECT(-8888,-5220),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev),
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C25[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19567C4D1Ev,_ZThn20_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19567C4D0Ev,_ZThn20_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C4__9S19567C25[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
static  VTT_ENTRY vtt_S19567C25[] = {
  {&(_ZTV9S19567C25[5]),  5,22},
  {&(_tg__ZTV9S19567C10__9S19567C25[5]),  5,7},
  {&(_tg__ZTV8S19567C4__9S19567C10__9S19567C25[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19567C10__9S19567C25[3]),  3,5},
  {&(_ZTV9S19567C25[15]),  15,22},
  {&(_ZTV9S19567C25[20]),  20,22},
  {&(_tg__ZTV8S19567C4__9S19567C25[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C4__9S19567C25[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19567C25[];
extern  VTBL_ENTRY _ZTV9S19567C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C25[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19567C4D0Ev,_ZThn20_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19567C4D1Ev,_ZThn20_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8888_N9S19567C10D0Ev,_ZThn5220_N9S19567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8888_N9S19567C10D1Ev,_ZThn5220_N9S19567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8848_N9S19567C10D0Ev,_ZThn5200_N9S19567C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8848_N9S19567C10D1Ev,_ZThn5200_N9S19567C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C25D0Ev,_ZTv0_n12_N9S19567C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8888_N9S19567C25D0Ev,_ZThn5220_N9S19567C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C25D1Ev,_ZTv0_n12_N9S19567C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8888_N9S19567C25D1Ev,_ZThn5220_N9S19567C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C25D0Ev,_ZTv0_n20_N9S19567C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8848_N9S19567C25D0Ev,_ZThn5200_N9S19567C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C25D1Ev,_ZTv0_n20_N9S19567C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8848_N9S19567C25D1Ev,_ZThn5200_N9S19567C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C25 = {  "S19567C25", // class name
  bases_S19567C25, 4,
  &(vtc_S19567C25[0]), // expected_vtbl_contents
  &(vtt_S19567C25[0]), // expected_vtt_contents
  ABISELECT(8944,5252), // object size
  NSPAIRA(_ZTI9S19567C25),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19567C25),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19567C25),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19567C1  : virtual S19567C2 {
  short s19567c1f0;
  long s19567c1f1;
  int s19567c1f2;
  int s19567c1f3;
  ::S19567C25 s19567c1f4;
  long double s19567c1f5;
  int s19567c1f6;
  ~S19567C1(); // tgen
  S19567C1(); // tgen
};
//SIG(1 S19567C1) C1{ VBC2{ BC3{ VBC4{ VBC5{ m Fp Fs Fi Fp Fl[2]} VBC6{ vd m FC5 FC7{}} Fc:1 Fp[3]} VBC8{ VBC9{ VBC10{ VBC5 VBC4 vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} BC6 BC11{ VBC6 BC4 VBC12{ VBC5 VBC6 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd FC13{ VBC5 BC6 BC4 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC14{ VBC13 vd v2 Fi Fp Fi:2 FD Fp} BC13 vd v3 Fi Fl Fi:6 FC15{ BC16{ VBC5 VBC6 Fc:1 Fp[3]} VBC17{ VBC5 BC6 BC16 vd v13 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC18{ BC19{ VBC6 BC16 VBC20{ VBC5 VBC6 BC16 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd FC17} VBC21{ VBC5 VBC16 vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} VBC17 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} BC22{ vd m FC21 FC20 Fp Fi Fp FL FD Fs Fp FL Fi} VBC23{ BC4 BC12 vd v4 v5 v6 Fi Fi:2 FD Fp[2]} VBC14 vd Fi FL FC15} VBC24{ BC25{ VBC26{ vd m FD} VBC13 BC27{ m Fp Fi[2] FU28{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} BC5 vd v7 Fc[7] Fp FD FC12 FL FL Fl Fi Fi FL[3] FD} vd v8 FC11 Fi:7 FC11 FC29{ vd m Fi[4] FL Fi FC16 Fi FD Fi Fi FL FL Fs}} v9 FL Fi Fc} Fs Fl Fi Fi FC30{ BC10 v10 v11 v12 Fi Fp Fi[2] Fi[3] Fi FD Fs FC2 Fp} FD Fi}


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

static void Test_S19567C1()
{
  extern Class_Descriptor cd_S19567C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1101,2581)];
    init_test(&cd_S19567C1, buf);
    S19567C1 *dp, &lv = *(dp=new (buf) S19567C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(17600,10320), "sizeof(S19567C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19567C1)");
    /*is_ambiguous_... S19567C1::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*), ABISELECT(10376,6104), "S19567C1");
    check_base_class_offset(lv, (S3572C5*)(S19567C10*), ABISELECT(10376,6104), "S19567C1");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(10376,6104), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C12*), ABISELECT(10376,6104), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C12*), ABISELECT(10376,6104), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C13*), ABISELECT(10376,6104), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C13*), ABISELECT(10376,6104), "S19567C1");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C13*)(S19567C8*), ABISELECT(10376,6104), "S19567C1");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C13*)(S19567C8*), ABISELECT(10376,6104), "S19567C1");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C18*), ABISELECT(10376,6104), "S19567C1");
    check_base_class_offset(lv, (S3572C5*)(S19567C12*)(S19567C18*), ABISELECT(10376,6104), "S19567C1");
    check_base_class_offset(lv, (S3572C5*)(S19567C4*)(S19567C12*)(S19567C18*), ABISELECT(10376,6104), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*), ABISELECT(10416,6128), "S19567C1");
    check_base_class_offset(lv, (S3572C4*)(S19567C11*)(S19567C9*), ABISELECT(10416,6128), "S19567C1");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(10416,6128), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C12*), ABISELECT(10416,6128), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C12 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C12*), ABISELECT(10416,6128), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C13*), ABISELECT(10416,6128), "S19567C1");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C13*)(S19567C8*), ABISELECT(10416,6128), "S19567C1");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C18*), ABISELECT(10416,6128), "S19567C1");
    check_base_class_offset(lv, (S3572C4*)(S19567C12*)(S19567C18*), ABISELECT(10416,6128), "S19567C1");
    check_base_class_offset(lv, (S3572C4*)(S19567C4*)(S19567C12*)(S19567C18*), ABISELECT(10416,6128), "S19567C1");
    /*is_ambiguous_... S19567C3::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C3*)(S19567C2*), ABISELECT(10336,6084), "S19567C1");
    check_base_class_offset(lv, (S19567C4*)(S19567C10*), ABISELECT(10336,6084), "S19567C1");
    check_base_class_offset(lv, (S19567C10*)(S19567C9*), ABISELECT(13192,7716), "S19567C1");
    /*is_ambiguous_... S19567C9::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C9*), ABISELECT(12672,7428), "S19567C1");
    /*is_ambiguous_... S19567C11::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C11*)(S19567C9*), ABISELECT(12736,7460), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C12 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C12*), ABISELECT(13320,7808), "S19567C1");
    check_base_class_offset(lv, (S19567C12*)(S19567C11*)(S19567C9*), ABISELECT(13320,7808), "S19567C1");
    check_base_class_offset(lv, (S19567C11*)(S19567C9*), ABISELECT(12736,7460), "S19567C1");
    check_base_class_offset(lv, (S19567C9*)(S19567C8*), ABISELECT(12672,7428), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C13*), ABISELECT(13792,8088), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C13*), ABISELECT(13848,8120), "S19567C1");
    check_base_class_offset(lv, (S19567C13*)(S19567C14*)(S19567C8*), ABISELECT(13792,8088), "S19567C1");
    /*is_ambiguous_... S19567C1::S19567C14 */ AMB_check_base_class_offset(lv, (S19567C13*)(S19567C14*), ABISELECT(13792,8088), "S19567C1");
    check_base_class_offset(lv, (S19567C13*)(S19567C20*)(S19567C19*), ABISELECT(13792,8088), "S19567C1");
    check_base_class_offset(lv, (S19567C14*)(S19567C8*), ABISELECT(10480,6160), "S19567C1");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S3572C4*)(S19567C13*)(S19567C8*), ABISELECT(10544,6192), "S19567C1");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C13*)(S19567C8*), ABISELECT(10600,6224), "S19567C1");
    /*is_ambiguous_... S19567C8::S19567C13 */ AMB_check_base_class_offset(lv, (S19567C13*)(S19567C8*), ABISELECT(10544,6192), "S19567C1");
    check_base_class_offset(lv, (S19567C8*)(S19567C3*)(S19567C2*), ABISELECT(10480,6160), "S19567C1");
    check_base_class_offset(lv, (S3572C17*)(S19567C3*)(S19567C2*), ABISELECT(9008,5288), "S19567C1");
    /*is_ambiguous_... S19567C18::S19567C4 */ AMB_check_base_class_offset(lv, (S19567C4*)(S19567C18*), ABISELECT(14016,8212), "S19567C1");
    check_base_class_offset(lv, (S19567C4*)(S19567C12*)(S19567C18*), ABISELECT(14056,8232), "S19567C1");
    check_base_class_offset(lv, (S19567C12*)(S19567C18*), ABISELECT(14056,8232), "S19567C1");
    check_base_class_offset(lv, (S19567C18*)(S19567C3*)(S19567C2*), ABISELECT(14016,8212), "S19567C1");
    /*is_ambiguous_... S19567C3::S19567C14 */ AMB_check_base_class_offset(lv, (S19567C14*)(S19567C3*)(S19567C2*), ABISELECT(14560,8540), "S19567C1");
    check_base_class_offset(lv, (S19567C3*)(S19567C2*), ABISELECT(9008,5288), "S19567C1");
    check_base_class_offset(lv, (S3572C21*)(S19567C20*)(S19567C19*), ABISELECT(17568,10304), "S19567C1");
    check_base_class_offset(lv, (S3572C22*)(S19567C20*)(S19567C19*), ABISELECT(14640,8576), "S19567C1");
    /*is_ambiguous_... S19567C20::S3572C5 */ AMB_check_base_class_offset(lv, (S3572C5*)(S19567C20*)(S19567C19*), ABISELECT(14736,8628), "S19567C1");
    check_base_class_offset(lv, (S19567C20*)(S19567C19*), ABISELECT(14624,8572), "S19567C1");
    check_base_class_offset(lv, (S19567C19*)(S19567C2*), ABISELECT(14624,8572), "S19567C1");
    check_base_class_offset(lv, (S19567C2*), ABISELECT(9008,5288), "S19567C1");
    check_field_offset(lv, s19567c1f0, ABISELECT(8,4), "S19567C1.s19567c1f0");
    check_field_offset(lv, s19567c1f1, ABISELECT(16,8), "S19567C1.s19567c1f1");
    check_field_offset(lv, s19567c1f2, ABISELECT(24,12), "S19567C1.s19567c1f2");
    check_field_offset(lv, s19567c1f3, ABISELECT(28,16), "S19567C1.s19567c1f3");
    check_field_offset(lv, s19567c1f4, ABISELECT(32,20), "S19567C1.s19567c1f4");
    check_field_offset(lv, s19567c1f5, ABISELECT(8976,5272), "S19567C1.s19567c1f5");
    check_field_offset(lv, s19567c1f6, ABISELECT(8992,5284), "S19567C1.s19567c1f6");
    test_class_info(&lv, &cd_S19567C1);
    dp->~S19567C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19567C1(Test_S19567C1, "S19567C1", ABISELECT(17600,10320));

#else // __cplusplus

extern void _ZN8S19567C1C1Ev();
extern void _ZN8S19567C1D1Ev();
Name_Map name_map_S19567C1[] = {
  NSPAIR(_ZN8S19567C1C1Ev),
  NSPAIR(_ZN8S19567C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C10;
extern VTBL_ENTRY _ZTI9S19567C10[];
extern  VTBL_ENTRY _ZTV9S19567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C10[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C12;
extern VTBL_ENTRY _ZTI9S19567C12[];
extern  VTBL_ENTRY _ZTV9S19567C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C12[];
extern Class_Descriptor cd_S19567C11;
extern VTBL_ENTRY _ZTI9S19567C11[];
extern  VTBL_ENTRY _ZTV9S19567C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C11[];
extern Class_Descriptor cd_S19567C9;
extern VTBL_ENTRY _ZTI8S19567C9[];
extern  VTBL_ENTRY _ZTV8S19567C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C13;
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
extern Class_Descriptor cd_S19567C14;
extern VTBL_ENTRY _ZTI9S19567C14[];
extern  VTBL_ENTRY _ZTV9S19567C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C14[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C13;
extern VTBL_ENTRY _ZTI9S19567C13[];
extern  VTBL_ENTRY _ZTV9S19567C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C13[];
extern Class_Descriptor cd_S19567C8;
extern VTBL_ENTRY _ZTI8S19567C8[];
extern  VTBL_ENTRY _ZTV8S19567C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C8[];
extern Class_Descriptor cd_S3572C17;
extern VTBL_ENTRY _ZTI8S3572C17[];
extern  VTBL_ENTRY _ZTV8S3572C17[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C4;
extern VTBL_ENTRY _ZTI8S19567C4[];
extern  VTBL_ENTRY _ZTV8S19567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C4[];
extern Class_Descriptor cd_S19567C12;
extern VTBL_ENTRY _ZTI9S19567C12[];
extern  VTBL_ENTRY _ZTV9S19567C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C12[];
extern Class_Descriptor cd_S19567C18;
extern VTBL_ENTRY _ZTI9S19567C18[];
extern  VTBL_ENTRY _ZTV9S19567C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C18[];
extern Class_Descriptor cd_S19567C14;
extern VTBL_ENTRY _ZTI9S19567C14[];
extern  VTBL_ENTRY _ZTV9S19567C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C14[];
extern Class_Descriptor cd_S19567C3;
extern VTBL_ENTRY _ZTI8S19567C3[];
extern  VTBL_ENTRY _ZTV8S19567C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C3[];
extern Class_Descriptor cd_S3572C21;
extern VTBL_ENTRY _ZTI8S3572C21[];
extern  VTBL_ENTRY _ZTV8S3572C21[];
extern Class_Descriptor cd_S3572C22;
extern VTBL_ENTRY _ZTI8S3572C22[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S19567C20;
extern VTBL_ENTRY _ZTI9S19567C20[];
extern  VTBL_ENTRY _ZTV9S19567C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C20[];
extern Class_Descriptor cd_S19567C19;
extern VTBL_ENTRY _ZTI9S19567C19[];
extern  VTBL_ENTRY _ZTV9S19567C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19567C19[];
extern Class_Descriptor cd_S19567C2;
extern VTBL_ENTRY _ZTI8S19567C2[];
extern  VTBL_ENTRY _ZTV8S19567C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C2[];
static Base_Class bases_S19567C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(10376,6104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(10416,6128), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19567C4,    ABISELECT(10336,6084), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19567C10,    ABISELECT(13192,7716), //bcp->offset
    95, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(12672,7428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(12736,7460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(13320,7808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19567C12,    ABISELECT(13320,7808), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19567C11,    ABISELECT(12736,7460), //bcp->offset
    88, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19567C9,    ABISELECT(12672,7428), //bcp->offset
    78, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(13792,8088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(13848,8120), //bcp->offset
    119, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19567C13,    ABISELECT(13792,8088), //bcp->offset
    110, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19567C14,    ABISELECT(10480,6160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(10544,6192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(10600,6224), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19567C13,    ABISELECT(10544,6192), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19567C8,    ABISELECT(10480,6160), //bcp->offset
    48, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3572C17,    ABISELECT(9008,5288), //bcp->offset
    -1, //bcp->virtual_function_table_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
    24, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(14016,8212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19567C4,    ABISELECT(14056,8232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19567C12,    ABISELECT(14056,8232), //bcp->offset
    138, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19567C18,    ABISELECT(14016,8212), //bcp->offset
    125, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19567C14,    ABISELECT(14560,8540), //bcp->offset
    144, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19567C3,    ABISELECT(9008,5288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3572C21,    ABISELECT(17568,10304), //bcp->offset
    167, //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
    23, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S3572C22,    ABISELECT(14640,8576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3572C5,    ABISELECT(14736,8628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19567C20,    ABISELECT(14624,8572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19567C19,    ABISELECT(14624,8572), //bcp->offset
    154, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19567C2,    ABISELECT(9008,5288), //bcp->offset
    17, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19567C1[];
extern void _ZN8S19567C1D1Ev();
extern void _ZN8S19567C1D0Ev();
extern void ABISELECT(_ZTv0_n120_N8S19567C1D1Ev,_ZTv0_n60_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn9008_N8S19567C1D1Ev,_ZThn5288_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19567C1D0Ev,_ZTv0_n60_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn9008_N8S19567C1D0Ev,_ZThn5288_N8S19567C1D0Ev)() __attribute__((weak));
extern void _ZN8S19567C22v9Ev();
extern void ABISELECT(_ZTv0_n40_N8S19567C1D1Ev,_ZTv0_n20_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn10336_N8S19567C1D1Ev,_ZThn6084_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C1D0Ev,_ZTv0_n20_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn10336_N8S19567C1D0Ev,_ZThn6084_N8S19567C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C1D1Ev,_ZTv0_n12_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn10416_N8S19567C1D1Ev,_ZThn6128_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C1D0Ev,_ZTv0_n12_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn10416_N8S19567C1D0Ev,_ZThn6128_N8S19567C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19567C1D1Ev,_ZTv0_n40_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn10480_N8S19567C1D1Ev,_ZThn6160_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19567C1D0Ev,_ZTv0_n40_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn10480_N8S19567C1D0Ev,_ZThn6160_N8S19567C1D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
extern void _ZN8S19567C82v3Ev();
extern void ABISELECT(_ZTvn64_n80_N8S19567C1D1Ev,_ZTvn32_n40_N8S19567C1D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19567C1D0Ev,_ZTvn32_n40_N8S19567C1D0Ev)();
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZTvn120_n80_N8S19567C1D1Ev,_ZTvn64_n40_N8S19567C1D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19567C1D0Ev,_ZTvn64_n40_N8S19567C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19567C1D1Ev,_ZTv0_n32_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn12672_N8S19567C1D1Ev,_ZThn7428_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19567C1D0Ev,_ZTv0_n32_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn12672_N8S19567C1D0Ev,_ZThn7428_N8S19567C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S19567C1D1Ev,_ZTvn32_n32_N8S19567C1D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19567C1D0Ev,_ZTvn32_n32_N8S19567C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19567C1D1Ev,_ZTv0_n24_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn13192_N8S19567C1D1Ev,_ZThn7716_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C1D0Ev,_ZTv0_n24_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn13192_N8S19567C1D0Ev,_ZThn7716_N8S19567C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C1D1Ev,_ZTv0_n20_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn13320_N8S19567C1D1Ev,_ZThn7808_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C1D0Ev,_ZTv0_n20_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn13320_N8S19567C1D0Ev,_ZThn7808_N8S19567C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C1D1Ev,_ZTv0_n20_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn13792_N8S19567C1D1Ev,_ZThn8088_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C1D0Ev,_ZTv0_n20_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn13792_N8S19567C1D0Ev,_ZThn8088_N8S19567C1D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S19567C1D1Ev,_ZTvn32_n20_N8S19567C1D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19567C1D0Ev,_ZTvn32_n20_N8S19567C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19567C1D1Ev,_ZTv0_n20_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn14016_N8S19567C1D1Ev,_ZThn8212_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C1D0Ev,_ZTv0_n20_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn14016_N8S19567C1D0Ev,_ZThn8212_N8S19567C1D0Ev)() __attribute__((weak));
extern void _ZN9S19567C182v4Ev();
extern void _ZN9S19567C182v5Ev();
extern void _ZN9S19567C182v6Ev();
extern void ABISELECT(_ZTvn40_n40_N8S19567C1D1Ev,_ZTvn20_n20_N8S19567C1D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19567C1D0Ev,_ZTvn20_n20_N8S19567C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19567C1D1Ev,_ZTv0_n24_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn14560_N8S19567C1D1Ev,_ZThn8540_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C1D0Ev,_ZTv0_n24_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn14560_N8S19567C1D0Ev,_ZThn8540_N8S19567C1D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S19567C1D1Ev,_ZTv0_n28_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn14624_N8S19567C1D1Ev,_ZThn8572_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19567C1D0Ev,_ZTv0_n28_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn14624_N8S19567C1D0Ev,_ZThn8572_N8S19567C1D0Ev)() __attribute__((weak));
extern void _ZN9S19567C202v7Ev();
extern void _ZN9S19567C192v8Ev();
extern void ABISELECT(_ZTv0_n24_N8S19567C1D1Ev,_ZTv0_n12_N8S19567C1D1Ev)();
extern void ABISELECT(_ZThn17568_N8S19567C1D1Ev,_ZThn10304_N8S19567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C1D0Ev,_ZTv0_n12_N8S19567C1D0Ev)();
extern void ABISELECT(_ZThn17568_N8S19567C1D0Ev,_ZThn10304_N8S19567C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19567C1[] = {
  ABISELECT(17568,10304),
  ABISELECT(14624,8572),
  ABISELECT(14560,8540),
  ABISELECT(14016,8212),
  ABISELECT(13792,8088),
  ABISELECT(13320,7808),
  ABISELECT(13192,7716),
  ABISELECT(12672,7428),
  ABISELECT(10480,6160),
  ABISELECT(10416,6128),
  ABISELECT(10376,6104),
  ABISELECT(10336,6084),
  ABISELECT(9008,5288),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&_ZN8S19567C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C1D0Ev,
  0,
  ABISELECT(-9008,-5288),
  ABISELECT(8560,5016),
  ABISELECT(5616,3284),
  ABISELECT(5552,3252),
  ABISELECT(5008,2924),
  ABISELECT(4784,2800),
  ABISELECT(4312,2520),
  ABISELECT(4184,2428),
  ABISELECT(3664,2140),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  ABISELECT(-9008,-5288),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19567C1D1Ev,_ZTv0_n60_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19567C1D0Ev,_ZTv0_n60_N8S19567C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19567C22v9Ev,
  ABISELECT(-10336,-6084),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-10336,-6084),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C1D1Ev,_ZTv0_n20_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C1D0Ev,_ZTv0_n20_N8S19567C1D0Ev),
  ABISELECT(-10416,-6128),
  ABISELECT(-10416,-6128),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C1D1Ev,_ZTv0_n12_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C1D0Ev,_ZTv0_n12_N8S19567C1D0Ev),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-10480,-6160),
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  ABISELECT(-10480,-6160),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C1D1Ev,_ZTv0_n40_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C1D0Ev,_ZTv0_n40_N8S19567C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19567C82v3Ev,
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-10544,-6192),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C1D1Ev,_ZTvn32_n40_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C1D0Ev,_ZTvn32_n40_N8S19567C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-10600,-6224),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C1D1Ev,_ZTvn64_n40_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C1D0Ev,_ZTvn64_n40_N8S19567C1D0Ev),
  ABISELECT(-12672,-7428),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-12672,-7428),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C1D1Ev,_ZTv0_n32_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C1D0Ev,_ZTv0_n32_N8S19567C1D0Ev),
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-12736,-7460),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C1D1Ev,_ZTvn32_n32_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C1D0Ev,_ZTvn32_n32_N8S19567C1D0Ev),
  ABISELECT(-13192,-7716),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-13192,-7716),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C1D1Ev,_ZTv0_n24_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C1D0Ev,_ZTv0_n24_N8S19567C1D0Ev),
  ABISELECT(-13320,-7808),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-13320,-7808),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C1D1Ev,_ZTv0_n20_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C1D0Ev,_ZTv0_n20_N8S19567C1D0Ev),
  0,
  ABISELECT(-13792,-8088),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-13792,-8088),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C1D1Ev,_ZTv0_n20_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C1D0Ev,_ZTv0_n20_N8S19567C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-13848,-8120),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C1D1Ev,_ZTvn32_n20_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C1D0Ev,_ZTvn32_n20_N8S19567C1D0Ev),
  0,
  0,
  0,
  ABISELECT(-14016,-8212),
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  ABISELECT(-14016,-8212),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C1D1Ev,_ZTv0_n20_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C1D0Ev,_ZTv0_n20_N8S19567C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v6Ev,
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-14056,-8232),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C1D1Ev,_ZTvn20_n20_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C1D0Ev,_ZTvn20_n20_N8S19567C1D0Ev),
  0,
  ABISELECT(-14560,-8540),
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  ABISELECT(-14560,-8540),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C1D1Ev,_ZTv0_n24_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C1D0Ev,_ZTv0_n24_N8S19567C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  0,
  0,
  ABISELECT(-14624,-8572),
  ABISELECT(-4208,-2444),
  ABISELECT(-4248,-2468),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  ABISELECT(-14624,-8572),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19567C1D1Ev,_ZTv0_n28_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19567C1D0Ev,_ZTv0_n28_N8S19567C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19567C192v8Ev,
  ABISELECT(-17568,-10304),
  ABISELECT(-17568,-10304),
  (VTBL_ENTRY)&(_ZTI8S19567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C1D1Ev,_ZTv0_n12_N8S19567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C1D0Ev,_ZTv0_n12_N8S19567C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19567C1[];
extern void _ZN8S19567C2D1Ev();
extern void _ZN8S19567C2D0Ev();
extern void _ZN8S19567C22v9Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C2__8S19567C1[] = {
  ABISELECT(8560,5016),
  ABISELECT(5616,3284),
  ABISELECT(5552,3252),
  ABISELECT(5008,2924),
  ABISELECT(4784,2800),
  ABISELECT(4312,2520),
  ABISELECT(4184,2428),
  ABISELECT(3664,2140),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&_ZN8S19567C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19567C22v9Ev,
};
extern void _ZN8S19567C3D1Ev();
extern void _ZN8S19567C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(5552,3252),
  ABISELECT(5008,2924),
  ABISELECT(4784,2800),
  ABISELECT(4312,2520),
  ABISELECT(4184,2428),
  ABISELECT(3664,2140),
  ABISELECT(1472,872),
  ABISELECT(1408,840),
  ABISELECT(1368,816),
  ABISELECT(1328,796),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&_ZN8S19567C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C3D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19567C3D1Ev,_ZThn796_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19567C3D0Ev,_ZThn796_N8S19567C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19567C3D1Ev,_ZTv0_n12_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn1408_N8S19567C3D1Ev,_ZThn840_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C3D0Ev,_ZTv0_n12_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn1408_N8S19567C3D0Ev,_ZThn840_N8S19567C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C3D1Ev,_ZTv0_n12_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C3D0Ev,_ZTv0_n12_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S19567C3D1Ev,_ZTv0_n40_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn1472_N8S19567C3D1Ev,_ZThn872_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19567C3D0Ev,_ZTv0_n40_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn1472_N8S19567C3D0Ev,_ZThn872_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
extern void _ZN8S19567C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C8__8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C3D1Ev,_ZTv0_n40_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C3D0Ev,_ZTv0_n40_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19567C82v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19567C3D1Ev,_ZTv0_n32_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn3664_N8S19567C3D1Ev,_ZThn2140_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19567C3D0Ev,_ZTv0_n32_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn3664_N8S19567C3D0Ev,_ZThn2140_N8S19567C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C9__8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(-3664,-2140),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-3664,-2140),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C3D1Ev,_ZTv0_n32_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C3D0Ev,_ZTv0_n32_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn4184_N8S19567C3D1Ev,_ZThn2428_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn4184_N8S19567C3D0Ev,_ZThn2428_N8S19567C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(-4184,-2428),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-4184,-2428),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19567C3D1Ev,_ZTvn32_n32_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19567C3D0Ev,_ZTvn32_n32_N8S19567C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C118S19567C9__8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-3728,-2172),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C3D1Ev,_ZTvn32_n32_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C3D0Ev,_ZTvn32_n32_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn4312_N8S19567C3D1Ev,_ZThn2520_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn4312_N8S19567C3D0Ev,_ZThn2520_N8S19567C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(-4312,-2520),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-4312,-2520),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn4784_N8S19567C3D1Ev,_ZThn2800_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn4784_N8S19567C3D0Ev,_ZThn2800_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__8S19567C38S19567C2__8S19567C1[] = {
  0,
  ABISELECT(-4784,-2800),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-4784,-2800),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19567C3D1Ev,_ZTvn32_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19567C3D0Ev,_ZTvn32_n20_N8S19567C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A3__8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-4840,-2832),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C3D1Ev,_ZTvn32_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C3D0Ev,_ZTvn32_n20_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S19567C3D1Ev,_ZTvn32_n40_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19567C3D0Ev,_ZTvn32_n40_N8S19567C3D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C138S19567C8__A1__8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C3D1Ev,_ZTvn32_n40_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C3D0Ev,_ZTvn32_n40_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S19567C3D1Ev,_ZTvn64_n40_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19567C3D0Ev,_ZTvn64_n40_N8S19567C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C3D1Ev,_ZTvn64_n40_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C3D0Ev,_ZTvn64_n40_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn5008_N8S19567C3D1Ev,_ZThn2924_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn5008_N8S19567C3D0Ev,_ZThn2924_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C182v4Ev();
extern void _ZN9S19567C182v5Ev();
extern void _ZN9S19567C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C18__8S19567C38S19567C2__8S19567C1[] = {
  0,
  0,
  0,
  ABISELECT(-5008,-2924),
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  ABISELECT(-5008,-2924),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S19567C3D1Ev,_ZTvn20_n20_N8S19567C3D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19567C3D0Ev,_ZTvn20_n20_N8S19567C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C129S19567C18__A1__8S19567C38S19567C2__8S19567C1[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-5048,-2944),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C3D1Ev,_ZTvn20_n20_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C3D0Ev,_ZTvn20_n20_N8S19567C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev)();
extern void ABISELECT(_ZThn5552_N8S19567C3D1Ev,_ZThn3252_N8S19567C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev)();
extern void ABISELECT(_ZThn5552_N8S19567C3D0Ev,_ZThn3252_N8S19567C3D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C14__A1__8S19567C38S19567C2__8S19567C1[] = {
  0,
  ABISELECT(-5552,-3252),
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3252),
  (VTBL_ENTRY)&(_ZTI8S19567C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19567C2D1Ev,_ZThn796_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19567C2D0Ev,_ZThn796_N8S19567C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C2__8S19567C1[] = {
  ABISELECT(-1328,-796),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-1328,-796),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19567C2D1Ev,_ZTv0_n12_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn1408_N8S19567C2D1Ev,_ZThn840_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C2D0Ev,_ZTv0_n12_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn1408_N8S19567C2D0Ev,_ZThn840_N8S19567C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C2__8S19567C1[] = {
  ABISELECT(-1408,-840),
  ABISELECT(-1408,-840),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C2D1Ev,_ZTv0_n12_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C2D0Ev,_ZTv0_n12_N8S19567C2D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S19567C2D1Ev,_ZTv0_n40_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn1472_N8S19567C2D1Ev,_ZThn872_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19567C2D0Ev,_ZTv0_n40_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn1472_N8S19567C2D0Ev,_ZThn872_N8S19567C2D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
extern void _ZN8S19567C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C8__8S19567C2__8S19567C1[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-1472,-872),
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  ABISELECT(-1472,-872),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C2D1Ev,_ZTv0_n40_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19567C2D0Ev,_ZTv0_n40_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19567C82v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S19567C2D1Ev,_ZTv0_n32_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn3664_N8S19567C2D1Ev,_ZThn2140_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19567C2D0Ev,_ZTv0_n32_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn3664_N8S19567C2D0Ev,_ZThn2140_N8S19567C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C9__8S19567C2__8S19567C1[] = {
  ABISELECT(-3664,-2140),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-3664,-2140),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C2D1Ev,_ZTv0_n32_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C2D0Ev,_ZTv0_n32_N8S19567C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C2D1Ev,_ZTv0_n24_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn4184_N8S19567C2D1Ev,_ZThn2428_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C2D0Ev,_ZTv0_n24_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn4184_N8S19567C2D0Ev,_ZThn2428_N8S19567C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C2__8S19567C1[] = {
  ABISELECT(-4184,-2428),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-4184,-2428),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C2D1Ev,_ZTv0_n24_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C2D0Ev,_ZTv0_n24_N8S19567C2D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19567C2D1Ev,_ZTvn32_n32_N8S19567C2D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19567C2D0Ev,_ZTvn32_n32_N8S19567C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C118S19567C9__8S19567C2__8S19567C1[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-3728,-2172),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C2D1Ev,_ZTvn32_n32_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C2D0Ev,_ZTvn32_n32_N8S19567C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn4312_N8S19567C2D1Ev,_ZThn2520_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn4312_N8S19567C2D0Ev,_ZThn2520_N8S19567C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C2__8S19567C1[] = {
  ABISELECT(-4312,-2520),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-4312,-2520),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn4784_N8S19567C2D1Ev,_ZThn2800_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn4784_N8S19567C2D0Ev,_ZThn2800_N8S19567C2D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__8S19567C2__8S19567C1[] = {
  0,
  ABISELECT(-4784,-2800),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-4784,-2800),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19567C2D1Ev,_ZTvn32_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19567C2D0Ev,_ZTvn32_n20_N8S19567C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A3__8S19567C2__8S19567C1[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-4840,-2832),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C2D1Ev,_ZTvn32_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C2D0Ev,_ZTvn32_n20_N8S19567C2D0Ev),
};
extern void ABISELECT(_ZTvn64_n80_N8S19567C2D1Ev,_ZTvn32_n40_N8S19567C2D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S19567C2D0Ev,_ZTvn32_n40_N8S19567C2D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C138S19567C8__A1__8S19567C2__8S19567C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-1536,-904),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C2D1Ev,_ZTvn32_n40_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S19567C2D0Ev,_ZTvn32_n40_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn120_n80_N8S19567C2D1Ev,_ZTvn64_n40_N8S19567C2D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S19567C2D0Ev,_ZTvn64_n40_N8S19567C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C2__8S19567C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-1592,-936),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C2D1Ev,_ZTvn64_n40_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S19567C2D0Ev,_ZTvn64_n40_N8S19567C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn5008_N8S19567C2D1Ev,_ZThn2924_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn5008_N8S19567C2D0Ev,_ZThn2924_N8S19567C2D0Ev)() __attribute__((weak));
extern void _ZN9S19567C182v4Ev();
extern void _ZN9S19567C182v5Ev();
extern void _ZN9S19567C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C18__8S19567C2__8S19567C1[] = {
  0,
  0,
  0,
  ABISELECT(-5008,-2924),
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  ABISELECT(-5008,-2924),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v6Ev,
};
extern void ABISELECT(_ZTvn40_n40_N8S19567C2D1Ev,_ZTvn20_n20_N8S19567C2D1Ev)();
extern void ABISELECT(_ZTvn40_n40_N8S19567C2D0Ev,_ZTvn20_n20_N8S19567C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C129S19567C18__A1__8S19567C2__8S19567C1[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-5048,-2944),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C2D1Ev,_ZTvn20_n20_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n40_N8S19567C2D0Ev,_ZTvn20_n20_N8S19567C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C2D1Ev,_ZTv0_n24_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn5552_N8S19567C2D1Ev,_ZThn3252_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C2D0Ev,_ZTv0_n24_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn5552_N8S19567C2D0Ev,_ZThn3252_N8S19567C2D0Ev)() __attribute__((weak));
extern void _ZN9S19567C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C14__A1__8S19567C2__8S19567C1[] = {
  0,
  ABISELECT(-5552,-3252),
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  ABISELECT(-5552,-3252),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C2D1Ev,_ZTv0_n24_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C2D0Ev,_ZTv0_n24_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S19567C2D1Ev,_ZTv0_n28_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn5616_N8S19567C2D1Ev,_ZThn3284_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19567C2D0Ev,_ZTv0_n28_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn5616_N8S19567C2D0Ev,_ZThn3284_N8S19567C2D0Ev)() __attribute__((weak));
extern void _ZN9S19567C202v7Ev();
extern void _ZN9S19567C192v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C19__8S19567C2__8S19567C1[] = {
  0,
  0,
  ABISELECT(-5616,-3284),
  ABISELECT(-4208,-2444),
  ABISELECT(-4248,-2468),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  ABISELECT(-5616,-3284),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19567C2D1Ev,_ZTv0_n28_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19567C2D0Ev,_ZTv0_n28_N8S19567C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19567C192v8Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C2D1Ev,_ZTv0_n12_N8S19567C2D1Ev)();
extern void ABISELECT(_ZThn8560_N8S19567C2D1Ev,_ZThn5016_N8S19567C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C2D0Ev,_ZTv0_n12_N8S19567C2D0Ev)();
extern void ABISELECT(_ZThn8560_N8S19567C2D0Ev,_ZThn5016_N8S19567C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__8S19567C2__8S19567C1[] = {
  ABISELECT(-8560,-5016),
  ABISELECT(-8560,-5016),
  (VTBL_ENTRY)&(_ZTI8S19567C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C2D1Ev,_ZTv0_n12_N8S19567C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C2D0Ev,_ZTv0_n12_N8S19567C2D0Ev),
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C1[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19567C4D1Ev,_ZThn44_N8S19567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19567C4D0Ev,_ZThn44_N8S19567C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C4__8S19567C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void _ZN8S19567C8D1Ev();
extern void _ZN8S19567C8D0Ev();
extern void _ZN9S19567C142v2Ev();
extern void _ZN8S19567C82v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C8__8S19567C1[] = {
  ABISELECT(2840,1648),
  ABISELECT(-144,-76),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&_ZN8S19567C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C8D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
  (VTBL_ENTRY)&_ZN8S19567C82v3Ev,
};
extern void _ZN9S19567C14D1Ev();
extern void _ZN9S19567C14D0Ev();
extern void _ZN9S19567C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C148S19567C8__8S19567C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(3312,1928),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&_ZN9S19567C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZThn3312_N9S19567C14D1Ev,_ZThn1928_N9S19567C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev)();
extern void ABISELECT(_ZThn3312_N9S19567C14D0Ev,_ZThn1928_N9S19567C14D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C148S19567C8__8S19567C1[] = {
  0,
  ABISELECT(-3312,-1928),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-3312,-1928),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C148S19567C8__8S19567C1[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-3368,-1960),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C148S19567C8__8S19567C1[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev),
};
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C138S19567C8__A1__8S19567C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C138S19567C8__A4__8S19567C1[] = {
  ABISELECT(184,96),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C138S19567C8__A1__8S19567C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C138S19567C8__A1__8S19567C1[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2192_N8S19567C8D1Ev,_ZThn1268_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2192_N8S19567C8D0Ev,_ZThn1268_N8S19567C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19567C9__8S19567C8__8S19567C1[] = {
  ABISELECT(-2192,-1268),
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  ABISELECT(-2192,-1268),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2712_N8S19567C8D1Ev,_ZThn1556_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2712_N8S19567C8D0Ev,_ZThn1556_N8S19567C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C8__8S19567C1[] = {
  ABISELECT(-2712,-1556),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-2712,-1556),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C8__8S19567C1[] = {
  ABISELECT(144,76),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19567C8D1Ev,_ZTv0_n12_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C8D0Ev,_ZTv0_n12_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C8__8S19567C1[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C8D1Ev,_ZTv0_n12_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C8D0Ev,_ZTv0_n12_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S19567C8D1Ev,_ZTvn32_n32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S19567C8D0Ev,_ZTvn32_n32_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C118S19567C9__8S19567C8__8S19567C1[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-2256,-1300),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C8D1Ev,_ZTvn32_n32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S19567C8D0Ev,_ZTvn32_n32_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn2840_N8S19567C8D1Ev,_ZThn1648_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn2840_N8S19567C8D0Ev,_ZThn1648_N8S19567C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C8__8S19567C1[] = {
  ABISELECT(-2840,-1648),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-2840,-1648),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn3312_N8S19567C8D1Ev,_ZThn1928_N8S19567C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev)();
extern void ABISELECT(_ZThn3312_N8S19567C8D0Ev,_ZThn1928_N8S19567C8D0Ev)() __attribute__((weak));
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__8S19567C8__8S19567C1[] = {
  0,
  ABISELECT(-3312,-1928),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(-3312,-1928),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S19567C8D1Ev,_ZTvn32_n20_N8S19567C8D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S19567C8D0Ev,_ZTvn32_n20_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A3__8S19567C8__8S19567C1[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-3368,-1960),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C8D1Ev,_ZTvn32_n20_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S19567C8D0Ev,_ZTvn32_n20_N8S19567C8D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19567C8D1Ev,_ZThn32_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19567C8D0Ev,_ZThn32_N8S19567C8D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__A__8S19567C8__8S19567C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-168,-88),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C8D1Ev,_ZThn32_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C8D0Ev,_ZThn32_N8S19567C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZThn120_N8S19567C8D1Ev,_ZThn64_N8S19567C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19567C8D0Ev,_ZThn64_N8S19567C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A4__8S19567C8__8S19567C1[] = {
  ABISELECT(-184,-96),
  ABISELECT(-224,-120),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19567C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19567C8D1Ev,_ZThn64_N8S19567C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S19567C8D0Ev,_ZThn64_N8S19567C8D0Ev),
};
extern void _ZN8S19567C9D1Ev();
extern void _ZN8S19567C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C9__8S19567C1[] = {
  ABISELECT(648,380),
  ABISELECT(-2256,-1300),
  ABISELECT(-2336,-1344),
  ABISELECT(-2296,-1324),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&_ZN8S19567C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C9D0Ev,
};
extern void _ZN9S19567C11D1Ev();
extern void _ZN9S19567C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C118S19567C9__8S19567C1[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&_ZN9S19567C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C11D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C118S19567C9__A1__8S19567C1[] = {
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C118S19567C9__A1__8S19567C1[] = {
  ABISELECT(2320,1332),
  ABISELECT(2320,1332),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C118S19567C9__8S19567C1[] = {
  ABISELECT(2320,1332),
  ABISELECT(2320,1332),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D1Ev,_ZTv0_n12_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C11D0Ev,_ZTv0_n12_N9S19567C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev)();
extern void ABISELECT(_ZThn584_N9S19567C11D1Ev,_ZThn348_N9S19567C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev)();
extern void ABISELECT(_ZThn584_N9S19567C11D0Ev,_ZThn348_N9S19567C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__9S19567C118S19567C9__8S19567C1[] = {
  ABISELECT(-584,-348),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-584,-348),
  (VTBL_ENTRY)&(_ZTI9S19567C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn520_N8S19567C9D1Ev,_ZThn288_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn520_N8S19567C9D0Ev,_ZThn288_N8S19567C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C9__8S19567C1[] = {
  ABISELECT(-520,-288),
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__8S19567C9__8S19567C1[] = {
  ABISELECT(2336,1344),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2336,1344),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C9__8S19567C1[] = {
  ABISELECT(2256,1300),
  ABISELECT(2256,1300),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C9D1Ev,_ZTv0_n12_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C9D0Ev,_ZTv0_n12_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZThn64_N8S19567C9D1Ev,_ZThn32_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19567C9D0Ev,_ZThn32_N8S19567C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C11__8S19567C9__8S19567C1[] = {
  ABISELECT(584,348),
  ABISELECT(-2320,-1332),
  ABISELECT(-2360,-1356),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C9D1Ev,_ZThn32_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19567C9D0Ev,_ZThn32_N8S19567C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev)();
extern void ABISELECT(_ZThn648_N8S19567C9D1Ev,_ZThn380_N8S19567C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev)();
extern void ABISELECT(_ZThn648_N8S19567C9D0Ev,_ZThn380_N8S19567C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C9__8S19567C1[] = {
  ABISELECT(-648,-380),
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  ABISELECT(-648,-380),
  (VTBL_ENTRY)&(_ZTI8S19567C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev),
};
extern void _ZN9S19567C10D1Ev();
extern void _ZN9S19567C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C10__8S19567C1[] = {
  ABISELECT(-2776,-1588),
  ABISELECT(-2856,-1632),
  ABISELECT(-2816,-1612),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&_ZN9S19567C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C10D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C10__8S19567C1[] = {
  ABISELECT(2856,1632),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(2856,1632),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D1Ev,_ZTv0_n20_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C10D0Ev,_ZTv0_n20_N9S19567C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C10__8S19567C1[] = {
  ABISELECT(2776,1588),
  ABISELECT(2776,1588),
  (VTBL_ENTRY)&(_ZTI9S19567C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D1Ev,_ZTv0_n12_N9S19567C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C10D0Ev,_ZTv0_n12_N9S19567C10D0Ev),
};
extern void _ZN9S19567C12D1Ev();
extern void _ZN9S19567C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C12__8S19567C1[] = {
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&_ZN9S19567C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C12D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C12__A2__8S19567C1[] = {
  ABISELECT(-2904,-1680),
  ABISELECT(-2944,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C12__A2__8S19567C1[] = {
  ABISELECT(2904,1680),
  ABISELECT(2904,1680),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C12__8S19567C1[] = {
  ABISELECT(2904,1680),
  ABISELECT(2904,1680),
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev),
};
extern void _ZN9S19567C13D1Ev();
extern void _ZN9S19567C13D0Ev();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__8S19567C1[] = {
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&_ZN9S19567C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__A3__8S19567C1[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C13__A3__8S19567C1[] = {
  ABISELECT(3432,1992),
  ABISELECT(3432,1992),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C4__9S19567C13__8S19567C1[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D1Ev,_ZThn32_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S19567C13D0Ev,_ZThn32_N9S19567C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C13__8S19567C1[] = {
  ABISELECT(3376,1960),
  ABISELECT(3376,1960),
  (VTBL_ENTRY)&(_ZTI9S19567C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D1Ev,_ZTv0_n12_N9S19567C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C13D0Ev,_ZTv0_n12_N9S19567C13D0Ev),
};
extern void _ZN9S19567C18D1Ev();
extern void _ZN9S19567C18D0Ev();
extern void _ZN9S19567C182v4Ev();
extern void _ZN9S19567C182v5Ev();
extern void _ZN9S19567C182v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C18__8S19567C1[] = {
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&_ZN9S19567C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v4Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v5Ev,
  (VTBL_ENTRY)&_ZN9S19567C182v6Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C18__A5__8S19567C1[] = {
  ABISELECT(-3600,-2084),
  ABISELECT(-3640,-2108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C18__A5__8S19567C1[] = {
  ABISELECT(3600,2084),
  ABISELECT(3600,2084),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void _ZN9S19567C12D1Ev();
extern void _ZN9S19567C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C129S19567C18__A1__8S19567C1[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&_ZN9S19567C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C12D0Ev,
};
extern void _ZN8S19567C4D1Ev();
extern void _ZN8S19567C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C129S19567C18__A6__8S19567C1[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  0,
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&_ZN8S19567C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19567C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S19567C49S19567C129S19567C18__A6__8S19567C1[] = {
  ABISELECT(3640,2104),
  ABISELECT(3640,2104),
  (VTBL_ENTRY)&(_ZTI8S19567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C129S19567C18__A1__8S19567C1[] = {
  ABISELECT(3640,2104),
  ABISELECT(3640,2104),
  (VTBL_ENTRY)&(_ZTI9S19567C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D1Ev,_ZTv0_n12_N9S19567C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C12D0Ev,_ZTv0_n12_N9S19567C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C18D1Ev,_ZTv0_n12_N9S19567C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C18D0Ev,_ZTv0_n12_N9S19567C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S19567C18__8S19567C1[] = {
  ABISELECT(3600,2084),
  ABISELECT(3600,2084),
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C18D1Ev,_ZTv0_n12_N9S19567C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C18D0Ev,_ZTv0_n12_N9S19567C18D0Ev),
};
extern void ABISELECT(_ZThn40_N9S19567C18D1Ev,_ZThn20_N9S19567C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S19567C18D0Ev,_ZThn20_N9S19567C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19567C12__9S19567C18__8S19567C1[] = {
  ABISELECT(-3640,-2104),
  ABISELECT(-3680,-2128),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19567C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19567C18D1Ev,_ZThn20_N9S19567C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19567C18D0Ev,_ZThn20_N9S19567C18D0Ev),
};
extern void _ZN9S19567C14D1Ev();
extern void _ZN9S19567C14D0Ev();
extern void _ZN9S19567C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C14__A1__8S19567C1[] = {
  ABISELECT(-4144,-2412),
  ABISELECT(-4184,-2436),
  ABISELECT(-768,-452),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&_ZN9S19567C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C142v2Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C14__A1__8S19567C1[] = {
  0,
  ABISELECT(768,452),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(768,452),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C14__A1__8S19567C1[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(712,420),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D1Ev,_ZTvn32_n20_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C14D0Ev,_ZTvn32_n20_N9S19567C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C14__A1__8S19567C1[] = {
  ABISELECT(4144,2412),
  ABISELECT(4144,2412),
  (VTBL_ENTRY)&(_ZTI9S19567C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D1Ev,_ZTv0_n12_N9S19567C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C14D0Ev,_ZTv0_n12_N9S19567C14D0Ev),
};
extern void _ZN9S19567C19D1Ev();
extern void _ZN9S19567C19D0Ev();
extern void _ZN9S19567C202v7Ev();
extern void _ZN9S19567C192v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C19__8S19567C1[] = {
  ABISELECT(-4208,-2444),
  ABISELECT(-4248,-2468),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&_ZN9S19567C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C19D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C202v7Ev,
  (VTBL_ENTRY)&_ZN9S19567C192v8Ev,
};
extern void _ZN9S19567C20D1Ev();
extern void _ZN9S19567C20D0Ev();
extern void _ZN9S19567C202v7Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C209S19567C19__8S19567C1[] = {
  ABISELECT(-4208,-2444),
  ABISELECT(-4248,-2468),
  ABISELECT(-832,-484),
  ABISELECT(2944,1732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&_ZN9S19567C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19567C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19567C202v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C20D1Ev,_ZThn1732_N9S19567C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C20D0Ev,_ZThn1732_N9S19567C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__9S19567C209S19567C19__8S19567C1[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19567C20D1Ev,_ZTv0_n20_N9S19567C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19567C20D0Ev,_ZTv0_n20_N9S19567C20D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C209S19567C19__8S19567C1[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C20D1Ev,_ZTv0_n20_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C20D0Ev,_ZTv0_n20_N9S19567C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C20D1Ev,_ZTvn32_n20_N9S19567C20D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C20D0Ev,_ZTvn32_n20_N9S19567C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C209S19567C19__8S19567C1[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C20D1Ev,_ZTvn32_n20_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C20D0Ev,_ZTvn32_n20_N9S19567C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C209S19567C19__8S19567C1[] = {
  ABISELECT(4208,2444),
  ABISELECT(4208,2444),
  (VTBL_ENTRY)&(_ZTI9S19567C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C19D1Ev,_ZThn1732_N9S19567C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev)();
extern void ABISELECT(_ZThn2944_N9S19567C19D0Ev,_ZThn1732_N9S19567C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C21__9S19567C19__8S19567C1[] = {
  ABISELECT(-2944,-1732),
  ABISELECT(-2944,-1732),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19567C19D1Ev,_ZTv0_n20_N9S19567C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19567C19D0Ev,_ZTv0_n20_N9S19567C19D0Ev)();
extern void _ZN9S19567C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19567C13__9S19567C19__8S19567C1[] = {
  0,
  ABISELECT(832,484),
  ABISELECT(-3376,-1960),
  ABISELECT(-3416,-1984),
  ABISELECT(832,484),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C19D1Ev,_ZTv0_n20_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19567C19D0Ev,_ZTv0_n20_N9S19567C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19567C132v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S19567C19D1Ev,_ZTvn32_n20_N9S19567C19D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S19567C19D0Ev,_ZTvn32_n20_N9S19567C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19567C49S19567C13__9S19567C19__8S19567C1[] = {
  ABISELECT(-3432,-1992),
  ABISELECT(-3472,-2016),
  ABISELECT(776,452),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C19D1Ev,_ZTvn32_n20_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S19567C19D0Ev,_ZTvn32_n20_N9S19567C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S19567C19__8S19567C1[] = {
  ABISELECT(4208,2444),
  ABISELECT(4208,2444),
  (VTBL_ENTRY)&(_ZTI9S19567C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev),
};
static  VTT_ENTRY vtt_S19567C1[] = {
  {&(_ZTV8S19567C1[15]),  15,172},
  {&(_ZTV8S19567C1[33]),  33,172},
  {&(_ZTV8S19567C1[41]),  41,172},
  {&(_ZTV8S19567C1[46]),  46,172},
  {&(_ZTV8S19567C1[61]),  61,172},
  {&(_ZTV8S19567C1[86]),  86,172},
  {&(_ZTV8S19567C1[101]),  101,172},
  {&(_ZTV8S19567C1[93]),  93,172},
  {&(_ZTV8S19567C1[108]),  108,172},
  {&(_ZTV8S19567C1[116]),  116,172},
  {&(_ZTV8S19567C1[123]),  123,172},
  {&(_ZTV8S19567C1[69]),  69,172},
  {&(_ZTV8S19567C1[76]),  76,172},
  {&(_ZTV8S19567C1[133]),  133,172},
  {&(_ZTV8S19567C1[142]),  142,172},
  {&(_ZTV8S19567C1[151]),  151,172},
  {&(_ZTV8S19567C1[163]),  163,172},
  {&(_ZTV8S19567C1[170]),  170,172},
  {&(_tg__ZTV8S19567C2__8S19567C1[14]),  14,17},
  {&(_tg__ZTV8S19567C38S19567C2__8S19567C1[12]),  12,14},
  {&(_tg__ZTV8S19567C4__8S19567C38S19567C2__8S19567C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19567C38S19567C2__8S19567C1[3]),  3,5},
  {&(_tg__ZTV8S19567C8__8S19567C38S19567C2__8S19567C1[13]),  13,17},
  {&(_tg__ZTV8S19567C9__8S19567C38S19567C2__8S19567C1[8]),  8,10},
  {&(_tg__ZTV9S19567C10__8S19567C38S19567C2__8S19567C1[6]),  6,8},
  {&(_tg__ZTV9S19567C118S19567C9__8S19567C38S19567C2__8S19567C1[5]),  5,7},
  {&(_tg__ZTV9S19567C12__8S19567C38S19567C2__8S19567C1[5]),  5,7},
  {&(_tg__ZTV9S19567C13__8S19567C38S19567C2__8S19567C1[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__A3__8S19567C38S19567C2__8S19567C1[4]),  4,6},
  {&(_tg__ZTV9S19567C138S19567C8__A1__8S19567C38S19567C2__8S19567C1[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C38S19567C2__8S19567C1[4]),  4,6},
  {&(_tg__ZTV9S19567C18__8S19567C38S19567C2__8S19567C1[8]),  8,13},
  {&(_tg__ZTV9S19567C129S19567C18__A1__8S19567C38S19567C2__8S19567C1[4]),  4,6},
  {&(_tg__ZTV9S19567C14__A1__8S19567C38S19567C2__8S19567C1[7]),  7,10},
  {&(_tg__ZTV8S19567C4__8S19567C2__8S19567C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19567C2__8S19567C1[3]),  3,5},
  {&(_tg__ZTV8S19567C8__8S19567C2__8S19567C1[13]),  13,17},
  {&(_tg__ZTV8S19567C9__8S19567C2__8S19567C1[8]),  8,10},
  {&(_tg__ZTV9S19567C10__8S19567C2__8S19567C1[6]),  6,8},
  {&(_tg__ZTV9S19567C118S19567C9__8S19567C2__8S19567C1[5]),  5,7},
  {&(_tg__ZTV9S19567C12__8S19567C2__8S19567C1[5]),  5,7},
  {&(_tg__ZTV9S19567C13__8S19567C2__8S19567C1[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__A3__8S19567C2__8S19567C1[4]),  4,6},
  {&(_tg__ZTV9S19567C138S19567C8__A1__8S19567C2__8S19567C1[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C2__8S19567C1[4]),  4,6},
  {&(_tg__ZTV9S19567C18__8S19567C2__8S19567C1[8]),  8,13},
  {&(_tg__ZTV9S19567C129S19567C18__A1__8S19567C2__8S19567C1[4]),  4,6},
  {&(_tg__ZTV9S19567C14__A1__8S19567C2__8S19567C1[7]),  7,10},
  {&(_tg__ZTV9S19567C19__8S19567C2__8S19567C1[9]),  9,13},
  {&(_tg__ZTV8S3572C21__8S19567C2__8S19567C1[3]),  3,5},
  {&(_tg__ZTV8S19567C4__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C4__8S19567C1[3]),  3,5},
  {&(_tg__ZTV8S19567C8__8S19567C1[9]),  9,13},
  {&(_tg__ZTV9S19567C148S19567C8__8S19567C1[5]),  5,8},
  {&(_tg__ZTV9S19567C13__9S19567C148S19567C8__8S19567C1[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C148S19567C8__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C148S19567C8__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C138S19567C8__A1__8S19567C1[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C138S19567C8__A4__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C138S19567C8__A4__8S19567C1[3]),  3,5},
  {&(_tg__ZTV8S19567C4__9S19567C138S19567C8__A1__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C138S19567C8__A1__8S19567C1[3]),  3,5},
  {&(_tg__ZTV8S19567C9__8S19567C8__8S19567C1[8]),  8,10},
  {&(_tg__ZTV9S19567C10__8S19567C8__8S19567C1[6]),  6,8},
  {&(_tg__ZTV8S19567C4__8S19567C8__8S19567C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19567C8__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C118S19567C9__8S19567C8__8S19567C1[5]),  5,7},
  {&(_tg__ZTV9S19567C12__8S19567C8__8S19567C1[5]),  5,7},
  {&(_tg__ZTV9S19567C13__8S19567C8__8S19567C1[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__A3__8S19567C8__8S19567C1[4]),  4,6},
  {&(_tg__ZTV9S19567C13__A__8S19567C8__8S19567C1[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C13__A4__8S19567C8__8S19567C1[4]),  4,6},
  {&(_tg__ZTV8S19567C9__8S19567C1[7]),  7,9},
  {&(_tg__ZTV9S19567C118S19567C9__8S19567C1[5]),  5,7},
  {&(_tg__ZTV8S19567C49S19567C118S19567C9__A1__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C118S19567C9__A1__8S19567C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C118S19567C9__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C12__9S19567C118S19567C9__8S19567C1[5]),  5,7},
  {&(_tg__ZTV9S19567C10__8S19567C9__8S19567C1[6]),  6,8},
  {&(_tg__ZTV8S19567C4__8S19567C9__8S19567C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S19567C9__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C11__8S19567C9__8S19567C1[5]),  5,7},
  {&(_tg__ZTV9S19567C12__8S19567C9__8S19567C1[5]),  5,7},
  {&(_tg__ZTV9S19567C10__8S19567C1[5]),  5,7},
  {&(_tg__ZTV8S19567C4__9S19567C10__8S19567C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__9S19567C10__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C12__8S19567C1[4]),  4,6},
  {&(_tg__ZTV8S19567C49S19567C12__A2__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C12__A2__8S19567C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C12__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C13__8S19567C1[4]),  4,7},
  {&(_tg__ZTV8S19567C49S19567C13__A3__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C13__A3__8S19567C1[3]),  3,5},
  {&(_tg__ZTV8S19567C4__9S19567C13__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C13__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C18__8S19567C1[4]),  4,9},
  {&(_tg__ZTV8S19567C49S19567C18__A5__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C18__A5__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C129S19567C18__A1__8S19567C1[4]),  4,6},
  {&(_tg__ZTV8S19567C49S19567C129S19567C18__A6__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S19567C49S19567C129S19567C18__A6__8S19567C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C129S19567C18__A1__8S19567C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S19567C18__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C12__9S19567C18__8S19567C1[4]),  4,6},
  {&(_tg__ZTV9S19567C14__A1__8S19567C1[5]),  5,8},
  {&(_tg__ZTV9S19567C13__9S19567C14__A1__8S19567C1[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C14__A1__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C14__A1__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C19__8S19567C1[6]),  6,10},
  {&(_tg__ZTV9S19567C209S19567C19__8S19567C1[6]),  6,9},
  {&(_tg__ZTV8S3572C21__9S19567C209S19567C19__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C13__9S19567C209S19567C19__8S19567C1[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C209S19567C19__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C209S19567C19__8S19567C1[3]),  3,5},
  {&(_tg__ZTV8S3572C21__9S19567C19__8S19567C1[3]),  3,5},
  {&(_tg__ZTV9S19567C13__9S19567C19__8S19567C1[6]),  6,9},
  {&(_tg__ZTV8S19567C49S19567C13__9S19567C19__8S19567C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S19567C19__8S19567C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19567C1[];
extern  VTBL_ENTRY _ZTV8S19567C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19567C1[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C19D0Ev,_ZTv0_n12_N9S19567C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C19D0Ev,_ZThn1732_N9S19567C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C19D1Ev,_ZTv0_n12_N9S19567C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C19D1Ev,_ZThn1732_N9S19567C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C20D0Ev,_ZTv0_n12_N9S19567C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C20D0Ev,_ZThn1732_N9S19567C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19567C20D1Ev,_ZTv0_n12_N9S19567C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2944_N9S19567C20D1Ev,_ZThn1732_N9S19567C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C9D0Ev,_ZTv0_n20_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19567C9D0Ev,_ZThn380_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C9D1Ev,_ZTv0_n20_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S19567C9D1Ev,_ZThn380_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C9D0Ev,_ZTv0_n24_N8S19567C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19567C9D0Ev,_ZThn288_N8S19567C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C9D1Ev,_ZTv0_n24_N8S19567C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S19567C9D1Ev,_ZThn288_N8S19567C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D0Ev,_ZTv0_n20_N9S19567C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19567C11D0Ev,_ZThn348_N9S19567C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C11D1Ev,_ZTv0_n20_N9S19567C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S19567C11D1Ev,_ZThn348_N9S19567C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C8D0Ev,_ZTv0_n20_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19567C8D0Ev,_ZThn1928_N8S19567C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19567C8D0Ev,_ZThn1648_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C8D1Ev,_ZTv0_n20_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N8S19567C8D1Ev,_ZThn1928_N8S19567C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2840_N8S19567C8D1Ev,_ZThn1648_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C8D0Ev,_ZTv0_n24_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19567C8D0Ev,_ZThn1556_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C8D1Ev,_ZTv0_n24_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S19567C8D1Ev,_ZThn1556_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C8D0Ev,_ZTv0_n32_N8S19567C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19567C8D0Ev,_ZThn1268_N8S19567C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C8D1Ev,_ZTv0_n32_N8S19567C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S19567C8D1Ev,_ZThn1268_N8S19567C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C14D0Ev,_ZTv0_n20_N9S19567C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19567C14D0Ev,_ZThn1928_N9S19567C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19567C14D1Ev,_ZTv0_n20_N9S19567C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3312_N9S19567C14D1Ev,_ZThn1928_N9S19567C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D0Ev,_ZTv0_n12_N8S19567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19567C4D0Ev,_ZThn44_N8S19567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C4D1Ev,_ZTv0_n12_N8S19567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19567C4D1Ev,_ZThn44_N8S19567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19567C2D0Ev,_ZTv0_n28_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S19567C2D0Ev,_ZThn3284_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19567C2D1Ev,_ZTv0_n28_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5616_N8S19567C2D1Ev,_ZThn3284_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C2D0Ev,_ZTv0_n24_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19567C2D0Ev,_ZThn3252_N8S19567C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19567C2D0Ev,_ZThn2428_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C2D1Ev,_ZTv0_n24_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19567C2D1Ev,_ZThn3252_N8S19567C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19567C2D1Ev,_ZThn2428_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C2D0Ev,_ZTv0_n32_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19567C2D0Ev,_ZThn2140_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C2D1Ev,_ZTv0_n32_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19567C2D1Ev,_ZThn2140_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C2D0Ev,_ZTv0_n40_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19567C2D0Ev,_ZThn872_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C2D1Ev,_ZTv0_n40_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19567C2D1Ev,_ZThn872_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C2D0Ev,_ZTv0_n12_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19567C2D0Ev,_ZThn5016_N8S19567C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19567C2D0Ev,_ZThn840_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C2D1Ev,_ZTv0_n12_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8560_N8S19567C2D1Ev,_ZThn5016_N8S19567C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19567C2D1Ev,_ZThn840_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C2D0Ev,_ZTv0_n20_N8S19567C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19567C2D0Ev,_ZThn2924_N8S19567C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19567C2D0Ev,_ZThn2800_N8S19567C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19567C2D0Ev,_ZThn2520_N8S19567C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19567C2D0Ev,_ZThn796_N8S19567C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C2D1Ev,_ZTv0_n20_N8S19567C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19567C2D1Ev,_ZThn2924_N8S19567C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19567C2D1Ev,_ZThn2800_N8S19567C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19567C2D1Ev,_ZThn2520_N8S19567C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19567C2D1Ev,_ZThn796_N8S19567C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C3D0Ev,_ZTv0_n24_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19567C3D0Ev,_ZThn3252_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19567C3D0Ev,_ZThn2428_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C3D1Ev,_ZTv0_n24_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5552_N8S19567C3D1Ev,_ZThn3252_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4184_N8S19567C3D1Ev,_ZThn2428_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C3D0Ev,_ZTv0_n32_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19567C3D0Ev,_ZThn2140_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C3D1Ev,_ZTv0_n32_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3664_N8S19567C3D1Ev,_ZThn2140_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C3D0Ev,_ZTv0_n40_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19567C3D0Ev,_ZThn872_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C3D1Ev,_ZTv0_n40_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19567C3D1Ev,_ZThn872_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C3D0Ev,_ZTv0_n12_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19567C3D0Ev,_ZThn840_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C3D1Ev,_ZTv0_n12_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19567C3D1Ev,_ZThn840_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C3D0Ev,_ZTv0_n20_N8S19567C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19567C3D0Ev,_ZThn2924_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19567C3D0Ev,_ZThn2800_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19567C3D0Ev,_ZThn2520_N8S19567C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19567C3D0Ev,_ZThn796_N8S19567C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C3D1Ev,_ZTv0_n20_N8S19567C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5008_N8S19567C3D1Ev,_ZThn2924_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4784_N8S19567C3D1Ev,_ZThn2800_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4312_N8S19567C3D1Ev,_ZThn2520_N8S19567C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19567C3D1Ev,_ZThn796_N8S19567C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19567C1D0Ev,_ZTv0_n28_N8S19567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14624_N8S19567C1D0Ev,_ZThn8572_N8S19567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19567C1D1Ev,_ZTv0_n28_N8S19567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14624_N8S19567C1D1Ev,_ZThn8572_N8S19567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C1D0Ev,_ZTv0_n24_N8S19567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14560_N8S19567C1D0Ev,_ZThn8540_N8S19567C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13192_N8S19567C1D0Ev,_ZThn7716_N8S19567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19567C1D1Ev,_ZTv0_n24_N8S19567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14560_N8S19567C1D1Ev,_ZThn8540_N8S19567C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13192_N8S19567C1D1Ev,_ZThn7716_N8S19567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C1D0Ev,_ZTv0_n32_N8S19567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12672_N8S19567C1D0Ev,_ZThn7428_N8S19567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19567C1D1Ev,_ZTv0_n32_N8S19567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12672_N8S19567C1D1Ev,_ZThn7428_N8S19567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C1D0Ev,_ZTv0_n40_N8S19567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10480_N8S19567C1D0Ev,_ZThn6160_N8S19567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19567C1D1Ev,_ZTv0_n40_N8S19567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10480_N8S19567C1D1Ev,_ZThn6160_N8S19567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C1D0Ev,_ZTv0_n12_N8S19567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17568_N8S19567C1D0Ev,_ZThn10304_N8S19567C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N8S19567C1D0Ev,_ZThn6128_N8S19567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19567C1D1Ev,_ZTv0_n12_N8S19567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17568_N8S19567C1D1Ev,_ZThn10304_N8S19567C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N8S19567C1D1Ev,_ZThn6128_N8S19567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C1D0Ev,_ZTv0_n20_N8S19567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14016_N8S19567C1D0Ev,_ZThn8212_N8S19567C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13792_N8S19567C1D0Ev,_ZThn8088_N8S19567C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13320_N8S19567C1D0Ev,_ZThn7808_N8S19567C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10336_N8S19567C1D0Ev,_ZThn6084_N8S19567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19567C1D1Ev,_ZTv0_n20_N8S19567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14016_N8S19567C1D1Ev,_ZThn8212_N8S19567C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13792_N8S19567C1D1Ev,_ZThn8088_N8S19567C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn13320_N8S19567C1D1Ev,_ZThn7808_N8S19567C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn10336_N8S19567C1D1Ev,_ZThn6084_N8S19567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19567C1D0Ev,_ZTv0_n60_N8S19567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9008_N8S19567C1D0Ev,_ZThn5288_N8S19567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19567C1D1Ev,_ZTv0_n60_N8S19567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9008_N8S19567C1D1Ev,_ZThn5288_N8S19567C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19567C1 = {  "S19567C1", // class name
  bases_S19567C1, 31,
  &(vtc_S19567C1[0]), // expected_vtbl_contents
  &(vtt_S19567C1[0]), // expected_vtt_contents
  ABISELECT(17600,10320), // object size
  NSPAIRA(_ZTI8S19567C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19567C1),172, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19567C1),118, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20681C2  : virtual S3572C5 , virtual S3572C4 {
  unsigned char s20681c2f0:1;
  void *s20681c2f1[3];
  ~S20681C2(); // tgen
  S20681C2(); // tgen
};
//SIG(-1 S20681C2) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} Fc:1 Fp[3]}


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

static void Test_S20681C2()
{
  extern Class_Descriptor cd_S20681C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S20681C2, buf);
    S20681C2 *dp, &lv = *(dp=new (buf) S20681C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S20681C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20681C2)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(40,20), "S20681C2");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(80,44), "S20681C2");
    set_bf_and_test(lv, s20681c2f0, ABISELECT(8,4), 0, 1, 1, "S20681C2");
    check_field_offset(lv, s20681c2f1, ABISELECT(16,8), "S20681C2.s20681c2f1");
    test_class_info(&lv, &cd_S20681C2);
    dp->~S20681C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20681C2(Test_S20681C2, "S20681C2", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN8S20681C2C1Ev();
extern void _ZN8S20681C2D1Ev();
Name_Map name_map_S20681C2[] = {
  NSPAIR(_ZN8S20681C2C1Ev),
  NSPAIR(_ZN8S20681C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
static Base_Class bases_S20681C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(80,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20681C2[];
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20681C2D1Ev,_ZThn44_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S20681C2D0Ev,_ZThn44_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20681C2[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20681C2[];
static  VTT_ENTRY vtt_S20681C2[] = {
  {&(_ZTV8S20681C2[4]),  4,11},
  {&(_ZTV8S20681C2[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20681C2D0Ev,_ZThn44_N8S20681C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20681C2D1Ev,_ZThn44_N8S20681C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20681C2 = {  "S20681C2", // class name
  bases_S20681C2, 2,
  &(vtc_S20681C2[0]), // expected_vtbl_contents
  &(vtt_S20681C2[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI8S20681C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20681C2),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20681C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20681C9  : virtual S3572C5 , virtual S20681C2 {
  short s20681c9f0;
  int s20681c9f1[2];
  char s20681c9f2;
  __tsi64 s20681c9f3;
  int s20681c9f4;
  ::S3572C6_nt s20681c9f5;
  void *s20681c9f6;
  char s20681c9f7;
  short s20681c9f8;
  ::S3572C4 s20681c9f9;
  int s20681c9f10[2];
  __tsi64 s20681c9f11;
  virtual  ~S20681C9(); // _ZN8S20681C9D2Ev
  S20681C9(); // tgen
};
//SIG(-1 S20681C9) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ VBC2 VBC4{ vd m FC2 FC5{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL}


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

static void Test_S20681C9()
{
  extern Class_Descriptor cd_S20681C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,43)];
    init_test(&cd_S20681C9, buf);
    S20681C9 *dp, &lv = *(dp=new (buf) S20681C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,168), "sizeof(S20681C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20681C9)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(128,92), "S20681C9");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*), ABISELECT(128,92), "S20681C9");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*), ABISELECT(208,136), "S20681C9");
    check_base_class_offset(lv, (S20681C2*), ABISELECT(168,116), "S20681C9");
    check_field_offset(lv, s20681c9f0, ABISELECT(8,4), "S20681C9.s20681c9f0");
    check_field_offset(lv, s20681c9f1, ABISELECT(12,8), "S20681C9.s20681c9f1");
    check_field_offset(lv, s20681c9f2, ABISELECT(20,16), "S20681C9.s20681c9f2");
    check_field_offset(lv, s20681c9f3, ABISELECT(24,20), "S20681C9.s20681c9f3");
    check_field_offset(lv, s20681c9f4, ABISELECT(32,28), "S20681C9.s20681c9f4");
    check_field_offset(lv, s20681c9f5, ABISELECT(36,32), "S20681C9.s20681c9f5");
    check_field_offset(lv, s20681c9f6, ABISELECT(40,36), "S20681C9.s20681c9f6");
    check_field_offset(lv, s20681c9f7, ABISELECT(48,40), "S20681C9.s20681c9f7");
    check_field_offset(lv, s20681c9f8, ABISELECT(50,42), "S20681C9.s20681c9f8");
    check_field_offset(lv, s20681c9f9, ABISELECT(56,44), "S20681C9.s20681c9f9");
    check_field_offset(lv, s20681c9f10, ABISELECT(112,76), "S20681C9.s20681c9f10");
    check_field_offset(lv, s20681c9f11, ABISELECT(120,84), "S20681C9.s20681c9f11");
    test_class_info(&lv, &cd_S20681C9);
    dp->~S20681C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20681C9(Test_S20681C9, "S20681C9", ABISELECT(264,168));

#else // __cplusplus

extern void _ZN8S20681C9C1Ev();
extern void _ZN8S20681C9D2Ev();
Name_Map name_map_S20681C9[] = {
  NSPAIR(_ZN8S20681C9C1Ev),
  NSPAIR(_ZN8S20681C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
static Base_Class bases_S20681C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(208,136), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20681C2,    ABISELECT(168,116), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20681C9[];
extern void _ZN8S20681C9D1Ev();
extern void _ZN8S20681C9D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S20681C9D1Ev,_ZThn116_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S20681C9D0Ev,_ZThn116_N8S20681C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn208_N8S20681C9D1Ev,_ZThn136_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn208_N8S20681C9D0Ev,_ZThn136_N8S20681C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20681C9[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&_ZN8S20681C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C9D0Ev,
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S20681C9[];
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C9[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S20681C2D1Ev,_ZThn20_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S20681C2D0Ev,_ZThn20_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C2__8S20681C9[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
static  VTT_ENTRY vtt_S20681C9[] = {
  {&(_ZTV8S20681C9[5]),  5,19},
  {&(_ZTV8S20681C9[12]),  12,19},
  {&(_ZTV8S20681C9[17]),  17,19},
  {&(_tg__ZTV8S20681C2__8S20681C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C2__8S20681C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20681C9[];
extern  VTBL_ENTRY _ZTV8S20681C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C9[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20681C2D0Ev,_ZThn20_N8S20681C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20681C2D1Ev,_ZThn20_N8S20681C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20681C9D0Ev,_ZThn136_N8S20681C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20681C9D1Ev,_ZThn136_N8S20681C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20681C9D0Ev,_ZThn116_N8S20681C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20681C9D1Ev,_ZThn116_N8S20681C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20681C9 = {  "S20681C9", // class name
  bases_S20681C9, 3,
  &(vtc_S20681C9[0]), // expected_vtbl_contents
  &(vtt_S20681C9[0]), // expected_vtt_contents
  ABISELECT(264,168), // object size
  NSPAIRA(_ZTI8S20681C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20681C9),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20681C9),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20681C11  : virtual S3572C5 , virtual S3572C4 , S20681C2 {
  char s20681c11f0;
  int s20681c11f1[3];
  void *s20681c11f2;
  short s20681c11f3:16;
  int s20681c11f4;
  void *s20681c11f5[2];
  int s20681c11f6;
  ::S3572C5 s20681c11f7[9];
  int s20681c11f8;
  virtual  ~S20681C11(); // _ZN9S20681C11D2Ev
  S20681C11(); // tgen
};
//SIG(-1 S20681C11) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC2[9] Fi}


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

static void Test_S20681C11()
{
  extern Class_Descriptor cd_S20681C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(71,85)];
    init_test(&cd_S20681C11, buf);
    S20681C11 *dp, &lv = *(dp=new (buf) S20681C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,336), "sizeof(S20681C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20681C11)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(464,280), "S20681C11");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*), ABISELECT(464,280), "S20681C11");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(504,304), "S20681C11");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*), ABISELECT(504,304), "S20681C11");
    check_base_class_offset(lv, (S20681C2*), 0, "S20681C11");
    check_field_offset(lv, s20681c11f0, ABISELECT(40,20), "S20681C11.s20681c11f0");
    check_field_offset(lv, s20681c11f1, ABISELECT(44,24), "S20681C11.s20681c11f1");
    check_field_offset(lv, s20681c11f2, ABISELECT(56,36), "S20681C11.s20681c11f2");
    set_bf_and_test(lv, s20681c11f3, ABISELECT(64,40), 0, 16, 1, "S20681C11");
    set_bf_and_test(lv, s20681c11f3, ABISELECT(64,40), 0, 16, hide_sll(1LL<<15), "S20681C11");
    check_field_offset(lv, s20681c11f4, ABISELECT(68,44), "S20681C11.s20681c11f4");
    check_field_offset(lv, s20681c11f5, ABISELECT(72,48), "S20681C11.s20681c11f5");
    check_field_offset(lv, s20681c11f6, ABISELECT(88,56), "S20681C11.s20681c11f6");
    check_field_offset(lv, s20681c11f7, ABISELECT(96,60), "S20681C11.s20681c11f7");
    check_field_offset(lv, s20681c11f8, ABISELECT(456,276), "S20681C11.s20681c11f8");
    test_class_info(&lv, &cd_S20681C11);
    dp->~S20681C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20681C11(Test_S20681C11, "S20681C11", ABISELECT(560,336));

#else // __cplusplus

extern void _ZN9S20681C11C1Ev();
extern void _ZN9S20681C11D2Ev();
Name_Map name_map_S20681C11[] = {
  NSPAIR(_ZN9S20681C11C1Ev),
  NSPAIR(_ZN9S20681C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
static Base_Class bases_S20681C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(464,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(504,304), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20681C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20681C11[];
extern void _ZN9S20681C11D1Ev();
extern void _ZN9S20681C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev)();
extern void ABISELECT(_ZThn504_N9S20681C11D1Ev,_ZThn304_N9S20681C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev)();
extern void ABISELECT(_ZThn504_N9S20681C11D0Ev,_ZThn304_N9S20681C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20681C11[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&_ZN9S20681C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C11D0Ev,
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S20681C11[];
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C2__9S20681C11[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn504_N8S20681C2D1Ev,_ZThn304_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn504_N8S20681C2D0Ev,_ZThn304_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C2__9S20681C11[] = {
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
static  VTT_ENTRY vtt_S20681C11[] = {
  {&(_ZTV9S20681C11[4]),  4,11},
  {&(_tg__ZTV8S20681C2__9S20681C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C2__9S20681C11[3]),  3,5},
  {&(_ZTV9S20681C11[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S20681C11[];
extern  VTBL_ENTRY _ZTV9S20681C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C11[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S20681C2D0Ev,_ZThn304_N8S20681C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S20681C2D1Ev,_ZThn304_N8S20681C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S20681C11D0Ev,_ZThn304_N9S20681C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S20681C11D1Ev,_ZThn304_N9S20681C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20681C11 = {  "S20681C11", // class name
  bases_S20681C11, 3,
  &(vtc_S20681C11[0]), // expected_vtbl_contents
  &(vtt_S20681C11[0]), // expected_vtt_contents
  ABISELECT(560,336), // object size
  NSPAIRA(_ZTI9S20681C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20681C11),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20681C11),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20681C12  : virtual S3572C5 , S3572C4 , S20681C2 {
  char s20681c12f0;
  void *s20681c12f1[7];
  long double s20681c12f2;
  void *s20681c12f3[4];
  int s20681c12f4;
  char s20681c12f5;
  void *s20681c12f6;
  virtual  ~S20681C12(); // _ZN9S20681C12D2Ev
  virtual void  v1(); // _ZN9S20681C122v1Ev
  S20681C12(); // tgen
};
//SIG(-1 S20681C12) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} BC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}


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

static void Test_S20681C12()
{
  extern Class_Descriptor cd_S20681C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,46)];
    init_test(&cd_S20681C12, buf);
    S20681C12 *dp, &lv = *(dp=new (buf) S20681C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,180), "sizeof(S20681C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20681C12)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(224,124), "S20681C12");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*), ABISELECT(224,124), "S20681C12");
    /*is_ambiguous_... S20681C12::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S20681C12");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*), ABISELECT(264,148), "S20681C12");
    check_base_class_offset(lv, (S20681C2*), ABISELECT(56,32), "S20681C12");
    check_field_offset(lv, s20681c12f0, ABISELECT(96,52), "S20681C12.s20681c12f0");
    check_field_offset(lv, s20681c12f1, ABISELECT(104,56), "S20681C12.s20681c12f1");
    check_field_offset(lv, s20681c12f2, ABISELECT(160,84), "S20681C12.s20681c12f2");
    check_field_offset(lv, s20681c12f3, ABISELECT(176,96), "S20681C12.s20681c12f3");
    check_field_offset(lv, s20681c12f4, ABISELECT(208,112), "S20681C12.s20681c12f4");
    check_field_offset(lv, s20681c12f5, ABISELECT(212,116), "S20681C12.s20681c12f5");
    check_field_offset(lv, s20681c12f6, ABISELECT(216,120), "S20681C12.s20681c12f6");
    test_class_info(&lv, &cd_S20681C12);
    dp->~S20681C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20681C12(Test_S20681C12, "S20681C12", ABISELECT(320,180));

#else // __cplusplus

extern void _ZN9S20681C12C1Ev();
extern void _ZN9S20681C12D2Ev();
Name_Map name_map_S20681C12[] = {
  NSPAIR(_ZN9S20681C12C1Ev),
  NSPAIR(_ZN9S20681C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
static Base_Class bases_S20681C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(224,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
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3572C4,    ABISELECT(264,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20681C2,    ABISELECT(56,32), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20681C12[];
extern void _ZN9S20681C12D1Ev();
extern void _ZN9S20681C12D0Ev();
extern void _ZN9S20681C122v1Ev();
extern void ABISELECT(_ZThn56_N9S20681C12D1Ev,_ZThn32_N9S20681C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S20681C12D0Ev,_ZThn32_N9S20681C12D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C12D1Ev,_ZTv0_n12_N9S20681C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S20681C12D1Ev,_ZThn148_N9S20681C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20681C12D0Ev,_ZTv0_n12_N9S20681C12D0Ev)();
extern void ABISELECT(_ZThn264_N9S20681C12D0Ev,_ZThn148_N9S20681C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20681C12[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&_ZN9S20681C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20681C12D1Ev,_ZThn32_N9S20681C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20681C12D0Ev,_ZThn32_N9S20681C12D0Ev),
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C12D1Ev,_ZTv0_n12_N9S20681C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C12D0Ev,_ZTv0_n12_N9S20681C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S20681C12[];
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C2__9S20681C12[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S20681C2D1Ev,_ZThn116_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn208_N8S20681C2D0Ev,_ZThn116_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C2__9S20681C12[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
static  VTT_ENTRY vtt_S20681C12[] = {
  {&(_ZTV9S20681C12[4]),  4,18},
  {&(_tg__ZTV8S20681C2__9S20681C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C2__9S20681C12[3]),  3,5},
  {&(_ZTV9S20681C12[11]),  11,18},
  {&(_ZTV9S20681C12[16]),  16,18},
};
extern VTBL_ENTRY _ZTI9S20681C12[];
extern  VTBL_ENTRY _ZTV9S20681C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C12[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20681C2D0Ev,_ZThn116_N8S20681C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20681C2D1Ev,_ZThn116_N8S20681C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C12D0Ev,_ZTv0_n12_N9S20681C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S20681C12D0Ev,_ZThn148_N9S20681C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C12D1Ev,_ZTv0_n12_N9S20681C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S20681C12D1Ev,_ZThn148_N9S20681C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20681C12 = {  "S20681C12", // class name
  bases_S20681C12, 4,
  &(vtc_S20681C12[0]), // expected_vtbl_contents
  &(vtt_S20681C12[0]), // expected_vtt_contents
  ABISELECT(320,180), // object size
  NSPAIRA(_ZTI9S20681C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20681C12),18, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20681C12),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20681C10  : virtual S3572C4 , S20681C2 , virtual S20681C11 {
  ::S20681C12 s20681c10f0;
  virtual  ~S20681C10(); // _ZN9S20681C10D2Ev
  S20681C10(); // tgen
};
//SIG(-1 S20681C10) C1{ VBC2{ vd m FC3{ m Fp Fs Fi Fp Fl[2]} FC4{}} BC5{ VBC3 VBC2 Fc:1 Fp[3]} VBC6{ VBC3 VBC2 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC7{ VBC3 BC2 BC5 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}}


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

static void Test_S20681C10()
{
  extern Class_Descriptor cd_S20681C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,135)];
    init_test(&cd_S20681C10, buf);
    S20681C10 *dp, &lv = *(dp=new (buf) S20681C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,536), "sizeof(S20681C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20681C10)");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(368,200), "S20681C10");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*), ABISELECT(368,200), "S20681C10");
    check_base_class_offset(lv, (S3572C4*)(S20681C11*), ABISELECT(368,200), "S20681C10");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C11*), ABISELECT(368,200), "S20681C10");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*), ABISELECT(424,232), "S20681C10");
    check_base_class_offset(lv, (S3572C5*)(S20681C11*), ABISELECT(424,232), "S20681C10");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C11*), ABISELECT(424,232), "S20681C10");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*), 0, "S20681C10");
    check_base_class_offset(lv, (S20681C2*)(S20681C11*), ABISELECT(464,256), "S20681C10");
    check_base_class_offset(lv, (S20681C11*), ABISELECT(464,256), "S20681C10");
    check_field_offset(lv, s20681c10f0, ABISELECT(48,20), "S20681C10.s20681c10f0");
    test_class_info(&lv, &cd_S20681C10);
    dp->~S20681C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20681C10(Test_S20681C10, "S20681C10", ABISELECT(928,536));

#else // __cplusplus

extern void _ZN9S20681C10C1Ev();
extern void _ZN9S20681C10D2Ev();
Name_Map name_map_S20681C10[] = {
  NSPAIR(_ZN9S20681C10C1Ev),
  NSPAIR(_ZN9S20681C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C11;
extern VTBL_ENTRY _ZTI9S20681C11[];
extern  VTBL_ENTRY _ZTV9S20681C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C11[];
static Base_Class bases_S20681C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(368,200), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C5,    ABISELECT(424,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20681C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20681C2,    ABISELECT(464,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20681C11,    ABISELECT(464,256), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20681C10[];
extern void _ZN9S20681C10D1Ev();
extern void _ZN9S20681C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev)();
extern void ABISELECT(_ZThn368_N9S20681C10D1Ev,_ZThn200_N9S20681C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev)();
extern void ABISELECT(_ZThn368_N9S20681C10D0Ev,_ZThn200_N9S20681C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S20681C10D1Ev,_ZThn256_N9S20681C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev)();
extern void ABISELECT(_ZThn464_N9S20681C10D0Ev,_ZThn256_N9S20681C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20681C10[] = {
  ABISELECT(464,256),
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&_ZN9S20681C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C10D0Ev,
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev),
  ABISELECT(-464,-256),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S20681C10[];
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C2__9S20681C10[] = {
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn368_N8S20681C2D1Ev,_ZThn200_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn368_N8S20681C2D0Ev,_ZThn200_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C2__9S20681C10[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void _ZN9S20681C11D1Ev();
extern void _ZN9S20681C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C11__9S20681C10[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&_ZN9S20681C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C11D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C11__A1__9S20681C10[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C11__A1__9S20681C10[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C11__9S20681C10[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev),
};
static  VTT_ENTRY vtt_S20681C10[] = {
  {&(_ZTV9S20681C10[5]),  5,19},
  {&(_tg__ZTV8S20681C2__9S20681C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C2__9S20681C10[3]),  3,5},
  {&(_ZTV9S20681C10[10]),  10,19},
  {&(_ZTV9S20681C10[17]),  17,19},
  {&(_tg__ZTV9S20681C11__9S20681C10[4]),  4,6},
  {&(_tg__ZTV8S20681C29S20681C11__A1__9S20681C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C11__A1__9S20681C10[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C11__9S20681C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20681C10[];
extern  VTBL_ENTRY _ZTV9S20681C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C10[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S20681C2D0Ev,_ZThn200_N8S20681C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S20681C2D1Ev,_ZThn200_N8S20681C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S20681C10D0Ev,_ZThn256_N9S20681C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S20681C10D1Ev,_ZThn256_N9S20681C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20681C10D0Ev,_ZThn200_N9S20681C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20681C10D1Ev,_ZThn200_N9S20681C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20681C10 = {  "S20681C10", // class name
  bases_S20681C10, 5,
  &(vtc_S20681C10[0]), // expected_vtbl_contents
  &(vtt_S20681C10[0]), // expected_vtt_contents
  ABISELECT(928,536), // object size
  NSPAIRA(_ZTI9S20681C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20681C10),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20681C10),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20681C8  : virtual S20681C9 , S3572C4 , S20681C10 {
  int s20681c8f0[6];
  void *s20681c8f1[8];
  virtual  ~S20681C8(); // _ZN8S20681C8D2Ev
  S20681C8(); // tgen
};
//SIG(-1 S20681C8) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ VBC3 VBC5{ vd m FC3 FC6{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} BC5 BC7{ VBC5 BC4 VBC8{ VBC3 VBC5 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC9{ VBC3 BC5 BC4 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]}


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

static void Test_S20681C8()
{
  extern Class_Descriptor cd_S20681C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(79,185)];
    init_test(&cd_S20681C8, buf);
    S20681C8 *dp, &lv = *(dp=new (buf) S20681C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1248,736), "sizeof(S20681C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20681C8)");
    check_base_class_offset(lv, (S3572C5*)(S20681C9*), ABISELECT(648,380), "S20681C8");
    /*is_ambiguous_... S20681C8::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*), ABISELECT(648,380), "S20681C8");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C10*), ABISELECT(648,380), "S20681C8");
    check_base_class_offset(lv, (S3572C5*)(S20681C11*), ABISELECT(648,380), "S20681C8");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C11*), ABISELECT(648,380), "S20681C8");
    /*is_ambiguous_... S20681C8::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*), ABISELECT(728,424), "S20681C8");
    check_base_class_offset(lv, (S3572C4*)(S20681C10*), ABISELECT(728,424), "S20681C8");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C10*), ABISELECT(728,424), "S20681C8");
    check_base_class_offset(lv, (S3572C4*)(S20681C11*), ABISELECT(728,424), "S20681C8");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C11*), ABISELECT(728,424), "S20681C8");
    check_base_class_offset(lv, (S20681C2*)(S20681C9*), ABISELECT(688,404), "S20681C8");
    check_base_class_offset(lv, (S20681C9*), ABISELECT(520,288), "S20681C8");
    /*is_ambiguous_... S20681C8::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S20681C8");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C10*), ABISELECT(64,32), "S20681C8");
    check_base_class_offset(lv, (S20681C2*)(S20681C11*), ABISELECT(784,456), "S20681C8");
    check_base_class_offset(lv, (S20681C11*)(S20681C10*), ABISELECT(784,456), "S20681C8");
    check_base_class_offset(lv, (S20681C10*), ABISELECT(64,32), "S20681C8");
    check_field_offset(lv, s20681c8f0, ABISELECT(432,232), "S20681C8.s20681c8f0");
    check_field_offset(lv, s20681c8f1, ABISELECT(456,256), "S20681C8.s20681c8f1");
    test_class_info(&lv, &cd_S20681C8);
    dp->~S20681C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20681C8(Test_S20681C8, "S20681C8", ABISELECT(1248,736));

#else // __cplusplus

extern void _ZN8S20681C8C1Ev();
extern void _ZN8S20681C8D2Ev();
Name_Map name_map_S20681C8[] = {
  NSPAIR(_ZN8S20681C8C1Ev),
  NSPAIR(_ZN8S20681C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C9;
extern VTBL_ENTRY _ZTI8S20681C9[];
extern  VTBL_ENTRY _ZTV8S20681C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C11;
extern VTBL_ENTRY _ZTI9S20681C11[];
extern  VTBL_ENTRY _ZTV9S20681C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C11[];
extern Class_Descriptor cd_S20681C10;
extern VTBL_ENTRY _ZTI9S20681C10[];
extern  VTBL_ENTRY _ZTV9S20681C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C10[];
static Base_Class bases_S20681C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(648,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(728,424), //bcp->offset
    31, //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
    2, //immediately_derived
  0, 1},
  {&cd_S20681C2,    ABISELECT(688,404), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20681C9,    ABISELECT(520,288), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20681C2,    ABISELECT(64,32), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(784,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20681C11,    ABISELECT(784,456), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20681C10,    ABISELECT(64,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20681C8[];
extern void _ZN8S20681C8D1Ev();
extern void _ZN8S20681C8D0Ev();
extern void ABISELECT(_ZThn64_N8S20681C8D1Ev,_ZThn32_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S20681C8D0Ev,_ZThn32_N8S20681C8D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn520_N8S20681C8D1Ev,_ZThn288_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn520_N8S20681C8D0Ev,_ZThn288_N8S20681C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn688_N8S20681C8D1Ev,_ZThn404_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn688_N8S20681C8D0Ev,_ZThn404_N8S20681C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C8D1Ev,_ZTv0_n12_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn728_N8S20681C8D1Ev,_ZThn424_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C8D0Ev,_ZTv0_n12_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn728_N8S20681C8D0Ev,_ZThn424_N8S20681C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn784_N8S20681C8D1Ev,_ZThn456_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn784_N8S20681C8D0Ev,_ZThn456_N8S20681C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20681C8[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&_ZN8S20681C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C8D0Ev,
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20681C8D1Ev,_ZThn32_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20681C8D0Ev,_ZThn32_N8S20681C8D0Ev),
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev),
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev),
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C8D1Ev,_ZTv0_n12_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C8D0Ev,_ZTv0_n12_N8S20681C8D0Ev),
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S20681C8[];
extern void _ZN9S20681C10D1Ev();
extern void _ZN9S20681C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C10__8S20681C8[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&_ZN9S20681C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C10D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C10__A1__8S20681C8[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn664_N8S20681C2D1Ev,_ZThn392_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn664_N8S20681C2D0Ev,_ZThn392_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C10__A1__8S20681C8[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev)();
extern void ABISELECT(_ZThn664_N9S20681C10D1Ev,_ZThn392_N9S20681C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev)();
extern void ABISELECT(_ZThn664_N9S20681C10D0Ev,_ZThn392_N9S20681C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C10__8S20681C8[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev)();
extern void ABISELECT(_ZThn720_N9S20681C10D1Ev,_ZThn424_N9S20681C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev)();
extern void ABISELECT(_ZThn720_N9S20681C10D0Ev,_ZThn424_N9S20681C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C11__9S20681C10__8S20681C8[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev),
};
extern void _ZN8S20681C9D1Ev();
extern void _ZN8S20681C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C9__8S20681C8[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&_ZN8S20681C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C9D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S20681C9D1Ev,_ZThn116_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S20681C9D0Ev,_ZThn116_N8S20681C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C9__8S20681C8[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn208_N8S20681C9D1Ev,_ZThn136_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn208_N8S20681C9D0Ev,_ZThn136_N8S20681C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C9__8S20681C8[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev),
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C8[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S20681C2D1Ev,_ZThn20_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S20681C2D0Ev,_ZThn20_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C2__8S20681C8[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void _ZN9S20681C11D1Ev();
extern void _ZN9S20681C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C11__8S20681C8[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&_ZN9S20681C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C11D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C11__A2__8S20681C8[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C11__A2__8S20681C8[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C11__8S20681C8[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev),
};
static  VTT_ENTRY vtt_S20681C8[] = {
  {&(_ZTV8S20681C8[7]),  7,43},
  {&(_tg__ZTV9S20681C10__8S20681C8[5]),  5,7},
  {&(_tg__ZTV8S20681C29S20681C10__A1__8S20681C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C10__A1__8S20681C8[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C10__8S20681C8[3]),  3,5},
  {&(_tg__ZTV9S20681C11__9S20681C10__8S20681C8[5]),  5,7},
  {&(_ZTV8S20681C8[22]),  22,43},
  {&(_ZTV8S20681C8[29]),  29,43},
  {&(_ZTV8S20681C8[34]),  34,43},
  {&(_ZTV8S20681C8[14]),  14,43},
  {&(_ZTV8S20681C8[41]),  41,43},
  {&(_tg__ZTV8S20681C9__8S20681C8[5]),  5,7},
  {&(_tg__ZTV8S20681C2__8S20681C9__8S20681C8[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C9__8S20681C8[3]),  3,5},
  {&(_tg__ZTV8S20681C2__8S20681C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C2__8S20681C8[3]),  3,5},
  {&(_tg__ZTV9S20681C11__8S20681C8[4]),  4,6},
  {&(_tg__ZTV8S20681C29S20681C11__A2__8S20681C8[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C11__A2__8S20681C8[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C11__8S20681C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20681C8[];
extern  VTBL_ENTRY _ZTV8S20681C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C8[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20681C9D0Ev,_ZThn136_N8S20681C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20681C9D1Ev,_ZThn136_N8S20681C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20681C9D0Ev,_ZThn116_N8S20681C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20681C9D1Ev,_ZThn116_N8S20681C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20681C10D0Ev,_ZThn424_N9S20681C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20681C10D1Ev,_ZThn424_N9S20681C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S20681C10D0Ev,_ZThn392_N9S20681C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S20681C10D1Ev,_ZThn392_N9S20681C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20681C2D0Ev,_ZThn20_N8S20681C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S20681C2D0Ev,_ZThn392_N8S20681C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20681C2D1Ev,_ZThn20_N8S20681C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S20681C2D1Ev,_ZThn392_N8S20681C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C8D0Ev,_ZTv0_n12_N8S20681C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S20681C8D0Ev,_ZThn424_N8S20681C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C8D1Ev,_ZTv0_n12_N8S20681C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S20681C8D1Ev,_ZThn424_N8S20681C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S20681C8D0Ev,_ZThn456_N8S20681C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S20681C8D0Ev,_ZThn404_N8S20681C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S20681C8D1Ev,_ZThn456_N8S20681C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S20681C8D1Ev,_ZThn404_N8S20681C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S20681C8D0Ev,_ZThn288_N8S20681C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S20681C8D1Ev,_ZThn288_N8S20681C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20681C8 = {  "S20681C8", // class name
  bases_S20681C8, 9,
  &(vtc_S20681C8[0]), // expected_vtbl_contents
  &(vtt_S20681C8[0]), // expected_vtt_contents
  ABISELECT(1248,736), // object size
  NSPAIRA(_ZTI8S20681C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20681C8),43, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20681C8),20, //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  S20681C13  : S20681C2 , virtual S20681C12 {
  int s20681c13f0;
  void *s20681c13f1;
  virtual  ~S20681C13(); // _ZN9S20681C13D2Ev
  S20681C13(); // tgen
};
//SIG(-1 S20681C13) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} VBC6{ VBC3 BC4 BC2 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp}


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

static void Test_S20681C13()
{
  extern Class_Descriptor cd_S20681C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,53)];
    init_test(&cd_S20681C13, buf);
    S20681C13 *dp, &lv = *(dp=new (buf) S20681C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,208), "sizeof(S20681C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20681C13)");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*), ABISELECT(56,28), "S20681C13");
    check_base_class_offset(lv, (S3572C5*)(S20681C12*), ABISELECT(56,28), "S20681C13");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C12*), ABISELECT(56,28), "S20681C13");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*), ABISELECT(96,52), "S20681C13");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C12*), ABISELECT(96,52), "S20681C13");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*), 0, "S20681C13");
    /*is_ambiguous_... S20681C12::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C12*), ABISELECT(160,84), "S20681C13");
    check_base_class_offset(lv, (S20681C2*)(S20681C12*), ABISELECT(216,116), "S20681C13");
    check_base_class_offset(lv, (S20681C12*), ABISELECT(160,84), "S20681C13");
    check_field_offset(lv, s20681c13f0, ABISELECT(40,20), "S20681C13.s20681c13f0");
    check_field_offset(lv, s20681c13f1, ABISELECT(48,24), "S20681C13.s20681c13f1");
    test_class_info(&lv, &cd_S20681C13);
    dp->~S20681C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20681C13(Test_S20681C13, "S20681C13", ABISELECT(384,208));

#else // __cplusplus

extern void _ZN9S20681C13C1Ev();
extern void _ZN9S20681C13D2Ev();
Name_Map name_map_S20681C13[] = {
  NSPAIR(_ZN9S20681C13C1Ev),
  NSPAIR(_ZN9S20681C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C12;
extern VTBL_ENTRY _ZTI9S20681C12[];
extern  VTBL_ENTRY _ZTV9S20681C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C12[];
static Base_Class bases_S20681C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(96,52), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20681C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C4,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(216,116), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20681C12,    ABISELECT(160,84), //bcp->offset
    12, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20681C13[];
extern void _ZN9S20681C13D1Ev();
extern void _ZN9S20681C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20681C13D1Ev,_ZTv0_n12_N9S20681C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S20681C13D1Ev,_ZThn52_N9S20681C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20681C13D0Ev,_ZTv0_n12_N9S20681C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S20681C13D0Ev,_ZThn52_N9S20681C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S20681C13D1Ev,_ZThn84_N9S20681C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S20681C13D0Ev,_ZThn84_N9S20681C13D0Ev)() __attribute__((weak));
extern void _ZN9S20681C122v1Ev();
extern void ABISELECT(_ZTvn56_n40_N9S20681C13D1Ev,_ZTvn32_n20_N9S20681C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S20681C13D0Ev,_ZTvn32_n20_N9S20681C13D0Ev)();
static  VTBL_ENTRY vtc_S20681C13[] = {
  ABISELECT(160,84),
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&_ZN9S20681C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C13D0Ev,
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C13D1Ev,_ZTv0_n12_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C13D0Ev,_ZTv0_n12_N9S20681C13D0Ev),
  0,
  ABISELECT(-160,-84),
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S20681C13D1Ev,_ZTvn32_n20_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S20681C13D0Ev,_ZTvn32_n20_N9S20681C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S20681C13[];
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C2__9S20681C13[] = {
  ABISELECT(96,52),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20681C2D1Ev,_ZThn52_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20681C2D0Ev,_ZThn52_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C2__9S20681C13[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void _ZN9S20681C12D1Ev();
extern void _ZN9S20681C12D0Ev();
extern void _ZN9S20681C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C12__9S20681C13[] = {
  ABISELECT(-64,-32),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&_ZN9S20681C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C12__A1__9S20681C13[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C12__A1__9S20681C13[] = {
  ABISELECT(120,64),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZThn56_N9S20681C12D1Ev,_ZThn32_N9S20681C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S20681C12D0Ev,_ZThn32_N9S20681C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C2__9S20681C12__9S20681C13[] = {
  ABISELECT(-120,-64),
  ABISELECT(-160,-88),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20681C12D1Ev,_ZThn32_N9S20681C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20681C12D0Ev,_ZThn32_N9S20681C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C12D1Ev,_ZTv0_n12_N9S20681C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C12D0Ev,_ZTv0_n12_N9S20681C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S20681C12__9S20681C13[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C12D1Ev,_ZTv0_n12_N9S20681C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C12D0Ev,_ZTv0_n12_N9S20681C12D0Ev),
};
static  VTT_ENTRY vtt_S20681C13[] = {
  {&(_ZTV9S20681C13[5]),  5,27},
  {&(_tg__ZTV8S20681C2__9S20681C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C2__9S20681C13[3]),  3,5},
  {&(_ZTV9S20681C13[10]),  10,27},
  {&(_ZTV9S20681C13[18]),  18,27},
  {&(_ZTV9S20681C13[25]),  25,27},
  {&(_tg__ZTV9S20681C12__9S20681C13[4]),  4,7},
  {&(_tg__ZTV8S20681C29S20681C12__A1__9S20681C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C12__A1__9S20681C13[3]),  3,5},
  {&(_tg__ZTV8S20681C2__9S20681C12__9S20681C13[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S20681C12__9S20681C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20681C13[];
extern  VTBL_ENTRY _ZTV9S20681C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C13[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20681C2D0Ev,_ZThn52_N8S20681C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20681C2D1Ev,_ZThn52_N8S20681C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20681C13D0Ev,_ZThn84_N9S20681C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20681C13D1Ev,_ZThn84_N9S20681C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C13D0Ev,_ZTv0_n12_N9S20681C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20681C13D0Ev,_ZThn52_N9S20681C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C13D1Ev,_ZTv0_n12_N9S20681C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20681C13D1Ev,_ZThn52_N9S20681C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20681C13 = {  "S20681C13", // class name
  bases_S20681C13, 6,
  &(vtc_S20681C13[0]), // expected_vtbl_contents
  &(vtt_S20681C13[0]), // expected_vtt_contents
  ABISELECT(384,208), // object size
  NSPAIRA(_ZTI9S20681C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20681C13),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20681C13),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20681C7  : virtual S20681C8 , S20681C9 , virtual S20681C13 {
  int s20681c7f0[4];
  ::S3572C22 s20681c7f1;
  ::S3572C28 s20681c7f2;
  short s20681c7f3:16;
  int s20681c7f4;
  int s20681c7f5;
  virtual  ~S20681C7(); // _ZN8S20681C7D2Ev
  virtual void  v2(); // _ZN8S20681C72v2Ev
  virtual void  v3(); // _ZN8S20681C72v3Ev
  virtual void  v4(); // _ZN8S20681C72v4Ev
  S20681C7(); // tgen
};
//SIG(-1 S20681C7) C1{ VBC2{ VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ VBC4 VBC6{ vd m FC4 FC7{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} BC6 BC8{ VBC6 BC5 VBC9{ VBC4 VBC6 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC10{ VBC4 BC6 BC5 vd v4 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC3 VBC11{ BC5 VBC10 vd Fi Fp} vd v1 v2 v3 Fi[4] FC12{ m Fp Fi[2] FU13{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} FU14{ m Fi Fi[6] Fc Fi Fi Fp Fp[5] Fi Fc FL Fp Fp Fp} Fs:16 Fi Fi}


 S20681C7 ::~S20681C7(){ note_dtor("S20681C7", this);}
void  S20681C7 ::v2(){vfunc_called(this, "_ZN8S20681C72v2Ev");}
void  S20681C7 ::v3(){vfunc_called(this, "_ZN8S20681C72v3Ev");}
void  S20681C7 ::v4(){vfunc_called(this, "_ZN8S20681C72v4Ev");}
S20681C7 ::S20681C7(){ note_ctor("S20681C7", this);} // tgen

static void Test_S20681C7()
{
  extern Class_Descriptor cd_S20681C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(116,272)];
    init_test(&cd_S20681C7, buf);
    S20681C7 *dp, &lv = *(dp=new (buf) S20681C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1840,1084), "sizeof(S20681C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20681C7)");
    /*is_ambiguous_... S20681C7::S20681C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C9*), ABISELECT(952,576), "S20681C7");
    /*is_ambiguous_... S20681C7::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*), ABISELECT(952,576), "S20681C7");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C10*)(S20681C8*), ABISELECT(952,576), "S20681C7");
    check_base_class_offset(lv, (S3572C5*)(S20681C11*), ABISELECT(952,576), "S20681C7");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C11*), ABISELECT(952,576), "S20681C7");
    /*is_ambiguous_... S20681C7::S20681C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C9*), ABISELECT(952,576), "S20681C7");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C13*), ABISELECT(952,576), "S20681C7");
    check_base_class_offset(lv, (S3572C5*)(S20681C12*), ABISELECT(952,576), "S20681C7");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C12*), ABISELECT(952,576), "S20681C7");
    /*is_ambiguous_... S20681C7::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*), ABISELECT(1032,620), "S20681C7");
    check_base_class_offset(lv, (S3572C4*)(S20681C10*)(S20681C8*), ABISELECT(1032,620), "S20681C7");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C10*)(S20681C8*), ABISELECT(1032,620), "S20681C7");
    check_base_class_offset(lv, (S3572C4*)(S20681C11*), ABISELECT(1032,620), "S20681C7");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C11*), ABISELECT(1032,620), "S20681C7");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C13*), ABISELECT(1032,620), "S20681C7");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C12*), ABISELECT(1032,620), "S20681C7");
    /*is_ambiguous_... S20681C7::S20681C9 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C9*), ABISELECT(992,600), "S20681C7");
    /*is_ambiguous_... S20681C7::S20681C9 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C9*), ABISELECT(992,600), "S20681C7");
    check_base_class_offset(lv, (S20681C9*)(S20681C8*), ABISELECT(824,484), "S20681C7");
    /*is_ambiguous_... S20681C8::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C8*), ABISELECT(304,196), "S20681C7");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C10*)(S20681C8*), ABISELECT(368,228), "S20681C7");
    check_base_class_offset(lv, (S20681C2*)(S20681C11*), ABISELECT(1088,652), "S20681C7");
    check_base_class_offset(lv, (S20681C11*)(S20681C10*)(S20681C8*), ABISELECT(1088,652), "S20681C7");
    check_base_class_offset(lv, (S20681C10*)(S20681C8*), ABISELECT(368,228), "S20681C7");
    check_base_class_offset(lv, (S20681C8*), ABISELECT(304,196), "S20681C7");
    /*is_ambiguous_... S20681C7::S20681C9 */ AMB_check_base_class_offset(lv, (S20681C9*), 0, "S20681C7");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C13*), ABISELECT(1552,932), "S20681C7");
    /*is_ambiguous_... S20681C12::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C12*), ABISELECT(1616,960), "S20681C7");
    check_base_class_offset(lv, (S20681C2*)(S20681C12*), ABISELECT(1672,992), "S20681C7");
    check_base_class_offset(lv, (S20681C12*)(S20681C13*), ABISELECT(1616,960), "S20681C7");
    check_base_class_offset(lv, (S20681C13*), ABISELECT(1552,932), "S20681C7");
    check_field_offset(lv, s20681c7f0, ABISELECT(128,92), "S20681C7.s20681c7f0");
    check_field_offset(lv, s20681c7f1, ABISELECT(144,108), "S20681C7.s20681c7f1");
    check_field_offset(lv, s20681c7f2, ABISELECT(240,160), "S20681C7.s20681c7f2");
    set_bf_and_test(lv, s20681c7f3, ABISELECT(280,184), 0, 16, 1, "S20681C7");
    set_bf_and_test(lv, s20681c7f3, ABISELECT(280,184), 0, 16, hide_sll(1LL<<15), "S20681C7");
    check_field_offset(lv, s20681c7f4, ABISELECT(284,188), "S20681C7.s20681c7f4");
    check_field_offset(lv, s20681c7f5, ABISELECT(288,192), "S20681C7.s20681c7f5");
    test_class_info(&lv, &cd_S20681C7);
    dp->~S20681C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20681C7(Test_S20681C7, "S20681C7", ABISELECT(1840,1084));

#else // __cplusplus

extern void _ZN8S20681C7C1Ev();
extern void _ZN8S20681C7D2Ev();
Name_Map name_map_S20681C7[] = {
  NSPAIR(_ZN8S20681C7C1Ev),
  NSPAIR(_ZN8S20681C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C9;
extern VTBL_ENTRY _ZTI8S20681C9[];
extern  VTBL_ENTRY _ZTV8S20681C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C11;
extern VTBL_ENTRY _ZTI9S20681C11[];
extern  VTBL_ENTRY _ZTV9S20681C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C11[];
extern Class_Descriptor cd_S20681C10;
extern VTBL_ENTRY _ZTI9S20681C10[];
extern  VTBL_ENTRY _ZTV9S20681C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C10[];
extern Class_Descriptor cd_S20681C8;
extern VTBL_ENTRY _ZTI8S20681C8[];
extern  VTBL_ENTRY _ZTV8S20681C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C8[];
extern Class_Descriptor cd_S20681C9;
extern VTBL_ENTRY _ZTI8S20681C9[];
extern  VTBL_ENTRY _ZTV8S20681C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C9[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C12;
extern VTBL_ENTRY _ZTI9S20681C12[];
extern  VTBL_ENTRY _ZTV9S20681C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C12[];
extern Class_Descriptor cd_S20681C13;
extern VTBL_ENTRY _ZTI9S20681C13[];
extern  VTBL_ENTRY _ZTV9S20681C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C13[];
static Base_Class bases_S20681C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(952,576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(1032,620), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20681C2,    ABISELECT(992,600), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20681C9,    ABISELECT(824,484), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(368,228), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(1088,652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20681C11,    ABISELECT(1088,652), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20681C10,    ABISELECT(368,228), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20681C8,    ABISELECT(304,196), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20681C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20681C2,    ABISELECT(1552,932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(1616,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
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(1672,992), //bcp->offset
    76, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20681C12,    ABISELECT(1616,960), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20681C13,    ABISELECT(1552,932), //bcp->offset
    59, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20681C7[];
extern void _ZN8S20681C7D1Ev();
extern void _ZN8S20681C7D0Ev();
extern void _ZN8S20681C72v2Ev();
extern void _ZN8S20681C72v3Ev();
extern void _ZN8S20681C72v4Ev();
extern void ABISELECT(_ZTv0_n64_N8S20681C7D1Ev,_ZTv0_n32_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn304_N8S20681C7D1Ev,_ZThn196_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20681C7D0Ev,_ZTv0_n32_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn304_N8S20681C7D0Ev,_ZThn196_N8S20681C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S20681C7D1Ev,_ZTvn32_n32_N8S20681C7D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S20681C7D0Ev,_ZTvn32_n32_N8S20681C7D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn824_N8S20681C7D1Ev,_ZThn484_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn824_N8S20681C7D0Ev,_ZThn484_N8S20681C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn992_N8S20681C7D1Ev,_ZThn600_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn992_N8S20681C7D0Ev,_ZThn600_N8S20681C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C7D1Ev,_ZTv0_n12_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn1032_N8S20681C7D1Ev,_ZThn620_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C7D0Ev,_ZTv0_n12_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn1032_N8S20681C7D0Ev,_ZThn620_N8S20681C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn1088_N8S20681C7D1Ev,_ZThn652_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn1088_N8S20681C7D0Ev,_ZThn652_N8S20681C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn1552_N8S20681C7D1Ev,_ZThn932_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn1552_N8S20681C7D0Ev,_ZThn932_N8S20681C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn1616_N8S20681C7D1Ev,_ZThn960_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn1616_N8S20681C7D0Ev,_ZThn960_N8S20681C7D0Ev)() __attribute__((weak));
extern void _ZN9S20681C122v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S20681C7D1Ev,_ZTvn32_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S20681C7D0Ev,_ZTvn32_n20_N8S20681C7D0Ev)();
static  VTBL_ENTRY vtc_S20681C7[] = {
  ABISELECT(1616,960),
  ABISELECT(1552,932),
  ABISELECT(1088,652),
  ABISELECT(824,484),
  ABISELECT(304,196),
  ABISELECT(1032,620),
  ABISELECT(992,600),
  ABISELECT(952,576),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&_ZN8S20681C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v3Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v4Ev,
  ABISELECT(-304,-196),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C7D1Ev,_ZTv0_n32_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C7D0Ev,_ZTv0_n32_N8S20681C7D0Ev),
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C7D1Ev,_ZTvn32_n32_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C7D0Ev,_ZTvn32_n32_N8S20681C7D0Ev),
  ABISELECT(-824,-484),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-824,-484),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev),
  ABISELECT(-992,-600),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-992,-600),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev),
  ABISELECT(-1032,-620),
  ABISELECT(-1032,-620),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C7D1Ev,_ZTv0_n12_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C7D0Ev,_ZTv0_n12_N8S20681C7D0Ev),
  ABISELECT(-1088,-652),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-1088,-652),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev),
  ABISELECT(-1552,-932),
  ABISELECT(64,28),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-1552,-932),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev),
  0,
  ABISELECT(-1616,-960),
  ABISELECT(-584,-340),
  ABISELECT(-664,-384),
  ABISELECT(-1616,-960),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
  ABISELECT(-640,-372),
  ABISELECT(-720,-416),
  ABISELECT(-1672,-992),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C7D1Ev,_ZTvn32_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C7D0Ev,_ZTvn32_n20_N8S20681C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S20681C7[];
extern void _ZN8S20681C9D1Ev();
extern void _ZN8S20681C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C9__A__8S20681C7[] = {
  ABISELECT(1032,620),
  ABISELECT(992,600),
  ABISELECT(952,576),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&_ZN8S20681C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C9D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn992_N8S20681C9D1Ev,_ZThn600_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn992_N8S20681C9D0Ev,_ZThn600_N8S20681C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C9__A__8S20681C7[] = {
  ABISELECT(-992,-600),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-992,-600),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn1032_N8S20681C9D1Ev,_ZThn620_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn1032_N8S20681C9D0Ev,_ZThn620_N8S20681C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C9__A__8S20681C7[] = {
  ABISELECT(-1032,-620),
  ABISELECT(-1032,-620),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev),
};
extern void _ZN8S20681C8D1Ev();
extern void _ZN8S20681C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C8__8S20681C7[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&_ZN8S20681C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C8D0Ev,
};
extern void _ZN9S20681C10D1Ev();
extern void _ZN9S20681C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C108S20681C8__8S20681C7[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&_ZN9S20681C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C10D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C108S20681C8__A1__8S20681C7[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn664_N8S20681C2D1Ev,_ZThn392_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn664_N8S20681C2D0Ev,_ZThn392_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C108S20681C8__A1__8S20681C7[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev)();
extern void ABISELECT(_ZThn664_N9S20681C10D1Ev,_ZThn392_N9S20681C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev)();
extern void ABISELECT(_ZThn664_N9S20681C10D0Ev,_ZThn392_N9S20681C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C108S20681C8__8S20681C7[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev)();
extern void ABISELECT(_ZThn720_N9S20681C10D1Ev,_ZThn424_N9S20681C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev)();
extern void ABISELECT(_ZThn720_N9S20681C10D0Ev,_ZThn424_N9S20681C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C11__9S20681C108S20681C8__8S20681C7[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn520_N8S20681C8D1Ev,_ZThn288_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn520_N8S20681C8D0Ev,_ZThn288_N8S20681C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C9__8S20681C8__8S20681C7[] = {
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn688_N8S20681C8D1Ev,_ZThn404_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn688_N8S20681C8D0Ev,_ZThn404_N8S20681C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C8__8S20681C7[] = {
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C8D1Ev,_ZTv0_n12_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn728_N8S20681C8D1Ev,_ZThn424_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C8D0Ev,_ZTv0_n12_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn728_N8S20681C8D0Ev,_ZThn424_N8S20681C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C8__8S20681C7[] = {
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C8D1Ev,_ZTv0_n12_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C8D0Ev,_ZTv0_n12_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZThn64_N8S20681C8D1Ev,_ZThn32_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S20681C8D0Ev,_ZThn32_N8S20681C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20681C10__8S20681C8__8S20681C7[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20681C8D1Ev,_ZThn32_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20681C8D0Ev,_ZThn32_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn784_N8S20681C8D1Ev,_ZThn456_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn784_N8S20681C8D0Ev,_ZThn456_N8S20681C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C11__8S20681C8__8S20681C7[] = {
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev),
};
extern void _ZN8S20681C9D1Ev();
extern void _ZN8S20681C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C9__8S20681C7[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&_ZN8S20681C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C9D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S20681C9D1Ev,_ZThn116_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S20681C9D0Ev,_ZThn116_N8S20681C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C9__8S20681C7[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn208_N8S20681C9D1Ev,_ZThn136_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn208_N8S20681C9D0Ev,_ZThn136_N8S20681C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C9__8S20681C7[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev),
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C7[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S20681C2D1Ev,_ZThn20_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S20681C2D0Ev,_ZThn20_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C2__8S20681C7[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void _ZN9S20681C11D1Ev();
extern void _ZN9S20681C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C11__8S20681C7[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&_ZN9S20681C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C11D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C11__A2__8S20681C7[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C11__A2__8S20681C7[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C11__8S20681C7[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev),
};
extern void _ZN9S20681C13D1Ev();
extern void _ZN9S20681C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C13__8S20681C7[] = {
  ABISELECT(64,28),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&_ZN9S20681C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C13D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C13__A3__8S20681C7[] = {
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C13__A3__8S20681C7[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C13D1Ev,_ZTv0_n12_N9S20681C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C13D0Ev,_ZTv0_n12_N9S20681C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C13__8S20681C7[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C13D1Ev,_ZTv0_n12_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C13D0Ev,_ZTv0_n12_N9S20681C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20681C13D1Ev,_ZThn28_N9S20681C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S20681C13D0Ev,_ZThn28_N9S20681C13D0Ev)() __attribute__((weak));
extern void _ZN9S20681C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C12__9S20681C13__8S20681C7[] = {
  0,
  ABISELECT(-64,-28),
  ABISELECT(-584,-340),
  ABISELECT(-664,-384),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S20681C13D1Ev,_ZTvn32_n20_N9S20681C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S20681C13D0Ev,_ZTvn32_n20_N9S20681C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C12__A1__9S20681C13__8S20681C7[] = {
  ABISELECT(-640,-372),
  ABISELECT(-720,-416),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S20681C13D1Ev,_ZTvn32_n20_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S20681C13D0Ev,_ZTvn32_n20_N9S20681C13D0Ev),
};
extern void _ZN9S20681C12D1Ev();
extern void _ZN9S20681C12D0Ev();
extern void _ZN9S20681C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C12__8S20681C7[] = {
  ABISELECT(-584,-340),
  ABISELECT(-664,-384),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&_ZN9S20681C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C12__A4__8S20681C7[] = {
  ABISELECT(-640,-372),
  ABISELECT(-720,-416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C12__A4__8S20681C7[] = {
  ABISELECT(640,372),
  ABISELECT(640,372),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZThn56_N9S20681C12D1Ev,_ZThn32_N9S20681C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S20681C12D0Ev,_ZThn32_N9S20681C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C2__9S20681C12__8S20681C7[] = {
  ABISELECT(-640,-372),
  ABISELECT(-720,-416),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20681C12D1Ev,_ZThn32_N9S20681C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20681C12D0Ev,_ZThn32_N9S20681C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C12D1Ev,_ZTv0_n12_N9S20681C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C12D0Ev,_ZTv0_n12_N9S20681C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S20681C12__8S20681C7[] = {
  ABISELECT(584,340),
  ABISELECT(584,340),
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C12D1Ev,_ZTv0_n12_N9S20681C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C12D0Ev,_ZTv0_n12_N9S20681C12D0Ev),
};
static  VTT_ENTRY vtt_S20681C7[] = {
  {&(_ZTV8S20681C7[10]),  10,82},
  {&(_tg__ZTV8S20681C9__A__8S20681C7[5]),  5,7},
  {&(_tg__ZTV8S20681C2__8S20681C9__A__8S20681C7[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C9__A__8S20681C7[3]),  3,5},
  {&(_ZTV8S20681C7[23]),  23,82},
  {&(_ZTV8S20681C7[38]),  38,82},
  {&(_ZTV8S20681C7[45]),  45,82},
  {&(_ZTV8S20681C7[50]),  50,82},
  {&(_ZTV8S20681C7[30]),  30,82},
  {&(_ZTV8S20681C7[57]),  57,82},
  {&(_ZTV8S20681C7[65]),  65,82},
  {&(_ZTV8S20681C7[73]),  73,82},
  {&(_ZTV8S20681C7[80]),  80,82},
  {&(_tg__ZTV8S20681C8__8S20681C7[7]),  7,9},
  {&(_tg__ZTV9S20681C108S20681C8__8S20681C7[5]),  5,7},
  {&(_tg__ZTV8S20681C29S20681C108S20681C8__A1__8S20681C7[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C108S20681C8__A1__8S20681C7[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C108S20681C8__8S20681C7[3]),  3,5},
  {&(_tg__ZTV9S20681C11__9S20681C108S20681C8__8S20681C7[5]),  5,7},
  {&(_tg__ZTV8S20681C9__8S20681C8__8S20681C7[6]),  6,8},
  {&(_tg__ZTV8S20681C2__8S20681C8__8S20681C7[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C8__8S20681C7[3]),  3,5},
  {&(_tg__ZTV9S20681C10__8S20681C8__8S20681C7[5]),  5,7},
  {&(_tg__ZTV9S20681C11__8S20681C8__8S20681C7[5]),  5,7},
  {&(_tg__ZTV8S20681C9__8S20681C7[5]),  5,7},
  {&(_tg__ZTV8S20681C2__8S20681C9__8S20681C7[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C9__8S20681C7[3]),  3,5},
  {&(_tg__ZTV8S20681C2__8S20681C7[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C2__8S20681C7[3]),  3,5},
  {&(_tg__ZTV9S20681C11__8S20681C7[4]),  4,6},
  {&(_tg__ZTV8S20681C29S20681C11__A2__8S20681C7[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C11__A2__8S20681C7[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C11__8S20681C7[3]),  3,5},
  {&(_tg__ZTV9S20681C13__8S20681C7[5]),  5,7},
  {&(_tg__ZTV8S20681C29S20681C13__A3__8S20681C7[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C13__A3__8S20681C7[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C13__8S20681C7[3]),  3,5},
  {&(_tg__ZTV9S20681C12__9S20681C13__8S20681C7[6]),  6,9},
  {&(_tg__ZTV8S20681C29S20681C12__A1__9S20681C13__8S20681C7[4]),  4,6},
  {&(_tg__ZTV9S20681C12__8S20681C7[4]),  4,7},
  {&(_tg__ZTV8S20681C29S20681C12__A4__8S20681C7[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C12__A4__8S20681C7[3]),  3,5},
  {&(_tg__ZTV8S20681C2__9S20681C12__8S20681C7[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S20681C12__8S20681C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20681C7[];
extern  VTBL_ENTRY _ZTV8S20681C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C7[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20681C13D0Ev,_ZThn28_N9S20681C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20681C13D1Ev,_ZThn28_N9S20681C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C8D0Ev,_ZTv0_n12_N8S20681C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S20681C8D0Ev,_ZThn424_N8S20681C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C8D1Ev,_ZTv0_n12_N8S20681C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S20681C8D1Ev,_ZThn424_N8S20681C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S20681C8D0Ev,_ZThn456_N8S20681C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S20681C8D0Ev,_ZThn404_N8S20681C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S20681C8D1Ev,_ZThn456_N8S20681C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S20681C8D1Ev,_ZThn404_N8S20681C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S20681C8D0Ev,_ZThn288_N8S20681C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S20681C8D1Ev,_ZThn288_N8S20681C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20681C10D0Ev,_ZThn424_N9S20681C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20681C10D1Ev,_ZThn424_N9S20681C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S20681C10D0Ev,_ZThn392_N9S20681C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S20681C10D1Ev,_ZThn392_N9S20681C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20681C2D0Ev,_ZThn20_N8S20681C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S20681C2D0Ev,_ZThn392_N8S20681C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20681C2D1Ev,_ZThn20_N8S20681C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S20681C2D1Ev,_ZThn392_N8S20681C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20681C9D0Ev,_ZThn136_N8S20681C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N8S20681C9D0Ev,_ZThn620_N8S20681C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20681C9D1Ev,_ZThn136_N8S20681C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N8S20681C9D1Ev,_ZThn620_N8S20681C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20681C9D0Ev,_ZThn116_N8S20681C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20681C9D0Ev,_ZThn600_N8S20681C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20681C9D1Ev,_ZThn116_N8S20681C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20681C9D1Ev,_ZThn600_N8S20681C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C7D0Ev,_ZTv0_n12_N8S20681C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N8S20681C7D0Ev,_ZThn620_N8S20681C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C7D1Ev,_ZTv0_n12_N8S20681C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N8S20681C7D1Ev,_ZThn620_N8S20681C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1616_N8S20681C7D0Ev,_ZThn960_N8S20681C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S20681C7D0Ev,_ZThn652_N8S20681C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20681C7D0Ev,_ZThn600_N8S20681C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1616_N8S20681C7D1Ev,_ZThn960_N8S20681C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S20681C7D1Ev,_ZThn652_N8S20681C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20681C7D1Ev,_ZThn600_N8S20681C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N8S20681C7D0Ev,_ZThn932_N8S20681C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S20681C7D0Ev,_ZThn484_N8S20681C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N8S20681C7D1Ev,_ZThn932_N8S20681C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S20681C7D1Ev,_ZThn484_N8S20681C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C7D0Ev,_ZTv0_n32_N8S20681C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20681C7D0Ev,_ZThn196_N8S20681C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C7D1Ev,_ZTv0_n32_N8S20681C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20681C7D1Ev,_ZThn196_N8S20681C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20681C7 = {  "S20681C7", // class name
  bases_S20681C7, 16,
  &(vtc_S20681C7[0]), // expected_vtbl_contents
  &(vtt_S20681C7[0]), // expected_vtt_contents
  ABISELECT(1840,1084), // object size
  NSPAIRA(_ZTI8S20681C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20681C7),82, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20681C7),44, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20681C6  : virtual S20681C7 , virtual S3572C24 {
  int s20681c6f0;
  char s20681c6f1;
  void *s20681c6f2;
  unsigned char s20681c6f3:1;
  int s20681c6f4:3;
  ::S3572C17 s20681c6f5;
  ::S19568C14 s20681c6f6[5];
  __tsi64 s20681c6f7;
  ~S20681C6(); // tgen
  S20681C6(); // tgen
};
//SIG(-1 S20681C6) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m Fp Fs Fi Fp Fl[2]} VBC6{ VBC5 VBC7{ vd m FC5 FC8{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} BC7 BC9{ VBC7 BC6 VBC10{ VBC5 VBC7 BC6 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd FC11{ VBC5 BC7 BC6 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC4 VBC12{ BC6 VBC11 vd Fi Fp} vd v2 v3 v4 Fi[4] FC13{ m Fp Fi[2] FU14{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} FU15{ m Fi Fi[6] Fc Fi Fi Fp Fp[5] Fi Fc FL Fp Fp Fp} Fs:16 Fi Fi} VBC16{ vd m Fi[4] FL Fi FC17{ VBC5 VBC7 Fc:1 Fp[3]} Fi FD Fi Fi FL FL Fs} Fi Fc Fp Fc:1 Fi:3 FC18{ vd m FC19{ VBC5 VBC17 vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} FC20{ VBC5 VBC7 BC17 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} FC21{ VBC22{ VBC5 BC7 BC23{ VBC5 VBC7 Fc:1 Fp[3]} vd v6 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v5 Fi Fp Fi:2 FD Fp}[5] FL}


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

static void Test_S20681C6()
{
  extern Class_Descriptor cd_S20681C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(311,722)];
    init_test(&cd_S20681C6, buf);
    S20681C6 *dp, &lv = *(dp=new (buf) S20681C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4960,2884), "sizeof(S20681C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20681C6)");
    /*is_ambiguous_... S20681C6::S20681C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C9*), ABISELECT(3832,2224), "S20681C6");
    /*is_ambiguous_... S20681C6::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*), ABISELECT(3832,2224), "S20681C6");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C10*)(S20681C8*), ABISELECT(3832,2224), "S20681C6");
    check_base_class_offset(lv, (S3572C5*)(S20681C11*), ABISELECT(3832,2224), "S20681C6");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C11*), ABISELECT(3832,2224), "S20681C6");
    /*is_ambiguous_... S20681C7::S20681C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C9*)(S20681C7*), ABISELECT(3832,2224), "S20681C6");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C13*), ABISELECT(3832,2224), "S20681C6");
    check_base_class_offset(lv, (S3572C5*)(S20681C12*), ABISELECT(3832,2224), "S20681C6");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C12*), ABISELECT(3832,2224), "S20681C6");
    /*is_ambiguous_... S20681C6::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*), ABISELECT(3912,2268), "S20681C6");
    check_base_class_offset(lv, (S3572C4*)(S20681C10*)(S20681C8*), ABISELECT(3912,2268), "S20681C6");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C10*)(S20681C8*), ABISELECT(3912,2268), "S20681C6");
    check_base_class_offset(lv, (S3572C4*)(S20681C11*), ABISELECT(3912,2268), "S20681C6");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C11*), ABISELECT(3912,2268), "S20681C6");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C13*), ABISELECT(3912,2268), "S20681C6");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C12*), ABISELECT(3912,2268), "S20681C6");
    /*is_ambiguous_... S20681C6::S20681C9 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C9*), ABISELECT(3872,2248), "S20681C6");
    /*is_ambiguous_... S20681C7::S20681C9 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C9*)(S20681C7*), ABISELECT(3872,2248), "S20681C6");
    check_base_class_offset(lv, (S20681C9*)(S20681C8*), ABISELECT(3704,2132), "S20681C6");
    /*is_ambiguous_... S20681C8::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C8*), ABISELECT(3184,1844), "S20681C6");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C10*)(S20681C8*), ABISELECT(3248,1876), "S20681C6");
    check_base_class_offset(lv, (S20681C2*)(S20681C11*), ABISELECT(3968,2300), "S20681C6");
    check_base_class_offset(lv, (S20681C11*)(S20681C10*)(S20681C8*), ABISELECT(3968,2300), "S20681C6");
    check_base_class_offset(lv, (S20681C10*)(S20681C8*), ABISELECT(3248,1876), "S20681C6");
    check_base_class_offset(lv, (S20681C8*)(S20681C7*), ABISELECT(3184,1844), "S20681C6");
    /*is_ambiguous_... S20681C7::S20681C9 */ AMB_check_base_class_offset(lv, (S20681C9*)(S20681C7*), ABISELECT(2880,1648), "S20681C6");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C13*), ABISELECT(4432,2580), "S20681C6");
    /*is_ambiguous_... S20681C12::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C12*), ABISELECT(4496,2608), "S20681C6");
    check_base_class_offset(lv, (S20681C2*)(S20681C12*), ABISELECT(4552,2640), "S20681C6");
    check_base_class_offset(lv, (S20681C12*)(S20681C13*), ABISELECT(4496,2608), "S20681C6");
    check_base_class_offset(lv, (S20681C13*)(S20681C7*), ABISELECT(4432,2580), "S20681C6");
    check_base_class_offset(lv, (S20681C7*), ABISELECT(2880,1648), "S20681C6");
    check_base_class_offset(lv, (S3572C24*), ABISELECT(4720,2732), "S20681C6");
    check_field_offset(lv, s20681c6f0, ABISELECT(8,4), "S20681C6.s20681c6f0");
    check_field_offset(lv, s20681c6f1, ABISELECT(12,8), "S20681C6.s20681c6f1");
    check_field_offset(lv, s20681c6f2, ABISELECT(16,12), "S20681C6.s20681c6f2");
    set_bf_and_test(lv, s20681c6f3, ABISELECT(24,16), 0, 1, 1, "S20681C6");
    set_bf_and_test(lv, s20681c6f4, ABISELECT(24,16), 1, 3, 1, "S20681C6");
    set_bf_and_test(lv, s20681c6f4, ABISELECT(24,16), 1, 3, hide_sll(1LL<<2), "S20681C6");
    check_field_offset(lv, s20681c6f5, ABISELECT(32,20), "S20681C6.s20681c6f5");
    check_field_offset(lv, s20681c6f6, ABISELECT(944,580), "S20681C6.s20681c6f6");
    check_field_offset(lv, s20681c6f7, ABISELECT(2864,1640), "S20681C6.s20681c6f7");
    test_class_info(&lv, &cd_S20681C6);
    dp->~S20681C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20681C6(Test_S20681C6, "S20681C6", ABISELECT(4960,2884));

#else // __cplusplus

extern void _ZN8S20681C6C1Ev();
extern void _ZN8S20681C6D1Ev();
Name_Map name_map_S20681C6[] = {
  NSPAIR(_ZN8S20681C6C1Ev),
  NSPAIR(_ZN8S20681C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C9;
extern VTBL_ENTRY _ZTI8S20681C9[];
extern  VTBL_ENTRY _ZTV8S20681C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C11;
extern VTBL_ENTRY _ZTI9S20681C11[];
extern  VTBL_ENTRY _ZTV9S20681C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C11[];
extern Class_Descriptor cd_S20681C10;
extern VTBL_ENTRY _ZTI9S20681C10[];
extern  VTBL_ENTRY _ZTV9S20681C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C10[];
extern Class_Descriptor cd_S20681C8;
extern VTBL_ENTRY _ZTI8S20681C8[];
extern  VTBL_ENTRY _ZTV8S20681C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C8[];
extern Class_Descriptor cd_S20681C9;
extern VTBL_ENTRY _ZTI8S20681C9[];
extern  VTBL_ENTRY _ZTV8S20681C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C9[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C12;
extern VTBL_ENTRY _ZTI9S20681C12[];
extern  VTBL_ENTRY _ZTV9S20681C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C12[];
extern Class_Descriptor cd_S20681C13;
extern VTBL_ENTRY _ZTI9S20681C13[];
extern  VTBL_ENTRY _ZTV9S20681C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C13[];
extern Class_Descriptor cd_S20681C7;
extern VTBL_ENTRY _ZTI8S20681C7[];
extern  VTBL_ENTRY _ZTV8S20681C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C7[];
extern Class_Descriptor cd_S3572C24;
extern VTBL_ENTRY _ZTI8S3572C24[];
extern  VTBL_ENTRY _ZTV8S3572C24[];
static Base_Class bases_S20681C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(3832,2224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3912,2268), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20681C2,    ABISELECT(3872,2248), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20681C9,    ABISELECT(3704,2132), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3184,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
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(3248,1876), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(3968,2300), //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
    7, //immediately_derived
  0, 0},
  {&cd_S20681C11,    ABISELECT(3968,2300), //bcp->offset
    70, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20681C10,    ABISELECT(3248,1876), //bcp->offset
    43, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20681C8,    ABISELECT(3184,1844), //bcp->offset
    33, //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
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20681C9,    ABISELECT(2880,1648), //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(4432,2580), //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
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(4496,2608), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(4552,2640), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20681C12,    ABISELECT(4496,2608), //bcp->offset
    85, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20681C13,    ABISELECT(4432,2580), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20681C7,    ABISELECT(2880,1648), //bcp->offset
    14, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C24,    ABISELECT(4720,2732), //bcp->offset
    100, //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
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20681C6[];
extern void _ZN8S20681C6D1Ev();
extern void _ZN8S20681C6D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S20681C6D1Ev,_ZTv0_n44_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn2880_N8S20681C6D1Ev,_ZThn1648_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20681C6D0Ev,_ZTv0_n44_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn2880_N8S20681C6D0Ev,_ZThn1648_N8S20681C6D0Ev)() __attribute__((weak));
extern void _ZN8S20681C72v2Ev();
extern void _ZN8S20681C72v3Ev();
extern void _ZN8S20681C72v4Ev();
extern void ABISELECT(_ZTv0_n64_N8S20681C6D1Ev,_ZTv0_n32_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn3184_N8S20681C6D1Ev,_ZThn1844_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20681C6D0Ev,_ZTv0_n32_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn3184_N8S20681C6D0Ev,_ZThn1844_N8S20681C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S20681C6D1Ev,_ZTvn32_n32_N8S20681C6D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S20681C6D0Ev,_ZTvn32_n32_N8S20681C6D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20681C6D1Ev,_ZTv0_n24_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn3704_N8S20681C6D1Ev,_ZThn2132_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C6D0Ev,_ZTv0_n24_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn3704_N8S20681C6D0Ev,_ZThn2132_N8S20681C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn3872_N8S20681C6D1Ev,_ZThn2248_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn3872_N8S20681C6D0Ev,_ZThn2248_N8S20681C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C6D1Ev,_ZTv0_n12_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn3912_N8S20681C6D1Ev,_ZThn2268_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C6D0Ev,_ZTv0_n12_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn3912_N8S20681C6D0Ev,_ZThn2268_N8S20681C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn3968_N8S20681C6D1Ev,_ZThn2300_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn3968_N8S20681C6D0Ev,_ZThn2300_N8S20681C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C6D1Ev,_ZTv0_n24_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn4432_N8S20681C6D1Ev,_ZThn2580_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C6D0Ev,_ZTv0_n24_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn4432_N8S20681C6D0Ev,_ZThn2580_N8S20681C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn4496_N8S20681C6D1Ev,_ZThn2608_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn4496_N8S20681C6D0Ev,_ZThn2608_N8S20681C6D0Ev)() __attribute__((weak));
extern void _ZN9S20681C122v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S20681C6D1Ev,_ZTvn32_n20_N8S20681C6D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S20681C6D0Ev,_ZTvn32_n20_N8S20681C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C6D1Ev,_ZTv0_n12_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn4720_N8S20681C6D1Ev,_ZThn2732_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C6D0Ev,_ZTv0_n12_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn4720_N8S20681C6D0Ev,_ZThn2732_N8S20681C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20681C6[] = {
  ABISELECT(4720,2732),
  ABISELECT(4496,2608),
  ABISELECT(4432,2580),
  ABISELECT(3968,2300),
  ABISELECT(3912,2268),
  ABISELECT(3872,2248),
  ABISELECT(3832,2224),
  ABISELECT(3704,2132),
  ABISELECT(3184,1844),
  ABISELECT(2880,1648),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&_ZN8S20681C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C6D0Ev,
  0,
  0,
  0,
  ABISELECT(-2880,-1648),
  ABISELECT(1616,960),
  ABISELECT(1552,932),
  ABISELECT(1088,652),
  ABISELECT(824,484),
  ABISELECT(304,196),
  ABISELECT(1032,620),
  ABISELECT(992,600),
  ABISELECT(952,576),
  ABISELECT(-2880,-1648),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20681C6D1Ev,_ZTv0_n44_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20681C6D0Ev,_ZTv0_n44_N8S20681C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20681C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v3Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v4Ev,
  ABISELECT(-3184,-1844),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-3184,-1844),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C6D1Ev,_ZTv0_n32_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C6D0Ev,_ZTv0_n32_N8S20681C6D0Ev),
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-3248,-1876),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C6D1Ev,_ZTvn32_n32_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C6D0Ev,_ZTvn32_n32_N8S20681C6D0Ev),
  ABISELECT(-3704,-2132),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-3704,-2132),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C6D1Ev,_ZTv0_n24_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C6D0Ev,_ZTv0_n24_N8S20681C6D0Ev),
  ABISELECT(-3872,-2248),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-3872,-2248),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev),
  ABISELECT(-3912,-2268),
  ABISELECT(-3912,-2268),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C6D1Ev,_ZTv0_n12_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C6D0Ev,_ZTv0_n12_N8S20681C6D0Ev),
  ABISELECT(-3968,-2300),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-3968,-2300),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev),
  ABISELECT(-4432,-2580),
  ABISELECT(64,28),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-4432,-2580),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C6D1Ev,_ZTv0_n24_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C6D0Ev,_ZTv0_n24_N8S20681C6D0Ev),
  0,
  ABISELECT(-4496,-2608),
  ABISELECT(-584,-340),
  ABISELECT(-664,-384),
  ABISELECT(-4496,-2608),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
  ABISELECT(-640,-372),
  ABISELECT(-720,-416),
  ABISELECT(-4552,-2640),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C6D1Ev,_ZTvn32_n20_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C6D0Ev,_ZTvn32_n20_N8S20681C6D0Ev),
  ABISELECT(-4720,-2732),
  ABISELECT(-4720,-2732),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C6D1Ev,_ZTv0_n12_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C6D0Ev,_ZTv0_n12_N8S20681C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S20681C6[];
extern void _ZN8S20681C7D1Ev();
extern void _ZN8S20681C7D0Ev();
extern void _ZN8S20681C72v2Ev();
extern void _ZN8S20681C72v3Ev();
extern void _ZN8S20681C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C7__8S20681C6[] = {
  ABISELECT(1616,960),
  ABISELECT(1552,932),
  ABISELECT(1088,652),
  ABISELECT(824,484),
  ABISELECT(304,196),
  ABISELECT(1032,620),
  ABISELECT(992,600),
  ABISELECT(952,576),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&_ZN8S20681C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v3Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v4Ev,
};
extern void _ZN8S20681C9D1Ev();
extern void _ZN8S20681C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C98S20681C7__A1__8S20681C6[] = {
  ABISELECT(1032,620),
  ABISELECT(992,600),
  ABISELECT(952,576),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&_ZN8S20681C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C9D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn992_N8S20681C9D1Ev,_ZThn600_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn992_N8S20681C9D0Ev,_ZThn600_N8S20681C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C98S20681C7__A1__8S20681C6[] = {
  ABISELECT(-992,-600),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-992,-600),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn1032_N8S20681C9D1Ev,_ZThn620_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn1032_N8S20681C9D0Ev,_ZThn620_N8S20681C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C98S20681C7__A1__8S20681C6[] = {
  ABISELECT(-1032,-620),
  ABISELECT(-1032,-620),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S20681C7D1Ev,_ZTv0_n32_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn304_N8S20681C7D1Ev,_ZThn196_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20681C7D0Ev,_ZTv0_n32_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn304_N8S20681C7D0Ev,_ZThn196_N8S20681C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C8__8S20681C7__8S20681C6[] = {
  ABISELECT(-304,-196),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C7D1Ev,_ZTv0_n32_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C7D0Ev,_ZTv0_n32_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn824_N8S20681C7D1Ev,_ZThn484_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn824_N8S20681C7D0Ev,_ZThn484_N8S20681C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C9__8S20681C7__8S20681C6[] = {
  ABISELECT(-824,-484),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-824,-484),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn992_N8S20681C7D1Ev,_ZThn600_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn992_N8S20681C7D0Ev,_ZThn600_N8S20681C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C7__8S20681C6[] = {
  ABISELECT(-992,-600),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-992,-600),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C7D1Ev,_ZTv0_n12_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn1032_N8S20681C7D1Ev,_ZThn620_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C7D0Ev,_ZTv0_n12_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn1032_N8S20681C7D0Ev,_ZThn620_N8S20681C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C7__8S20681C6[] = {
  ABISELECT(-1032,-620),
  ABISELECT(-1032,-620),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C7D1Ev,_ZTv0_n12_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C7D0Ev,_ZTv0_n12_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S20681C7D1Ev,_ZTvn32_n32_N8S20681C7D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S20681C7D0Ev,_ZTvn32_n32_N8S20681C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20681C108S20681C8__8S20681C7__8S20681C6[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C7D1Ev,_ZTvn32_n32_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C7D0Ev,_ZTvn32_n32_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn1088_N8S20681C7D1Ev,_ZThn652_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn1088_N8S20681C7D0Ev,_ZThn652_N8S20681C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C11__8S20681C7__8S20681C6[] = {
  ABISELECT(-1088,-652),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-1088,-652),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn1552_N8S20681C7D1Ev,_ZThn932_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn1552_N8S20681C7D0Ev,_ZThn932_N8S20681C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C13__8S20681C7__8S20681C6[] = {
  ABISELECT(-1552,-932),
  ABISELECT(64,28),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-1552,-932),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn1616_N8S20681C7D1Ev,_ZThn960_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn1616_N8S20681C7D0Ev,_ZThn960_N8S20681C7D0Ev)() __attribute__((weak));
extern void _ZN9S20681C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C12__8S20681C7__8S20681C6[] = {
  0,
  ABISELECT(-1616,-960),
  ABISELECT(-584,-340),
  ABISELECT(-664,-384),
  ABISELECT(-1616,-960),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S20681C7D1Ev,_ZTvn32_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S20681C7D0Ev,_ZTvn32_n20_N8S20681C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C12__A4__8S20681C7__8S20681C6[] = {
  ABISELECT(-640,-372),
  ABISELECT(-720,-416),
  ABISELECT(-1672,-992),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C7D1Ev,_ZTvn32_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C7D0Ev,_ZTvn32_n20_N8S20681C7D0Ev),
};
extern void _ZN8S20681C8D1Ev();
extern void _ZN8S20681C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C8__8S20681C6[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&_ZN8S20681C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C8D0Ev,
};
extern void _ZN9S20681C10D1Ev();
extern void _ZN9S20681C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C108S20681C8__8S20681C6[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&_ZN9S20681C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C10D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C108S20681C8__A1__8S20681C6[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn664_N8S20681C2D1Ev,_ZThn392_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn664_N8S20681C2D0Ev,_ZThn392_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C108S20681C8__A1__8S20681C6[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev)();
extern void ABISELECT(_ZThn664_N9S20681C10D1Ev,_ZThn392_N9S20681C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev)();
extern void ABISELECT(_ZThn664_N9S20681C10D0Ev,_ZThn392_N9S20681C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C108S20681C8__8S20681C6[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev)();
extern void ABISELECT(_ZThn720_N9S20681C10D1Ev,_ZThn424_N9S20681C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev)();
extern void ABISELECT(_ZThn720_N9S20681C10D0Ev,_ZThn424_N9S20681C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C11__9S20681C108S20681C8__8S20681C6[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn520_N8S20681C8D1Ev,_ZThn288_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn520_N8S20681C8D0Ev,_ZThn288_N8S20681C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C9__8S20681C8__8S20681C6[] = {
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn688_N8S20681C8D1Ev,_ZThn404_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn688_N8S20681C8D0Ev,_ZThn404_N8S20681C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C8__8S20681C6[] = {
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C8D1Ev,_ZTv0_n12_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn728_N8S20681C8D1Ev,_ZThn424_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C8D0Ev,_ZTv0_n12_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn728_N8S20681C8D0Ev,_ZThn424_N8S20681C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C8__8S20681C6[] = {
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C8D1Ev,_ZTv0_n12_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C8D0Ev,_ZTv0_n12_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZThn64_N8S20681C8D1Ev,_ZThn32_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S20681C8D0Ev,_ZThn32_N8S20681C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20681C10__8S20681C8__8S20681C6[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20681C8D1Ev,_ZThn32_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20681C8D0Ev,_ZThn32_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn784_N8S20681C8D1Ev,_ZThn456_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn784_N8S20681C8D0Ev,_ZThn456_N8S20681C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C11__8S20681C8__8S20681C6[] = {
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev),
};
extern void _ZN8S20681C9D1Ev();
extern void _ZN8S20681C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C9__8S20681C6[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&_ZN8S20681C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C9D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S20681C9D1Ev,_ZThn116_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S20681C9D0Ev,_ZThn116_N8S20681C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C9__8S20681C6[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev)();
extern void ABISELECT(_ZThn208_N8S20681C9D1Ev,_ZThn136_N8S20681C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev)();
extern void ABISELECT(_ZThn208_N8S20681C9D0Ev,_ZThn136_N8S20681C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C9__8S20681C6[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev),
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C6[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S20681C2D1Ev,_ZThn20_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S20681C2D0Ev,_ZThn20_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C2__8S20681C6[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void _ZN9S20681C11D1Ev();
extern void _ZN9S20681C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C11__8S20681C6[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&_ZN9S20681C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C11D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C11__A2__8S20681C6[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C11__A2__8S20681C6[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C11__8S20681C6[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev),
};
extern void _ZN9S20681C13D1Ev();
extern void _ZN9S20681C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C13__8S20681C6[] = {
  ABISELECT(64,28),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&_ZN9S20681C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C13D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C13__A3__8S20681C6[] = {
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C13__A3__8S20681C6[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C13D1Ev,_ZTv0_n12_N9S20681C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C13D0Ev,_ZTv0_n12_N9S20681C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C13__8S20681C6[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C13D1Ev,_ZTv0_n12_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C13D0Ev,_ZTv0_n12_N9S20681C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20681C13D1Ev,_ZThn28_N9S20681C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S20681C13D0Ev,_ZThn28_N9S20681C13D0Ev)() __attribute__((weak));
extern void _ZN9S20681C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C12__9S20681C13__8S20681C6[] = {
  0,
  ABISELECT(-64,-28),
  ABISELECT(-584,-340),
  ABISELECT(-664,-384),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S20681C13D1Ev,_ZTvn32_n20_N9S20681C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S20681C13D0Ev,_ZTvn32_n20_N9S20681C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C12__A1__9S20681C13__8S20681C6[] = {
  ABISELECT(-640,-372),
  ABISELECT(-720,-416),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S20681C13D1Ev,_ZTvn32_n20_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S20681C13D0Ev,_ZTvn32_n20_N9S20681C13D0Ev),
};
extern void _ZN9S20681C12D1Ev();
extern void _ZN9S20681C12D0Ev();
extern void _ZN9S20681C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C12__8S20681C6[] = {
  ABISELECT(-584,-340),
  ABISELECT(-664,-384),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&_ZN9S20681C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C12__A4__8S20681C6[] = {
  ABISELECT(-640,-372),
  ABISELECT(-720,-416),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C12__A4__8S20681C6[] = {
  ABISELECT(640,372),
  ABISELECT(640,372),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZThn56_N9S20681C12D1Ev,_ZThn32_N9S20681C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S20681C12D0Ev,_ZThn32_N9S20681C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C2__9S20681C12__8S20681C6[] = {
  ABISELECT(-640,-372),
  ABISELECT(-720,-416),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20681C12D1Ev,_ZThn32_N9S20681C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20681C12D0Ev,_ZThn32_N9S20681C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C12D1Ev,_ZTv0_n12_N9S20681C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C12D0Ev,_ZTv0_n12_N9S20681C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S20681C12__8S20681C6[] = {
  ABISELECT(584,340),
  ABISELECT(584,340),
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C12D1Ev,_ZTv0_n12_N9S20681C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C12D0Ev,_ZTv0_n12_N9S20681C12D0Ev),
};
static  VTT_ENTRY vtt_S20681C6[] = {
  {&(_ZTV8S20681C6[12]),  12,105},
  {&(_ZTV8S20681C6[28]),  28,105},
  {&(_ZTV8S20681C6[41]),  41,105},
  {&(_ZTV8S20681C6[56]),  56,105},
  {&(_ZTV8S20681C6[63]),  63,105},
  {&(_ZTV8S20681C6[68]),  68,105},
  {&(_ZTV8S20681C6[48]),  48,105},
  {&(_ZTV8S20681C6[75]),  75,105},
  {&(_ZTV8S20681C6[83]),  83,105},
  {&(_ZTV8S20681C6[91]),  91,105},
  {&(_ZTV8S20681C6[98]),  98,105},
  {&(_ZTV8S20681C6[103]),  103,105},
  {&(_tg__ZTV8S20681C7__8S20681C6[10]),  10,15},
  {&(_tg__ZTV8S20681C98S20681C7__A1__8S20681C6[5]),  5,7},
  {&(_tg__ZTV8S20681C2__8S20681C98S20681C7__A1__8S20681C6[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C98S20681C7__A1__8S20681C6[3]),  3,5},
  {&(_tg__ZTV8S20681C8__8S20681C7__8S20681C6[8]),  8,10},
  {&(_tg__ZTV8S20681C9__8S20681C7__8S20681C6[6]),  6,8},
  {&(_tg__ZTV8S20681C2__8S20681C7__8S20681C6[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C7__8S20681C6[3]),  3,5},
  {&(_tg__ZTV9S20681C108S20681C8__8S20681C7__8S20681C6[5]),  5,7},
  {&(_tg__ZTV9S20681C11__8S20681C7__8S20681C6[5]),  5,7},
  {&(_tg__ZTV9S20681C13__8S20681C7__8S20681C6[6]),  6,8},
  {&(_tg__ZTV9S20681C12__8S20681C7__8S20681C6[6]),  6,9},
  {&(_tg__ZTV8S20681C29S20681C12__A4__8S20681C7__8S20681C6[4]),  4,6},
  {&(_tg__ZTV8S20681C8__8S20681C6[7]),  7,9},
  {&(_tg__ZTV9S20681C108S20681C8__8S20681C6[5]),  5,7},
  {&(_tg__ZTV8S20681C29S20681C108S20681C8__A1__8S20681C6[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C108S20681C8__A1__8S20681C6[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C108S20681C8__8S20681C6[3]),  3,5},
  {&(_tg__ZTV9S20681C11__9S20681C108S20681C8__8S20681C6[5]),  5,7},
  {&(_tg__ZTV8S20681C9__8S20681C8__8S20681C6[6]),  6,8},
  {&(_tg__ZTV8S20681C2__8S20681C8__8S20681C6[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C8__8S20681C6[3]),  3,5},
  {&(_tg__ZTV9S20681C10__8S20681C8__8S20681C6[5]),  5,7},
  {&(_tg__ZTV9S20681C11__8S20681C8__8S20681C6[5]),  5,7},
  {&(_tg__ZTV8S20681C9__8S20681C6[5]),  5,7},
  {&(_tg__ZTV8S20681C2__8S20681C9__8S20681C6[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C9__8S20681C6[3]),  3,5},
  {&(_tg__ZTV8S20681C2__8S20681C6[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C2__8S20681C6[3]),  3,5},
  {&(_tg__ZTV9S20681C11__8S20681C6[4]),  4,6},
  {&(_tg__ZTV8S20681C29S20681C11__A2__8S20681C6[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C11__A2__8S20681C6[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C11__8S20681C6[3]),  3,5},
  {&(_tg__ZTV9S20681C13__8S20681C6[5]),  5,7},
  {&(_tg__ZTV8S20681C29S20681C13__A3__8S20681C6[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C13__A3__8S20681C6[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C13__8S20681C6[3]),  3,5},
  {&(_tg__ZTV9S20681C12__9S20681C13__8S20681C6[6]),  6,9},
  {&(_tg__ZTV8S20681C29S20681C12__A1__9S20681C13__8S20681C6[4]),  4,6},
  {&(_tg__ZTV9S20681C12__8S20681C6[4]),  4,7},
  {&(_tg__ZTV8S20681C29S20681C12__A4__8S20681C6[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C12__A4__8S20681C6[3]),  3,5},
  {&(_tg__ZTV8S20681C2__9S20681C12__8S20681C6[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S20681C12__8S20681C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20681C6[];
extern  VTBL_ENTRY _ZTV8S20681C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C6[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20681C13D0Ev,_ZThn28_N9S20681C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20681C13D1Ev,_ZThn28_N9S20681C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C8D0Ev,_ZTv0_n12_N8S20681C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S20681C8D0Ev,_ZThn424_N8S20681C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C8D1Ev,_ZTv0_n12_N8S20681C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S20681C8D1Ev,_ZThn424_N8S20681C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S20681C8D0Ev,_ZThn456_N8S20681C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S20681C8D0Ev,_ZThn404_N8S20681C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S20681C8D1Ev,_ZThn456_N8S20681C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S20681C8D1Ev,_ZThn404_N8S20681C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S20681C8D0Ev,_ZThn288_N8S20681C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S20681C8D1Ev,_ZThn288_N8S20681C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20681C10D0Ev,_ZThn424_N9S20681C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20681C10D1Ev,_ZThn424_N9S20681C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S20681C10D0Ev,_ZThn392_N9S20681C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S20681C10D1Ev,_ZThn392_N9S20681C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20681C2D0Ev,_ZThn20_N8S20681C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S20681C2D0Ev,_ZThn392_N8S20681C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20681C2D1Ev,_ZThn20_N8S20681C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S20681C2D1Ev,_ZThn392_N8S20681C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C7D0Ev,_ZTv0_n12_N8S20681C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N8S20681C7D0Ev,_ZThn620_N8S20681C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C7D1Ev,_ZTv0_n12_N8S20681C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N8S20681C7D1Ev,_ZThn620_N8S20681C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1616_N8S20681C7D0Ev,_ZThn960_N8S20681C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S20681C7D0Ev,_ZThn652_N8S20681C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20681C7D0Ev,_ZThn600_N8S20681C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1616_N8S20681C7D1Ev,_ZThn960_N8S20681C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S20681C7D1Ev,_ZThn652_N8S20681C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20681C7D1Ev,_ZThn600_N8S20681C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N8S20681C7D0Ev,_ZThn932_N8S20681C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S20681C7D0Ev,_ZThn484_N8S20681C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N8S20681C7D1Ev,_ZThn932_N8S20681C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S20681C7D1Ev,_ZThn484_N8S20681C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C7D0Ev,_ZTv0_n32_N8S20681C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20681C7D0Ev,_ZThn196_N8S20681C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C7D1Ev,_ZTv0_n32_N8S20681C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20681C7D1Ev,_ZThn196_N8S20681C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20681C9D0Ev,_ZThn136_N8S20681C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N8S20681C9D0Ev,_ZThn620_N8S20681C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20681C9D1Ev,_ZThn136_N8S20681C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1032_N8S20681C9D1Ev,_ZThn620_N8S20681C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20681C9D0Ev,_ZThn116_N8S20681C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20681C9D0Ev,_ZThn600_N8S20681C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20681C9D1Ev,_ZThn116_N8S20681C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20681C9D1Ev,_ZThn600_N8S20681C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C6D0Ev,_ZTv0_n12_N8S20681C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4720_N8S20681C6D0Ev,_ZThn2732_N8S20681C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3912_N8S20681C6D0Ev,_ZThn2268_N8S20681C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C6D1Ev,_ZTv0_n12_N8S20681C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4720_N8S20681C6D1Ev,_ZThn2732_N8S20681C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3912_N8S20681C6D1Ev,_ZThn2268_N8S20681C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4496_N8S20681C6D0Ev,_ZThn2608_N8S20681C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3968_N8S20681C6D0Ev,_ZThn2300_N8S20681C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3872_N8S20681C6D0Ev,_ZThn2248_N8S20681C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4496_N8S20681C6D1Ev,_ZThn2608_N8S20681C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3968_N8S20681C6D1Ev,_ZThn2300_N8S20681C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3872_N8S20681C6D1Ev,_ZThn2248_N8S20681C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C6D0Ev,_ZTv0_n24_N8S20681C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4432_N8S20681C6D0Ev,_ZThn2580_N8S20681C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3704_N8S20681C6D0Ev,_ZThn2132_N8S20681C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C6D1Ev,_ZTv0_n24_N8S20681C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4432_N8S20681C6D1Ev,_ZThn2580_N8S20681C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3704_N8S20681C6D1Ev,_ZThn2132_N8S20681C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C6D0Ev,_ZTv0_n32_N8S20681C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N8S20681C6D0Ev,_ZThn1844_N8S20681C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C6D1Ev,_ZTv0_n32_N8S20681C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N8S20681C6D1Ev,_ZThn1844_N8S20681C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20681C6D0Ev,_ZTv0_n44_N8S20681C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S20681C6D0Ev,_ZThn1648_N8S20681C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20681C6D1Ev,_ZTv0_n44_N8S20681C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S20681C6D1Ev,_ZThn1648_N8S20681C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20681C6 = {  "S20681C6", // class name
  bases_S20681C6, 18,
  &(vtc_S20681C6[0]), // expected_vtbl_contents
  &(vtt_S20681C6[0]), // expected_vtt_contents
  ABISELECT(4960,2884), // object size
  NSPAIRA(_ZTI8S20681C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20681C6),105, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20681C6),56, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20681C20  : S20681C2 , S20681C11 {
  int s20681c20f0;
  int s20681c20f1:2;
  long double s20681c20f2;
  void *s20681c20f3;
  void *s20681c20f4;
  virtual  ~S20681C20(); // _ZN9S20681C20D2Ev
  virtual void  v5(); // _ZN9S20681C202v5Ev
  virtual void  v6(); // _ZN9S20681C202v6Ev
  virtual void  v7(); // _ZN9S20681C202v7Ev
  S20681C20(); // tgen
};
//SIG(-1 S20681C20) C1{ BC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} BC6{ VBC3 VBC4 BC2 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd v1 v2 v3 Fi Fi:2 FD Fp[2]}


 S20681C20 ::~S20681C20(){ note_dtor("S20681C20", this);}
void  S20681C20 ::v5(){vfunc_called(this, "_ZN9S20681C202v5Ev");}
void  S20681C20 ::v6(){vfunc_called(this, "_ZN9S20681C202v6Ev");}
void  S20681C20 ::v7(){vfunc_called(this, "_ZN9S20681C202v7Ev");}
S20681C20 ::S20681C20(){ note_ctor("S20681C20", this);} // tgen

static void Test_S20681C20()
{
  extern Class_Descriptor cd_S20681C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,97)];
    init_test(&cd_S20681C20, buf);
    S20681C20 *dp, &lv = *(dp=new (buf) S20681C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,384), "sizeof(S20681C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20681C20)");
    /*is_ambiguous_... S20681C20::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*), ABISELECT(544,328), "S20681C20");
    check_base_class_offset(lv, (S3572C5*)(S20681C11*), ABISELECT(544,328), "S20681C20");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C11*), ABISELECT(544,328), "S20681C20");
    /*is_ambiguous_... S20681C20::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*), ABISELECT(584,352), "S20681C20");
    check_base_class_offset(lv, (S3572C4*)(S20681C11*), ABISELECT(584,352), "S20681C20");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C11*), ABISELECT(584,352), "S20681C20");
    /*is_ambiguous_... S20681C20::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*), 0, "S20681C20");
    check_base_class_offset(lv, (S20681C2*)(S20681C11*), ABISELECT(40,20), "S20681C20");
    check_base_class_offset(lv, (S20681C11*), ABISELECT(40,20), "S20681C20");
    check_field_offset(lv, s20681c20f0, ABISELECT(500,300), "S20681C20.s20681c20f0");
    set_bf_and_test(lv, s20681c20f1, ABISELECT(504,304), 0, 2, 1, "S20681C20");
    set_bf_and_test(lv, s20681c20f1, ABISELECT(504,304), 0, 2, hide_sll(1LL<<1), "S20681C20");
    check_field_offset(lv, s20681c20f2, ABISELECT(512,308), "S20681C20.s20681c20f2");
    check_field_offset(lv, s20681c20f3, ABISELECT(528,320), "S20681C20.s20681c20f3");
    check_field_offset(lv, s20681c20f4, ABISELECT(536,324), "S20681C20.s20681c20f4");
    test_class_info(&lv, &cd_S20681C20);
    dp->~S20681C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20681C20(Test_S20681C20, "S20681C20", ABISELECT(640,384));

#else // __cplusplus

extern void _ZN9S20681C20C1Ev();
extern void _ZN9S20681C20D2Ev();
Name_Map name_map_S20681C20[] = {
  NSPAIR(_ZN9S20681C20C1Ev),
  NSPAIR(_ZN9S20681C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C11;
extern VTBL_ENTRY _ZTI9S20681C11[];
extern  VTBL_ENTRY _ZTV9S20681C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C11[];
static Base_Class bases_S20681C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(544,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(584,352), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20681C2,    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_S20681C2,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20681C11,    ABISELECT(40,20), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20681C20[];
extern void _ZN9S20681C20D1Ev();
extern void _ZN9S20681C20D0Ev();
extern void _ZN9S20681C202v5Ev();
extern void _ZN9S20681C202v6Ev();
extern void _ZN9S20681C202v7Ev();
extern void ABISELECT(_ZThn40_N9S20681C20D1Ev,_ZThn20_N9S20681C20D1Ev)();
extern void ABISELECT(_ZThn40_N9S20681C20D0Ev,_ZThn20_N9S20681C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C20D1Ev,_ZTv0_n12_N9S20681C20D1Ev)();
extern void ABISELECT(_ZThn584_N9S20681C20D1Ev,_ZThn352_N9S20681C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20681C20D0Ev,_ZTv0_n12_N9S20681C20D0Ev)();
extern void ABISELECT(_ZThn584_N9S20681C20D0Ev,_ZThn352_N9S20681C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20681C20[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C20[0]),
  (VTBL_ENTRY)&_ZN9S20681C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C20D0Ev,
  (VTBL_ENTRY)&_ZN9S20681C202v5Ev,
  (VTBL_ENTRY)&_ZN9S20681C202v6Ev,
  (VTBL_ENTRY)&_ZN9S20681C202v7Ev,
  ABISELECT(544,332),
  ABISELECT(504,308),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20681C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20681C20D1Ev,_ZThn20_N9S20681C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20681C20D0Ev,_ZThn20_N9S20681C20D0Ev),
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI9S20681C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C20D1Ev,_ZTv0_n12_N9S20681C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C20D0Ev,_ZTv0_n12_N9S20681C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S20681C20[];
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C2__9S20681C20[] = {
  ABISELECT(584,352),
  ABISELECT(544,328),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn584_N8S20681C2D1Ev,_ZThn352_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn584_N8S20681C2D0Ev,_ZThn352_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C2__9S20681C20[] = {
  ABISELECT(-584,-352),
  ABISELECT(-584,-352),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void _ZN9S20681C11D1Ev();
extern void _ZN9S20681C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C11__9S20681C20[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&_ZN9S20681C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C11D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C11__A1__9S20681C20[] = {
  ABISELECT(544,332),
  ABISELECT(504,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn544_N8S20681C2D1Ev,_ZThn332_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn544_N8S20681C2D0Ev,_ZThn332_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C11__A1__9S20681C20[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev)();
extern void ABISELECT(_ZThn544_N9S20681C11D1Ev,_ZThn332_N9S20681C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev)();
extern void ABISELECT(_ZThn544_N9S20681C11D0Ev,_ZThn332_N9S20681C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C11__9S20681C20[] = {
  ABISELECT(-544,-332),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev),
};
static  VTT_ENTRY vtt_S20681C20[] = {
  {&(_ZTV9S20681C20[4]),  4,20},
  {&(_tg__ZTV8S20681C2__9S20681C20[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C2__9S20681C20[3]),  3,5},
  {&(_tg__ZTV9S20681C11__9S20681C20[4]),  4,6},
  {&(_tg__ZTV8S20681C29S20681C11__A1__9S20681C20[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C11__A1__9S20681C20[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C11__9S20681C20[3]),  3,5},
  {&(_ZTV9S20681C20[18]),  18,20},
  {&(_ZTV9S20681C20[13]),  13,20},
};
extern VTBL_ENTRY _ZTI9S20681C20[];
extern  VTBL_ENTRY _ZTV9S20681C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C20[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N9S20681C11D0Ev,_ZThn332_N9S20681C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N9S20681C11D1Ev,_ZThn332_N9S20681C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S20681C2D0Ev,_ZThn332_N8S20681C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S20681C2D0Ev,_ZThn352_N8S20681C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S20681C2D1Ev,_ZThn332_N8S20681C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S20681C2D1Ev,_ZThn352_N8S20681C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C20D0Ev,_ZTv0_n12_N9S20681C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S20681C20D0Ev,_ZThn352_N9S20681C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C20D1Ev,_ZTv0_n12_N9S20681C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S20681C20D1Ev,_ZThn352_N9S20681C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20681C20 = {  "S20681C20", // class name
  bases_S20681C20, 5,
  &(vtc_S20681C20[0]), // expected_vtbl_contents
  &(vtt_S20681C20[0]), // expected_vtt_contents
  ABISELECT(640,384), // object size
  NSPAIRA(_ZTI9S20681C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20681C20),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20681C20),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S20681C21  {
  char s20681c21f0;
  void *s20681c21f1;
  char s20681c21f2;
  void *s20681c21f3;
  void *s20681c21f4[10];
  void  mf20681c21(); // _ZN9S20681C2110mf20681c21Ev
};
//SIG(1 S20681C21) U1{ m Fc Fp Fc Fp Fp[10]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S20681C1  : virtual S20681C2 , virtual S20681C6 , S20681C20 {
  char  :0;
  int s20681c1f1;
  int s20681c1f2;
  void *s20681c1f3;
  int s20681c1f4[7];
  ::S20681C21 s20681c1f5;
  ::S3572C6_nt s20681c1f6;
  ~S20681C1(); // tgen
  S20681C1(); // tgen
};
//SIG(1 S20681C1) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ vd m FC3 FC5{}} Fc:1 Fp[3]} VBC6{ VBC7{ VBC8{ VBC9{ VBC3 VBC2 vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL} BC4 BC10{ VBC4 BC2 VBC11{ VBC3 VBC4 BC2 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC12{ VBC3 BC4 BC2 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC9 VBC13{ BC2 VBC12 vd Fi Fp} vd v2 v3 v4 Fi[4] FC14{ m Fp Fi[2] FU15{ m FL Fi Fi Fp[10] FD Fp Fs Fi:27 FD FL}} FU16{ m Fi Fi[6] Fc Fi Fi Fp Fp[5] Fi Fc FL Fp Fp Fp} Fs:16 Fi Fi} VBC17{ vd m Fi[4] FL Fi FC18{ VBC3 VBC4 Fc:1 Fp[3]} Fi FD Fi Fi FL FL Fs} Fi Fc Fp Fc:1 Fi:3 FC19{ vd m FC20{ VBC3 VBC18 vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL} FC21{ VBC3 VBC4 BC18 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} Fp Fi Fp FL FD Fs Fp FL Fi} FC22{ VBC23{ VBC3 BC4 BC24{ VBC3 VBC4 Fc:1 Fp[3]} vd v9 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v8 Fi Fp Fi:2 FD Fp}[5] FL} BC25{ BC2 BC11 vd v5 v6 v7 Fi Fi:2 FD Fp Fp} Fc:0 Fi Fi Fp Fi[7] FU26{ m Fc Fp Fc Fp Fp[10]} FC5}


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

static void Test_S20681C1()
{
  extern Class_Descriptor cd_S20681C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(353,825)];
    init_test(&cd_S20681C1, buf);
    S20681C1 *dp, &lv = *(dp=new (buf) S20681C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(5632,3296), "sizeof(S20681C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20681C1)");
    /*is_ambiguous_... S20681C1::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*), ABISELECT(720,432), "S20681C1");
    /*is_ambiguous_... S20681C1::S20681C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C9*), ABISELECT(720,432), "S20681C1");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C10*)(S20681C8*), ABISELECT(720,432), "S20681C1");
    /*is_ambiguous_... S20681C1::S20681C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C11*), ABISELECT(720,432), "S20681C1");
    /*is_ambiguous_... S20681C1::S20681C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C11*), ABISELECT(720,432), "S20681C1");
    /*is_ambiguous_... S20681C7::S20681C9 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C9*)(S20681C7*), ABISELECT(720,432), "S20681C1");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C13*), ABISELECT(720,432), "S20681C1");
    check_base_class_offset(lv, (S3572C5*)(S20681C12*), ABISELECT(720,432), "S20681C1");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C12*), ABISELECT(720,432), "S20681C1");
    /*is_ambiguous_... S20681C20::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C20*), ABISELECT(720,432), "S20681C1");
    check_base_class_offset(lv, (S3572C5*)(S20681C11*)(S20681C20*), ABISELECT(720,432), "S20681C1");
    check_base_class_offset(lv, (S3572C5*)(S20681C2*)(S20681C11*)(S20681C20*), ABISELECT(720,432), "S20681C1");
    /*is_ambiguous_... S20681C1::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*), ABISELECT(760,456), "S20681C1");
    check_base_class_offset(lv, (S3572C4*)(S20681C10*)(S20681C8*), ABISELECT(760,456), "S20681C1");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C10*)(S20681C8*), ABISELECT(760,456), "S20681C1");
    /*is_ambiguous_... S20681C1::S20681C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C11*), ABISELECT(760,456), "S20681C1");
    /*is_ambiguous_... S20681C1::S20681C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C11*), ABISELECT(760,456), "S20681C1");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C13*), ABISELECT(760,456), "S20681C1");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C12*), ABISELECT(760,456), "S20681C1");
    /*is_ambiguous_... S20681C20::S20681C2 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C20*), ABISELECT(760,456), "S20681C1");
    check_base_class_offset(lv, (S3572C4*)(S20681C11*)(S20681C20*), ABISELECT(760,456), "S20681C1");
    check_base_class_offset(lv, (S3572C4*)(S20681C2*)(S20681C11*)(S20681C20*), ABISELECT(760,456), "S20681C1");
    /*is_ambiguous_... S20681C1::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*), ABISELECT(680,412), "S20681C1");
    /*is_ambiguous_... S20681C1::S20681C9 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C9*), ABISELECT(680,412), "S20681C1");
    /*is_ambiguous_... S20681C7::S20681C9 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C9*)(S20681C7*), ABISELECT(680,412), "S20681C1");
    check_base_class_offset(lv, (S20681C9*)(S20681C8*), ABISELECT(4520,2620), "S20681C1");
    /*is_ambiguous_... S20681C8::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C8*), ABISELECT(4000,2332), "S20681C1");
    /*is_ambiguous_... S20681C10::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C10*)(S20681C8*), ABISELECT(4064,2364), "S20681C1");
    /*is_ambiguous_... S20681C1::S20681C11 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C11*), ABISELECT(4648,2712), "S20681C1");
    check_base_class_offset(lv, (S20681C11*)(S20681C10*)(S20681C8*), ABISELECT(4648,2712), "S20681C1");
    check_base_class_offset(lv, (S20681C10*)(S20681C8*), ABISELECT(4064,2364), "S20681C1");
    check_base_class_offset(lv, (S20681C8*)(S20681C7*), ABISELECT(4000,2332), "S20681C1");
    /*is_ambiguous_... S20681C7::S20681C9 */ AMB_check_base_class_offset(lv, (S20681C9*)(S20681C7*), ABISELECT(3696,2136), "S20681C1");
    /*is_ambiguous_... S20681C13::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C13*), ABISELECT(5112,2992), "S20681C1");
    /*is_ambiguous_... S20681C12::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S20681C12*), ABISELECT(5168,3020), "S20681C1");
    check_base_class_offset(lv, (S20681C2*)(S20681C12*), ABISELECT(5224,3052), "S20681C1");
    check_base_class_offset(lv, (S20681C12*)(S20681C13*), ABISELECT(5168,3020), "S20681C1");
    check_base_class_offset(lv, (S20681C13*)(S20681C7*), ABISELECT(5112,2992), "S20681C1");
    check_base_class_offset(lv, (S20681C7*)(S20681C6*), ABISELECT(3696,2136), "S20681C1");
    check_base_class_offset(lv, (S3572C24*)(S20681C6*), ABISELECT(5392,3144), "S20681C1");
    check_base_class_offset(lv, (S20681C6*), ABISELECT(816,488), "S20681C1");
    /*is_ambiguous_... S20681C20::S20681C2 */ AMB_check_base_class_offset(lv, (S20681C2*)(S20681C20*), 0, "S20681C1");
    check_base_class_offset(lv, (S20681C2*)(S20681C11*)(S20681C20*), ABISELECT(40,20), "S20681C1");
    check_base_class_offset(lv, (S20681C11*)(S20681C20*), ABISELECT(40,20), "S20681C1");
    check_base_class_offset(lv, (S20681C20*), 0, "S20681C1");
    check_field_offset(lv, s20681c1f1, ABISELECT(544,328), "S20681C1.s20681c1f1");
    check_field_offset(lv, s20681c1f2, ABISELECT(548,332), "S20681C1.s20681c1f2");
    check_field_offset(lv, s20681c1f3, ABISELECT(552,336), "S20681C1.s20681c1f3");
    check_field_offset(lv, s20681c1f4, ABISELECT(560,340), "S20681C1.s20681c1f4");
    check_field_offset(lv, s20681c1f5, ABISELECT(592,368), "S20681C1.s20681c1f5");
    check_field_offset(lv, s20681c1f6, ABISELECT(672,408), "S20681C1.s20681c1f6");
    test_class_info(&lv, &cd_S20681C1);
    dp->~S20681C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20681C1(Test_S20681C1, "S20681C1", ABISELECT(5632,3296));

#else // __cplusplus

extern void _ZN8S20681C1C1Ev();
extern void _ZN8S20681C1D1Ev();
Name_Map name_map_S20681C1[] = {
  NSPAIR(_ZN8S20681C1C1Ev),
  NSPAIR(_ZN8S20681C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C9;
extern VTBL_ENTRY _ZTI8S20681C9[];
extern  VTBL_ENTRY _ZTV8S20681C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C9[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C11;
extern VTBL_ENTRY _ZTI9S20681C11[];
extern  VTBL_ENTRY _ZTV9S20681C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C11[];
extern Class_Descriptor cd_S20681C10;
extern VTBL_ENTRY _ZTI9S20681C10[];
extern  VTBL_ENTRY _ZTV9S20681C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C10[];
extern Class_Descriptor cd_S20681C8;
extern VTBL_ENTRY _ZTI8S20681C8[];
extern  VTBL_ENTRY _ZTV8S20681C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C8[];
extern Class_Descriptor cd_S20681C9;
extern VTBL_ENTRY _ZTI8S20681C9[];
extern  VTBL_ENTRY _ZTV8S20681C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C9[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C12;
extern VTBL_ENTRY _ZTI9S20681C12[];
extern  VTBL_ENTRY _ZTV9S20681C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C12[];
extern Class_Descriptor cd_S20681C13;
extern VTBL_ENTRY _ZTI9S20681C13[];
extern  VTBL_ENTRY _ZTV9S20681C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C13[];
extern Class_Descriptor cd_S20681C7;
extern VTBL_ENTRY _ZTI8S20681C7[];
extern  VTBL_ENTRY _ZTV8S20681C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C7[];
extern Class_Descriptor cd_S3572C24;
extern VTBL_ENTRY _ZTI8S3572C24[];
extern  VTBL_ENTRY _ZTV8S3572C24[];
extern Class_Descriptor cd_S20681C6;
extern VTBL_ENTRY _ZTI8S20681C6[];
extern  VTBL_ENTRY _ZTV8S20681C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C6[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C2;
extern VTBL_ENTRY _ZTI8S20681C2[];
extern  VTBL_ENTRY _ZTV8S20681C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C2[];
extern Class_Descriptor cd_S20681C11;
extern VTBL_ENTRY _ZTI9S20681C11[];
extern  VTBL_ENTRY _ZTV9S20681C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C11[];
extern Class_Descriptor cd_S20681C20;
extern VTBL_ENTRY _ZTI9S20681C20[];
extern  VTBL_ENTRY _ZTV9S20681C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20681C20[];
static Base_Class bases_S20681C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(720,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(760,456), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20681C2,    ABISELECT(680,412), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20681C9,    ABISELECT(4520,2620), //bcp->offset
    87, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(4000,2332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(4064,2364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(4648,2712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20681C11,    ABISELECT(4648,2712), //bcp->offset
    95, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20681C10,    ABISELECT(4064,2364), //bcp->offset
    80, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20681C8,    ABISELECT(4000,2332), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20681C9,    ABISELECT(3696,2136), //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(5112,2992), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(5168,3020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(5224,3052), //bcp->offset
    119, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20681C12,    ABISELECT(5168,3020), //bcp->offset
    110, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20681C13,    ABISELECT(5112,2992), //bcp->offset
    102, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20681C7,    ABISELECT(3696,2136), //bcp->offset
    51, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S3572C24,    ABISELECT(5392,3144), //bcp->offset
    125, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20681C6,    ABISELECT(816,488), //bcp->offset
    36, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20681C2,    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
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20681C2,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20681C11,    ABISELECT(40,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20681C20,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20681C1[];
extern void _ZN8S20681C1D1Ev();
extern void _ZN8S20681C1D0Ev();
extern void _ZN9S20681C202v5Ev();
extern void _ZN9S20681C202v6Ev();
extern void _ZN9S20681C202v7Ev();
extern void ABISELECT(_ZThn40_N8S20681C1D1Ev,_ZThn20_N8S20681C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20681C1D0Ev,_ZThn20_N8S20681C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20681C1D1Ev,_ZTv0_n20_N8S20681C1D1Ev)();
extern void ABISELECT(_ZThn680_N8S20681C1D1Ev,_ZThn412_N8S20681C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C1D0Ev,_ZTv0_n20_N8S20681C1D0Ev)();
extern void ABISELECT(_ZThn680_N8S20681C1D0Ev,_ZThn412_N8S20681C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C1D1Ev,_ZTv0_n12_N8S20681C1D1Ev)();
extern void ABISELECT(_ZThn760_N8S20681C1D1Ev,_ZThn456_N8S20681C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C1D0Ev,_ZTv0_n12_N8S20681C1D0Ev)();
extern void ABISELECT(_ZThn760_N8S20681C1D0Ev,_ZThn456_N8S20681C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S20681C1D1Ev,_ZTv0_n52_N8S20681C1D1Ev)();
extern void ABISELECT(_ZThn816_N8S20681C1D1Ev,_ZThn488_N8S20681C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S20681C1D0Ev,_ZTv0_n52_N8S20681C1D0Ev)();
extern void ABISELECT(_ZThn816_N8S20681C1D0Ev,_ZThn488_N8S20681C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20681C1D1Ev,_ZTv0_n44_N8S20681C1D1Ev)();
extern void ABISELECT(_ZThn3696_N8S20681C1D1Ev,_ZThn2136_N8S20681C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20681C1D0Ev,_ZTv0_n44_N8S20681C1D0Ev)();
extern void ABISELECT(_ZThn3696_N8S20681C1D0Ev,_ZThn2136_N8S20681C1D0Ev)() __attribute__((weak));
extern void _ZN8S20681C72v2Ev();
extern void _ZN8S20681C72v3Ev();
extern void _ZN8S20681C72v4Ev();
extern void ABISELECT(_ZTv0_n64_N8S20681C1D1Ev,_ZTv0_n32_N8S20681C1D1Ev)();
extern void ABISELECT(_ZThn4000_N8S20681C1D1Ev,_ZThn2332_N8S20681C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20681C1D0Ev,_ZTv0_n32_N8S20681C1D0Ev)();
extern void ABISELECT(_ZThn4000_N8S20681C1D0Ev,_ZThn2332_N8S20681C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S20681C1D1Ev,_ZTvn32_n32_N8S20681C1D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S20681C1D0Ev,_ZTvn32_n32_N8S20681C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20681C1D1Ev,_ZTv0_n24_N8S20681C1D1Ev)();
extern void ABISELECT(_ZThn4520_N8S20681C1D1Ev,_ZThn2620_N8S20681C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C1D0Ev,_ZTv0_n24_N8S20681C1D0Ev)();
extern void ABISELECT(_ZThn4520_N8S20681C1D0Ev,_ZThn2620_N8S20681C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C1D1Ev,_ZTv0_n20_N8S20681C1D1Ev)();
extern void ABISELECT(_ZThn4648_N8S20681C1D1Ev,_ZThn2712_N8S20681C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C1D0Ev,_ZTv0_n20_N8S20681C1D0Ev)();
extern void ABISELECT(_ZThn4648_N8S20681C1D0Ev,_ZThn2712_N8S20681C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C1D1Ev,_ZTv0_n24_N8S20681C1D1Ev)();
extern void ABISELECT(_ZThn5112_N8S20681C1D1Ev,_ZThn2992_N8S20681C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C1D0Ev,_ZTv0_n24_N8S20681C1D0Ev)();
extern void ABISELECT(_ZThn5112_N8S20681C1D0Ev,_ZThn2992_N8S20681C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C1D1Ev,_ZTv0_n20_N8S20681C1D1Ev)();
extern void ABISELECT(_ZThn5168_N8S20681C1D1Ev,_ZThn3020_N8S20681C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C1D0Ev,_ZTv0_n20_N8S20681C1D0Ev)();
extern void ABISELECT(_ZThn5168_N8S20681C1D0Ev,_ZThn3020_N8S20681C1D0Ev)() __attribute__((weak));
extern void _ZN9S20681C122v1Ev();
extern void ABISELECT(_ZTvn56_n40_N8S20681C1D1Ev,_ZTvn32_n20_N8S20681C1D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S20681C1D0Ev,_ZTvn32_n20_N8S20681C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C1D1Ev,_ZTv0_n12_N8S20681C1D1Ev)();
extern void ABISELECT(_ZThn5392_N8S20681C1D1Ev,_ZThn3144_N8S20681C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C1D0Ev,_ZTv0_n12_N8S20681C1D0Ev)();
extern void ABISELECT(_ZThn5392_N8S20681C1D0Ev,_ZThn3144_N8S20681C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20681C1[] = {
  ABISELECT(5392,3144),
  ABISELECT(5168,3020),
  ABISELECT(5112,2992),
  ABISELECT(4648,2712),
  ABISELECT(4520,2620),
  ABISELECT(4000,2332),
  ABISELECT(3696,2136),
  ABISELECT(816,488),
  ABISELECT(680,412),
  ABISELECT(760,456),
  ABISELECT(720,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&_ZN8S20681C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C1D0Ev,
  (VTBL_ENTRY)&_ZN9S20681C202v5Ev,
  (VTBL_ENTRY)&_ZN9S20681C202v6Ev,
  (VTBL_ENTRY)&_ZN9S20681C202v7Ev,
  ABISELECT(720,436),
  ABISELECT(680,412),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S20681C1D1Ev,_ZThn20_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S20681C1D0Ev,_ZThn20_N8S20681C1D0Ev),
  ABISELECT(-680,-412),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(-680,-412),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C1D1Ev,_ZTv0_n20_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C1D0Ev,_ZTv0_n20_N8S20681C1D0Ev),
  ABISELECT(-760,-456),
  ABISELECT(-760,-456),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C1D1Ev,_ZTv0_n12_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C1D0Ev,_ZTv0_n12_N8S20681C1D0Ev),
  ABISELECT(-816,-488),
  ABISELECT(4576,2656),
  ABISELECT(4352,2532),
  ABISELECT(4296,2504),
  ABISELECT(3832,2224),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-96,-56),
  ABISELECT(3704,2132),
  ABISELECT(3184,1844),
  ABISELECT(2880,1648),
  ABISELECT(-816,-488),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S20681C1D1Ev,_ZTv0_n52_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S20681C1D0Ev,_ZTv0_n52_N8S20681C1D0Ev),
  0,
  0,
  0,
  ABISELECT(-3696,-2136),
  ABISELECT(1472,884),
  ABISELECT(1416,856),
  ABISELECT(952,576),
  ABISELECT(824,484),
  ABISELECT(304,196),
  ABISELECT(-2936,-1680),
  ABISELECT(-3016,-1724),
  ABISELECT(-2976,-1704),
  ABISELECT(-3696,-2136),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20681C1D1Ev,_ZTv0_n44_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20681C1D0Ev,_ZTv0_n44_N8S20681C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20681C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v3Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v4Ev,
  ABISELECT(-4000,-2332),
  ABISELECT(648,380),
  ABISELECT(-3240,-1876),
  ABISELECT(-3320,-1920),
  ABISELECT(-3280,-1900),
  ABISELECT(520,288),
  ABISELECT(-4000,-2332),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C1D1Ev,_ZTv0_n32_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C1D0Ev,_ZTv0_n32_N8S20681C1D0Ev),
  ABISELECT(584,348),
  ABISELECT(-3304,-1908),
  ABISELECT(-3344,-1932),
  ABISELECT(-4064,-2364),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C1D1Ev,_ZTvn32_n32_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C1D0Ev,_ZTvn32_n32_N8S20681C1D0Ev),
  ABISELECT(-4520,-2620),
  ABISELECT(-3760,-2164),
  ABISELECT(-3840,-2208),
  ABISELECT(-3800,-2188),
  ABISELECT(-4520,-2620),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C1D1Ev,_ZTv0_n24_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C1D0Ev,_ZTv0_n24_N8S20681C1D0Ev),
  ABISELECT(-4648,-2712),
  ABISELECT(-3888,-2256),
  ABISELECT(-3928,-2280),
  ABISELECT(-4648,-2712),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C1D1Ev,_ZTv0_n20_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C1D0Ev,_ZTv0_n20_N8S20681C1D0Ev),
  ABISELECT(-5112,-2992),
  ABISELECT(56,28),
  ABISELECT(-4352,-2536),
  ABISELECT(-4392,-2560),
  ABISELECT(-5112,-2992),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C1D1Ev,_ZTv0_n24_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C1D0Ev,_ZTv0_n24_N8S20681C1D0Ev),
  0,
  ABISELECT(-5168,-3020),
  ABISELECT(-4408,-2564),
  ABISELECT(-4448,-2588),
  ABISELECT(-5168,-3020),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C1D1Ev,_ZTv0_n20_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C1D0Ev,_ZTv0_n20_N8S20681C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
  ABISELECT(-4464,-2596),
  ABISELECT(-4504,-2620),
  ABISELECT(-5224,-3052),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C1D1Ev,_ZTvn32_n20_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C1D0Ev,_ZTvn32_n20_N8S20681C1D0Ev),
  ABISELECT(-5392,-3144),
  ABISELECT(-5392,-3144),
  (VTBL_ENTRY)&(_ZTI8S20681C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C1D1Ev,_ZTv0_n12_N8S20681C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C1D0Ev,_ZTv0_n12_N8S20681C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20681C1[];
extern void _ZN9S20681C20D1Ev();
extern void _ZN9S20681C20D0Ev();
extern void _ZN9S20681C202v5Ev();
extern void _ZN9S20681C202v6Ev();
extern void _ZN9S20681C202v7Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C20__8S20681C1[] = {
  ABISELECT(760,456),
  ABISELECT(720,432),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C20[0]),
  (VTBL_ENTRY)&_ZN9S20681C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C20D0Ev,
  (VTBL_ENTRY)&_ZN9S20681C202v5Ev,
  (VTBL_ENTRY)&_ZN9S20681C202v6Ev,
  (VTBL_ENTRY)&_ZN9S20681C202v7Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C20__A5__8S20681C1[] = {
  ABISELECT(760,456),
  ABISELECT(720,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn760_N8S20681C2D1Ev,_ZThn456_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn760_N8S20681C2D0Ev,_ZThn456_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C20__A5__8S20681C1[] = {
  ABISELECT(-760,-456),
  ABISELECT(-760,-456),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void _ZN9S20681C11D1Ev();
extern void _ZN9S20681C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C119S20681C20__A1__8S20681C1[] = {
  ABISELECT(720,436),
  ABISELECT(680,412),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&_ZN9S20681C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C11D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C119S20681C20__A6__8S20681C1[] = {
  ABISELECT(720,436),
  ABISELECT(680,412),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn720_N8S20681C2D1Ev,_ZThn436_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn720_N8S20681C2D0Ev,_ZThn436_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C119S20681C20__A6__8S20681C1[] = {
  ABISELECT(-720,-436),
  ABISELECT(-720,-436),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev)();
extern void ABISELECT(_ZThn720_N9S20681C11D1Ev,_ZThn436_N9S20681C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev)();
extern void ABISELECT(_ZThn720_N9S20681C11D0Ev,_ZThn436_N9S20681C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C119S20681C20__A1__8S20681C1[] = {
  ABISELECT(-720,-436),
  ABISELECT(-720,-436),
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C20D1Ev,_ZTv0_n12_N9S20681C20D1Ev)();
extern void ABISELECT(_ZThn760_N9S20681C20D1Ev,_ZThn456_N9S20681C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20681C20D0Ev,_ZTv0_n12_N9S20681C20D0Ev)();
extern void ABISELECT(_ZThn760_N9S20681C20D0Ev,_ZThn456_N9S20681C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C20__8S20681C1[] = {
  ABISELECT(-760,-456),
  ABISELECT(-760,-456),
  (VTBL_ENTRY)&(_ZTI9S20681C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C20D1Ev,_ZTv0_n12_N9S20681C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C20D0Ev,_ZTv0_n12_N9S20681C20D0Ev),
};
extern void ABISELECT(_ZThn40_N9S20681C20D1Ev,_ZThn20_N9S20681C20D1Ev)();
extern void ABISELECT(_ZThn40_N9S20681C20D0Ev,_ZThn20_N9S20681C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20681C11__9S20681C20__8S20681C1[] = {
  ABISELECT(720,436),
  ABISELECT(680,412),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20681C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20681C20D1Ev,_ZThn20_N9S20681C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20681C20D0Ev,_ZThn20_N9S20681C20D0Ev),
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C1[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20681C2D1Ev,_ZThn44_N8S20681C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S20681C2D0Ev,_ZThn44_N8S20681C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C2__8S20681C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void _ZN8S20681C6D1Ev();
extern void _ZN8S20681C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C6__8S20681C1[] = {
  ABISELECT(4576,2656),
  ABISELECT(4352,2532),
  ABISELECT(4296,2504),
  ABISELECT(3832,2224),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-96,-56),
  ABISELECT(3704,2132),
  ABISELECT(3184,1844),
  ABISELECT(2880,1648),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&_ZN8S20681C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C6D0Ev,
};
extern void ABISELECT(_ZTv0_n88_N8S20681C6D1Ev,_ZTv0_n44_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn2880_N8S20681C6D1Ev,_ZThn1648_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20681C6D0Ev,_ZTv0_n44_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn2880_N8S20681C6D0Ev,_ZThn1648_N8S20681C6D0Ev)() __attribute__((weak));
extern void _ZN8S20681C72v2Ev();
extern void _ZN8S20681C72v3Ev();
extern void _ZN8S20681C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C7__8S20681C6__8S20681C1[] = {
  0,
  0,
  0,
  ABISELECT(-2880,-1648),
  ABISELECT(1472,884),
  ABISELECT(1416,856),
  ABISELECT(952,576),
  ABISELECT(824,484),
  ABISELECT(304,196),
  ABISELECT(-2936,-1680),
  ABISELECT(-3016,-1724),
  ABISELECT(-2976,-1704),
  ABISELECT(-2880,-1648),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20681C6D1Ev,_ZTv0_n44_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20681C6D0Ev,_ZTv0_n44_N8S20681C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20681C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v3Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v4Ev,
};
extern void ABISELECT(_ZTv0_n64_N8S20681C6D1Ev,_ZTv0_n32_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn3184_N8S20681C6D1Ev,_ZThn1844_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20681C6D0Ev,_ZTv0_n32_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn3184_N8S20681C6D0Ev,_ZThn1844_N8S20681C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C8__8S20681C6__8S20681C1[] = {
  ABISELECT(-3184,-1844),
  ABISELECT(648,380),
  ABISELECT(-3240,-1876),
  ABISELECT(-3320,-1920),
  ABISELECT(-3280,-1900),
  ABISELECT(520,288),
  ABISELECT(-3184,-1844),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C6D1Ev,_ZTv0_n32_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C6D0Ev,_ZTv0_n32_N8S20681C6D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20681C6D1Ev,_ZTv0_n24_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn3704_N8S20681C6D1Ev,_ZThn2132_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C6D0Ev,_ZTv0_n24_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn3704_N8S20681C6D0Ev,_ZThn2132_N8S20681C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C9__8S20681C6__8S20681C1[] = {
  ABISELECT(-3704,-2132),
  ABISELECT(-3760,-2164),
  ABISELECT(-3840,-2208),
  ABISELECT(-3800,-2188),
  ABISELECT(-3704,-2132),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C6D1Ev,_ZTv0_n24_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C6D0Ev,_ZTv0_n24_N8S20681C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C6__8S20681C1[] = {
  ABISELECT(136,76),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C6D1Ev,_ZTv0_n12_N8S20681C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C6D0Ev,_ZTv0_n12_N8S20681C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C6__8S20681C1[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C6D1Ev,_ZTv0_n12_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C6D0Ev,_ZTv0_n12_N8S20681C6D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S20681C6D1Ev,_ZTvn32_n32_N8S20681C6D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S20681C6D0Ev,_ZTvn32_n32_N8S20681C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20681C108S20681C8__8S20681C6__8S20681C1[] = {
  ABISELECT(584,348),
  ABISELECT(-3304,-1908),
  ABISELECT(-3344,-1932),
  ABISELECT(-3248,-1876),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C6D1Ev,_ZTvn32_n32_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C6D0Ev,_ZTvn32_n32_N8S20681C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn3832_N8S20681C6D1Ev,_ZThn2224_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn3832_N8S20681C6D0Ev,_ZThn2224_N8S20681C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C11__8S20681C6__8S20681C1[] = {
  ABISELECT(-3832,-2224),
  ABISELECT(-3888,-2256),
  ABISELECT(-3928,-2280),
  ABISELECT(-3832,-2224),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20681C6D1Ev,_ZTv0_n24_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn4296_N8S20681C6D1Ev,_ZThn2504_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C6D0Ev,_ZTv0_n24_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn4296_N8S20681C6D0Ev,_ZThn2504_N8S20681C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C13__8S20681C6__8S20681C1[] = {
  ABISELECT(-4296,-2504),
  ABISELECT(56,28),
  ABISELECT(-4352,-2536),
  ABISELECT(-4392,-2560),
  ABISELECT(-4296,-2504),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C6D1Ev,_ZTv0_n24_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C6D0Ev,_ZTv0_n24_N8S20681C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn4352_N8S20681C6D1Ev,_ZThn2532_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn4352_N8S20681C6D0Ev,_ZThn2532_N8S20681C6D0Ev)() __attribute__((weak));
extern void _ZN9S20681C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C12__8S20681C6__8S20681C1[] = {
  0,
  ABISELECT(-4352,-2532),
  ABISELECT(-4408,-2564),
  ABISELECT(-4448,-2588),
  ABISELECT(-4352,-2532),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S20681C6D1Ev,_ZTvn32_n20_N8S20681C6D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S20681C6D0Ev,_ZTvn32_n20_N8S20681C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C12__A4__8S20681C6__8S20681C1[] = {
  ABISELECT(-4464,-2596),
  ABISELECT(-4504,-2620),
  ABISELECT(-4408,-2564),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C6D1Ev,_ZTvn32_n20_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C6D0Ev,_ZTvn32_n20_N8S20681C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C6D1Ev,_ZTv0_n12_N8S20681C6D1Ev)();
extern void ABISELECT(_ZThn4576_N8S20681C6D1Ev,_ZThn2656_N8S20681C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20681C6D0Ev,_ZTv0_n12_N8S20681C6D0Ev)();
extern void ABISELECT(_ZThn4576_N8S20681C6D0Ev,_ZThn2656_N8S20681C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3572C24__8S20681C6__8S20681C1[] = {
  ABISELECT(-4576,-2656),
  ABISELECT(-4576,-2656),
  (VTBL_ENTRY)&(_ZTI8S20681C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C6D1Ev,_ZTv0_n12_N8S20681C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C6D0Ev,_ZTv0_n12_N8S20681C6D0Ev),
};
extern void _ZN8S20681C7D1Ev();
extern void _ZN8S20681C7D0Ev();
extern void _ZN8S20681C72v2Ev();
extern void _ZN8S20681C72v3Ev();
extern void _ZN8S20681C72v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C7__8S20681C1[] = {
  ABISELECT(1472,884),
  ABISELECT(1416,856),
  ABISELECT(952,576),
  ABISELECT(824,484),
  ABISELECT(304,196),
  ABISELECT(-2936,-1680),
  ABISELECT(-3016,-1724),
  ABISELECT(-2976,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&_ZN8S20681C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v3Ev,
  (VTBL_ENTRY)&_ZN8S20681C72v4Ev,
};
extern void _ZN8S20681C9D1Ev();
extern void _ZN8S20681C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C98S20681C7__A1__8S20681C1[] = {
  ABISELECT(-2936,-1680),
  ABISELECT(-3016,-1724),
  ABISELECT(-2976,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&_ZN8S20681C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C9D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C98S20681C7__A1__8S20681C1[] = {
  ABISELECT(3016,1724),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(3016,1724),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C98S20681C7__A1__8S20681C1[] = {
  ABISELECT(2936,1680),
  ABISELECT(2936,1680),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S20681C7D1Ev,_ZTv0_n32_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn304_N8S20681C7D1Ev,_ZThn196_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20681C7D0Ev,_ZTv0_n32_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn304_N8S20681C7D0Ev,_ZThn196_N8S20681C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C8__8S20681C7__8S20681C1[] = {
  ABISELECT(-304,-196),
  ABISELECT(648,380),
  ABISELECT(-3240,-1876),
  ABISELECT(-3320,-1920),
  ABISELECT(-3280,-1900),
  ABISELECT(520,288),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C7D1Ev,_ZTv0_n32_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20681C7D0Ev,_ZTv0_n32_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn824_N8S20681C7D1Ev,_ZThn484_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn824_N8S20681C7D0Ev,_ZThn484_N8S20681C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C9__8S20681C7__8S20681C1[] = {
  ABISELECT(-824,-484),
  ABISELECT(-3760,-2164),
  ABISELECT(-3840,-2208),
  ABISELECT(-3800,-2188),
  ABISELECT(-824,-484),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C7__8S20681C1[] = {
  ABISELECT(3016,1724),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(3016,1724),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C7D1Ev,_ZTv0_n12_N8S20681C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C7D0Ev,_ZTv0_n12_N8S20681C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C7__8S20681C1[] = {
  ABISELECT(2936,1680),
  ABISELECT(2936,1680),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C7D1Ev,_ZTv0_n12_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C7D0Ev,_ZTv0_n12_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S20681C7D1Ev,_ZTvn32_n32_N8S20681C7D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S20681C7D0Ev,_ZTvn32_n32_N8S20681C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20681C108S20681C8__8S20681C7__8S20681C1[] = {
  ABISELECT(584,348),
  ABISELECT(-3304,-1908),
  ABISELECT(-3344,-1932),
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C7D1Ev,_ZTvn32_n32_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S20681C7D0Ev,_ZTvn32_n32_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn952_N8S20681C7D1Ev,_ZThn576_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn952_N8S20681C7D0Ev,_ZThn576_N8S20681C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C11__8S20681C7__8S20681C1[] = {
  ABISELECT(-952,-576),
  ABISELECT(-3888,-2256),
  ABISELECT(-3928,-2280),
  ABISELECT(-952,-576),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn1416_N8S20681C7D1Ev,_ZThn856_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn1416_N8S20681C7D0Ev,_ZThn856_N8S20681C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C13__8S20681C7__8S20681C1[] = {
  ABISELECT(-1416,-856),
  ABISELECT(56,28),
  ABISELECT(-4352,-2536),
  ABISELECT(-4392,-2560),
  ABISELECT(-1416,-856),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZThn1472_N8S20681C7D1Ev,_ZThn884_N8S20681C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev)();
extern void ABISELECT(_ZThn1472_N8S20681C7D0Ev,_ZThn884_N8S20681C7D0Ev)() __attribute__((weak));
extern void _ZN9S20681C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C12__8S20681C7__8S20681C1[] = {
  0,
  ABISELECT(-1472,-884),
  ABISELECT(-4408,-2564),
  ABISELECT(-4448,-2588),
  ABISELECT(-1472,-884),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev),
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S20681C7D1Ev,_ZTvn32_n20_N8S20681C7D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S20681C7D0Ev,_ZTvn32_n20_N8S20681C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C12__A4__8S20681C7__8S20681C1[] = {
  ABISELECT(-4464,-2596),
  ABISELECT(-4504,-2620),
  ABISELECT(-1528,-916),
  (VTBL_ENTRY)&(_ZTI8S20681C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C7D1Ev,_ZTvn32_n20_N8S20681C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S20681C7D0Ev,_ZTvn32_n20_N8S20681C7D0Ev),
};
extern void _ZN8S20681C8D1Ev();
extern void _ZN8S20681C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C8__8S20681C1[] = {
  ABISELECT(648,380),
  ABISELECT(-3240,-1876),
  ABISELECT(-3320,-1920),
  ABISELECT(-3280,-1900),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&_ZN8S20681C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C8D0Ev,
};
extern void _ZN9S20681C10D1Ev();
extern void _ZN9S20681C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C108S20681C8__8S20681C1[] = {
  ABISELECT(584,348),
  ABISELECT(-3304,-1908),
  ABISELECT(-3344,-1932),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&_ZN9S20681C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C10D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C108S20681C8__A1__8S20681C1[] = {
  ABISELECT(-3304,-1908),
  ABISELECT(-3344,-1932),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C108S20681C8__A1__8S20681C1[] = {
  ABISELECT(3304,1908),
  ABISELECT(3304,1908),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C108S20681C8__8S20681C1[] = {
  ABISELECT(3304,1908),
  ABISELECT(3304,1908),
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C10D1Ev,_ZTv0_n12_N9S20681C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C10D0Ev,_ZTv0_n12_N9S20681C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev)();
extern void ABISELECT(_ZThn584_N9S20681C10D1Ev,_ZThn348_N9S20681C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev)();
extern void ABISELECT(_ZThn584_N9S20681C10D0Ev,_ZThn348_N9S20681C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C11__9S20681C108S20681C8__8S20681C1[] = {
  ABISELECT(-584,-348),
  ABISELECT(-3888,-2256),
  ABISELECT(-3928,-2280),
  ABISELECT(-584,-348),
  (VTBL_ENTRY)&(_ZTI9S20681C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn520_N8S20681C8D1Ev,_ZThn288_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn520_N8S20681C8D0Ev,_ZThn288_N8S20681C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20681C9__8S20681C8__8S20681C1[] = {
  ABISELECT(-520,-288),
  ABISELECT(-3760,-2164),
  ABISELECT(-3840,-2208),
  ABISELECT(-3800,-2188),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C8__8S20681C1[] = {
  ABISELECT(3320,1920),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(3320,1920),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C8D1Ev,_ZTv0_n12_N8S20681C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C8D0Ev,_ZTv0_n12_N8S20681C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C8__8S20681C1[] = {
  ABISELECT(3240,1876),
  ABISELECT(3240,1876),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C8D1Ev,_ZTv0_n12_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C8D0Ev,_ZTv0_n12_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZThn64_N8S20681C8D1Ev,_ZThn32_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S20681C8D0Ev,_ZThn32_N8S20681C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20681C10__8S20681C8__8S20681C1[] = {
  ABISELECT(584,348),
  ABISELECT(-3304,-1908),
  ABISELECT(-3344,-1932),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20681C8D1Ev,_ZThn32_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20681C8D0Ev,_ZThn32_N8S20681C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev)();
extern void ABISELECT(_ZThn648_N8S20681C8D1Ev,_ZThn380_N8S20681C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev)();
extern void ABISELECT(_ZThn648_N8S20681C8D0Ev,_ZThn380_N8S20681C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20681C11__8S20681C8__8S20681C1[] = {
  ABISELECT(-648,-380),
  ABISELECT(-3888,-2256),
  ABISELECT(-3928,-2280),
  ABISELECT(-648,-380),
  (VTBL_ENTRY)&(_ZTI8S20681C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev),
};
extern void _ZN8S20681C9D1Ev();
extern void _ZN8S20681C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C9__8S20681C1[] = {
  ABISELECT(-3760,-2164),
  ABISELECT(-3840,-2208),
  ABISELECT(-3800,-2188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&_ZN8S20681C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C9D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C2__8S20681C9__8S20681C1[] = {
  ABISELECT(3840,2208),
  ABISELECT(80,44),
  ABISELECT(40,20),
  ABISELECT(3840,2208),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D1Ev,_ZTv0_n20_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20681C9D0Ev,_ZTv0_n20_N8S20681C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C9__8S20681C1[] = {
  ABISELECT(3760,2164),
  ABISELECT(3760,2164),
  (VTBL_ENTRY)&(_ZTI8S20681C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D1Ev,_ZTv0_n12_N8S20681C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C9D0Ev,_ZTv0_n12_N8S20681C9D0Ev),
};
extern void _ZN9S20681C11D1Ev();
extern void _ZN9S20681C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C11__8S20681C1[] = {
  ABISELECT(-3888,-2256),
  ABISELECT(-3928,-2280),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&_ZN9S20681C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C11D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C11__A2__8S20681C1[] = {
  ABISELECT(-3888,-2256),
  ABISELECT(-3928,-2280),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C11__A2__8S20681C1[] = {
  ABISELECT(3888,2256),
  ABISELECT(3888,2256),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C11__8S20681C1[] = {
  ABISELECT(3888,2256),
  ABISELECT(3888,2256),
  (VTBL_ENTRY)&(_ZTI9S20681C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev),
};
extern void _ZN9S20681C13D1Ev();
extern void _ZN9S20681C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C13__8S20681C1[] = {
  ABISELECT(56,28),
  ABISELECT(-4352,-2536),
  ABISELECT(-4392,-2560),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&_ZN9S20681C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C13D0Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C13__A3__8S20681C1[] = {
  ABISELECT(-4352,-2536),
  ABISELECT(-4392,-2560),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C13__A3__8S20681C1[] = {
  ABISELECT(4352,2536),
  ABISELECT(4352,2536),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C13D1Ev,_ZTv0_n12_N9S20681C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C13D0Ev,_ZTv0_n12_N9S20681C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S20681C13__8S20681C1[] = {
  ABISELECT(4352,2536),
  ABISELECT(4352,2536),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C13D1Ev,_ZTv0_n12_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C13D0Ev,_ZTv0_n12_N9S20681C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S20681C13D1Ev,_ZThn28_N9S20681C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S20681C13D0Ev,_ZThn28_N9S20681C13D0Ev)() __attribute__((weak));
extern void _ZN9S20681C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C12__9S20681C13__8S20681C1[] = {
  0,
  ABISELECT(-56,-28),
  ABISELECT(-4408,-2564),
  ABISELECT(-4448,-2588),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S20681C13D1Ev,_ZTvn32_n20_N9S20681C13D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S20681C13D0Ev,_ZTvn32_n20_N9S20681C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C12__A1__9S20681C13__8S20681C1[] = {
  ABISELECT(-4464,-2596),
  ABISELECT(-4504,-2620),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20681C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S20681C13D1Ev,_ZTvn32_n20_N9S20681C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S20681C13D0Ev,_ZTvn32_n20_N9S20681C13D0Ev),
};
extern void _ZN9S20681C12D1Ev();
extern void _ZN9S20681C12D0Ev();
extern void _ZN9S20681C122v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20681C12__8S20681C1[] = {
  ABISELECT(-4408,-2564),
  ABISELECT(-4448,-2588),
  0,
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&_ZN9S20681C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20681C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20681C122v1Ev,
};
extern void _ZN8S20681C2D1Ev();
extern void _ZN8S20681C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20681C29S20681C12__A4__8S20681C1[] = {
  ABISELECT(-4464,-2596),
  ABISELECT(-4504,-2620),
  0,
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&_ZN8S20681C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20681C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S20681C29S20681C12__A4__8S20681C1[] = {
  ABISELECT(4464,2596),
  ABISELECT(4464,2596),
  (VTBL_ENTRY)&(_ZTI8S20681C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev),
};
extern void ABISELECT(_ZThn56_N9S20681C12D1Ev,_ZThn32_N9S20681C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S20681C12D0Ev,_ZThn32_N9S20681C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20681C2__9S20681C12__8S20681C1[] = {
  ABISELECT(-4464,-2596),
  ABISELECT(-4504,-2620),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20681C12D1Ev,_ZThn32_N9S20681C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20681C12D0Ev,_ZThn32_N9S20681C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20681C12D1Ev,_ZTv0_n12_N9S20681C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20681C12D0Ev,_ZTv0_n12_N9S20681C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S20681C12__8S20681C1[] = {
  ABISELECT(4408,2564),
  ABISELECT(4408,2564),
  (VTBL_ENTRY)&(_ZTI9S20681C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C12D1Ev,_ZTv0_n12_N9S20681C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20681C12D0Ev,_ZTv0_n12_N9S20681C12D0Ev),
};
static  VTT_ENTRY vtt_S20681C1[] = {
  {&(_ZTV8S20681C1[13]),  13,130},
  {&(_tg__ZTV9S20681C20__8S20681C1[4]),  4,9},
  {&(_tg__ZTV8S20681C29S20681C20__A5__8S20681C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C20__A5__8S20681C1[3]),  3,5},
  {&(_tg__ZTV9S20681C119S20681C20__A1__8S20681C1[4]),  4,6},
  {&(_tg__ZTV8S20681C29S20681C119S20681C20__A6__8S20681C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C119S20681C20__A6__8S20681C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C119S20681C20__A1__8S20681C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C20__8S20681C1[3]),  3,5},
  {&(_tg__ZTV9S20681C11__9S20681C20__8S20681C1[4]),  4,6},
  {&(_ZTV8S20681C1[29]),  29,130},
  {&(_ZTV8S20681C1[34]),  34,130},
  {&(_ZTV8S20681C1[49]),  49,130},
  {&(_ZTV8S20681C1[65]),  65,130},
  {&(_ZTV8S20681C1[78]),  78,130},
  {&(_ZTV8S20681C1[93]),  93,130},
  {&(_ZTV8S20681C1[85]),  85,130},
  {&(_ZTV8S20681C1[100]),  100,130},
  {&(_ZTV8S20681C1[108]),  108,130},
  {&(_ZTV8S20681C1[116]),  116,130},
  {&(_ZTV8S20681C1[123]),  123,130},
  {&(_ZTV8S20681C1[128]),  128,130},
  {&(_ZTV8S20681C1[22]),  22,130},
  {&(_tg__ZTV8S20681C2__8S20681C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C2__8S20681C1[3]),  3,5},
  {&(_tg__ZTV8S20681C6__8S20681C1[12]),  12,14},
  {&(_tg__ZTV8S20681C7__8S20681C6__8S20681C1[14]),  14,19},
  {&(_tg__ZTV8S20681C8__8S20681C6__8S20681C1[8]),  8,10},
  {&(_tg__ZTV8S20681C9__8S20681C6__8S20681C1[6]),  6,8},
  {&(_tg__ZTV8S20681C2__8S20681C6__8S20681C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C6__8S20681C1[3]),  3,5},
  {&(_tg__ZTV9S20681C108S20681C8__8S20681C6__8S20681C1[5]),  5,7},
  {&(_tg__ZTV9S20681C11__8S20681C6__8S20681C1[5]),  5,7},
  {&(_tg__ZTV9S20681C13__8S20681C6__8S20681C1[6]),  6,8},
  {&(_tg__ZTV9S20681C12__8S20681C6__8S20681C1[6]),  6,9},
  {&(_tg__ZTV8S20681C29S20681C12__A4__8S20681C6__8S20681C1[4]),  4,6},
  {&(_tg__ZTV8S3572C24__8S20681C6__8S20681C1[3]),  3,5},
  {&(_tg__ZTV8S20681C7__8S20681C1[10]),  10,15},
  {&(_tg__ZTV8S20681C98S20681C7__A1__8S20681C1[5]),  5,7},
  {&(_tg__ZTV8S20681C2__8S20681C98S20681C7__A1__8S20681C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C98S20681C7__A1__8S20681C1[3]),  3,5},
  {&(_tg__ZTV8S20681C8__8S20681C7__8S20681C1[8]),  8,10},
  {&(_tg__ZTV8S20681C9__8S20681C7__8S20681C1[6]),  6,8},
  {&(_tg__ZTV8S20681C2__8S20681C7__8S20681C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C7__8S20681C1[3]),  3,5},
  {&(_tg__ZTV9S20681C108S20681C8__8S20681C7__8S20681C1[5]),  5,7},
  {&(_tg__ZTV9S20681C11__8S20681C7__8S20681C1[5]),  5,7},
  {&(_tg__ZTV9S20681C13__8S20681C7__8S20681C1[6]),  6,8},
  {&(_tg__ZTV9S20681C12__8S20681C7__8S20681C1[6]),  6,9},
  {&(_tg__ZTV8S20681C29S20681C12__A4__8S20681C7__8S20681C1[4]),  4,6},
  {&(_tg__ZTV8S20681C8__8S20681C1[7]),  7,9},
  {&(_tg__ZTV9S20681C108S20681C8__8S20681C1[5]),  5,7},
  {&(_tg__ZTV8S20681C29S20681C108S20681C8__A1__8S20681C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C108S20681C8__A1__8S20681C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C108S20681C8__8S20681C1[3]),  3,5},
  {&(_tg__ZTV9S20681C11__9S20681C108S20681C8__8S20681C1[5]),  5,7},
  {&(_tg__ZTV8S20681C9__8S20681C8__8S20681C1[6]),  6,8},
  {&(_tg__ZTV8S20681C2__8S20681C8__8S20681C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C8__8S20681C1[3]),  3,5},
  {&(_tg__ZTV9S20681C10__8S20681C8__8S20681C1[5]),  5,7},
  {&(_tg__ZTV9S20681C11__8S20681C8__8S20681C1[5]),  5,7},
  {&(_tg__ZTV8S20681C9__8S20681C1[5]),  5,7},
  {&(_tg__ZTV8S20681C2__8S20681C9__8S20681C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S20681C9__8S20681C1[3]),  3,5},
  {&(_tg__ZTV9S20681C11__8S20681C1[4]),  4,6},
  {&(_tg__ZTV8S20681C29S20681C11__A2__8S20681C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C11__A2__8S20681C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C11__8S20681C1[3]),  3,5},
  {&(_tg__ZTV9S20681C13__8S20681C1[5]),  5,7},
  {&(_tg__ZTV8S20681C29S20681C13__A3__8S20681C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C13__A3__8S20681C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S20681C13__8S20681C1[3]),  3,5},
  {&(_tg__ZTV9S20681C12__9S20681C13__8S20681C1[6]),  6,9},
  {&(_tg__ZTV8S20681C29S20681C12__A1__9S20681C13__8S20681C1[4]),  4,6},
  {&(_tg__ZTV9S20681C12__8S20681C1[4]),  4,7},
  {&(_tg__ZTV8S20681C29S20681C12__A4__8S20681C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S20681C29S20681C12__A4__8S20681C1[3]),  3,5},
  {&(_tg__ZTV8S20681C2__9S20681C12__8S20681C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S20681C12__8S20681C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20681C1[];
extern  VTBL_ENTRY _ZTV8S20681C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20681C1[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C13D0Ev,_ZTv0_n20_N9S20681C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20681C13D0Ev,_ZThn28_N9S20681C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C13D1Ev,_ZTv0_n20_N9S20681C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20681C13D1Ev,_ZThn28_N9S20681C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C8D0Ev,_ZTv0_n20_N8S20681C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S20681C8D0Ev,_ZThn380_N8S20681C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C8D1Ev,_ZTv0_n20_N8S20681C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S20681C8D1Ev,_ZThn380_N8S20681C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C8D0Ev,_ZTv0_n24_N8S20681C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S20681C8D0Ev,_ZThn288_N8S20681C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C8D1Ev,_ZTv0_n24_N8S20681C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S20681C8D1Ev,_ZThn288_N8S20681C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C10D0Ev,_ZTv0_n20_N9S20681C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S20681C10D0Ev,_ZThn348_N9S20681C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20681C10D1Ev,_ZTv0_n20_N9S20681C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N9S20681C10D1Ev,_ZThn348_N9S20681C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C7D0Ev,_ZTv0_n20_N8S20681C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S20681C7D0Ev,_ZThn884_N8S20681C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn952_N8S20681C7D0Ev,_ZThn576_N8S20681C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C7D1Ev,_ZTv0_n20_N8S20681C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S20681C7D1Ev,_ZThn884_N8S20681C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn952_N8S20681C7D1Ev,_ZThn576_N8S20681C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C7D0Ev,_ZTv0_n24_N8S20681C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N8S20681C7D0Ev,_ZThn856_N8S20681C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S20681C7D0Ev,_ZThn484_N8S20681C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C7D1Ev,_ZTv0_n24_N8S20681C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N8S20681C7D1Ev,_ZThn856_N8S20681C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S20681C7D1Ev,_ZThn484_N8S20681C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C7D0Ev,_ZTv0_n32_N8S20681C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20681C7D0Ev,_ZThn196_N8S20681C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C7D1Ev,_ZTv0_n32_N8S20681C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20681C7D1Ev,_ZThn196_N8S20681C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C6D0Ev,_ZTv0_n12_N8S20681C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4576_N8S20681C6D0Ev,_ZThn2656_N8S20681C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C6D1Ev,_ZTv0_n12_N8S20681C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4576_N8S20681C6D1Ev,_ZThn2656_N8S20681C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C6D0Ev,_ZTv0_n20_N8S20681C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4352_N8S20681C6D0Ev,_ZThn2532_N8S20681C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3832_N8S20681C6D0Ev,_ZThn2224_N8S20681C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C6D1Ev,_ZTv0_n20_N8S20681C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4352_N8S20681C6D1Ev,_ZThn2532_N8S20681C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3832_N8S20681C6D1Ev,_ZThn2224_N8S20681C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C6D0Ev,_ZTv0_n24_N8S20681C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4296_N8S20681C6D0Ev,_ZThn2504_N8S20681C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3704_N8S20681C6D0Ev,_ZThn2132_N8S20681C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C6D1Ev,_ZTv0_n24_N8S20681C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4296_N8S20681C6D1Ev,_ZThn2504_N8S20681C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3704_N8S20681C6D1Ev,_ZThn2132_N8S20681C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C6D0Ev,_ZTv0_n32_N8S20681C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N8S20681C6D0Ev,_ZThn1844_N8S20681C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C6D1Ev,_ZTv0_n32_N8S20681C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3184_N8S20681C6D1Ev,_ZThn1844_N8S20681C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20681C6D0Ev,_ZTv0_n44_N8S20681C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S20681C6D0Ev,_ZThn1648_N8S20681C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20681C6D1Ev,_ZTv0_n44_N8S20681C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S20681C6D1Ev,_ZThn1648_N8S20681C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C20D0Ev,_ZTv0_n12_N9S20681C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N9S20681C20D0Ev,_ZThn456_N9S20681C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C20D1Ev,_ZTv0_n12_N9S20681C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N9S20681C20D1Ev,_ZThn456_N9S20681C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C11D0Ev,_ZTv0_n12_N9S20681C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20681C11D0Ev,_ZThn436_N9S20681C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20681C11D1Ev,_ZTv0_n12_N9S20681C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20681C11D1Ev,_ZThn436_N9S20681C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D0Ev,_ZTv0_n12_N8S20681C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20681C2D0Ev,_ZThn44_N8S20681C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S20681C2D0Ev,_ZThn436_N8S20681C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn760_N8S20681C2D0Ev,_ZThn456_N8S20681C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C2D1Ev,_ZTv0_n12_N8S20681C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20681C2D1Ev,_ZThn44_N8S20681C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S20681C2D1Ev,_ZThn436_N8S20681C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn760_N8S20681C2D1Ev,_ZThn456_N8S20681C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C1D0Ev,_ZTv0_n24_N8S20681C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5112_N8S20681C1D0Ev,_ZThn2992_N8S20681C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4520_N8S20681C1D0Ev,_ZThn2620_N8S20681C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20681C1D1Ev,_ZTv0_n24_N8S20681C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5112_N8S20681C1D1Ev,_ZThn2992_N8S20681C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4520_N8S20681C1D1Ev,_ZThn2620_N8S20681C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C1D0Ev,_ZTv0_n32_N8S20681C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4000_N8S20681C1D0Ev,_ZThn2332_N8S20681C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20681C1D1Ev,_ZTv0_n32_N8S20681C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4000_N8S20681C1D1Ev,_ZThn2332_N8S20681C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20681C1D0Ev,_ZTv0_n44_N8S20681C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3696_N8S20681C1D0Ev,_ZThn2136_N8S20681C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20681C1D1Ev,_ZTv0_n44_N8S20681C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3696_N8S20681C1D1Ev,_ZThn2136_N8S20681C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S20681C1D0Ev,_ZTv0_n52_N8S20681C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn816_N8S20681C1D0Ev,_ZThn488_N8S20681C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S20681C1D1Ev,_ZTv0_n52_N8S20681C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn816_N8S20681C1D1Ev,_ZThn488_N8S20681C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C1D0Ev,_ZTv0_n12_N8S20681C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5392_N8S20681C1D0Ev,_ZThn3144_N8S20681C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn760_N8S20681C1D0Ev,_ZThn456_N8S20681C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20681C1D1Ev,_ZTv0_n12_N8S20681C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5392_N8S20681C1D1Ev,_ZThn3144_N8S20681C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn760_N8S20681C1D1Ev,_ZThn456_N8S20681C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C1D0Ev,_ZTv0_n20_N8S20681C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5168_N8S20681C1D0Ev,_ZThn3020_N8S20681C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4648_N8S20681C1D0Ev,_ZThn2712_N8S20681C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn680_N8S20681C1D0Ev,_ZThn412_N8S20681C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20681C1D1Ev,_ZTv0_n20_N8S20681C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn5168_N8S20681C1D1Ev,_ZThn3020_N8S20681C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn4648_N8S20681C1D1Ev,_ZThn2712_N8S20681C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn680_N8S20681C1D1Ev,_ZThn412_N8S20681C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20681C1 = {  "S20681C1", // class name
  bases_S20681C1, 23,
  &(vtc_S20681C1[0]), // expected_vtbl_contents
  &(vtt_S20681C1[0]), // expected_vtt_contents
  ABISELECT(5632,3296), // object size
  NSPAIRA(_ZTI8S20681C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20681C1),130, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20681C1),79, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C5_nt  {
  virtual void  v7(); // _ZN11S20980C5_nt2v7Ev
  virtual void  v8(); // _ZN11S20980C5_nt2v8Ev
  virtual void  v9(); // _ZN11S20980C5_nt2v9Ev
  virtual void  v10(); // _ZN11S20980C5_nt3v10Ev
  ~S20980C5_nt(); // tgen
  S20980C5_nt(); // tgen
};
//SIG(-1 S20980C5_nt) C1{ v1 v2 v3 v4}


void  S20980C5_nt ::v7(){vfunc_called(this, "_ZN11S20980C5_nt2v7Ev");}
void  S20980C5_nt ::v8(){vfunc_called(this, "_ZN11S20980C5_nt2v8Ev");}
void  S20980C5_nt ::v9(){vfunc_called(this, "_ZN11S20980C5_nt2v9Ev");}
void  S20980C5_nt ::v10(){vfunc_called(this, "_ZN11S20980C5_nt3v10Ev");}
S20980C5_nt ::~S20980C5_nt(){ note_dtor("S20980C5_nt", this);} // tgen
S20980C5_nt ::S20980C5_nt(){ note_ctor("S20980C5_nt", this);} // tgen

//skip512 S20980C5_nt

#else // __cplusplus

extern void _ZN11S20980C5_ntC1Ev();
extern void _ZN11S20980C5_ntD1Ev();
Name_Map name_map_S20980C5_nt[] = {
  NSPAIR(_ZN11S20980C5_ntC1Ev),
  NSPAIR(_ZN11S20980C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY vtc_S20980C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20980C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
VTBL_ENTRY *P__ZTI11S20980C5_nt = _ZTI11S20980C5_nt; 
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
Class_Descriptor cd_S20980C5_nt = {  "S20980C5_nt", // class name
  0,0,//no base classes
  &(vtc_S20980C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20980C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20980C5_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  S20980C4  : S20980C5_nt {
  ::S20980C5_nt s20980c4f0;
  virtual void  v11(); // _ZN8S20980C43v11Ev
  virtual void  v12(); // _ZN8S20980C43v12Ev
  ~S20980C4(); // tgen
  S20980C4(); // tgen
};
//SIG(-1 S20980C4) C1{ BC2{ v3 v4 v5 v6} v1 v2 FC2}


void  S20980C4 ::v11(){vfunc_called(this, "_ZN8S20980C43v11Ev");}
void  S20980C4 ::v12(){vfunc_called(this, "_ZN8S20980C43v12Ev");}
S20980C4 ::~S20980C4(){ note_dtor("S20980C4", this);} // tgen
S20980C4 ::S20980C4(){ note_ctor("S20980C4", this);} // tgen

static void Test_S20980C4()
{
  extern Class_Descriptor cd_S20980C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20980C4, buf);
    S20980C4 *dp, &lv = *(dp=new (buf) S20980C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20980C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20980C4)");
    check_base_class_offset(lv, (S20980C5_nt*), 0, "S20980C4");
    check_field_offset(lv, s20980c4f0, ABISELECT(8,4), "S20980C4.s20980c4f0");
    test_class_info(&lv, &cd_S20980C4);
    dp->~S20980C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C4(Test_S20980C4, "S20980C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20980C4C1Ev();
extern void _ZN8S20980C4D1Ev();
Name_Map name_map_S20980C4[] = {
  NSPAIR(_ZN8S20980C4C1Ev),
  NSPAIR(_ZN8S20980C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
static Base_Class bases_S20980C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20980C4[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY vtc_S20980C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C4[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
Class_Descriptor cd_S20980C4 = {  "S20980C4", // class name
  bases_S20980C4, 1,
  &(vtc_S20980C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20980C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20980C4),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  S20980C3  : virtual S20980C4 {
  ::S20980C4 s20980c3f0;
  long double s20980c3f1;
  virtual  ~S20980C3(); // _ZN8S20980C3D2Ev
  virtual void  v13(); // _ZN8S20980C33v13Ev
  virtual void  v14(); // _ZN8S20980C33v14Ev
  virtual void  v15(); // _ZN8S20980C33v15Ev
  S20980C3(); // tgen
};
//SIG(-1 S20980C3) C1{ VBC2{ BC3{ v4 v5 v6 v7} v8 v9 FC3} vd v1 v2 v3 FC2 FD}


 S20980C3 ::~S20980C3(){ note_dtor("S20980C3", this);}
void  S20980C3 ::v13(){vfunc_called(this, "_ZN8S20980C33v13Ev");}
void  S20980C3 ::v14(){vfunc_called(this, "_ZN8S20980C33v14Ev");}
void  S20980C3 ::v15(){vfunc_called(this, "_ZN8S20980C33v15Ev");}
S20980C3 ::S20980C3(){ note_ctor("S20980C3", this);} // tgen

static void Test_S20980C3()
{
  extern Class_Descriptor cd_S20980C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S20980C3, buf);
    S20980C3 *dp, &lv = *(dp=new (buf) S20980C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20980C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20980C3)");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), ABISELECT(48,24), "S20980C3");
    check_base_class_offset(lv, (S20980C4*), ABISELECT(48,24), "S20980C3");
    check_field_offset(lv, s20980c3f0, ABISELECT(8,4), "S20980C3.s20980c3f0");
    check_field_offset(lv, s20980c3f1, ABISELECT(32,12), "S20980C3.s20980c3f1");
    test_class_info(&lv, &cd_S20980C3);
    dp->~S20980C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C3(Test_S20980C3, "S20980C3", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S20980C3C1Ev();
extern void _ZN8S20980C3D2Ev();
Name_Map name_map_S20980C3[] = {
  NSPAIR(_ZN8S20980C3C1Ev),
  NSPAIR(_ZN8S20980C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
static Base_Class bases_S20980C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(48,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20980C3[];
extern void _ZN8S20980C3D1Ev();
extern void _ZN8S20980C3D0Ev();
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY vtc_S20980C3[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN8S20980C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S20980C3[];
static  VTT_ENTRY vtt_S20980C3[] = {
  {&(_ZTV8S20980C3[3]),  3,22},
  {&(_ZTV8S20980C3[16]),  16,22},
};
extern VTBL_ENTRY _ZTI8S20980C3[];
extern  VTBL_ENTRY _ZTV8S20980C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C3[];
Class_Descriptor cd_S20980C3 = {  "S20980C3", // class name
  bases_S20980C3, 2,
  &(vtc_S20980C3[0]), // expected_vtbl_contents
  &(vtt_S20980C3[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S20980C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20980C3),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20980C3),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C7  : S20980C4 , S20980C5_nt {
  int s20980c7f0;
  virtual  ~S20980C7(); // _ZN8S20980C7D1Ev
  virtual void  v16(); // _ZN8S20980C73v16Ev
  virtual void  v17(); // _ZN8S20980C73v17Ev
  virtual void  v18(); // _ZN8S20980C73v18Ev
  virtual void  v19(); // _ZN8S20980C73v19Ev
  virtual void  v20(); // _ZN8S20980C73v20Ev
  virtual void  v21(); // _ZN8S20980C73v21Ev
  S20980C7(); // tgen
};
//SIG(-1 S20980C7) C1{ BC2{ BC3{ v7 v8 v9 v10} v11 v12 FC3} BC3 vd v1 v2 v3 v4 v5 v6 Fi}


 S20980C7 ::~S20980C7(){ note_dtor("S20980C7", this);}
void  S20980C7 ::v16(){vfunc_called(this, "_ZN8S20980C73v16Ev");}
void  S20980C7 ::v17(){vfunc_called(this, "_ZN8S20980C73v17Ev");}
void  S20980C7 ::v18(){vfunc_called(this, "_ZN8S20980C73v18Ev");}
void  S20980C7 ::v19(){vfunc_called(this, "_ZN8S20980C73v19Ev");}
void  S20980C7 ::v20(){vfunc_called(this, "_ZN8S20980C73v20Ev");}
void  S20980C7 ::v21(){vfunc_called(this, "_ZN8S20980C73v21Ev");}
S20980C7 ::S20980C7(){ note_ctor("S20980C7", this);} // tgen

static void Test_S20980C7()
{
  extern Class_Descriptor cd_S20980C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20980C7, buf);
    S20980C7 *dp, &lv = *(dp=new (buf) S20980C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20980C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20980C7)");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), 0, "S20980C7");
    check_base_class_offset(lv, (S20980C4*), 0, "S20980C7");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*), ABISELECT(16,8), "S20980C7");
    check_field_offset(lv, s20980c7f0, ABISELECT(24,12), "S20980C7.s20980c7f0");
    test_class_info(&lv, &cd_S20980C7);
    dp->~S20980C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C7(Test_S20980C7, "S20980C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20980C7C1Ev();
extern void _ZN8S20980C7D1Ev();
Name_Map name_map_S20980C7[] = {
  NSPAIR(_ZN8S20980C7C1Ev),
  NSPAIR(_ZN8S20980C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
static Base_Class bases_S20980C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20980C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20980C5_nt,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20980C7[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C7D1Ev();
extern void _ZN8S20980C7D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY vtc_S20980C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C7[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20980C7[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
Class_Descriptor cd_S20980C7 = {  "S20980C7", // class name
  bases_S20980C7, 3,
  &(vtc_S20980C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20980C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20980C7),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C9  : virtual S20980C5_nt , S20980C4 {
  virtual  ~S20980C9(); // _ZN8S20980C9D2Ev
  virtual void  v41(); // _ZN8S20980C93v41Ev
  S20980C9(); // tgen
};
//SIG(-1 S20980C9) C1{ VBC2{ v2 v3 v4 v5} BC3{ BC2 v6 v7 FC2} vd v1}


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

static void Test_S20980C9()
{
  extern Class_Descriptor cd_S20980C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20980C9, buf);
    S20980C9 *dp, &lv = *(dp=new (buf) S20980C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20980C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20980C9)");
    /*is_ambiguous_... S20980C9::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*), ABISELECT(16,8), "S20980C9");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), 0, "S20980C9");
    check_base_class_offset(lv, (S20980C4*), 0, "S20980C9");
    test_class_info(&lv, &cd_S20980C9);
    dp->~S20980C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C9(Test_S20980C9, "S20980C9", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20980C9C1Ev();
extern void _ZN8S20980C9D2Ev();
Name_Map name_map_S20980C9[] = {
  NSPAIR(_ZN8S20980C9C1Ev),
  NSPAIR(_ZN8S20980C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
static Base_Class bases_S20980C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    ABISELECT(16,8), //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_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20980C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20980C9[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C9D1Ev();
extern void _ZN8S20980C9D0Ev();
extern void _ZN8S20980C93v41Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY vtc_S20980C9[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV8S20980C9[];
static  VTT_ENTRY vtt_S20980C9[] = {
  {&(_ZTV8S20980C9[3]),  3,22},
  {&(_ZTV8S20980C9[18]),  18,22},
};
extern VTBL_ENTRY _ZTI8S20980C9[];
extern  VTBL_ENTRY _ZTV8S20980C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C9[];
Class_Descriptor cd_S20980C9 = {  "S20980C9", // class name
  bases_S20980C9, 3,
  &(vtc_S20980C9[0]), // expected_vtbl_contents
  &(vtt_S20980C9[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20980C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20980C9),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20980C9),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S20980C10_nt  {
  void  mf20980c10(); // _ZN12S20980C10_nt10mf20980c10Ev
};
//SIG(1 S20980C10_nt) U1{ m}

#endif // __cplusplus
#ifdef __cplusplus

struct  S20980C8  : S20980C4 , S20980C5_nt {
  ::S20980C9 s20980c8f0;
  ::S20980C10_nt s20980c8f1;
  ::S20980C10_nt s20980c8f2;
  int s20980c8f3;
  virtual void  v22(); // _ZN8S20980C83v22Ev
  virtual void  v23(); // _ZN8S20980C83v23Ev
  virtual void  v24(); // _ZN8S20980C83v24Ev
  virtual void  v25(); // _ZN8S20980C83v25Ev
  ~S20980C8(); // tgen
  S20980C8(); // tgen
};
//SIG(-1 S20980C8) C1{ BC2{ BC3{ v5 v6 v7 v8} v9 v10 FC3} BC3 v1 v2 v3 v4 FC4{ VBC3 BC2 vd v11} FU5{ m} FU5 Fi}


void  S20980C8 ::v22(){vfunc_called(this, "_ZN8S20980C83v22Ev");}
void  S20980C8 ::v23(){vfunc_called(this, "_ZN8S20980C83v23Ev");}
void  S20980C8 ::v24(){vfunc_called(this, "_ZN8S20980C83v24Ev");}
void  S20980C8 ::v25(){vfunc_called(this, "_ZN8S20980C83v25Ev");}
S20980C8 ::~S20980C8(){ note_dtor("S20980C8", this);} // tgen
S20980C8 ::S20980C8(){ note_ctor("S20980C8", this);} // tgen

static void Test_S20980C8()
{
  extern Class_Descriptor cd_S20980C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S20980C8, buf);
    S20980C8 *dp, &lv = *(dp=new (buf) S20980C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S20980C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20980C8)");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), 0, "S20980C8");
    check_base_class_offset(lv, (S20980C4*), 0, "S20980C8");
    /*is_ambiguous_... S20980C8::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*), ABISELECT(16,8), "S20980C8");
    check_field_offset(lv, s20980c8f0, ABISELECT(24,12), "S20980C8.s20980c8f0");
    check_field_offset(lv, s20980c8f1, ABISELECT(48,24), "S20980C8.s20980c8f1");
    check_field_offset(lv, s20980c8f2, ABISELECT(49,25), "S20980C8.s20980c8f2");
    check_field_offset(lv, s20980c8f3, ABISELECT(52,28), "S20980C8.s20980c8f3");
    test_class_info(&lv, &cd_S20980C8);
    dp->~S20980C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C8(Test_S20980C8, "S20980C8", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S20980C8C1Ev();
extern void _ZN8S20980C8D1Ev();
Name_Map name_map_S20980C8[] = {
  NSPAIR(_ZN8S20980C8C1Ev),
  NSPAIR(_ZN8S20980C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
static Base_Class bases_S20980C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20980C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20980C5_nt,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20980C8[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY vtc_S20980C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C8[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20980C8[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI8S20980C8[];
extern  VTBL_ENTRY _ZTV8S20980C8[];
Class_Descriptor cd_S20980C8 = {  "S20980C8", // class name
  bases_S20980C8, 3,
  &(vtc_S20980C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S20980C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20980C8),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C6  : virtual S20980C3 , S20980C7 , S20980C8 , S20980C4 {
  long double s20980c6f0;
  virtual  ~S20980C6(); // _ZN8S20980C6D2Ev
  S20980C6(); // tgen
};
//SIG(-1 S20980C6) C1{ VBC2{ VBC3{ BC4{ v1 v2 v3 v4} v5 v6 FC4} vd v7 v8 v9 FC3 FD} BC5{ BC3 BC4 vd v10 v11 v12 v13 v14 v15 Fi} BC6{ BC3 BC4 v16 v17 v18 v19 FC7{ VBC4 BC3 vd v20} FU8{ m} FU8 Fi} BC3 vd FD}


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

static void Test_S20980C6()
{
  extern Class_Descriptor cd_S20980C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,26)];
    init_test(&cd_S20980C6, buf);
    S20980C6 *dp, &lv = *(dp=new (buf) S20980C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S20980C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20980C6)");
    /*is_ambiguous_... S20980C6::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), ABISELECT(176,92), "S20980C6");
    check_base_class_offset(lv, (S20980C4*)(S20980C3*), ABISELECT(176,92), "S20980C6");
    check_base_class_offset(lv, (S20980C3*), ABISELECT(128,68), "S20980C6");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*), 0, "S20980C6");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*), 0, "S20980C6");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*), ABISELECT(16,8), "S20980C6");
    check_base_class_offset(lv, (S20980C7*), 0, "S20980C6");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C8*), ABISELECT(32,16), "S20980C6");
    check_base_class_offset(lv, (S20980C4*)(S20980C8*), ABISELECT(32,16), "S20980C6");
    /*is_ambiguous_... S20980C8::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C8*), ABISELECT(48,24), "S20980C6");
    check_base_class_offset(lv, (S20980C8*), ABISELECT(32,16), "S20980C6");
    /*is_ambiguous_... S20980C6::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), ABISELECT(88,48), "S20980C6");
    /*is_ambiguous_... S20980C6::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C4*), ABISELECT(88,48), "S20980C6");
    check_field_offset(lv, s20980c6f0, ABISELECT(112,56), "S20980C6.s20980c6f0");
    test_class_info(&lv, &cd_S20980C6);
    dp->~S20980C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C6(Test_S20980C6, "S20980C6", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN8S20980C6C1Ev();
extern void _ZN8S20980C6D2Ev();
Name_Map name_map_S20980C6[] = {
  NSPAIR(_ZN8S20980C6C1Ev),
  NSPAIR(_ZN8S20980C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C3;
extern VTBL_ENTRY _ZTI8S20980C3[];
extern  VTBL_ENTRY _ZTV8S20980C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C3[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C8;
extern VTBL_ENTRY _ZTI8S20980C8[];
extern  VTBL_ENTRY _ZTV8S20980C8[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
static Base_Class bases_S20980C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(176,92), //bcp->offset
    62, //bcp->virtual_function_table_offset
    8, //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
    2, //immediately_derived
  0, 1},
  {&cd_S20980C3,    ABISELECT(128,68), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20980C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(16,8), //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
    6, //immediately_derived
  0, 0},
  {&cd_S20980C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20980C5_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(48,24), //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20980C8,    ABISELECT(32,16), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20980C5_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(88,48), //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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20980C6[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C6D1Ev();
extern void _ZN8S20980C6D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S20980C6D1Ev,_ZThn68_N8S20980C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S20980C6D0Ev,_ZThn68_N8S20980C6D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY vtc_S20980C6[] = {
  ABISELECT(176,92),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S20980C6[];
extern void _ZN8S20980C3D1Ev();
extern void _ZN8S20980C3D0Ev();
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__8S20980C6[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN8S20980C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C3__8S20980C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
static  VTT_ENTRY vtt_S20980C6[] = {
  {&(_ZTV8S20980C6[4]),  4,76},
  {&(_ZTV8S20980C6[57]),  57,76},
  {&(_ZTV8S20980C6[70]),  70,76},
  {&(_tg__ZTV8S20980C3__8S20980C6[3]),  3,8},
  {&(_tg__ZTV8S20980C4__8S20980C3__8S20980C6[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S20980C6[];
extern  VTBL_ENTRY _ZTV8S20980C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C6[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20980C6D0Ev,_ZThn68_N8S20980C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20980C6D1Ev,_ZThn68_N8S20980C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20980C6 = {  "S20980C6", // class name
  bases_S20980C6, 13,
  &(vtc_S20980C6[0]), // expected_vtbl_contents
  &(vtt_S20980C6[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI8S20980C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20980C6),76, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20980C6),5, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C11  {
  int s20980c11f0;
  virtual void  v26(); // _ZN9S20980C113v26Ev
  virtual void  v27(); // _ZN9S20980C113v27Ev
  ~S20980C11(); // tgen
  S20980C11(); // tgen
};
//SIG(-1 S20980C11) C1{ v1 v2 Fi}


void  S20980C11 ::v26(){vfunc_called(this, "_ZN9S20980C113v26Ev");}
void  S20980C11 ::v27(){vfunc_called(this, "_ZN9S20980C113v27Ev");}
S20980C11 ::~S20980C11(){ note_dtor("S20980C11", this);} // tgen
S20980C11 ::S20980C11(){ note_ctor("S20980C11", this);} // tgen

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

#else // __cplusplus

extern void _ZN9S20980C11C1Ev();
extern void _ZN9S20980C11D1Ev();
Name_Map name_map_S20980C11[] = {
  NSPAIR(_ZN9S20980C11C1Ev),
  NSPAIR(_ZN9S20980C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20980C11[];
extern void _ZN9S20980C113v26Ev();
extern void _ZN9S20980C113v27Ev();
static  VTBL_ENTRY vtc_S20980C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C11[0]),
  (VTBL_ENTRY)&_ZN9S20980C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20980C113v27Ev,
};
extern VTBL_ENTRY _ZTI9S20980C11[];
extern  VTBL_ENTRY _ZTV9S20980C11[];
Class_Descriptor cd_S20980C11 = {  "S20980C11", // class name
  0,0,//no base classes
  &(vtc_S20980C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20980C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20980C11),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  S20980C12  : virtual S20980C11 , virtual S20980C9 {
  ~S20980C12(); // tgen
  S20980C12(); // tgen
};
//SIG(1 S20980C12) C1{ VBC2{ v1 v2 Fi} VBC3{ VBC4{ v3 v4 v5 v6} BC5{ BC4 v7 v8 FC4} vd v9}}


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

static void Test_S20980C12()
{
  extern Class_Descriptor cd_S20980C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20980C12, buf);
    S20980C12 *dp, &lv = *(dp=new (buf) S20980C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20980C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20980C12)");
    check_base_class_offset(lv, (S20980C11*), ABISELECT(8,4), "S20980C12");
    /*is_ambiguous_... S20980C9::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C9*), 0, "S20980C12");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C9*), ABISELECT(24,12), "S20980C12");
    check_base_class_offset(lv, (S20980C4*)(S20980C9*), ABISELECT(24,12), "S20980C12");
    check_base_class_offset(lv, (S20980C9*), ABISELECT(24,12), "S20980C12");
    test_class_info(&lv, &cd_S20980C12);
    dp->~S20980C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C12(Test_S20980C12, "S20980C12", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN9S20980C12C1Ev();
extern void _ZN9S20980C12D1Ev();
Name_Map name_map_S20980C12[] = {
  NSPAIR(_ZN9S20980C12C1Ev),
  NSPAIR(_ZN9S20980C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C11;
extern VTBL_ENTRY _ZTI9S20980C11[];
extern  VTBL_ENTRY _ZTV9S20980C11[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C9;
extern VTBL_ENTRY _ZTI8S20980C9[];
extern  VTBL_ENTRY _ZTV8S20980C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C9[];
static Base_Class bases_S20980C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C11,    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
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20980C9,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20980C12[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN9S20980C12D1Ev();
extern void _ZN9S20980C12D0Ev();
extern void _ZN9S20980C113v26Ev();
extern void _ZN9S20980C113v27Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20980C12D1Ev,_ZTv0_n40_N9S20980C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S20980C12D1Ev,_ZThn12_N9S20980C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20980C12D0Ev,_ZTv0_n40_N9S20980C12D0Ev)();
extern void ABISELECT(_ZThn24_N9S20980C12D0Ev,_ZThn12_N9S20980C12D0Ev)() __attribute__((weak));
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY vtc_S20980C12[] = {
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C12[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN9S20980C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C12D0Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20980C12[0]),
  (VTBL_ENTRY)&_ZN9S20980C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20980C113v27Ev,
  0,
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20980C12[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C12D1Ev,_ZTv0_n40_N9S20980C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C12D0Ev,_ZTv0_n40_N9S20980C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern VTBL_ENTRY _ZTV9S20980C12[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C9D1Ev();
extern void _ZN8S20980C9D0Ev();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C9__9S20980C12[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__8S20980C9__9S20980C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
static  VTT_ENTRY vtt_S20980C12[] = {
  {&(_ZTV9S20980C12[9]),  9,41},
  {&(_ZTV9S20980C12[19]),  19,41},
  {&(_ZTV9S20980C12[32]),  32,41},
  {&(_ZTV9S20980C12[9]),  9,41},
  {&(_tg__ZTV8S20980C9__9S20980C12[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__8S20980C9__9S20980C12[6]),  6,10},
};
extern VTBL_ENTRY _ZTI9S20980C12[];
extern  VTBL_ENTRY _ZTV9S20980C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C12[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C12D0Ev,_ZTv0_n40_N9S20980C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20980C12D0Ev,_ZThn12_N9S20980C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C12D1Ev,_ZTv0_n40_N9S20980C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20980C12D1Ev,_ZThn12_N9S20980C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20980C12 = {  "S20980C12", // class name
  bases_S20980C12, 5,
  &(vtc_S20980C12[0]), // expected_vtbl_contents
  &(vtt_S20980C12[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI9S20980C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20980C12),41, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20980C12),6, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C2  : virtual S20980C3 , S20980C6 , S20980C11 , S20980C8 {
  ::S20980C12 s20980c2f0[10];
  virtual void  v28(); // _ZN8S20980C23v28Ev
  virtual void  v29(); // _ZN8S20980C23v29Ev
  virtual void  v30(); // _ZN8S20980C23v30Ev
  virtual void  v31(); // _ZN8S20980C23v31Ev
  virtual void  v32(); // _ZN8S20980C23v32Ev
  ~S20980C2(); // tgen
  S20980C2(); // tgen
};
//SIG(-1 S20980C2) C1{ VBC2{ VBC3{ BC4{ v6 v7 v8 v9} v10 v11 FC4} vd v12 v13 v14 FC3 FD} BC5{ VBC2 BC6{ BC3 BC4 vd v15 v16 v17 v18 v19 v20 Fi} BC7{ BC3 BC4 v21 v22 v23 v24 FC8{ VBC4 BC3 vd v27} FU9{ m} FU9 Fi} BC3 vd FD} BC10{ v25 v26 Fi} BC7 v1 v2 v3 v4 v5 FC11{ VBC10 VBC8}[10]}


void  S20980C2 ::v28(){vfunc_called(this, "_ZN8S20980C23v28Ev");}
void  S20980C2 ::v29(){vfunc_called(this, "_ZN8S20980C23v29Ev");}
void  S20980C2 ::v30(){vfunc_called(this, "_ZN8S20980C23v30Ev");}
void  S20980C2 ::v31(){vfunc_called(this, "_ZN8S20980C23v31Ev");}
void  S20980C2 ::v32(){vfunc_called(this, "_ZN8S20980C23v32Ev");}
S20980C2 ::~S20980C2(){ note_dtor("S20980C2", this);} // tgen
S20980C2 ::S20980C2(){ note_ctor("S20980C2", this);} // tgen

static void Test_S20980C2()
{
  extern Class_Descriptor cd_S20980C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(43,86)];
    init_test(&cd_S20980C2, buf);
    S20980C2 *dp, &lv = *(dp=new (buf) S20980C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(672,340), "sizeof(S20980C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20980C2)");
    /*is_ambiguous_... S20980C2::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), ABISELECT(656,332), "S20980C2");
    check_base_class_offset(lv, (S20980C4*)(S20980C3*), ABISELECT(656,332), "S20980C2");
    check_base_class_offset(lv, (S20980C3*), ABISELECT(608,308), "S20980C2");
    check_base_class_offset(lv, (S20980C3*)(S20980C6*), ABISELECT(608,308), "S20980C2");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*)(S20980C6*), 0, "S20980C2");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*)(S20980C6*), 0, "S20980C2");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*)(S20980C6*), ABISELECT(16,8), "S20980C2");
    check_base_class_offset(lv, (S20980C7*)(S20980C6*), 0, "S20980C2");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C8*)(S20980C6*), ABISELECT(32,16), "S20980C2");
    check_base_class_offset(lv, (S20980C4*)(S20980C8*)(S20980C6*), ABISELECT(32,16), "S20980C2");
    /*is_ambiguous_... S20980C8::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C8*)(S20980C6*), ABISELECT(48,24), "S20980C2");
    check_base_class_offset(lv, (S20980C8*)(S20980C6*), ABISELECT(32,16), "S20980C2");
    /*is_ambiguous_... S20980C6::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C6*), ABISELECT(88,48), "S20980C2");
    /*is_ambiguous_... S20980C6::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C6*), ABISELECT(88,48), "S20980C2");
    check_base_class_offset(lv, (S20980C6*), 0, "S20980C2");
    check_base_class_offset(lv, (S20980C11*), ABISELECT(128,68), "S20980C2");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C8*), ABISELECT(144,76), "S20980C2");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C8*), ABISELECT(144,76), "S20980C2");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C8*), ABISELECT(160,84), "S20980C2");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C8*), ABISELECT(144,76), "S20980C2");
    check_field_offset(lv, s20980c2f0, ABISELECT(200,108), "S20980C2.s20980c2f0");
    test_class_info(&lv, &cd_S20980C2);
    dp->~S20980C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C2(Test_S20980C2, "S20980C2", ABISELECT(672,340));

#else // __cplusplus

extern void _ZN8S20980C2C1Ev();
extern void _ZN8S20980C2D1Ev();
Name_Map name_map_S20980C2[] = {
  NSPAIR(_ZN8S20980C2C1Ev),
  NSPAIR(_ZN8S20980C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C3;
extern VTBL_ENTRY _ZTI8S20980C3[];
extern  VTBL_ENTRY _ZTV8S20980C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C3[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C8;
extern VTBL_ENTRY _ZTI8S20980C8[];
extern  VTBL_ENTRY _ZTV8S20980C8[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C6;
extern VTBL_ENTRY _ZTI8S20980C6[];
extern  VTBL_ENTRY _ZTV8S20980C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C6[];
extern Class_Descriptor cd_S20980C11;
extern VTBL_ENTRY _ZTI9S20980C11[];
extern  VTBL_ENTRY _ZTV9S20980C11[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C8;
extern VTBL_ENTRY _ZTI8S20980C8[];
extern  VTBL_ENTRY _ZTV8S20980C8[];
static Base_Class bases_S20980C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    ABISELECT(656,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(656,332), //bcp->offset
    89, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20980C3,    ABISELECT(608,308), //bcp->offset
    77, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20980C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(16,8), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20980C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20980C5_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(48,24), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20980C8,    ABISELECT(32,16), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(88,48), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20980C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20980C11,    ABISELECT(128,68), //bcp->offset
    55, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20980C5_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(160,84), //bcp->offset
    71, //bcp->virtual_function_table_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_S20980C8,    ABISELECT(144,76), //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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20980C2[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C2D1Ev();
extern void _ZN8S20980C2D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN8S20980C23v28Ev();
extern void _ZN8S20980C23v29Ev();
extern void _ZN8S20980C23v30Ev();
extern void _ZN8S20980C23v31Ev();
extern void _ZN8S20980C23v32Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C113v26Ev();
extern void _ZN9S20980C113v27Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev)();
extern void ABISELECT(_ZThn608_N8S20980C2D1Ev,_ZThn308_N8S20980C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev)();
extern void ABISELECT(_ZThn608_N8S20980C2D0Ev,_ZThn308_N8S20980C2D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY vtc_S20980C2[] = {
  ABISELECT(656,332),
  ABISELECT(608,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v29Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v32Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN9S20980C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20980C113v27Ev,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  0,
  0,
  0,
  ABISELECT(-608,-308),
  ABISELECT(48,24),
  ABISELECT(-608,-308),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-332),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern VTBL_ENTRY _ZTV8S20980C2[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C6D1Ev();
extern void _ZN8S20980C6D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C6__8S20980C2[] = {
  ABISELECT(656,332),
  ABISELECT(608,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev)();
extern void ABISELECT(_ZThn608_N8S20980C6D1Ev,_ZThn308_N8S20980C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev)();
extern void ABISELECT(_ZThn608_N8S20980C6D0Ev,_ZThn308_N8S20980C6D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__8S20980C6__8S20980C2[] = {
  0,
  0,
  0,
  ABISELECT(-608,-308),
  ABISELECT(48,24),
  ABISELECT(-608,-308),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C6__8S20980C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-332),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN8S20980C3D1Ev();
extern void _ZN8S20980C3D0Ev();
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__8S20980C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN8S20980C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C3__8S20980C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
static  VTT_ENTRY vtt_S20980C2[] = {
  {&(_ZTV8S20980C2[4]),  4,103},
  {&(_tg__ZTV8S20980C6__8S20980C2[4]),  4,18},
  {&(_tg__ZTV8S20980C3__8S20980C6__8S20980C2[7]),  7,12},
  {&(_tg__ZTV8S20980C4__8S20980C6__8S20980C2[8]),  8,14},
  {&(_ZTV8S20980C2[84]),  84,103},
  {&(_ZTV8S20980C2[97]),  97,103},
  {&(_tg__ZTV8S20980C3__8S20980C2[3]),  3,8},
  {&(_tg__ZTV8S20980C4__8S20980C3__8S20980C2[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S20980C2[];
extern  VTBL_ENTRY _ZTV8S20980C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C2[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C6D0Ev,_ZThn308_N8S20980C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C6D1Ev,_ZThn308_N8S20980C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C2D0Ev,_ZThn308_N8S20980C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C2D1Ev,_ZThn308_N8S20980C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20980C2 = {  "S20980C2", // class name
  bases_S20980C2, 19,
  &(vtc_S20980C2[0]), // expected_vtbl_contents
  &(vtt_S20980C2[0]), // expected_vtt_contents
  ABISELECT(672,340), // object size
  NSPAIRA(_ZTI8S20980C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20980C2),103, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20980C2),8, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C13  {
  ::S20980C7 s20980c13f0;
  void *s20980c13f1;
  virtual void  v33(); // _ZN9S20980C133v33Ev
  virtual void  v34(); // _ZN9S20980C133v34Ev
  virtual void  v35(); // _ZN9S20980C133v35Ev
  virtual void  v36(); // _ZN9S20980C133v36Ev
  ~S20980C13(); // tgen
  S20980C13(); // tgen
};
//SIG(-1 S20980C13) C1{ v1 v2 v3 v4 FC2{ BC3{ BC4{ v11 v12 v13 v14} v15 v16 FC4} BC4 vd v5 v6 v7 v8 v9 v10 Fi} Fp}


void  S20980C13 ::v33(){vfunc_called(this, "_ZN9S20980C133v33Ev");}
void  S20980C13 ::v34(){vfunc_called(this, "_ZN9S20980C133v34Ev");}
void  S20980C13 ::v35(){vfunc_called(this, "_ZN9S20980C133v35Ev");}
void  S20980C13 ::v36(){vfunc_called(this, "_ZN9S20980C133v36Ev");}
S20980C13 ::~S20980C13(){ note_dtor("S20980C13", this);} // tgen
S20980C13 ::S20980C13(){ note_ctor("S20980C13", this);} // tgen

static void Test_S20980C13()
{
  extern Class_Descriptor cd_S20980C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20980C13, buf);
    S20980C13 *dp, &lv = *(dp=new (buf) S20980C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20980C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20980C13)");
    check_field_offset(lv, s20980c13f0, ABISELECT(8,4), "S20980C13.s20980c13f0");
    check_field_offset(lv, s20980c13f1, ABISELECT(40,20), "S20980C13.s20980c13f1");
    test_class_info(&lv, &cd_S20980C13);
    dp->~S20980C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C13(Test_S20980C13, "S20980C13", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S20980C13C1Ev();
extern void _ZN9S20980C13D1Ev();
Name_Map name_map_S20980C13[] = {
  NSPAIR(_ZN9S20980C13C1Ev),
  NSPAIR(_ZN9S20980C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20980C13[];
extern void _ZN9S20980C133v33Ev();
extern void _ZN9S20980C133v34Ev();
extern void _ZN9S20980C133v35Ev();
extern void _ZN9S20980C133v36Ev();
static  VTBL_ENTRY vtc_S20980C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C13[0]),
  (VTBL_ENTRY)&_ZN9S20980C133v33Ev,
  (VTBL_ENTRY)&_ZN9S20980C133v34Ev,
  (VTBL_ENTRY)&_ZN9S20980C133v35Ev,
  (VTBL_ENTRY)&_ZN9S20980C133v36Ev,
};
extern VTBL_ENTRY _ZTI9S20980C13[];
extern  VTBL_ENTRY _ZTV9S20980C13[];
Class_Descriptor cd_S20980C13 = {  "S20980C13", // class name
  0,0,//no base classes
  &(vtc_S20980C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S20980C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20980C13),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  S20980C15  : virtual S20980C7 {
  void *s20980c15f0;
  virtual  ~S20980C15(); // _ZN9S20980C15D2Ev
  virtual void  v37(); // _ZN9S20980C153v37Ev
  virtual void  v38(); // _ZN9S20980C153v38Ev
  virtual void  v39(); // _ZN9S20980C153v39Ev
  virtual void  v40(); // _ZN9S20980C153v40Ev
  S20980C15(); // tgen
};
//SIG(-1 S20980C15) C1{ VBC2{ BC3{ BC4{ v5 v6 v7 v8} v9 v10 FC4} BC4 vd v11 v12 v13 v14 v15 v16 Fi} vd v1 v2 v3 v4 Fp}


 S20980C15 ::~S20980C15(){ note_dtor("S20980C15", this);}
void  S20980C15 ::v37(){vfunc_called(this, "_ZN9S20980C153v37Ev");}
void  S20980C15 ::v38(){vfunc_called(this, "_ZN9S20980C153v38Ev");}
void  S20980C15 ::v39(){vfunc_called(this, "_ZN9S20980C153v39Ev");}
void  S20980C15 ::v40(){vfunc_called(this, "_ZN9S20980C153v40Ev");}
S20980C15 ::S20980C15(){ note_ctor("S20980C15", this);} // tgen

static void Test_S20980C15()
{
  extern Class_Descriptor cd_S20980C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20980C15, buf);
    S20980C15 *dp, &lv = *(dp=new (buf) S20980C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20980C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20980C15)");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*), ABISELECT(16,8), "S20980C15");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*), ABISELECT(16,8), "S20980C15");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*), ABISELECT(32,16), "S20980C15");
    check_base_class_offset(lv, (S20980C7*), ABISELECT(16,8), "S20980C15");
    check_field_offset(lv, s20980c15f0, ABISELECT(8,4), "S20980C15.s20980c15f0");
    test_class_info(&lv, &cd_S20980C15);
    dp->~S20980C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C15(Test_S20980C15, "S20980C15", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S20980C15C1Ev();
extern void _ZN9S20980C15D2Ev();
Name_Map name_map_S20980C15[] = {
  NSPAIR(_ZN9S20980C15C1Ev),
  NSPAIR(_ZN9S20980C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
static Base_Class bases_S20980C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(32,16), //bcp->offset
    38, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20980C7,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20980C15[];
extern void _ZN9S20980C15D1Ev();
extern void _ZN9S20980C15D0Ev();
extern void _ZN9S20980C153v37Ev();
extern void _ZN9S20980C153v38Ev();
extern void _ZN9S20980C153v39Ev();
extern void _ZN9S20980C153v40Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20980C15D1Ev,_ZThn8_N9S20980C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20980C15D0Ev,_ZThn8_N9S20980C15D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY vtc_S20980C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN9S20980C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v37Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v38Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v39Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v40Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV9S20980C15[];
static  VTT_ENTRY vtt_S20980C15[] = {
  {&(_ZTV9S20980C15[3]),  3,44},
  {&(_ZTV9S20980C15[24]),  24,44},
  {&(_ZTV9S20980C15[40]),  40,44},
};
extern VTBL_ENTRY _ZTI9S20980C15[];
extern  VTBL_ENTRY _ZTV9S20980C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C15[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20980C15D0Ev,_ZThn8_N9S20980C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20980C15D1Ev,_ZThn8_N9S20980C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20980C15 = {  "S20980C15", // class name
  bases_S20980C15, 4,
  &(vtc_S20980C15[0]), // expected_vtbl_contents
  &(vtt_S20980C15[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S20980C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20980C15),44, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20980C15),3, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C18  : S20980C7 , S20980C5_nt , S20980C9 {
  virtual void  v42(); // _ZN9S20980C183v42Ev
  virtual void  v43(); // _ZN9S20980C183v43Ev
  virtual void  v44(); // _ZN9S20980C183v44Ev
  ~S20980C18(); // tgen
  S20980C18(); // tgen
};
//SIG(-1 S20980C18) C1{ BC2{ BC3{ BC4{ v4 v5 v6 v7} v8 v9 FC4} BC4 vd v10 v11 v12 v13 v14 v15 Fi} BC4 BC5{ VBC4 BC3 vd v16} v1 v2 v3}


void  S20980C18 ::v42(){vfunc_called(this, "_ZN9S20980C183v42Ev");}
void  S20980C18 ::v43(){vfunc_called(this, "_ZN9S20980C183v43Ev");}
void  S20980C18 ::v44(){vfunc_called(this, "_ZN9S20980C183v44Ev");}
S20980C18 ::~S20980C18(){ note_dtor("S20980C18", this);} // tgen
S20980C18 ::S20980C18(){ note_ctor("S20980C18", this);} // tgen

static void Test_S20980C18()
{
  extern Class_Descriptor cd_S20980C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S20980C18, buf);
    S20980C18 *dp, &lv = *(dp=new (buf) S20980C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20980C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20980C18)");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*), 0, "S20980C18");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*), 0, "S20980C18");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*), ABISELECT(16,8), "S20980C18");
    check_base_class_offset(lv, (S20980C7*), 0, "S20980C18");
    /*is_ambiguous_... S20980C18::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*), ABISELECT(32,16), "S20980C18");
    /*is_ambiguous_... S20980C9::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C9*), ABISELECT(56,28), "S20980C18");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C9*), ABISELECT(40,20), "S20980C18");
    check_base_class_offset(lv, (S20980C4*)(S20980C9*), ABISELECT(40,20), "S20980C18");
    check_base_class_offset(lv, (S20980C9*), ABISELECT(40,20), "S20980C18");
    test_class_info(&lv, &cd_S20980C18);
    dp->~S20980C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C18(Test_S20980C18, "S20980C18", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S20980C18C1Ev();
extern void _ZN9S20980C18D1Ev();
Name_Map name_map_S20980C18[] = {
  NSPAIR(_ZN9S20980C18C1Ev),
  NSPAIR(_ZN9S20980C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C9;
extern VTBL_ENTRY _ZTI8S20980C9[];
extern  VTBL_ENTRY _ZTV8S20980C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C9[];
static Base_Class bases_S20980C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20980C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20980C5_nt,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20980C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20980C5_nt,    ABISELECT(32,16), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20980C5_nt,    ABISELECT(56,28), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20980C4,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20980C9,    ABISELECT(40,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20980C18[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C18D1Ev();
extern void _ZN9S20980C18D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev)();
extern void _ZN8S20980C93v41Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY vtc_S20980C18[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV9S20980C18[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C9D1Ev();
extern void _ZN8S20980C9D0Ev();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C9__9S20980C18[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__8S20980C9__9S20980C18[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
static  VTT_ENTRY vtt_S20980C18[] = {
  {&(_ZTV9S20980C18[3]),  3,54},
  {&(_tg__ZTV8S20980C9__9S20980C18[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__8S20980C9__9S20980C18[6]),  6,10},
  {&(_ZTV9S20980C18[35]),  35,54},
  {&(_ZTV9S20980C18[50]),  50,54},
};
extern VTBL_ENTRY _ZTI9S20980C18[];
extern  VTBL_ENTRY _ZTV9S20980C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C18[];
Class_Descriptor cd_S20980C18 = {  "S20980C18", // class name
  bases_S20980C18, 9,
  &(vtc_S20980C18[0]), // expected_vtbl_contents
  &(vtt_S20980C18[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S20980C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20980C18),54, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20980C18),5, //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  S20980C17  : S20980C4 , virtual S20980C18 {
  int s20980c17f0;
  void *s20980c17f1[11];
  virtual  ~S20980C17(); // _ZN9S20980C17D2Ev
  virtual void  v45(); // _ZN9S20980C173v45Ev
  virtual void  v46(); // _ZN9S20980C173v46Ev
  virtual void  v47(); // _ZN9S20980C173v47Ev
  virtual void  v48(); // _ZN9S20980C173v48Ev
  S20980C17(); // tgen
};
//SIG(-1 S20980C17) C1{ BC2{ BC3{ v5 v6 v7 v8} v9 v10 FC3} VBC4{ BC5{ BC2 BC3 vd v11 v12 v13 v14 v15 v16 Fi} BC3 BC6{ VBC3 BC2 vd v17} v18 v19 v20} vd v1 v2 v3 v4 Fi Fp[11]}


 S20980C17 ::~S20980C17(){ note_dtor("S20980C17", this);}
void  S20980C17 ::v45(){vfunc_called(this, "_ZN9S20980C173v45Ev");}
void  S20980C17 ::v46(){vfunc_called(this, "_ZN9S20980C173v46Ev");}
void  S20980C17 ::v47(){vfunc_called(this, "_ZN9S20980C173v47Ev");}
void  S20980C17 ::v48(){vfunc_called(this, "_ZN9S20980C173v48Ev");}
S20980C17 ::S20980C17(){ note_ctor("S20980C17", this);} // tgen

static void Test_S20980C17()
{
  extern Class_Descriptor cd_S20980C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[23];
    init_test(&cd_S20980C17, buf);
    S20980C17 *dp, &lv = *(dp=new (buf) S20980C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S20980C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20980C17)");
    /*is_ambiguous_... S20980C17::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), 0, "S20980C17");
    /*is_ambiguous_... S20980C17::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C4*), 0, "S20980C17");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*)(S20980C18*), ABISELECT(112,56), "S20980C17");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*)(S20980C18*), ABISELECT(112,56), "S20980C17");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*)(S20980C18*), ABISELECT(128,64), "S20980C17");
    check_base_class_offset(lv, (S20980C7*)(S20980C18*), ABISELECT(112,56), "S20980C17");
    /*is_ambiguous_... S20980C18::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C18*), ABISELECT(144,72), "S20980C17");
    /*is_ambiguous_... S20980C9::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C9*)(S20980C18*), ABISELECT(168,84), "S20980C17");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C9*)(S20980C18*), ABISELECT(152,76), "S20980C17");
    check_base_class_offset(lv, (S20980C4*)(S20980C9*)(S20980C18*), ABISELECT(152,76), "S20980C17");
    check_base_class_offset(lv, (S20980C9*)(S20980C18*), ABISELECT(152,76), "S20980C17");
    check_base_class_offset(lv, (S20980C18*), ABISELECT(112,56), "S20980C17");
    check_field_offset(lv, s20980c17f0, ABISELECT(16,8), "S20980C17.s20980c17f0");
    check_field_offset(lv, s20980c17f1, ABISELECT(24,12), "S20980C17.s20980c17f1");
    test_class_info(&lv, &cd_S20980C17);
    dp->~S20980C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C17(Test_S20980C17, "S20980C17", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN9S20980C17C1Ev();
extern void _ZN9S20980C17D2Ev();
Name_Map name_map_S20980C17[] = {
  NSPAIR(_ZN9S20980C17C1Ev),
  NSPAIR(_ZN9S20980C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C9;
extern VTBL_ENTRY _ZTI8S20980C9[];
extern  VTBL_ENTRY _ZTV8S20980C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C9[];
extern Class_Descriptor cd_S20980C18;
extern VTBL_ENTRY _ZTI9S20980C18[];
extern  VTBL_ENTRY _ZTV9S20980C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C18[];
static Base_Class bases_S20980C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20980C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20980C5_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(128,64), //bcp->offset
    53, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20980C7,    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
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(144,72), //bcp->offset
    59, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(168,84), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20980C9,    ABISELECT(152,76), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20980C18,    ABISELECT(112,56), //bcp->offset
    16, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20980C17[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C17D1Ev();
extern void _ZN9S20980C17D0Ev();
extern void _ZN9S20980C173v45Ev();
extern void _ZN9S20980C173v46Ev();
extern void _ZN9S20980C173v47Ev();
extern void _ZN9S20980C173v48Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev)();
extern void ABISELECT(_ZThn112_N9S20980C17D1Ev,_ZThn56_N9S20980C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev)();
extern void ABISELECT(_ZThn112_N9S20980C17D0Ev,_ZThn56_N9S20980C17D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTvn40_n80_N9S20980C17D1Ev,_ZTvn20_n40_N9S20980C17D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N9S20980C17D0Ev,_ZTvn20_n40_N9S20980C17D0Ev)();
extern void _ZN8S20980C93v41Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY vtc_S20980C17[] = {
  ABISELECT(168,84),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C17D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v45Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v46Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v47Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v48Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(16,8),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C17D1Ev,_ZTvn20_n40_N9S20980C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C17D0Ev,_ZTvn20_n40_N9S20980C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV9S20980C17[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C18D1Ev();
extern void _ZN9S20980C18D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C18__9S20980C17[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C9D1Ev();
extern void _ZN8S20980C9D0Ev();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__8S20980C99S20980C18__9S20980C17[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C9__9S20980C18__9S20980C17[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A3__9S20980C18__9S20980C17[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
static  VTT_ENTRY vtt_S20980C17[] = {
  {&(_ZTV9S20980C17[4]),  4,87},
  {&(_ZTV9S20980C17[36]),  36,87},
  {&(_ZTV9S20980C17[55]),  55,87},
  {&(_ZTV9S20980C17[61]),  61,87},
  {&(_ZTV9S20980C17[68]),  68,87},
  {&(_ZTV9S20980C17[83]),  83,87},
  {&(_tg__ZTV9S20980C18__9S20980C17[3]),  3,20},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C17[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__8S20980C99S20980C18__9S20980C17[6]),  6,10},
  {&(_tg__ZTV8S20980C9__9S20980C18__9S20980C17[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A3__9S20980C18__9S20980C17[6]),  6,10},
};
extern VTBL_ENTRY _ZTI9S20980C17[];
extern  VTBL_ENTRY _ZTV9S20980C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C17[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20980C17D0Ev,_ZThn56_N9S20980C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20980C17D1Ev,_ZThn56_N9S20980C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20980C17 = {  "S20980C17", // class name
  bases_S20980C17, 12,
  &(vtc_S20980C17[0]), // expected_vtbl_contents
  &(vtt_S20980C17[0]), // expected_vtt_contents
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI9S20980C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20980C17),87, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20980C17),11, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C16  : virtual S20980C2 , virtual S20980C15 , S20980C17 {
  virtual  ~S20980C16(); // _ZN9S20980C16D2Ev
  virtual void  v49(); // _ZN9S20980C163v49Ev
  virtual void  v50(); // _ZN9S20980C163v50Ev
  virtual void  v51(); // _ZN9S20980C163v51Ev
  virtual void  v52(); // _ZN9S20980C163v52Ev
  virtual void  v53(); // _ZN9S20980C163v53Ev
  virtual void  v54(); // _ZN9S20980C163v54Ev
  S20980C16(); // tgen
};
//SIG(-1 S20980C16) C1{ VBC2{ VBC3{ VBC4{ BC5{ v7 v8 v9 v10} v11 v12 FC5} vd v13 v14 v15 FC4 FD} BC6{ VBC3 BC7{ BC4 BC5 vd v16 v17 v18 v19 v20 v21 Fi} BC8{ BC4 BC5 v22 v23 v24 v25 FC9{ VBC5 BC4 vd v37} FU10{ m} FU10 Fi} BC4 vd FD} BC11{ v26 v27 Fi} BC8 v28 v29 v30 v31 v32 FC12{ VBC11 VBC9}[10]} VBC13{ VBC7 vd v33 v34 v35 v36 Fp} BC14{ BC4 VBC15{ BC7 BC5 BC9 v38 v39 v40} vd v41 v42 v43 v44 Fi Fp[11]} vd v1 v2 v3 v4 v5 v6}


 S20980C16 ::~S20980C16(){ note_dtor("S20980C16", this);}
void  S20980C16 ::v49(){vfunc_called(this, "_ZN9S20980C163v49Ev");}
void  S20980C16 ::v50(){vfunc_called(this, "_ZN9S20980C163v50Ev");}
void  S20980C16 ::v51(){vfunc_called(this, "_ZN9S20980C163v51Ev");}
void  S20980C16 ::v52(){vfunc_called(this, "_ZN9S20980C163v52Ev");}
void  S20980C16 ::v53(){vfunc_called(this, "_ZN9S20980C163v53Ev");}
void  S20980C16 ::v54(){vfunc_called(this, "_ZN9S20980C163v54Ev");}
S20980C16 ::S20980C16(){ note_ctor("S20980C16", this);} // tgen

static void Test_S20980C16()
{
  extern Class_Descriptor cd_S20980C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(57,114)];
    init_test(&cd_S20980C16, buf);
    S20980C16 *dp, &lv = *(dp=new (buf) S20980C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(896,452), "sizeof(S20980C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20980C16)");
    /*is_ambiguous_... S20980C16::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), ABISELECT(768,388), "S20980C16");
    check_base_class_offset(lv, (S20980C4*)(S20980C3*), ABISELECT(768,388), "S20980C16");
    check_base_class_offset(lv, (S20980C3*)(S20980C2*), ABISELECT(720,364), "S20980C16");
    check_base_class_offset(lv, (S20980C3*)(S20980C6*)(S20980C2*), ABISELECT(720,364), "S20980C16");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(112,56), "S20980C16");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(112,56), "S20980C16");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(128,64), "S20980C16");
    check_base_class_offset(lv, (S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(112,56), "S20980C16");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(144,72), "S20980C16");
    check_base_class_offset(lv, (S20980C4*)(S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(144,72), "S20980C16");
    /*is_ambiguous_... S20980C8::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(160,80), "S20980C16");
    check_base_class_offset(lv, (S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(144,72), "S20980C16");
    /*is_ambiguous_... S20980C6::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C6*)(S20980C2*), ABISELECT(200,104), "S20980C16");
    /*is_ambiguous_... S20980C6::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C6*)(S20980C2*), ABISELECT(200,104), "S20980C16");
    check_base_class_offset(lv, (S20980C6*)(S20980C2*), ABISELECT(112,56), "S20980C16");
    check_base_class_offset(lv, (S20980C11*)(S20980C2*), ABISELECT(240,124), "S20980C16");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C8*)(S20980C2*), ABISELECT(256,132), "S20980C16");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C8*)(S20980C2*), ABISELECT(256,132), "S20980C16");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C8*)(S20980C2*), ABISELECT(272,140), "S20980C16");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C8*)(S20980C2*), ABISELECT(256,132), "S20980C16");
    check_base_class_offset(lv, (S20980C2*), ABISELECT(112,56), "S20980C16");
    /*is_ambiguous_... S20980C16::S20980C7 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*), ABISELECT(800,404), "S20980C16");
    /*is_ambiguous_... S20980C16::S20980C7 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C7*), ABISELECT(800,404), "S20980C16");
    /*is_ambiguous_... S20980C16::S20980C7 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*), ABISELECT(816,412), "S20980C16");
    check_base_class_offset(lv, (S20980C7*)(S20980C15*), ABISELECT(800,404), "S20980C16");
    check_base_class_offset(lv, (S20980C15*), ABISELECT(784,396), "S20980C16");
    /*is_ambiguous_... S20980C17::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C17*), 0, "S20980C16");
    /*is_ambiguous_... S20980C17::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C17*), 0, "S20980C16");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*)(S20980C18*), ABISELECT(832,420), "S20980C16");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*)(S20980C18*), ABISELECT(832,420), "S20980C16");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*)(S20980C18*), ABISELECT(848,428), "S20980C16");
    check_base_class_offset(lv, (S20980C7*)(S20980C18*), ABISELECT(832,420), "S20980C16");
    /*is_ambiguous_... S20980C18::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C18*), ABISELECT(864,436), "S20980C16");
    /*is_ambiguous_... S20980C9::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C9*)(S20980C18*), ABISELECT(888,448), "S20980C16");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C9*)(S20980C18*), ABISELECT(872,440), "S20980C16");
    check_base_class_offset(lv, (S20980C4*)(S20980C9*)(S20980C18*), ABISELECT(872,440), "S20980C16");
    check_base_class_offset(lv, (S20980C9*)(S20980C18*), ABISELECT(872,440), "S20980C16");
    check_base_class_offset(lv, (S20980C18*)(S20980C17*), ABISELECT(832,420), "S20980C16");
    check_base_class_offset(lv, (S20980C17*), 0, "S20980C16");
    test_class_info(&lv, &cd_S20980C16);
    dp->~S20980C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C16(Test_S20980C16, "S20980C16", ABISELECT(896,452));

#else // __cplusplus

extern void _ZN9S20980C16C1Ev();
extern void _ZN9S20980C16D2Ev();
Name_Map name_map_S20980C16[] = {
  NSPAIR(_ZN9S20980C16C1Ev),
  NSPAIR(_ZN9S20980C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C3;
extern VTBL_ENTRY _ZTI8S20980C3[];
extern  VTBL_ENTRY _ZTV8S20980C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C3[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C8;
extern VTBL_ENTRY _ZTI8S20980C8[];
extern  VTBL_ENTRY _ZTV8S20980C8[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C6;
extern VTBL_ENTRY _ZTI8S20980C6[];
extern  VTBL_ENTRY _ZTV8S20980C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C6[];
extern Class_Descriptor cd_S20980C11;
extern VTBL_ENTRY _ZTI9S20980C11[];
extern  VTBL_ENTRY _ZTV9S20980C11[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C8;
extern VTBL_ENTRY _ZTI8S20980C8[];
extern  VTBL_ENTRY _ZTV8S20980C8[];
extern Class_Descriptor cd_S20980C2;
extern VTBL_ENTRY _ZTI8S20980C2[];
extern  VTBL_ENTRY _ZTV8S20980C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C2[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C15;
extern VTBL_ENTRY _ZTI9S20980C15[];
extern  VTBL_ENTRY _ZTV9S20980C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C15[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C9;
extern VTBL_ENTRY _ZTI8S20980C9[];
extern  VTBL_ENTRY _ZTV8S20980C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C9[];
extern Class_Descriptor cd_S20980C18;
extern VTBL_ENTRY _ZTI9S20980C18[];
extern  VTBL_ENTRY _ZTV9S20980C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C18[];
extern Class_Descriptor cd_S20980C17;
extern VTBL_ENTRY _ZTI9S20980C17[];
extern  VTBL_ENTRY _ZTV9S20980C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C17[];
static Base_Class bases_S20980C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    ABISELECT(768,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(768,388), //bcp->offset
    140, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20980C3,    ABISELECT(720,364), //bcp->offset
    128, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20980C4,    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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(128,64), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20980C7,    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
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(160,80), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20980C8,    ABISELECT(144,72), //bcp->offset
    80, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(200,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(200,104), //bcp->offset
    98, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20980C6,    ABISELECT(112,56), //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
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20980C11,    ABISELECT(240,124), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(256,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(272,140), //bcp->offset
    122, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20980C8,    ABISELECT(256,132), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20980C2,    ABISELECT(112,56), //bcp->offset
    27, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20980C5_nt,    ABISELECT(800,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(800,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(816,412), //bcp->offset
    197, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20980C7,    ABISELECT(800,404), //bcp->offset
    168, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S20980C15,    ABISELECT(784,396), //bcp->offset
    154, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20980C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(832,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(832,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(848,428), //bcp->offset
    240, //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
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20980C7,    ABISELECT(832,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(864,436), //bcp->offset
    246, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(888,448), //bcp->offset
    264, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(872,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(872,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20980C9,    ABISELECT(872,440), //bcp->offset
    252, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20980C18,    ABISELECT(832,420), //bcp->offset
    203, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S20980C17,    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
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20980C16[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C16D1Ev();
extern void _ZN9S20980C16D0Ev();
extern void _ZN9S20980C173v45Ev();
extern void _ZN9S20980C173v46Ev();
extern void _ZN9S20980C173v47Ev();
extern void _ZN9S20980C173v48Ev();
extern void _ZN9S20980C163v49Ev();
extern void _ZN9S20980C163v50Ev();
extern void _ZN9S20980C163v51Ev();
extern void _ZN9S20980C163v52Ev();
extern void _ZN9S20980C163v53Ev();
extern void _ZN9S20980C163v54Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n88_N9S20980C16D1Ev,_ZTv0_n44_N9S20980C16D1Ev)();
extern void ABISELECT(_ZThn112_N9S20980C16D1Ev,_ZThn56_N9S20980C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20980C16D0Ev,_ZTv0_n44_N9S20980C16D0Ev)();
extern void ABISELECT(_ZThn112_N9S20980C16D0Ev,_ZThn56_N9S20980C16D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN8S20980C23v28Ev();
extern void _ZN8S20980C23v29Ev();
extern void _ZN8S20980C23v30Ev();
extern void _ZN8S20980C23v31Ev();
extern void _ZN8S20980C23v32Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C113v26Ev();
extern void _ZN9S20980C113v27Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev)();
extern void ABISELECT(_ZThn720_N9S20980C16D1Ev,_ZThn364_N9S20980C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev)();
extern void ABISELECT(_ZThn720_N9S20980C16D0Ev,_ZThn364_N9S20980C16D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev)();
extern void ABISELECT(_ZThn784_N9S20980C16D1Ev,_ZThn396_N9S20980C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev)();
extern void ABISELECT(_ZThn784_N9S20980C16D0Ev,_ZThn396_N9S20980C16D0Ev)() __attribute__((weak));
extern void _ZN9S20980C153v37Ev();
extern void _ZN9S20980C153v38Ev();
extern void _ZN9S20980C153v39Ev();
extern void _ZN9S20980C153v40Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S20980C16D1Ev,_ZTv0_n36_N9S20980C16D1Ev)();
extern void ABISELECT(_ZThn800_N9S20980C16D1Ev,_ZThn404_N9S20980C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20980C16D0Ev,_ZTv0_n36_N9S20980C16D0Ev)();
extern void ABISELECT(_ZThn800_N9S20980C16D0Ev,_ZThn404_N9S20980C16D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20980C16D1Ev,_ZTv0_n40_N9S20980C16D1Ev)();
extern void ABISELECT(_ZThn832_N9S20980C16D1Ev,_ZThn420_N9S20980C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20980C16D0Ev,_ZTv0_n40_N9S20980C16D0Ev)();
extern void ABISELECT(_ZThn832_N9S20980C16D0Ev,_ZThn420_N9S20980C16D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTvn40_n80_N9S20980C16D1Ev,_ZTvn20_n40_N9S20980C16D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N9S20980C16D0Ev,_ZTvn20_n40_N9S20980C16D0Ev)();
extern void _ZN8S20980C93v41Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY vtc_S20980C16[] = {
  ABISELECT(800,404),
  ABISELECT(784,396),
  ABISELECT(768,388),
  ABISELECT(720,364),
  ABISELECT(112,56),
  ABISELECT(888,448),
  ABISELECT(832,420),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C16D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v45Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v46Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v47Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v48Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v49Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v50Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v51Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v52Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v53Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v54Ev,
  ABISELECT(128,68),
  ABISELECT(128,68),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(656,332),
  ABISELECT(608,308),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20980C16D1Ev,_ZTv0_n44_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20980C16D0Ev,_ZTv0_n44_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v29Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v32Ev,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN9S20980C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20980C113v27Ev,
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  0,
  0,
  0,
  ABISELECT(-720,-364),
  ABISELECT(48,24),
  ABISELECT(-720,-364),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-768,-388),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-784,-396),
  ABISELECT(16,8),
  ABISELECT(-784,-396),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20980C153v37Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v38Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v39Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v40Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-800,-404),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-800,-404),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C16D1Ev,_ZTv0_n36_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C16D0Ev,_ZTv0_n36_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  ABISELECT(-816,-412),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-832,-420),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-832,-420),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C16D1Ev,_ZTv0_n40_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C16D0Ev,_ZTv0_n40_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
  ABISELECT(-848,-428),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-864,-436),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(16,8),
  ABISELECT(-872,-440),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C16D1Ev,_ZTvn20_n40_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C16D0Ev,_ZTvn20_n40_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-888,-448),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV9S20980C16[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C17D1Ev();
extern void _ZN9S20980C17D0Ev();
extern void _ZN9S20980C173v45Ev();
extern void _ZN9S20980C173v46Ev();
extern void _ZN9S20980C173v47Ev();
extern void _ZN9S20980C173v48Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C17__9S20980C16[] = {
  ABISELECT(888,448),
  ABISELECT(832,420),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C17D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v45Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v46Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v47Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v48Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev)();
extern void ABISELECT(_ZThn832_N9S20980C17D1Ev,_ZThn420_N9S20980C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev)();
extern void ABISELECT(_ZThn832_N9S20980C17D0Ev,_ZThn420_N9S20980C17D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C18__9S20980C17__9S20980C16[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-832,-420),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-832,-420),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C79S20980C18__A2__9S20980C17__9S20980C16[] = {
  ABISELECT(-848,-428),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt9S20980C18__A3__9S20980C17__9S20980C16[] = {
  ABISELECT(-864,-436),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTvn40_n80_N9S20980C17D1Ev,_ZTvn20_n40_N9S20980C17D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N9S20980C17D0Ev,_ZTvn20_n40_N9S20980C17D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C17__9S20980C16[] = {
  ABISELECT(16,8),
  ABISELECT(-872,-440),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C17D1Ev,_ZTvn20_n40_N9S20980C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C17D0Ev,_ZTvn20_n40_N9S20980C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A4__9S20980C17__9S20980C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-888,-448),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C2D1Ev();
extern void _ZN8S20980C2D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN8S20980C23v28Ev();
extern void _ZN8S20980C23v29Ev();
extern void _ZN8S20980C23v30Ev();
extern void _ZN8S20980C23v31Ev();
extern void _ZN8S20980C23v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C2__9S20980C16[] = {
  ABISELECT(656,332),
  ABISELECT(608,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v29Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v32Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C6D1Ev();
extern void _ZN8S20980C6D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C68S20980C2__9S20980C16[] = {
  ABISELECT(656,332),
  ABISELECT(608,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev)();
extern void ABISELECT(_ZThn608_N8S20980C6D1Ev,_ZThn308_N8S20980C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev)();
extern void ABISELECT(_ZThn608_N8S20980C6D0Ev,_ZThn308_N8S20980C6D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__8S20980C68S20980C2__9S20980C16[] = {
  0,
  0,
  0,
  ABISELECT(-608,-308),
  ABISELECT(48,24),
  ABISELECT(-608,-308),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C68S20980C2__9S20980C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-332),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev)();
extern void ABISELECT(_ZThn608_N8S20980C2D1Ev,_ZThn308_N8S20980C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev)();
extern void ABISELECT(_ZThn608_N8S20980C2D0Ev,_ZThn308_N8S20980C2D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__8S20980C2__9S20980C16[] = {
  0,
  0,
  0,
  ABISELECT(-608,-308),
  ABISELECT(48,24),
  ABISELECT(-608,-308),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C2__9S20980C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-332),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN8S20980C3D1Ev();
extern void _ZN8S20980C3D0Ev();
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__9S20980C16[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN8S20980C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C3__9S20980C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN9S20980C15D1Ev();
extern void _ZN9S20980C15D0Ev();
extern void _ZN9S20980C153v37Ev();
extern void _ZN9S20980C153v38Ev();
extern void _ZN9S20980C153v39Ev();
extern void _ZN9S20980C153v40Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C15__9S20980C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN9S20980C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v37Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v38Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v39Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v40Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20980C15D1Ev,_ZThn8_N9S20980C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20980C15D0Ev,_ZThn8_N9S20980C15D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C7__9S20980C15__9S20980C16[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C7__A1__9S20980C15__9S20980C16[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C18D1Ev();
extern void _ZN9S20980C18D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C18__9S20980C16[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C9D1Ev();
extern void _ZN8S20980C9D0Ev();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__8S20980C99S20980C18__9S20980C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C9__9S20980C18__9S20980C16[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A3__9S20980C18__9S20980C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
static  VTT_ENTRY vtt_S20980C16[] = {
  {&(_ZTV9S20980C16[9]),  9,274},
  {&(_tg__ZTV9S20980C17__9S20980C16[4]),  4,16},
  {&(_tg__ZTV9S20980C18__9S20980C17__9S20980C16[20]),  20,37},
  {&(_tg__ZTV11S20980C5_nt8S20980C79S20980C18__A2__9S20980C17__9S20980C16[2]),  2,6},
  {&(_tg__ZTV11S20980C5_nt9S20980C18__A3__9S20980C17__9S20980C16[2]),  2,6},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C17__9S20980C16[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A4__9S20980C17__9S20980C16[6]),  6,10},
  {&(_ZTV9S20980C16[55]),  55,274},
  {&(_ZTV9S20980C16[135]),  135,274},
  {&(_ZTV9S20980C16[148]),  148,274},
  {&(_ZTV9S20980C16[76]),  76,274},
  {&(_ZTV9S20980C16[82]),  82,274},
  {&(_ZTV9S20980C16[94]),  94,274},
  {&(_ZTV9S20980C16[100]),  100,274},
  {&(_ZTV9S20980C16[108]),  108,274},
  {&(_ZTV9S20980C16[112]),  112,274},
  {&(_ZTV9S20980C16[124]),  124,274},
  {&(_ZTV9S20980C16[162]),  162,274},
  {&(_ZTV9S20980C16[183]),  183,274},
  {&(_ZTV9S20980C16[199]),  199,274},
  {&(_ZTV9S20980C16[223]),  223,274},
  {&(_ZTV9S20980C16[242]),  242,274},
  {&(_ZTV9S20980C16[248]),  248,274},
  {&(_ZTV9S20980C16[255]),  255,274},
  {&(_ZTV9S20980C16[270]),  270,274},
  {&(_tg__ZTV8S20980C2__9S20980C16[4]),  4,23},
  {&(_tg__ZTV8S20980C68S20980C2__9S20980C16[4]),  4,18},
  {&(_tg__ZTV8S20980C3__8S20980C68S20980C2__9S20980C16[7]),  7,12},
  {&(_tg__ZTV8S20980C4__8S20980C68S20980C2__9S20980C16[8]),  8,14},
  {&(_tg__ZTV8S20980C3__8S20980C2__9S20980C16[7]),  7,12},
  {&(_tg__ZTV8S20980C4__8S20980C2__9S20980C16[8]),  8,14},
  {&(_tg__ZTV8S20980C3__9S20980C16[3]),  3,8},
  {&(_tg__ZTV8S20980C4__8S20980C3__9S20980C16[8]),  8,14},
  {&(_tg__ZTV9S20980C15__9S20980C16[3]),  3,9},
  {&(_tg__ZTV8S20980C7__9S20980C15__9S20980C16[15]),  15,29},
  {&(_tg__ZTV11S20980C5_nt8S20980C7__A1__9S20980C15__9S20980C16[2]),  2,6},
  {&(_tg__ZTV9S20980C18__9S20980C16[3]),  3,20},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C16[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__8S20980C99S20980C18__9S20980C16[6]),  6,10},
  {&(_tg__ZTV8S20980C9__9S20980C18__9S20980C16[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A3__9S20980C18__9S20980C16[6]),  6,10},
};
extern VTBL_ENTRY _ZTI9S20980C16[];
extern  VTBL_ENTRY _ZTV9S20980C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C16[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20980C15D0Ev,_ZThn8_N9S20980C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20980C15D1Ev,_ZThn8_N9S20980C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C2D0Ev,_ZThn308_N8S20980C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C2D1Ev,_ZThn308_N8S20980C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C6D0Ev,_ZThn308_N8S20980C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C6D1Ev,_ZThn308_N8S20980C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S20980C17D0Ev,_ZThn420_N9S20980C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S20980C17D1Ev,_ZThn420_N9S20980C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C16D0Ev,_ZTv0_n40_N9S20980C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S20980C16D0Ev,_ZThn420_N9S20980C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C16D1Ev,_ZTv0_n40_N9S20980C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S20980C16D1Ev,_ZThn420_N9S20980C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C16D0Ev,_ZTv0_n36_N9S20980C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S20980C16D0Ev,_ZThn404_N9S20980C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C16D1Ev,_ZTv0_n36_N9S20980C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S20980C16D1Ev,_ZThn404_N9S20980C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S20980C16D0Ev,_ZThn396_N9S20980C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20980C16D0Ev,_ZThn364_N9S20980C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S20980C16D1Ev,_ZThn396_N9S20980C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20980C16D1Ev,_ZThn364_N9S20980C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20980C16D0Ev,_ZTv0_n44_N9S20980C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20980C16D0Ev,_ZThn56_N9S20980C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20980C16D1Ev,_ZTv0_n44_N9S20980C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20980C16D1Ev,_ZThn56_N9S20980C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20980C16 = {  "S20980C16", // class name
  bases_S20980C16, 38,
  &(vtc_S20980C16[0]), // expected_vtbl_contents
  &(vtt_S20980C16[0]), // expected_vtt_contents
  ABISELECT(896,452), // object size
  NSPAIRA(_ZTI9S20980C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20980C16),274, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20980C16),41, //virtual table table var
  38, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C20  : virtual S20980C5_nt , S20980C9 , virtual S20980C4 {
  virtual  ~S20980C20(); // _ZN9S20980C20D2Ev
  virtual void  v62(); // _ZN9S20980C203v62Ev
  virtual void  v63(); // _ZN9S20980C203v63Ev
  S20980C20(); // tgen
};
//SIG(-1 S20980C20) C1{ VBC2{ v3 v4 v5 v6} BC3{ VBC2 BC4{ BC2 v7 v8 FC2} vd v9} VBC4 vd v1 v2}


 S20980C20 ::~S20980C20(){ note_dtor("S20980C20", this);}
void  S20980C20 ::v62(){vfunc_called(this, "_ZN9S20980C203v62Ev");}
void  S20980C20 ::v63(){vfunc_called(this, "_ZN9S20980C203v63Ev");}
S20980C20 ::S20980C20(){ note_ctor("S20980C20", this);} // tgen

static void Test_S20980C20()
{
  extern Class_Descriptor cd_S20980C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20980C20, buf);
    S20980C20 *dp, &lv = *(dp=new (buf) S20980C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20980C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20980C20)");
    /*is_ambiguous_... S20980C20::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*), ABISELECT(16,8), "S20980C20");
    /*is_ambiguous_... S20980C9::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C9*), ABISELECT(16,8), "S20980C20");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C9*), 0, "S20980C20");
    check_base_class_offset(lv, (S20980C4*)(S20980C9*), 0, "S20980C20");
    check_base_class_offset(lv, (S20980C9*), 0, "S20980C20");
    /*is_ambiguous_... S20980C20::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), ABISELECT(24,12), "S20980C20");
    /*is_ambiguous_... S20980C20::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C4*), ABISELECT(24,12), "S20980C20");
    test_class_info(&lv, &cd_S20980C20);
    dp->~S20980C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C20(Test_S20980C20, "S20980C20", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN9S20980C20C1Ev();
extern void _ZN9S20980C20D2Ev();
Name_Map name_map_S20980C20[] = {
  NSPAIR(_ZN9S20980C20C1Ev),
  NSPAIR(_ZN9S20980C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C9;
extern VTBL_ENTRY _ZTI8S20980C9[];
extern  VTBL_ENTRY _ZTV8S20980C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C9[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
static Base_Class bases_S20980C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20980C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    3, //immediately_derived
  0, 0},
  {&cd_S20980C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20980C5_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(24,12), //bcp->offset
    25, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20980C20[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C20D1Ev();
extern void _ZN9S20980C20D0Ev();
extern void _ZN8S20980C93v41Ev();
extern void _ZN9S20980C203v62Ev();
extern void _ZN9S20980C203v63Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY vtc_S20980C20[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C20[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C20D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
  (VTBL_ENTRY)&_ZN9S20980C203v62Ev,
  (VTBL_ENTRY)&_ZN9S20980C203v63Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20980C20[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20980C20[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern VTBL_ENTRY _ZTV9S20980C20[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C9D1Ev();
extern void _ZN8S20980C9D0Ev();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C9__9S20980C20[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__8S20980C9__9S20980C20[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
static  VTT_ENTRY vtt_S20980C20[] = {
  {&(_ZTV9S20980C20[4]),  4,39},
  {&(_tg__ZTV8S20980C9__9S20980C20[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__8S20980C9__9S20980C20[6]),  6,10},
  {&(_ZTV9S20980C20[21]),  21,39},
  {&(_ZTV9S20980C20[33]),  33,39},
};
extern VTBL_ENTRY _ZTI9S20980C20[];
extern  VTBL_ENTRY _ZTV9S20980C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C20[];
Class_Descriptor cd_S20980C20 = {  "S20980C20", // class name
  bases_S20980C20, 6,
  &(vtc_S20980C20[0]), // expected_vtbl_contents
  &(vtt_S20980C20[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI9S20980C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20980C20),39, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20980C20),5, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C19  : S20980C18 {
  ::S20980C20 s20980c19f0;
  virtual void  v55(); // _ZN9S20980C193v55Ev
  virtual void  v56(); // _ZN9S20980C193v56Ev
  virtual void  v57(); // _ZN9S20980C193v57Ev
  virtual void  v58(); // _ZN9S20980C193v58Ev
  virtual void  v59(); // _ZN9S20980C193v59Ev
  virtual void  v60(); // _ZN9S20980C193v60Ev
  ~S20980C19(); // tgen
  S20980C19(); // tgen
};
//SIG(-1 S20980C19) C1{ BC2{ BC3{ BC4{ BC5{ v7 v8 v9 v10} v11 v12 FC5} BC5 vd v13 v14 v15 v16 v17 v18 Fi} BC5 BC6{ VBC5 BC4 vd v19} v20 v21 v22} v1 v2 v3 v4 v5 v6 FC7{ VBC5 BC6 VBC4 vd v23 v24}}


void  S20980C19 ::v55(){vfunc_called(this, "_ZN9S20980C193v55Ev");}
void  S20980C19 ::v56(){vfunc_called(this, "_ZN9S20980C193v56Ev");}
void  S20980C19 ::v57(){vfunc_called(this, "_ZN9S20980C193v57Ev");}
void  S20980C19 ::v58(){vfunc_called(this, "_ZN9S20980C193v58Ev");}
void  S20980C19 ::v59(){vfunc_called(this, "_ZN9S20980C193v59Ev");}
void  S20980C19 ::v60(){vfunc_called(this, "_ZN9S20980C193v60Ev");}
S20980C19 ::~S20980C19(){ note_dtor("S20980C19", this);} // tgen
S20980C19 ::S20980C19(){ note_ctor("S20980C19", this);} // tgen

static void Test_S20980C19()
{
  extern Class_Descriptor cd_S20980C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[14];
    init_test(&cd_S20980C19, buf);
    S20980C19 *dp, &lv = *(dp=new (buf) S20980C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,52), "sizeof(S20980C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20980C19)");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*)(S20980C18*), 0, "S20980C19");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*)(S20980C18*), 0, "S20980C19");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*)(S20980C18*), ABISELECT(16,8), "S20980C19");
    check_base_class_offset(lv, (S20980C7*)(S20980C18*), 0, "S20980C19");
    /*is_ambiguous_... S20980C18::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C18*), ABISELECT(32,16), "S20980C19");
    /*is_ambiguous_... S20980C9::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C9*)(S20980C18*), ABISELECT(96,48), "S20980C19");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C9*)(S20980C18*), ABISELECT(40,20), "S20980C19");
    check_base_class_offset(lv, (S20980C4*)(S20980C9*)(S20980C18*), ABISELECT(40,20), "S20980C19");
    check_base_class_offset(lv, (S20980C9*)(S20980C18*), ABISELECT(40,20), "S20980C19");
    check_base_class_offset(lv, (S20980C18*), 0, "S20980C19");
    check_field_offset(lv, s20980c19f0, ABISELECT(56,28), "S20980C19.s20980c19f0");
    test_class_info(&lv, &cd_S20980C19);
    dp->~S20980C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C19(Test_S20980C19, "S20980C19", ABISELECT(104,52));

#else // __cplusplus

extern void _ZN9S20980C19C1Ev();
extern void _ZN9S20980C19D1Ev();
Name_Map name_map_S20980C19[] = {
  NSPAIR(_ZN9S20980C19C1Ev),
  NSPAIR(_ZN9S20980C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C9;
extern VTBL_ENTRY _ZTI8S20980C9[];
extern  VTBL_ENTRY _ZTV8S20980C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C9[];
extern Class_Descriptor cd_S20980C18;
extern VTBL_ENTRY _ZTI9S20980C18[];
extern  VTBL_ENTRY _ZTV9S20980C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C18[];
static Base_Class bases_S20980C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20980C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20980C5_nt,    ABISELECT(16,8), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20980C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(32,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(96,48), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20980C4,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20980C9,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20980C18,    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
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20980C19[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C19D1Ev();
extern void _ZN9S20980C19D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
extern void _ZN9S20980C193v55Ev();
extern void _ZN9S20980C193v56Ev();
extern void _ZN9S20980C193v57Ev();
extern void _ZN9S20980C193v58Ev();
extern void _ZN9S20980C193v59Ev();
extern void _ZN9S20980C193v60Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn40_N9S20980C19D1Ev,_ZThn20_N9S20980C19D1Ev)();
extern void ABISELECT(_ZThn40_N9S20980C19D0Ev,_ZThn20_N9S20980C19D0Ev)();
extern void _ZN8S20980C93v41Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY vtc_S20980C19[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C19[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C19D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v55Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v56Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v57Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v58Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v59Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v60Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20980C19[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20980C19[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(56,28),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C19[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C19D1Ev,_ZThn20_N9S20980C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C19D0Ev,_ZThn20_N9S20980C19D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S20980C19[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV9S20980C19[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C18D1Ev();
extern void _ZN9S20980C18D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C18__9S20980C19[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C9D1Ev();
extern void _ZN8S20980C9D0Ev();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C19[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__8S20980C99S20980C18__9S20980C19[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C9__9S20980C18__9S20980C19[] = {
  ABISELECT(56,28),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A3__9S20980C18__9S20980C19[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
static  VTT_ENTRY vtt_S20980C19[] = {
  {&(_ZTV9S20980C19[3]),  3,60},
  {&(_tg__ZTV9S20980C18__9S20980C19[3]),  3,20},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C19[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__8S20980C99S20980C18__9S20980C19[6]),  6,10},
  {&(_tg__ZTV8S20980C9__9S20980C18__9S20980C19[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A3__9S20980C18__9S20980C19[6]),  6,10},
  {&(_ZTV9S20980C19[41]),  41,60},
  {&(_ZTV9S20980C19[56]),  56,60},
};
extern VTBL_ENTRY _ZTI9S20980C19[];
extern  VTBL_ENTRY _ZTV9S20980C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C19[];
Class_Descriptor cd_S20980C19 = {  "S20980C19", // class name
  bases_S20980C19, 10,
  &(vtc_S20980C19[0]), // expected_vtbl_contents
  &(vtt_S20980C19[0]), // expected_vtt_contents
  ABISELECT(104,52), // object size
  NSPAIRA(_ZTI9S20980C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20980C19),60, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20980C19),8, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C14  : S20980C5_nt , virtual S20980C15 , virtual S20980C16 , S20980C19 {
  void *s20980c14f0[2];
  virtual  ~S20980C14(); // _ZN9S20980C14D2Ev
  virtual void  v61(); // _ZN9S20980C143v61Ev
  S20980C14(); // tgen
};
//SIG(-1 S20980C14) C1{ BC2{ v2 v3 v4 v5} VBC3{ VBC4{ BC5{ BC2 v6 v7 FC2} BC2 vd v8 v9 v10 v11 v12 v13 Fi} vd v14 v15 v16 v17 Fp} VBC6{ VBC7{ VBC8{ VBC5 vd v18 v19 v20 FC5 FD} BC9{ VBC8 BC4 BC10{ BC5 BC2 v21 v22 v23 v24 FC11{ VBC2 BC5 vd v32} FU12{ m} FU12 Fi} BC5 vd FD} BC13{ v25 v26 Fi} BC10 v27 v28 v29 v30 v31 FC14{ VBC13 VBC11}[10]} VBC3 BC15{ BC5 VBC16{ BC4 BC2 BC11 v33 v34 v35} vd v36 v37 v38 v39 Fi Fp[11]} vd v40 v41 v42 v43 v44 v45} BC17{ BC16 v46 v47 v48 v49 v50 v51 FC18{ VBC2 BC11 VBC5 vd v52 v53}} vd v1 Fp[2]}


 S20980C14 ::~S20980C14(){ note_dtor("S20980C14", this);}
void  S20980C14 ::v61(){vfunc_called(this, "_ZN9S20980C143v61Ev");}
S20980C14 ::S20980C14(){ note_ctor("S20980C14", this);} // tgen

static void Test_S20980C14()
{
  extern Class_Descriptor cd_S20980C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(65,129)];
    init_test(&cd_S20980C14, buf);
    S20980C14 *dp, &lv = *(dp=new (buf) S20980C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1024,512), "sizeof(S20980C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20980C14)");
    /*is_ambiguous_... S20980C14::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*), 0, "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C7 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*), ABISELECT(136,68), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C7 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C7*), ABISELECT(136,68), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C7 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*), ABISELECT(152,76), "S20980C14");
    check_base_class_offset(lv, (S20980C7*)(S20980C15*), ABISELECT(136,68), "S20980C14");
    check_base_class_offset(lv, (S20980C15*), ABISELECT(120,60), "S20980C14");
    check_base_class_offset(lv, (S20980C15*)(S20980C16*), ABISELECT(120,60), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), ABISELECT(944,472), "S20980C14");
    check_base_class_offset(lv, (S20980C4*)(S20980C3*), ABISELECT(944,472), "S20980C14");
    check_base_class_offset(lv, (S20980C3*)(S20980C2*), ABISELECT(896,448), "S20980C14");
    check_base_class_offset(lv, (S20980C3*)(S20980C6*)(S20980C2*), ABISELECT(896,448), "S20980C14");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(288,140), "S20980C14");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(288,140), "S20980C14");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(304,148), "S20980C14");
    check_base_class_offset(lv, (S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(288,140), "S20980C14");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(320,156), "S20980C14");
    check_base_class_offset(lv, (S20980C4*)(S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(320,156), "S20980C14");
    /*is_ambiguous_... S20980C8::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(336,164), "S20980C14");
    check_base_class_offset(lv, (S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(320,156), "S20980C14");
    /*is_ambiguous_... S20980C6::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C6*)(S20980C2*), ABISELECT(376,188), "S20980C14");
    /*is_ambiguous_... S20980C6::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C6*)(S20980C2*), ABISELECT(376,188), "S20980C14");
    check_base_class_offset(lv, (S20980C6*)(S20980C2*), ABISELECT(288,140), "S20980C14");
    check_base_class_offset(lv, (S20980C11*)(S20980C2*), ABISELECT(416,208), "S20980C14");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C8*)(S20980C2*), ABISELECT(432,216), "S20980C14");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C8*)(S20980C2*), ABISELECT(432,216), "S20980C14");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C8*)(S20980C2*), ABISELECT(448,224), "S20980C14");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C8*)(S20980C2*), ABISELECT(432,216), "S20980C14");
    check_base_class_offset(lv, (S20980C2*)(S20980C16*), ABISELECT(288,140), "S20980C14");
    /*is_ambiguous_... S20980C17::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C17*)(S20980C16*), ABISELECT(168,84), "S20980C14");
    /*is_ambiguous_... S20980C17::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C17*)(S20980C16*), ABISELECT(168,84), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*)(S20980C18*), ABISELECT(960,480), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C7*)(S20980C18*), ABISELECT(960,480), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*)(S20980C18*), ABISELECT(976,488), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C7*)(S20980C18*), ABISELECT(960,480), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C18*), ABISELECT(992,496), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C9*)(S20980C18*), ABISELECT(1016,508), "S20980C14");
    /*is_ambiguous_... S20980C9::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C9*)(S20980C18*)(S20980C19*), ABISELECT(1016,508), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C9*)(S20980C18*), ABISELECT(1000,500), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C9*)(S20980C18*), ABISELECT(1000,500), "S20980C14");
    /*is_ambiguous_... S20980C14::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C9*)(S20980C18*), ABISELECT(1000,500), "S20980C14");
    check_base_class_offset(lv, (S20980C18*)(S20980C17*)(S20980C16*), ABISELECT(960,480), "S20980C14");
    check_base_class_offset(lv, (S20980C17*)(S20980C16*), ABISELECT(168,84), "S20980C14");
    check_base_class_offset(lv, (S20980C16*), ABISELECT(168,84), "S20980C14");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*)(S20980C18*)(S20980C19*), ABISELECT(8,4), "S20980C14");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*)(S20980C18*)(S20980C19*), ABISELECT(8,4), "S20980C14");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*)(S20980C18*)(S20980C19*), ABISELECT(24,12), "S20980C14");
    check_base_class_offset(lv, (S20980C7*)(S20980C18*)(S20980C19*), ABISELECT(8,4), "S20980C14");
    /*is_ambiguous_... S20980C18::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C18*)(S20980C19*), ABISELECT(40,20), "S20980C14");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C9*)(S20980C18*)(S20980C19*), ABISELECT(48,24), "S20980C14");
    check_base_class_offset(lv, (S20980C4*)(S20980C9*)(S20980C18*)(S20980C19*), ABISELECT(48,24), "S20980C14");
    check_base_class_offset(lv, (S20980C9*)(S20980C18*)(S20980C19*), ABISELECT(48,24), "S20980C14");
    check_base_class_offset(lv, (S20980C18*)(S20980C19*), ABISELECT(8,4), "S20980C14");
    check_base_class_offset(lv, (S20980C19*), ABISELECT(8,4), "S20980C14");
    check_field_offset(lv, s20980c14f0, ABISELECT(104,52), "S20980C14.s20980c14f0");
    test_class_info(&lv, &cd_S20980C14);
    dp->~S20980C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C14(Test_S20980C14, "S20980C14", ABISELECT(1024,512));

#else // __cplusplus

extern void _ZN9S20980C14C1Ev();
extern void _ZN9S20980C14D2Ev();
Name_Map name_map_S20980C14[] = {
  NSPAIR(_ZN9S20980C14C1Ev),
  NSPAIR(_ZN9S20980C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C15;
extern VTBL_ENTRY _ZTI9S20980C15[];
extern  VTBL_ENTRY _ZTV9S20980C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C15[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C3;
extern VTBL_ENTRY _ZTI8S20980C3[];
extern  VTBL_ENTRY _ZTV8S20980C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C3[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C8;
extern VTBL_ENTRY _ZTI8S20980C8[];
extern  VTBL_ENTRY _ZTV8S20980C8[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C6;
extern VTBL_ENTRY _ZTI8S20980C6[];
extern  VTBL_ENTRY _ZTV8S20980C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C6[];
extern Class_Descriptor cd_S20980C11;
extern VTBL_ENTRY _ZTI9S20980C11[];
extern  VTBL_ENTRY _ZTV9S20980C11[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C8;
extern VTBL_ENTRY _ZTI8S20980C8[];
extern  VTBL_ENTRY _ZTV8S20980C8[];
extern Class_Descriptor cd_S20980C2;
extern VTBL_ENTRY _ZTI8S20980C2[];
extern  VTBL_ENTRY _ZTV8S20980C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C2[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C9;
extern VTBL_ENTRY _ZTI8S20980C9[];
extern  VTBL_ENTRY _ZTV8S20980C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C9[];
extern Class_Descriptor cd_S20980C18;
extern VTBL_ENTRY _ZTI9S20980C18[];
extern  VTBL_ENTRY _ZTV9S20980C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C18[];
extern Class_Descriptor cd_S20980C17;
extern VTBL_ENTRY _ZTI9S20980C17[];
extern  VTBL_ENTRY _ZTV9S20980C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C17[];
extern Class_Descriptor cd_S20980C16;
extern VTBL_ENTRY _ZTI9S20980C16[];
extern  VTBL_ENTRY _ZTV9S20980C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C16[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C9;
extern VTBL_ENTRY _ZTI8S20980C9[];
extern  VTBL_ENTRY _ZTV8S20980C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C9[];
extern Class_Descriptor cd_S20980C18;
extern VTBL_ENTRY _ZTI9S20980C18[];
extern  VTBL_ENTRY _ZTV9S20980C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C18[];
extern Class_Descriptor cd_S20980C19;
extern VTBL_ENTRY _ZTI9S20980C19[];
extern  VTBL_ENTRY _ZTV9S20980C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C19[];
static Base_Class bases_S20980C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S20980C5_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(152,76), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20980C7,    ABISELECT(136,68), //bcp->offset
    81, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20980C15,    ABISELECT(120,60), //bcp->offset
    67, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20980C5_nt,    ABISELECT(944,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(944,472), //bcp->offset
    273, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20980C3,    ABISELECT(896,448), //bcp->offset
    261, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(288,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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(288,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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(304,148), //bcp->offset
    207, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20980C7,    ABISELECT(288,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(320,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
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(320,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(336,164), //bcp->offset
    225, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20980C8,    ABISELECT(320,156), //bcp->offset
    213, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(376,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(376,188), //bcp->offset
    231, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20980C6,    ABISELECT(288,140), //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
    19, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20980C11,    ABISELECT(416,208), //bcp->offset
    239, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(432,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
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(432,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
    22, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(448,224), //bcp->offset
    255, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20980C8,    ABISELECT(432,216), //bcp->offset
    243, //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
    24, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20980C2,    ABISELECT(288,140), //bcp->offset
    160, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(960,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(960,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(976,488), //bcp->offset
    324, //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
    29, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20980C7,    ABISELECT(960,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(992,496), //bcp->offset
    330, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(1016,508), //bcp->offset
    348, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(1000,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(1000,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20980C9,    ABISELECT(1000,500), //bcp->offset
    336, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20980C18,    ABISELECT(960,480), //bcp->offset
    287, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20980C17,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20980C16,    ABISELECT(168,84), //bcp->offset
    116, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20980C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    41, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    43, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(24,12), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20980C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(40,20), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20980C9,    ABISELECT(48,24), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20980C18,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20980C19,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20980C14[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN9S20980C14D1Ev();
extern void _ZN9S20980C14D0Ev();
extern void _ZN9S20980C143v61Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn8_N9S20980C14D1Ev,_ZThn4_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn8_N9S20980C14D0Ev,_ZThn4_N9S20980C14D0Ev)();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
extern void _ZN9S20980C193v55Ev();
extern void _ZN9S20980C193v56Ev();
extern void _ZN9S20980C193v57Ev();
extern void _ZN9S20980C193v58Ev();
extern void _ZN9S20980C193v59Ev();
extern void _ZN9S20980C193v60Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn48_N9S20980C14D1Ev,_ZThn24_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S20980C14D0Ev,_ZThn24_N9S20980C14D0Ev)();
extern void _ZN8S20980C93v41Ev();
extern void ABISELECT(_ZTv0_n32_N9S20980C14D1Ev,_ZTv0_n16_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S20980C14D1Ev,_ZThn60_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20980C14D0Ev,_ZTv0_n16_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S20980C14D0Ev,_ZThn60_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN9S20980C153v37Ev();
extern void _ZN9S20980C153v38Ev();
extern void _ZN9S20980C153v39Ev();
extern void _ZN9S20980C153v40Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S20980C14D1Ev,_ZTv0_n36_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S20980C14D1Ev,_ZThn68_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20980C14D0Ev,_ZTv0_n36_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S20980C14D0Ev,_ZThn68_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n128_N9S20980C14D1Ev,_ZTv0_n64_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn168_N9S20980C14D1Ev,_ZThn84_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S20980C14D0Ev,_ZTv0_n64_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn168_N9S20980C14D0Ev,_ZThn84_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN9S20980C173v45Ev();
extern void _ZN9S20980C173v46Ev();
extern void _ZN9S20980C173v47Ev();
extern void _ZN9S20980C173v48Ev();
extern void _ZN9S20980C163v49Ev();
extern void _ZN9S20980C163v50Ev();
extern void _ZN9S20980C163v51Ev();
extern void _ZN9S20980C163v52Ev();
extern void _ZN9S20980C163v53Ev();
extern void _ZN9S20980C163v54Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n88_N9S20980C14D1Ev,_ZTv0_n44_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn288_N9S20980C14D1Ev,_ZThn140_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20980C14D0Ev,_ZTv0_n44_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn288_N9S20980C14D0Ev,_ZThn140_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN8S20980C23v28Ev();
extern void _ZN8S20980C23v29Ev();
extern void _ZN8S20980C23v30Ev();
extern void _ZN8S20980C23v31Ev();
extern void _ZN8S20980C23v32Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C113v26Ev();
extern void _ZN9S20980C113v27Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void ABISELECT(_ZTv0_n32_N9S20980C14D1Ev,_ZTv0_n16_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn896_N9S20980C14D1Ev,_ZThn448_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20980C14D0Ev,_ZTv0_n16_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn896_N9S20980C14D0Ev,_ZThn448_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20980C14D1Ev,_ZTv0_n40_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn960_N9S20980C14D1Ev,_ZThn480_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20980C14D0Ev,_ZTv0_n40_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn960_N9S20980C14D0Ev,_ZThn480_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTvn40_n80_N9S20980C14D1Ev,_ZTvn20_n40_N9S20980C14D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N9S20980C14D0Ev,_ZTvn20_n40_N9S20980C14D0Ev)();
extern void _ZN8S20980C93v41Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY vtc_S20980C14[] = {
  ABISELECT(1016,508),
  ABISELECT(960,480),
  ABISELECT(944,472),
  ABISELECT(896,448),
  ABISELECT(288,140),
  ABISELECT(168,84),
  ABISELECT(136,68),
  ABISELECT(120,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN9S20980C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C14D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C143v61Ev,
  ABISELECT(1008,504),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20980C14D1Ev,_ZThn4_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20980C14D0Ev,_ZThn4_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v55Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v56Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v57Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v58Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v59Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v60Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(968,484),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20980C14D1Ev,_ZThn24_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20980C14D0Ev,_ZThn24_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-60),
  ABISELECT(16,8),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C14D1Ev,_ZTv0_n16_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C14D0Ev,_ZTv0_n16_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN9S20980C153v37Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v38Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v39Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v40Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-68),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C14D1Ev,_ZTv0_n36_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C14D0Ev,_ZTv0_n36_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-84),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(776,388),
  ABISELECT(728,364),
  ABISELECT(120,56),
  ABISELECT(848,424),
  ABISELECT(792,396),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20980C14D1Ev,_ZTv0_n64_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20980C14D0Ev,_ZTv0_n64_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN9S20980C173v45Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v46Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v47Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v48Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v49Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v50Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v51Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v52Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v53Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v54Ev,
  ABISELECT(128,68),
  ABISELECT(128,68),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-288,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(656,332),
  ABISELECT(608,308),
  ABISELECT(-288,-140),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20980C14D1Ev,_ZTv0_n44_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20980C14D0Ev,_ZTv0_n44_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v29Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v32Ev,
  ABISELECT(-304,-148),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-320,-156),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
  ABISELECT(-336,-164),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-376,-188),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  ABISELECT(-416,-208),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN9S20980C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20980C113v27Ev,
  ABISELECT(-432,-216),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
  ABISELECT(-448,-224),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  0,
  0,
  0,
  ABISELECT(-896,-448),
  ABISELECT(48,24),
  ABISELECT(-896,-448),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C14D1Ev,_ZTv0_n16_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C14D0Ev,_ZTv0_n16_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-944,-472),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-960,-480),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-960,-480),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C14D1Ev,_ZTv0_n40_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C14D0Ev,_ZTv0_n40_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
  ABISELECT(-976,-488),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-992,-496),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(16,8),
  ABISELECT(-1000,-500),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C14D1Ev,_ZTvn20_n40_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C14D0Ev,_ZTvn20_n40_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1016,-508),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV9S20980C14[];
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C19D1Ev();
extern void _ZN9S20980C19D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
extern void _ZN9S20980C193v55Ev();
extern void _ZN9S20980C193v56Ev();
extern void _ZN9S20980C193v57Ev();
extern void _ZN9S20980C193v58Ev();
extern void _ZN9S20980C193v59Ev();
extern void _ZN9S20980C193v60Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C19__9S20980C14[] = {
  ABISELECT(1008,504),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C19[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C19D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v55Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v56Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v57Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v58Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v59Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v60Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C18D1Ev();
extern void _ZN9S20980C18D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C189S20980C19__A1__9S20980C14[] = {
  ABISELECT(1008,504),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C9D1Ev();
extern void _ZN8S20980C9D0Ev();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C189S20980C19__A1__9S20980C14[] = {
  ABISELECT(968,484),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__8S20980C99S20980C189S20980C19__A1__9S20980C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-968,-484),
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C9__9S20980C189S20980C19__A1__9S20980C14[] = {
  ABISELECT(968,484),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A3__9S20980C189S20980C19__A1__9S20980C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1008,-504),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn40_N9S20980C19D1Ev,_ZThn20_N9S20980C19D1Ev)();
extern void ABISELECT(_ZThn40_N9S20980C19D0Ev,_ZThn20_N9S20980C19D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C19__9S20980C14[] = {
  ABISELECT(968,484),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C19[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C19D1Ev,_ZThn20_N9S20980C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C19D0Ev,_ZThn20_N9S20980C19D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A3__9S20980C19__9S20980C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1008,-504),
  (VTBL_ENTRY)&(_ZTI9S20980C19[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN9S20980C15D1Ev();
extern void _ZN9S20980C15D0Ev();
extern void _ZN9S20980C153v37Ev();
extern void _ZN9S20980C153v38Ev();
extern void _ZN9S20980C153v39Ev();
extern void _ZN9S20980C153v40Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C15__9S20980C14[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN9S20980C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v37Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v38Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v39Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v40Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20980C15D1Ev,_ZThn8_N9S20980C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20980C15D0Ev,_ZThn8_N9S20980C15D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C7__9S20980C15__9S20980C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C7__A1__9S20980C15__9S20980C14[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C16D1Ev();
extern void _ZN9S20980C16D0Ev();
extern void _ZN9S20980C173v45Ev();
extern void _ZN9S20980C173v46Ev();
extern void _ZN9S20980C173v47Ev();
extern void _ZN9S20980C173v48Ev();
extern void _ZN9S20980C163v49Ev();
extern void _ZN9S20980C163v50Ev();
extern void _ZN9S20980C163v51Ev();
extern void _ZN9S20980C163v52Ev();
extern void _ZN9S20980C163v53Ev();
extern void _ZN9S20980C163v54Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C16__9S20980C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(776,388),
  ABISELECT(728,364),
  ABISELECT(120,56),
  ABISELECT(848,424),
  ABISELECT(792,396),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C16D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v45Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v46Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v47Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v48Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v49Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v50Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v51Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v52Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v53Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v54Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C17D1Ev();
extern void _ZN9S20980C17D0Ev();
extern void _ZN9S20980C173v45Ev();
extern void _ZN9S20980C173v46Ev();
extern void _ZN9S20980C173v47Ev();
extern void _ZN9S20980C173v48Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C179S20980C16__9S20980C14[] = {
  ABISELECT(848,424),
  ABISELECT(792,396),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C17D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v45Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v46Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v47Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v48Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev)();
extern void ABISELECT(_ZThn792_N9S20980C17D1Ev,_ZThn396_N9S20980C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev)();
extern void ABISELECT(_ZThn792_N9S20980C17D0Ev,_ZThn396_N9S20980C17D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C18__9S20980C179S20980C16__9S20980C14[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-792,-396),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-792,-396),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C79S20980C18__A2__9S20980C179S20980C16__9S20980C14[] = {
  ABISELECT(-808,-404),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt9S20980C18__A3__9S20980C179S20980C16__9S20980C14[] = {
  ABISELECT(-824,-412),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTvn40_n80_N9S20980C17D1Ev,_ZTvn20_n40_N9S20980C17D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N9S20980C17D0Ev,_ZTvn20_n40_N9S20980C17D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C179S20980C16__9S20980C14[] = {
  ABISELECT(16,8),
  ABISELECT(-832,-416),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C17D1Ev,_ZTvn20_n40_N9S20980C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C17D0Ev,_ZTvn20_n40_N9S20980C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A4__9S20980C179S20980C16__9S20980C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-848,-424),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n88_N9S20980C16D1Ev,_ZTv0_n44_N9S20980C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S20980C16D1Ev,_ZThn56_N9S20980C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20980C16D0Ev,_ZTv0_n44_N9S20980C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S20980C16D0Ev,_ZThn56_N9S20980C16D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN8S20980C23v28Ev();
extern void _ZN8S20980C23v29Ev();
extern void _ZN8S20980C23v30Ev();
extern void _ZN8S20980C23v31Ev();
extern void _ZN8S20980C23v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C2__9S20980C16__9S20980C14[] = {
  ABISELECT(128,68),
  ABISELECT(128,68),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(656,332),
  ABISELECT(608,308),
  ABISELECT(-120,-56),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20980C16D1Ev,_ZTv0_n44_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20980C16D0Ev,_ZTv0_n44_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v29Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v32Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev)();
extern void ABISELECT(_ZThn728_N9S20980C16D1Ev,_ZThn364_N9S20980C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev)();
extern void ABISELECT(_ZThn728_N9S20980C16D0Ev,_ZThn364_N9S20980C16D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__9S20980C16__9S20980C14[] = {
  0,
  0,
  0,
  ABISELECT(-728,-364),
  ABISELECT(48,24),
  ABISELECT(-728,-364),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__9S20980C16__9S20980C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-776,-388),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C78S20980C68S20980C2__A2__9S20980C16__9S20980C14[] = {
  ABISELECT(-136,-64),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C88S20980C68S20980C2__9S20980C16__9S20980C14[] = {
  ABISELECT(-152,-72),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C88S20980C68S20980C2__A4__9S20980C16__9S20980C14[] = {
  ABISELECT(-168,-80),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C48S20980C68S20980C2__A3__9S20980C16__9S20980C14[] = {
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN9S20980C113v26Ev();
extern void _ZN9S20980C113v27Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C118S20980C2__9S20980C16__9S20980C14[] = {
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN9S20980C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20980C113v27Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C88S20980C2__A1__9S20980C16__9S20980C14[] = {
  ABISELECT(-264,-132),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C88S20980C2__A7__9S20980C16__9S20980C14[] = {
  ABISELECT(-280,-140),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev)();
extern void _ZN9S20980C153v37Ev();
extern void _ZN9S20980C153v38Ev();
extern void _ZN9S20980C153v39Ev();
extern void _ZN9S20980C153v40Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C15__9S20980C16__9S20980C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(16,8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20980C153v37Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v38Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v39Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v40Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S20980C16D1Ev,_ZTv0_n36_N9S20980C16D1Ev)();
extern void ABISELECT(_ZTv0_n72_N9S20980C16D0Ev,_ZTv0_n36_N9S20980C16D0Ev)();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C7__A1__9S20980C16__9S20980C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C16D1Ev,_ZTv0_n36_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C16D0Ev,_ZTv0_n36_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C7__A9__9S20980C16__9S20980C14[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20980C16D1Ev,_ZTv0_n40_N9S20980C16D1Ev)();
extern void ABISELECT(_ZThn792_N9S20980C16D1Ev,_ZThn396_N9S20980C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20980C16D0Ev,_ZTv0_n40_N9S20980C16D0Ev)();
extern void ABISELECT(_ZThn792_N9S20980C16D0Ev,_ZThn396_N9S20980C16D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C18__9S20980C16__9S20980C14[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-792,-396),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-792,-396),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C16D1Ev,_ZTv0_n40_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C16D0Ev,_ZTv0_n40_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C79S20980C18__A12__9S20980C16__9S20980C14[] = {
  ABISELECT(-808,-404),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt9S20980C18__A13__9S20980C16__9S20980C14[] = {
  ABISELECT(-824,-412),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTvn40_n80_N9S20980C16D1Ev,_ZTvn20_n40_N9S20980C16D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N9S20980C16D0Ev,_ZTvn20_n40_N9S20980C16D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C16__9S20980C14[] = {
  ABISELECT(16,8),
  ABISELECT(-832,-416),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C16D1Ev,_ZTvn20_n40_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C16D0Ev,_ZTvn20_n40_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A14__9S20980C16__9S20980C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-848,-424),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C2D1Ev();
extern void _ZN8S20980C2D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN8S20980C23v28Ev();
extern void _ZN8S20980C23v29Ev();
extern void _ZN8S20980C23v30Ev();
extern void _ZN8S20980C23v31Ev();
extern void _ZN8S20980C23v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C2__9S20980C14[] = {
  ABISELECT(656,332),
  ABISELECT(608,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v29Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v32Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C6D1Ev();
extern void _ZN8S20980C6D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C68S20980C2__9S20980C14[] = {
  ABISELECT(656,332),
  ABISELECT(608,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev)();
extern void ABISELECT(_ZThn608_N8S20980C6D1Ev,_ZThn308_N8S20980C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev)();
extern void ABISELECT(_ZThn608_N8S20980C6D0Ev,_ZThn308_N8S20980C6D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__8S20980C68S20980C2__9S20980C14[] = {
  0,
  0,
  0,
  ABISELECT(-608,-308),
  ABISELECT(48,24),
  ABISELECT(-608,-308),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C68S20980C2__9S20980C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-332),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev)();
extern void ABISELECT(_ZThn608_N8S20980C2D1Ev,_ZThn308_N8S20980C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev)();
extern void ABISELECT(_ZThn608_N8S20980C2D0Ev,_ZThn308_N8S20980C2D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__8S20980C2__9S20980C14[] = {
  0,
  0,
  0,
  ABISELECT(-608,-308),
  ABISELECT(48,24),
  ABISELECT(-608,-308),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C2__9S20980C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-332),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN8S20980C3D1Ev();
extern void _ZN8S20980C3D0Ev();
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__9S20980C14[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN8S20980C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C3__9S20980C14[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C18D1Ev();
extern void _ZN9S20980C18D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C18__9S20980C14[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C9D1Ev();
extern void _ZN8S20980C9D0Ev();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C14[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__8S20980C99S20980C18__9S20980C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C9__9S20980C18__9S20980C14[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A3__9S20980C18__9S20980C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
static  VTT_ENTRY vtt_S20980C14[] = {
  {&(_ZTV9S20980C14[10]),  10,358},
  {&(_tg__ZTV9S20980C19__9S20980C14[3]),  3,26},
  {&(_tg__ZTV9S20980C189S20980C19__A1__9S20980C14[3]),  3,20},
  {&(_tg__ZTV8S20980C99S20980C189S20980C19__A1__9S20980C14[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__8S20980C99S20980C189S20980C19__A1__9S20980C14[6]),  6,10},
  {&(_tg__ZTV8S20980C9__9S20980C189S20980C19__A1__9S20980C14[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A3__9S20980C189S20980C19__A1__9S20980C14[6]),  6,10},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C19__9S20980C14[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A3__9S20980C19__9S20980C14[6]),  6,10},
  {&(_ZTV9S20980C14[75]),  75,358},
  {&(_ZTV9S20980C14[96]),  96,358},
  {&(_ZTV9S20980C14[112]),  112,358},
  {&(_ZTV9S20980C14[142]),  142,358},
  {&(_ZTV9S20980C14[188]),  188,358},
  {&(_ZTV9S20980C14[268]),  268,358},
  {&(_ZTV9S20980C14[281]),  281,358},
  {&(_ZTV9S20980C14[209]),  209,358},
  {&(_ZTV9S20980C14[215]),  215,358},
  {&(_ZTV9S20980C14[227]),  227,358},
  {&(_ZTV9S20980C14[233]),  233,358},
  {&(_ZTV9S20980C14[241]),  241,358},
  {&(_ZTV9S20980C14[245]),  245,358},
  {&(_ZTV9S20980C14[257]),  257,358},
  {&(_ZTV9S20980C14[307]),  307,358},
  {&(_ZTV9S20980C14[326]),  326,358},
  {&(_ZTV9S20980C14[332]),  332,358},
  {&(_ZTV9S20980C14[339]),  339,358},
  {&(_ZTV9S20980C14[354]),  354,358},
  {&(_ZTV9S20980C14[20]),  20,358},
  {&(_ZTV9S20980C14[58]),  58,358},
  {&(_tg__ZTV9S20980C15__9S20980C14[3]),  3,9},
  {&(_tg__ZTV8S20980C7__9S20980C15__9S20980C14[15]),  15,29},
  {&(_tg__ZTV11S20980C5_nt8S20980C7__A1__9S20980C15__9S20980C14[2]),  2,6},
  {&(_tg__ZTV9S20980C16__9S20980C14[9]),  9,27},
  {&(_tg__ZTV9S20980C179S20980C16__9S20980C14[4]),  4,16},
  {&(_tg__ZTV9S20980C18__9S20980C179S20980C16__9S20980C14[20]),  20,37},
  {&(_tg__ZTV11S20980C5_nt8S20980C79S20980C18__A2__9S20980C179S20980C16__9S20980C14[2]),  2,6},
  {&(_tg__ZTV11S20980C5_nt9S20980C18__A3__9S20980C179S20980C16__9S20980C14[2]),  2,6},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C179S20980C16__9S20980C14[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A4__9S20980C179S20980C16__9S20980C14[6]),  6,10},
  {&(_tg__ZTV8S20980C2__9S20980C16__9S20980C14[28]),  28,47},
  {&(_tg__ZTV8S20980C3__9S20980C16__9S20980C14[7]),  7,12},
  {&(_tg__ZTV8S20980C4__9S20980C16__9S20980C14[8]),  8,14},
  {&(_tg__ZTV11S20980C5_nt8S20980C78S20980C68S20980C2__A2__9S20980C16__9S20980C14[2]),  2,6},
  {&(_tg__ZTV8S20980C88S20980C68S20980C2__9S20980C16__9S20980C14[2]),  2,12},
  {&(_tg__ZTV11S20980C5_nt8S20980C88S20980C68S20980C2__A4__9S20980C16__9S20980C14[2]),  2,6},
  {&(_tg__ZTV8S20980C48S20980C68S20980C2__A3__9S20980C16__9S20980C14[2]),  2,8},
  {&(_tg__ZTV9S20980C118S20980C2__9S20980C16__9S20980C14[2]),  2,4},
  {&(_tg__ZTV8S20980C88S20980C2__A1__9S20980C16__9S20980C14[2]),  2,12},
  {&(_tg__ZTV11S20980C5_nt8S20980C88S20980C2__A7__9S20980C16__9S20980C14[2]),  2,6},
  {&(_tg__ZTV9S20980C15__9S20980C16__9S20980C14[8]),  8,14},
  {&(_tg__ZTV8S20980C7__A1__9S20980C16__9S20980C14[15]),  15,29},
  {&(_tg__ZTV11S20980C5_nt8S20980C7__A9__9S20980C16__9S20980C14[2]),  2,6},
  {&(_tg__ZTV9S20980C18__9S20980C16__9S20980C14[20]),  20,37},
  {&(_tg__ZTV11S20980C5_nt8S20980C79S20980C18__A12__9S20980C16__9S20980C14[2]),  2,6},
  {&(_tg__ZTV11S20980C5_nt9S20980C18__A13__9S20980C16__9S20980C14[2]),  2,6},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C16__9S20980C14[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A14__9S20980C16__9S20980C14[6]),  6,10},
  {&(_tg__ZTV8S20980C2__9S20980C14[4]),  4,23},
  {&(_tg__ZTV8S20980C68S20980C2__9S20980C14[4]),  4,18},
  {&(_tg__ZTV8S20980C3__8S20980C68S20980C2__9S20980C14[7]),  7,12},
  {&(_tg__ZTV8S20980C4__8S20980C68S20980C2__9S20980C14[8]),  8,14},
  {&(_tg__ZTV8S20980C3__8S20980C2__9S20980C14[7]),  7,12},
  {&(_tg__ZTV8S20980C4__8S20980C2__9S20980C14[8]),  8,14},
  {&(_tg__ZTV8S20980C3__9S20980C14[3]),  3,8},
  {&(_tg__ZTV8S20980C4__8S20980C3__9S20980C14[8]),  8,14},
  {&(_tg__ZTV9S20980C18__9S20980C14[3]),  3,20},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C14[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__8S20980C99S20980C18__9S20980C14[6]),  6,10},
  {&(_tg__ZTV8S20980C9__9S20980C18__9S20980C14[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A3__9S20980C18__9S20980C14[6]),  6,10},
};
extern VTBL_ENTRY _ZTI9S20980C14[];
extern  VTBL_ENTRY _ZTV9S20980C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C14[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C2D0Ev,_ZThn308_N8S20980C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C2D1Ev,_ZThn308_N8S20980C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C6D0Ev,_ZThn308_N8S20980C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C6D1Ev,_ZThn308_N8S20980C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C16D0Ev,_ZTv0_n40_N9S20980C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S20980C16D0Ev,_ZThn396_N9S20980C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C16D1Ev,_ZTv0_n40_N9S20980C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S20980C16D1Ev,_ZThn396_N9S20980C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N9S20980C16D0Ev,_ZThn364_N9S20980C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N9S20980C16D1Ev,_ZThn364_N9S20980C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20980C16D0Ev,_ZTv0_n44_N9S20980C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20980C16D0Ev,_ZThn56_N9S20980C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20980C16D1Ev,_ZTv0_n44_N9S20980C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20980C16D1Ev,_ZThn56_N9S20980C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S20980C17D0Ev,_ZThn396_N9S20980C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S20980C17D1Ev,_ZThn396_N9S20980C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20980C15D0Ev,_ZThn8_N9S20980C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20980C15D1Ev,_ZThn8_N9S20980C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C14D0Ev,_ZTv0_n40_N9S20980C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S20980C14D0Ev,_ZThn480_N9S20980C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C14D1Ev,_ZTv0_n40_N9S20980C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S20980C14D1Ev,_ZThn480_N9S20980C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20980C14D0Ev,_ZTv0_n44_N9S20980C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20980C14D0Ev,_ZThn140_N9S20980C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20980C14D1Ev,_ZTv0_n44_N9S20980C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20980C14D1Ev,_ZThn140_N9S20980C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20980C14D0Ev,_ZTv0_n64_N9S20980C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20980C14D0Ev,_ZThn84_N9S20980C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20980C14D1Ev,_ZTv0_n64_N9S20980C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20980C14D1Ev,_ZThn84_N9S20980C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C14D0Ev,_ZTv0_n36_N9S20980C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20980C14D0Ev,_ZThn68_N9S20980C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C14D1Ev,_ZTv0_n36_N9S20980C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20980C14D1Ev,_ZThn68_N9S20980C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20980C14D0Ev,_ZTv0_n16_N9S20980C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N9S20980C14D0Ev,_ZThn448_N9S20980C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20980C14D0Ev,_ZThn60_N9S20980C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20980C14D1Ev,_ZTv0_n16_N9S20980C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N9S20980C14D1Ev,_ZThn448_N9S20980C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20980C14D1Ev,_ZThn60_N9S20980C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20980C14 = {  "S20980C14", // class name
  bases_S20980C14, 50,
  &(vtc_S20980C14[0]), // expected_vtbl_contents
  &(vtt_S20980C14[0]), // expected_vtt_contents
  ABISELECT(1024,512), // object size
  NSPAIRA(_ZTI9S20980C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20980C14),358, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20980C14),71, //virtual table table var
  50, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20980C1  : virtual S20980C2 , S20980C3 , S20980C13 , S20980C14 {
  int s20980c1f0;
  virtual  ~S20980C1(); // _ZN8S20980C1D2Ev
  virtual void  v1(); // _ZN8S20980C12v1Ev
  virtual void  v2(); // _ZN8S20980C12v2Ev
  virtual void  v3(); // _ZN8S20980C12v3Ev
  virtual void  v4(); // _ZN8S20980C12v4Ev
  virtual void  v5(); // _ZN8S20980C12v5Ev
  virtual void  v6(); // _ZN8S20980C12v6Ev
  S20980C1(); // tgen
};
//SIG(1 S20980C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ v7 v8 v9 v10} v11 v12 FC5} vd v13 v14 v15 FC4 FD} BC6{ VBC3 BC7{ BC4 BC5 vd v16 v17 v18 v19 v20 v21 Fi} BC8{ BC4 BC5 v22 v23 v24 v25 FC9{ VBC5 BC4 vd v41} FU10{ m} FU10 Fi} BC4 vd FD} BC11{ v26 v27 Fi} BC8 v28 v29 v30 v31 v32 FC12{ VBC11 VBC9}[10]} BC3 BC13{ v33 v34 v35 v36 FC7 Fp} BC14{ BC5 VBC15{ VBC7 vd v37 v38 v39 v40 Fp} VBC16{ VBC2 VBC15 BC17{ BC4 VBC18{ BC7 BC5 BC9 v42 v43 v44} vd v45 v46 v47 v48 Fi Fp[11]} vd v49 v50 v51 v52 v53 v54} BC19{ BC18 v55 v56 v57 v58 v59 v60 FC20{ VBC5 BC9 VBC4 vd v62 v63}} vd v61 Fp[2]} vd v1 v2 v3 v4 v5 v6 Fi}


 S20980C1 ::~S20980C1(){ note_dtor("S20980C1", this);}
void  S20980C1 ::v1(){vfunc_called(this, "_ZN8S20980C12v1Ev");}
void  S20980C1 ::v2(){vfunc_called(this, "_ZN8S20980C12v2Ev");}
void  S20980C1 ::v3(){vfunc_called(this, "_ZN8S20980C12v3Ev");}
void  S20980C1 ::v4(){vfunc_called(this, "_ZN8S20980C12v4Ev");}
void  S20980C1 ::v5(){vfunc_called(this, "_ZN8S20980C12v5Ev");}
void  S20980C1 ::v6(){vfunc_called(this, "_ZN8S20980C12v6Ev");}
S20980C1 ::S20980C1(){ note_ctor("S20980C1", this);} // tgen

static void Test_S20980C1()
{
  extern Class_Descriptor cd_S20980C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(71,142)];
    init_test(&cd_S20980C1, buf);
    S20980C1 *dp, &lv = *(dp=new (buf) S20980C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1120,564), "sizeof(S20980C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20980C1)");
    /*is_ambiguous_... S20980C1::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*), ABISELECT(880,444), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C3 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C3*), ABISELECT(880,444), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C3 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C3*), ABISELECT(880,444), "S20980C1");
    check_base_class_offset(lv, (S20980C3*)(S20980C2*), ABISELECT(832,420), "S20980C1");
    check_base_class_offset(lv, (S20980C3*)(S20980C6*)(S20980C2*), ABISELECT(832,420), "S20980C1");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(224,112), "S20980C1");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(224,112), "S20980C1");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(240,120), "S20980C1");
    check_base_class_offset(lv, (S20980C7*)(S20980C6*)(S20980C2*), ABISELECT(224,112), "S20980C1");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(256,128), "S20980C1");
    check_base_class_offset(lv, (S20980C4*)(S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(256,128), "S20980C1");
    /*is_ambiguous_... S20980C8::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(272,136), "S20980C1");
    check_base_class_offset(lv, (S20980C8*)(S20980C6*)(S20980C2*), ABISELECT(256,128), "S20980C1");
    /*is_ambiguous_... S20980C6::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C6*)(S20980C2*), ABISELECT(312,160), "S20980C1");
    /*is_ambiguous_... S20980C6::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C6*)(S20980C2*), ABISELECT(312,160), "S20980C1");
    check_base_class_offset(lv, (S20980C6*)(S20980C2*), ABISELECT(224,112), "S20980C1");
    check_base_class_offset(lv, (S20980C11*)(S20980C2*), ABISELECT(352,180), "S20980C1");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C8*)(S20980C2*), ABISELECT(368,188), "S20980C1");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C8*)(S20980C2*), ABISELECT(368,188), "S20980C1");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C8*)(S20980C2*), ABISELECT(384,196), "S20980C1");
    /*is_ambiguous_... S20980C2::S20980C8 */ AMB_check_base_class_offset(lv, (S20980C8*)(S20980C2*), ABISELECT(368,188), "S20980C1");
    check_base_class_offset(lv, (S20980C2*), ABISELECT(224,112), "S20980C1");
    check_base_class_offset(lv, (S20980C2*)(S20980C16*), ABISELECT(224,112), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C3 */ AMB_check_base_class_offset(lv, (S20980C3*), 0, "S20980C1");
    check_base_class_offset(lv, (S20980C13*), ABISELECT(48,24), "S20980C1");
    /*is_ambiguous_... S20980C14::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C14*), ABISELECT(96,48), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C7 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*), ABISELECT(912,460), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C7 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C7*), ABISELECT(912,460), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C7 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*), ABISELECT(928,468), "S20980C1");
    check_base_class_offset(lv, (S20980C7*)(S20980C15*), ABISELECT(912,460), "S20980C1");
    check_base_class_offset(lv, (S20980C15*)(S20980C14*), ABISELECT(896,452), "S20980C1");
    check_base_class_offset(lv, (S20980C15*)(S20980C16*), ABISELECT(896,452), "S20980C1");
    /*is_ambiguous_... S20980C17::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C17*)(S20980C16*), ABISELECT(944,476), "S20980C1");
    /*is_ambiguous_... S20980C17::S20980C4 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C17*)(S20980C16*), ABISELECT(944,476), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*)(S20980C18*), ABISELECT(1056,532), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C7*)(S20980C18*), ABISELECT(1056,532), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*)(S20980C18*), ABISELECT(1072,540), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C7*)(S20980C18*), ABISELECT(1056,532), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C18*), ABISELECT(1088,548), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C9*)(S20980C18*), ABISELECT(1112,560), "S20980C1");
    /*is_ambiguous_... S20980C9::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C9*)(S20980C18*)(S20980C19*)(S20980C14*), ABISELECT(1112,560), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C9*)(S20980C18*), ABISELECT(1096,552), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C4*)(S20980C9*)(S20980C18*), ABISELECT(1096,552), "S20980C1");
    /*is_ambiguous_... S20980C1::S20980C18 */ AMB_check_base_class_offset(lv, (S20980C9*)(S20980C18*), ABISELECT(1096,552), "S20980C1");
    check_base_class_offset(lv, (S20980C18*)(S20980C17*)(S20980C16*), ABISELECT(1056,532), "S20980C1");
    check_base_class_offset(lv, (S20980C17*)(S20980C16*), ABISELECT(944,476), "S20980C1");
    check_base_class_offset(lv, (S20980C16*)(S20980C14*), ABISELECT(944,476), "S20980C1");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C7*)(S20980C18*)(S20980C19*)(S20980C14*), ABISELECT(104,52), "S20980C1");
    check_base_class_offset(lv, (S20980C4*)(S20980C7*)(S20980C18*)(S20980C19*)(S20980C14*), ABISELECT(104,52), "S20980C1");
    /*is_ambiguous_... S20980C7::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C7*)(S20980C18*)(S20980C19*)(S20980C14*), ABISELECT(120,60), "S20980C1");
    check_base_class_offset(lv, (S20980C7*)(S20980C18*)(S20980C19*)(S20980C14*), ABISELECT(104,52), "S20980C1");
    /*is_ambiguous_... S20980C18::S20980C5_nt */ AMB_check_base_class_offset(lv, (S20980C5_nt*)(S20980C18*)(S20980C19*)(S20980C14*), ABISELECT(136,68), "S20980C1");
    check_base_class_offset(lv, (S20980C5_nt*)(S20980C4*)(S20980C9*)(S20980C18*)(S20980C19*)(S20980C14*), ABISELECT(144,72), "S20980C1");
    check_base_class_offset(lv, (S20980C4*)(S20980C9*)(S20980C18*)(S20980C19*)(S20980C14*), ABISELECT(144,72), "S20980C1");
    check_base_class_offset(lv, (S20980C9*)(S20980C18*)(S20980C19*)(S20980C14*), ABISELECT(144,72), "S20980C1");
    check_base_class_offset(lv, (S20980C18*)(S20980C19*)(S20980C14*), ABISELECT(104,52), "S20980C1");
    check_base_class_offset(lv, (S20980C19*)(S20980C14*), ABISELECT(104,52), "S20980C1");
    check_base_class_offset(lv, (S20980C14*), ABISELECT(96,48), "S20980C1");
    check_field_offset(lv, s20980c1f0, ABISELECT(216,108), "S20980C1.s20980c1f0");
    test_class_info(&lv, &cd_S20980C1);
    dp->~S20980C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20980C1(Test_S20980C1, "S20980C1", ABISELECT(1120,564));

#else // __cplusplus

extern void _ZN8S20980C1C1Ev();
extern void _ZN8S20980C1D2Ev();
Name_Map name_map_S20980C1[] = {
  NSPAIR(_ZN8S20980C1C1Ev),
  NSPAIR(_ZN8S20980C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C3;
extern VTBL_ENTRY _ZTI8S20980C3[];
extern  VTBL_ENTRY _ZTV8S20980C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C3[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C8;
extern VTBL_ENTRY _ZTI8S20980C8[];
extern  VTBL_ENTRY _ZTV8S20980C8[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C6;
extern VTBL_ENTRY _ZTI8S20980C6[];
extern  VTBL_ENTRY _ZTV8S20980C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C6[];
extern Class_Descriptor cd_S20980C11;
extern VTBL_ENTRY _ZTI9S20980C11[];
extern  VTBL_ENTRY _ZTV9S20980C11[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C8;
extern VTBL_ENTRY _ZTI8S20980C8[];
extern  VTBL_ENTRY _ZTV8S20980C8[];
extern Class_Descriptor cd_S20980C2;
extern VTBL_ENTRY _ZTI8S20980C2[];
extern  VTBL_ENTRY _ZTV8S20980C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C2[];
extern Class_Descriptor cd_S20980C3;
extern VTBL_ENTRY _ZTI8S20980C3[];
extern  VTBL_ENTRY _ZTV8S20980C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C3[];
extern Class_Descriptor cd_S20980C13;
extern VTBL_ENTRY _ZTI9S20980C13[];
extern  VTBL_ENTRY _ZTV9S20980C13[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C15;
extern VTBL_ENTRY _ZTI9S20980C15[];
extern  VTBL_ENTRY _ZTV9S20980C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C15[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C9;
extern VTBL_ENTRY _ZTI8S20980C9[];
extern  VTBL_ENTRY _ZTV8S20980C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C9[];
extern Class_Descriptor cd_S20980C18;
extern VTBL_ENTRY _ZTI9S20980C18[];
extern  VTBL_ENTRY _ZTV9S20980C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C18[];
extern Class_Descriptor cd_S20980C17;
extern VTBL_ENTRY _ZTI9S20980C17[];
extern  VTBL_ENTRY _ZTV9S20980C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C17[];
extern Class_Descriptor cd_S20980C16;
extern VTBL_ENTRY _ZTI9S20980C16[];
extern  VTBL_ENTRY _ZTV9S20980C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C16[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C7;
extern VTBL_ENTRY _ZTI8S20980C7[];
extern  VTBL_ENTRY _ZTV8S20980C7[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C5_nt;
extern VTBL_ENTRY _ZTI11S20980C5_nt[];
extern  VTBL_ENTRY _ZTV11S20980C5_nt[];
extern Class_Descriptor cd_S20980C4;
extern VTBL_ENTRY _ZTI8S20980C4[];
extern  VTBL_ENTRY _ZTV8S20980C4[];
extern Class_Descriptor cd_S20980C9;
extern VTBL_ENTRY _ZTI8S20980C9[];
extern  VTBL_ENTRY _ZTV8S20980C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C9[];
extern Class_Descriptor cd_S20980C18;
extern VTBL_ENTRY _ZTI9S20980C18[];
extern  VTBL_ENTRY _ZTV9S20980C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C18[];
extern Class_Descriptor cd_S20980C19;
extern VTBL_ENTRY _ZTI9S20980C19[];
extern  VTBL_ENTRY _ZTV9S20980C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C19[];
extern Class_Descriptor cd_S20980C14;
extern VTBL_ENTRY _ZTI9S20980C14[];
extern  VTBL_ENTRY _ZTV9S20980C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20980C14[];
static Base_Class bases_S20980C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20980C5_nt,    ABISELECT(880,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(880,444), //bcp->offset
    207, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20980C3,    ABISELECT(832,420), //bcp->offset
    195, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(224,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(224,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(240,120), //bcp->offset
    141, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20980C7,    ABISELECT(224,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(256,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(256,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(272,136), //bcp->offset
    159, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20980C8,    ABISELECT(256,128), //bcp->offset
    147, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(312,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(312,160), //bcp->offset
    165, //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
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20980C6,    ABISELECT(224,112), //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
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20980C11,    ABISELECT(352,180), //bcp->offset
    173, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(368,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(368,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(384,196), //bcp->offset
    189, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20980C8,    ABISELECT(368,188), //bcp->offset
    177, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20980C2,    ABISELECT(224,112), //bcp->offset
    94, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20980C3,    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
    40, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20980C13,    ABISELECT(48,24), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20980C5_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(912,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(912,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(928,468), //bcp->offset
    264, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20980C7,    ABISELECT(912,460), //bcp->offset
    235, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S20980C15,    ABISELECT(896,452), //bcp->offset
    221, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(944,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(944,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(1056,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(1056,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(1072,540), //bcp->offset
    351, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20980C7,    ABISELECT(1056,532), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(1088,548), //bcp->offset
    357, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(1112,560), //bcp->offset
    375, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(1096,552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20980C4,    ABISELECT(1096,552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20980C9,    ABISELECT(1096,552), //bcp->offset
    363, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20980C18,    ABISELECT(1056,532), //bcp->offset
    314, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S20980C17,    ABISELECT(944,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20980C16,    ABISELECT(944,476), //bcp->offset
    270, //bcp->virtual_function_table_offset
    26, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    52, //immediately_derived
  0, 1},
  {&cd_S20980C5_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20980C4,    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
    44, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(120,60), //bcp->offset
    70, //bcp->virtual_function_table_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
    45, //immediately_derived
  0, 0},
  {&cd_S20980C7,    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
    46, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(136,68), //bcp->offset
    76, //bcp->virtual_function_table_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
    50, //immediately_derived
  0, 0},
  {&cd_S20980C5_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20980C4,    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
    49, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20980C9,    ABISELECT(144,72), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20980C18,    ABISELECT(104,52), //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
    51, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20980C19,    ABISELECT(104,52), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S20980C14,    ABISELECT(96,48), //bcp->offset
    27, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20980C1[];
extern void _ZN8S20980C1D1Ev();
extern void _ZN8S20980C1D0Ev();
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
extern void _ZN8S20980C12v1Ev();
extern void _ZN8S20980C12v2Ev();
extern void _ZN8S20980C12v3Ev();
extern void _ZN8S20980C12v4Ev();
extern void _ZN8S20980C12v5Ev();
extern void _ZN8S20980C12v6Ev();
extern void _ZN9S20980C133v33Ev();
extern void _ZN9S20980C133v34Ev();
extern void _ZN9S20980C133v35Ev();
extern void _ZN9S20980C133v36Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void ABISELECT(_ZThn96_N8S20980C1D1Ev,_ZThn48_N8S20980C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20980C1D0Ev,_ZThn48_N8S20980C1D0Ev)();
extern void _ZN9S20980C143v61Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn104_N8S20980C1D1Ev,_ZThn52_N8S20980C1D1Ev)();
extern void ABISELECT(_ZThn104_N8S20980C1D0Ev,_ZThn52_N8S20980C1D0Ev)();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
extern void _ZN9S20980C193v55Ev();
extern void _ZN9S20980C193v56Ev();
extern void _ZN9S20980C193v57Ev();
extern void _ZN9S20980C193v58Ev();
extern void _ZN9S20980C193v59Ev();
extern void _ZN9S20980C193v60Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn144_N8S20980C1D1Ev,_ZThn72_N8S20980C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S20980C1D0Ev,_ZThn72_N8S20980C1D0Ev)();
extern void _ZN8S20980C93v41Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n88_N8S20980C1D1Ev,_ZTv0_n44_N8S20980C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S20980C1D1Ev,_ZThn112_N8S20980C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20980C1D0Ev,_ZTv0_n44_N8S20980C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S20980C1D0Ev,_ZThn112_N8S20980C1D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN8S20980C23v28Ev();
extern void _ZN8S20980C23v29Ev();
extern void _ZN8S20980C23v30Ev();
extern void _ZN8S20980C23v31Ev();
extern void _ZN8S20980C23v32Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C113v26Ev();
extern void _ZN9S20980C113v27Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void ABISELECT(_ZTv0_n32_N8S20980C1D1Ev,_ZTv0_n16_N8S20980C1D1Ev)();
extern void ABISELECT(_ZThn832_N8S20980C1D1Ev,_ZThn420_N8S20980C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20980C1D0Ev,_ZTv0_n16_N8S20980C1D0Ev)();
extern void ABISELECT(_ZThn832_N8S20980C1D0Ev,_ZThn420_N8S20980C1D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n32_N8S20980C1D1Ev,_ZTv0_n16_N8S20980C1D1Ev)();
extern void ABISELECT(_ZThn896_N8S20980C1D1Ev,_ZThn452_N8S20980C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20980C1D0Ev,_ZTv0_n16_N8S20980C1D0Ev)();
extern void ABISELECT(_ZThn896_N8S20980C1D0Ev,_ZThn452_N8S20980C1D0Ev)() __attribute__((weak));
extern void _ZN9S20980C153v37Ev();
extern void _ZN9S20980C153v38Ev();
extern void _ZN9S20980C153v39Ev();
extern void _ZN9S20980C153v40Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n72_N8S20980C1D1Ev,_ZTv0_n36_N8S20980C1D1Ev)();
extern void ABISELECT(_ZThn912_N8S20980C1D1Ev,_ZThn460_N8S20980C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20980C1D0Ev,_ZTv0_n36_N8S20980C1D0Ev)();
extern void ABISELECT(_ZThn912_N8S20980C1D0Ev,_ZThn460_N8S20980C1D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n128_N8S20980C1D1Ev,_ZTv0_n64_N8S20980C1D1Ev)();
extern void ABISELECT(_ZThn944_N8S20980C1D1Ev,_ZThn476_N8S20980C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S20980C1D0Ev,_ZTv0_n64_N8S20980C1D0Ev)();
extern void ABISELECT(_ZThn944_N8S20980C1D0Ev,_ZThn476_N8S20980C1D0Ev)() __attribute__((weak));
extern void _ZN9S20980C173v45Ev();
extern void _ZN9S20980C173v46Ev();
extern void _ZN9S20980C173v47Ev();
extern void _ZN9S20980C173v48Ev();
extern void _ZN9S20980C163v49Ev();
extern void _ZN9S20980C163v50Ev();
extern void _ZN9S20980C163v51Ev();
extern void _ZN9S20980C163v52Ev();
extern void _ZN9S20980C163v53Ev();
extern void _ZN9S20980C163v54Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20980C1D1Ev,_ZTv0_n40_N8S20980C1D1Ev)();
extern void ABISELECT(_ZThn1056_N8S20980C1D1Ev,_ZThn532_N8S20980C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20980C1D0Ev,_ZTv0_n40_N8S20980C1D0Ev)();
extern void ABISELECT(_ZThn1056_N8S20980C1D0Ev,_ZThn532_N8S20980C1D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTvn40_n80_N8S20980C1D1Ev,_ZTvn20_n40_N8S20980C1D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S20980C1D0Ev,_ZTvn20_n40_N8S20980C1D0Ev)();
extern void _ZN8S20980C93v41Ev();
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY vtc_S20980C1[] = {
  ABISELECT(1112,560),
  ABISELECT(1056,532),
  ABISELECT(944,476),
  ABISELECT(912,460),
  ABISELECT(896,452),
  ABISELECT(832,420),
  ABISELECT(224,112),
  ABISELECT(880,444),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN8S20980C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20980C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20980C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20980C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20980C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20980C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20980C12v6Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN9S20980C133v33Ev,
  (VTBL_ENTRY)&_ZN9S20980C133v34Ev,
  (VTBL_ENTRY)&_ZN9S20980C133v35Ev,
  (VTBL_ENTRY)&_ZN9S20980C133v36Ev,
  ABISELECT(1016,512),
  ABISELECT(960,484),
  ABISELECT(784,396),
  ABISELECT(736,372),
  ABISELECT(128,64),
  ABISELECT(848,428),
  ABISELECT(816,412),
  ABISELECT(800,404),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20980C1D1Ev,_ZThn48_N8S20980C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20980C1D0Ev,_ZThn48_N8S20980C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20980C143v61Ev,
  ABISELECT(1008,508),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N8S20980C1D1Ev,_ZThn52_N8S20980C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N8S20980C1D0Ev,_ZThn52_N8S20980C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v55Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v56Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v57Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v58Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v59Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v60Ev,
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(968,488),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20980C1D1Ev,_ZThn72_N8S20980C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20980C1D0Ev,_ZThn72_N8S20980C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
  ABISELECT(128,68),
  ABISELECT(128,68),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-112),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(656,332),
  ABISELECT(608,308),
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20980C1D1Ev,_ZTv0_n44_N8S20980C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20980C1D0Ev,_ZTv0_n44_N8S20980C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v29Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v32Ev,
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-256,-128),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
  ABISELECT(-272,-136),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-312,-160),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  ABISELECT(-352,-180),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN9S20980C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20980C113v27Ev,
  ABISELECT(-368,-188),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
  ABISELECT(-384,-196),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  0,
  0,
  0,
  ABISELECT(-832,-420),
  ABISELECT(48,24),
  ABISELECT(-832,-420),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C1D1Ev,_ZTv0_n16_N8S20980C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C1D0Ev,_ZTv0_n16_N8S20980C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-880,-444),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-896,-452),
  ABISELECT(16,8),
  ABISELECT(-896,-452),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C1D1Ev,_ZTv0_n16_N8S20980C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C1D0Ev,_ZTv0_n16_N8S20980C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20980C153v37Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v38Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v39Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v40Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-912,-460),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-912,-460),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20980C1D1Ev,_ZTv0_n36_N8S20980C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20980C1D0Ev,_ZTv0_n36_N8S20980C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  ABISELECT(-928,-468),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-944,-476),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-112,-56),
  ABISELECT(-720,-364),
  ABISELECT(168,84),
  ABISELECT(112,56),
  ABISELECT(-944,-476),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20980C1D1Ev,_ZTv0_n64_N8S20980C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S20980C1D0Ev,_ZTv0_n64_N8S20980C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20980C173v45Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v46Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v47Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v48Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v49Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v50Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v51Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v52Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v53Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v54Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1056,-532),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-1056,-532),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20980C1D1Ev,_ZTv0_n40_N8S20980C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20980C1D0Ev,_ZTv0_n40_N8S20980C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
  ABISELECT(-1072,-540),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(-1088,-548),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  ABISELECT(16,8),
  ABISELECT(-1096,-552),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S20980C1D1Ev,_ZTvn20_n40_N8S20980C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S20980C1D0Ev,_ZTvn20_n40_N8S20980C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1112,-560),
  (VTBL_ENTRY)&(_ZTI8S20980C1[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern VTBL_ENTRY _ZTV8S20980C1[];
extern void _ZN8S20980C3D1Ev();
extern void _ZN8S20980C3D0Ev();
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__A__8S20980C1[] = {
  ABISELECT(880,444),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN8S20980C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C3__A__8S20980C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-880,-444),
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN9S20980C14D1Ev();
extern void _ZN9S20980C14D0Ev();
extern void _ZN9S20980C143v61Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C14__8S20980C1[] = {
  ABISELECT(1016,512),
  ABISELECT(960,484),
  ABISELECT(784,396),
  ABISELECT(736,372),
  ABISELECT(128,64),
  ABISELECT(848,428),
  ABISELECT(816,412),
  ABISELECT(800,404),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN9S20980C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C14D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C143v61Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C19D1Ev();
extern void _ZN9S20980C19D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
extern void _ZN9S20980C193v55Ev();
extern void _ZN9S20980C193v56Ev();
extern void _ZN9S20980C193v57Ev();
extern void _ZN9S20980C193v58Ev();
extern void _ZN9S20980C193v59Ev();
extern void _ZN9S20980C193v60Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C199S20980C14__8S20980C1[] = {
  ABISELECT(1008,508),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C19[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C19D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v55Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v56Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v57Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v58Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v59Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v60Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C18D1Ev();
extern void _ZN9S20980C18D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C189S20980C199S20980C14__A1__8S20980C1[] = {
  ABISELECT(1008,508),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C9D1Ev();
extern void _ZN8S20980C9D0Ev();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C189S20980C199S20980C14__A1__8S20980C1[] = {
  ABISELECT(968,488),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__8S20980C99S20980C189S20980C199S20980C14__A1__8S20980C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-968,-488),
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C9__9S20980C189S20980C199S20980C14__A1__8S20980C1[] = {
  ABISELECT(968,488),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A3__9S20980C189S20980C199S20980C14__A1__8S20980C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1008,-508),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn40_N9S20980C19D1Ev,_ZThn20_N9S20980C19D1Ev)();
extern void ABISELECT(_ZThn40_N9S20980C19D0Ev,_ZThn20_N9S20980C19D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C199S20980C14__8S20980C1[] = {
  ABISELECT(968,488),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C19[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C19D1Ev,_ZThn20_N9S20980C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C19D0Ev,_ZThn20_N9S20980C19D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A3__9S20980C199S20980C14__8S20980C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1008,-508),
  (VTBL_ENTRY)&(_ZTI9S20980C19[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20980C14D1Ev,_ZTv0_n16_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn800_N9S20980C14D1Ev,_ZThn404_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20980C14D0Ev,_ZTv0_n16_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn800_N9S20980C14D0Ev,_ZThn404_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN9S20980C153v37Ev();
extern void _ZN9S20980C153v38Ev();
extern void _ZN9S20980C153v39Ev();
extern void _ZN9S20980C153v40Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C15__9S20980C14__8S20980C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-800,-404),
  ABISELECT(16,8),
  ABISELECT(-800,-404),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C14D1Ev,_ZTv0_n16_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C14D0Ev,_ZTv0_n16_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN9S20980C153v37Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v38Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v39Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v40Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S20980C14D1Ev,_ZTv0_n36_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn816_N9S20980C14D1Ev,_ZThn412_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20980C14D0Ev,_ZTv0_n36_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn816_N9S20980C14D0Ev,_ZThn412_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C7__9S20980C14__8S20980C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-816,-412),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-816,-412),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C14D1Ev,_ZTv0_n36_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C14D0Ev,_ZTv0_n36_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C7__A2__9S20980C14__8S20980C1[] = {
  ABISELECT(-832,-420),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n128_N9S20980C14D1Ev,_ZTv0_n64_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn848_N9S20980C14D1Ev,_ZThn428_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N9S20980C14D0Ev,_ZTv0_n64_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn848_N9S20980C14D0Ev,_ZThn428_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN9S20980C173v45Ev();
extern void _ZN9S20980C173v46Ev();
extern void _ZN9S20980C173v47Ev();
extern void _ZN9S20980C173v48Ev();
extern void _ZN9S20980C163v49Ev();
extern void _ZN9S20980C163v50Ev();
extern void _ZN9S20980C163v51Ev();
extern void _ZN9S20980C163v52Ev();
extern void _ZN9S20980C163v53Ev();
extern void _ZN9S20980C163v54Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C16__9S20980C14__8S20980C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-848,-428),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-112,-56),
  ABISELECT(-720,-364),
  ABISELECT(168,84),
  ABISELECT(112,56),
  ABISELECT(-848,-428),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20980C14D1Ev,_ZTv0_n64_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N9S20980C14D0Ev,_ZTv0_n64_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN9S20980C173v45Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v46Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v47Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v48Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v49Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v50Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v51Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v52Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v53Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v54Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n88_N9S20980C14D1Ev,_ZTv0_n44_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn128_N9S20980C14D1Ev,_ZThn64_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20980C14D0Ev,_ZTv0_n44_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn128_N9S20980C14D0Ev,_ZThn64_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN8S20980C23v28Ev();
extern void _ZN8S20980C23v29Ev();
extern void _ZN8S20980C23v30Ev();
extern void _ZN8S20980C23v31Ev();
extern void _ZN8S20980C23v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C2__9S20980C14__8S20980C1[] = {
  ABISELECT(128,68),
  ABISELECT(128,68),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(656,332),
  ABISELECT(608,308),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20980C14D1Ev,_ZTv0_n44_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20980C14D0Ev,_ZTv0_n44_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v29Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v32Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20980C14D1Ev,_ZTv0_n16_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn736_N9S20980C14D1Ev,_ZThn372_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20980C14D0Ev,_ZTv0_n16_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn736_N9S20980C14D0Ev,_ZThn372_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__9S20980C14__8S20980C1[] = {
  0,
  0,
  0,
  ABISELECT(-736,-372),
  ABISELECT(48,24),
  ABISELECT(-736,-372),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C14D1Ev,_ZTv0_n16_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C14D0Ev,_ZTv0_n16_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__A1__9S20980C14__8S20980C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-784,-396),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C78S20980C68S20980C2__A5__9S20980C14__8S20980C1[] = {
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C88S20980C68S20980C2__9S20980C14__8S20980C1[] = {
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C88S20980C68S20980C2__A7__9S20980C14__8S20980C1[] = {
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C48S20980C68S20980C2__A4__9S20980C14__8S20980C1[] = {
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN9S20980C113v26Ev();
extern void _ZN9S20980C113v27Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C118S20980C2__9S20980C14__8S20980C1[] = {
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN9S20980C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20980C113v27Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C88S20980C2__A1__9S20980C14__8S20980C1[] = {
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C88S20980C2__A10__9S20980C14__8S20980C1[] = {
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20980C14D1Ev,_ZTv0_n40_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn960_N9S20980C14D1Ev,_ZThn484_N9S20980C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20980C14D0Ev,_ZTv0_n40_N9S20980C14D0Ev)();
extern void ABISELECT(_ZThn960_N9S20980C14D0Ev,_ZThn484_N9S20980C14D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C18__9S20980C14__8S20980C1[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-960,-484),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-960,-484),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C14D1Ev,_ZTv0_n40_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C14D0Ev,_ZTv0_n40_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C79S20980C18__A13__9S20980C14__8S20980C1[] = {
  ABISELECT(-976,-492),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt9S20980C18__A14__9S20980C14__8S20980C1[] = {
  ABISELECT(-992,-500),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTvn40_n80_N9S20980C14D1Ev,_ZTvn20_n40_N9S20980C14D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N9S20980C14D0Ev,_ZTvn20_n40_N9S20980C14D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C14__8S20980C1[] = {
  ABISELECT(16,8),
  ABISELECT(-1000,-504),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C14D1Ev,_ZTvn20_n40_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C14D0Ev,_ZTvn20_n40_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A15__9S20980C14__8S20980C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1016,-512),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn8_N9S20980C14D1Ev,_ZThn4_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn8_N9S20980C14D0Ev,_ZThn4_N9S20980C14D0Ev)();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
extern void _ZN9S20980C193v55Ev();
extern void _ZN9S20980C193v56Ev();
extern void _ZN9S20980C193v57Ev();
extern void _ZN9S20980C193v58Ev();
extern void _ZN9S20980C193v59Ev();
extern void _ZN9S20980C193v60Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C19__9S20980C14__8S20980C1[] = {
  ABISELECT(1008,508),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20980C14D1Ev,_ZThn4_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20980C14D0Ev,_ZThn4_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v55Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v56Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v57Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v58Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v59Ev,
  (VTBL_ENTRY)&_ZN9S20980C193v60Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn48_N9S20980C14D1Ev,_ZThn24_N9S20980C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S20980C14D0Ev,_ZThn24_N9S20980C14D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C189S20980C19__A1__9S20980C14__8S20980C1[] = {
  ABISELECT(968,488),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20980C14[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20980C14D1Ev,_ZThn24_N9S20980C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20980C14D0Ev,_ZThn24_N9S20980C14D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C2D1Ev();
extern void _ZN8S20980C2D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN8S20980C23v28Ev();
extern void _ZN8S20980C23v29Ev();
extern void _ZN8S20980C23v30Ev();
extern void _ZN8S20980C23v31Ev();
extern void _ZN8S20980C23v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C2__8S20980C1[] = {
  ABISELECT(656,332),
  ABISELECT(608,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v29Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v32Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C6D1Ev();
extern void _ZN8S20980C6D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C68S20980C2__8S20980C1[] = {
  ABISELECT(656,332),
  ABISELECT(608,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev)();
extern void ABISELECT(_ZThn608_N8S20980C6D1Ev,_ZThn308_N8S20980C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev)();
extern void ABISELECT(_ZThn608_N8S20980C6D0Ev,_ZThn308_N8S20980C6D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__8S20980C68S20980C2__8S20980C1[] = {
  0,
  0,
  0,
  ABISELECT(-608,-308),
  ABISELECT(48,24),
  ABISELECT(-608,-308),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C68S20980C2__8S20980C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-332),
  (VTBL_ENTRY)&(_ZTI8S20980C6[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev)();
extern void ABISELECT(_ZThn608_N8S20980C2D1Ev,_ZThn308_N8S20980C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev)();
extern void ABISELECT(_ZThn608_N8S20980C2D0Ev,_ZThn308_N8S20980C2D0Ev)() __attribute__((weak));
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__8S20980C2__8S20980C1[] = {
  0,
  0,
  0,
  ABISELECT(-608,-308),
  ABISELECT(48,24),
  ABISELECT(-608,-308),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C2__8S20980C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-656,-332),
  (VTBL_ENTRY)&(_ZTI8S20980C2[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN8S20980C3D1Ev();
extern void _ZN8S20980C3D0Ev();
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__8S20980C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN8S20980C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__8S20980C3__8S20980C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20980C3[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN9S20980C15D1Ev();
extern void _ZN9S20980C15D0Ev();
extern void _ZN9S20980C153v37Ev();
extern void _ZN9S20980C153v38Ev();
extern void _ZN9S20980C153v39Ev();
extern void _ZN9S20980C153v40Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C15__8S20980C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN9S20980C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v37Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v38Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v39Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v40Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20980C15D1Ev,_ZThn8_N9S20980C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20980C15D0Ev,_ZThn8_N9S20980C15D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C7__9S20980C15__8S20980C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C7__A1__9S20980C15__8S20980C1[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20980C15[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C16D1Ev();
extern void _ZN9S20980C16D0Ev();
extern void _ZN9S20980C173v45Ev();
extern void _ZN9S20980C173v46Ev();
extern void _ZN9S20980C173v47Ev();
extern void _ZN9S20980C173v48Ev();
extern void _ZN9S20980C163v49Ev();
extern void _ZN9S20980C163v50Ev();
extern void _ZN9S20980C163v51Ev();
extern void _ZN9S20980C163v52Ev();
extern void _ZN9S20980C163v53Ev();
extern void _ZN9S20980C163v54Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C16__8S20980C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(-64,-32),
  ABISELECT(-112,-56),
  ABISELECT(-720,-364),
  ABISELECT(168,84),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C16D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v45Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v46Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v47Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v48Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v49Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v50Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v51Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v52Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v53Ev,
  (VTBL_ENTRY)&_ZN9S20980C163v54Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C17D1Ev();
extern void _ZN9S20980C17D0Ev();
extern void _ZN9S20980C173v45Ev();
extern void _ZN9S20980C173v46Ev();
extern void _ZN9S20980C173v47Ev();
extern void _ZN9S20980C173v48Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C179S20980C16__8S20980C1[] = {
  ABISELECT(168,84),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C17D0Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v45Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v46Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v47Ev,
  (VTBL_ENTRY)&_ZN9S20980C173v48Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev)();
extern void ABISELECT(_ZThn112_N9S20980C17D1Ev,_ZThn56_N9S20980C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev)();
extern void ABISELECT(_ZThn112_N9S20980C17D0Ev,_ZThn56_N9S20980C17D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C18__9S20980C179S20980C16__8S20980C1[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C79S20980C18__A2__9S20980C179S20980C16__8S20980C1[] = {
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt9S20980C18__A3__9S20980C179S20980C16__8S20980C1[] = {
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTvn40_n80_N9S20980C17D1Ev,_ZTvn20_n40_N9S20980C17D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N9S20980C17D0Ev,_ZTvn20_n40_N9S20980C17D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C179S20980C16__8S20980C1[] = {
  ABISELECT(16,8),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C17D1Ev,_ZTvn20_n40_N9S20980C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C17D0Ev,_ZTvn20_n40_N9S20980C17D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A4__9S20980C179S20980C16__8S20980C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S20980C17[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n88_N9S20980C16D1Ev,_ZTv0_n44_N9S20980C16D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S20980C16D0Ev,_ZTv0_n44_N9S20980C16D0Ev)();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN8S20980C23v28Ev();
extern void _ZN8S20980C23v29Ev();
extern void _ZN8S20980C23v30Ev();
extern void _ZN8S20980C23v31Ev();
extern void _ZN8S20980C23v32Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C2__9S20980C16__8S20980C1[] = {
  ABISELECT(128,68),
  ABISELECT(128,68),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(720,364),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(656,332),
  ABISELECT(608,308),
  ABISELECT(720,364),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20980C16D1Ev,_ZTv0_n44_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20980C16D0Ev,_ZTv0_n44_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v28Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v29Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20980C23v32Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev)();
extern void _ZN8S20980C33v13Ev();
extern void _ZN8S20980C33v14Ev();
extern void _ZN8S20980C33v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C3__9S20980C16__8S20980C1[] = {
  0,
  0,
  0,
  ABISELECT(112,56),
  ABISELECT(48,24),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20980C33v15Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C4__9S20980C16__8S20980C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C78S20980C68S20980C2__A2__9S20980C16__8S20980C1[] = {
  ABISELECT(704,356),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C88S20980C68S20980C2__9S20980C16__8S20980C1[] = {
  ABISELECT(688,348),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C88S20980C68S20980C2__A4__9S20980C16__8S20980C1[] = {
  ABISELECT(672,340),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C48S20980C68S20980C2__A3__9S20980C16__8S20980C1[] = {
  ABISELECT(632,316),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
};
extern void _ZN9S20980C113v26Ev();
extern void _ZN9S20980C113v27Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C118S20980C2__9S20980C16__8S20980C1[] = {
  ABISELECT(592,296),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN9S20980C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20980C113v27Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C83v22Ev();
extern void _ZN8S20980C83v23Ev();
extern void _ZN8S20980C83v24Ev();
extern void _ZN8S20980C83v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C88S20980C2__A1__9S20980C16__8S20980C1[] = {
  ABISELECT(576,288),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20980C83v25Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C88S20980C2__A7__9S20980C16__8S20980C1[] = {
  ABISELECT(560,280),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev)();
extern void _ZN9S20980C153v37Ev();
extern void _ZN9S20980C153v38Ev();
extern void _ZN9S20980C153v39Ev();
extern void _ZN9S20980C153v40Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C15__9S20980C16__8S20980C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(16,8),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D1Ev,_ZTv0_n16_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20980C16D0Ev,_ZTv0_n16_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20980C153v37Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v38Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v39Ev,
  (VTBL_ENTRY)&_ZN9S20980C153v40Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S20980C16D1Ev,_ZTv0_n36_N9S20980C16D1Ev)();
extern void ABISELECT(_ZTv0_n72_N9S20980C16D0Ev,_ZTv0_n36_N9S20980C16D0Ev)();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C7__A1__9S20980C16__8S20980C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C16D1Ev,_ZTv0_n36_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20980C16D0Ev,_ZTv0_n36_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C7__A9__9S20980C16__8S20980C1[] = {
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20980C16D1Ev,_ZTv0_n40_N9S20980C16D1Ev)();
extern void ABISELECT(_ZThn112_N9S20980C16D1Ev,_ZThn56_N9S20980C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20980C16D0Ev,_ZTv0_n40_N9S20980C16D0Ev)();
extern void ABISELECT(_ZThn112_N9S20980C16D0Ev,_ZThn56_N9S20980C16D0Ev)() __attribute__((weak));
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C18__9S20980C16__8S20980C1[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C16D1Ev,_ZTv0_n40_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20980C16D0Ev,_ZTv0_n40_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt8S20980C79S20980C18__A12__9S20980C16__8S20980C1[] = {
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt9S20980C18__A13__9S20980C16__8S20980C1[] = {
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZTvn40_n80_N9S20980C16D1Ev,_ZTvn20_n40_N9S20980C16D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N9S20980C16D0Ev,_ZTvn20_n40_N9S20980C16D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__9S20980C16__8S20980C1[] = {
  ABISELECT(16,8),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C16D1Ev,_ZTvn20_n40_N9S20980C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S20980C16D0Ev,_ZTvn20_n40_N9S20980C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A14__9S20980C16__8S20980C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S20980C16[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN9S20980C18D1Ev();
extern void _ZN9S20980C18D0Ev();
extern void _ZN8S20980C73v16Ev();
extern void _ZN8S20980C73v17Ev();
extern void _ZN8S20980C73v18Ev();
extern void _ZN8S20980C73v19Ev();
extern void _ZN8S20980C73v20Ev();
extern void _ZN8S20980C73v21Ev();
extern void _ZN9S20980C183v42Ev();
extern void _ZN9S20980C183v43Ev();
extern void _ZN9S20980C183v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20980C18__8S20980C1[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20980C18D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20980C73v21Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v42Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v43Ev,
  (VTBL_ENTRY)&_ZN9S20980C183v44Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void _ZN8S20980C9D1Ev();
extern void _ZN8S20980C9D0Ev();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C99S20980C18__8S20980C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20980C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__8S20980C99S20980C18__8S20980C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20980C9[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
extern void _ZN8S20980C43v11Ev();
extern void _ZN8S20980C43v12Ev();
extern void ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev)();
extern void _ZN8S20980C93v41Ev();
static  VTBL_ENTRY _tg__ZTV8S20980C9__9S20980C18__8S20980C1[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20980C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D1Ev,_ZThn20_N9S20980C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20980C18D0Ev,_ZThn20_N9S20980C18D0Ev),
  (VTBL_ENTRY)&_ZN8S20980C93v41Ev,
};
extern void _ZN11S20980C5_nt2v7Ev();
extern void _ZN11S20980C5_nt2v8Ev();
extern void _ZN11S20980C5_nt2v9Ev();
extern void _ZN11S20980C5_nt3v10Ev();
static  VTBL_ENTRY _tg__ZTV11S20980C5_nt__A3__9S20980C18__8S20980C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20980C18[0]),
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S20980C5_nt3v10Ev,
};
static  VTT_ENTRY vtt_S20980C1[] = {
  {&(_ZTV8S20980C1[10]),  10,385},
  {&(_tg__ZTV8S20980C3__A__8S20980C1[3]),  3,8},
  {&(_tg__ZTV8S20980C4__8S20980C3__A__8S20980C1[8]),  8,14},
  {&(_tg__ZTV9S20980C14__8S20980C1[10]),  10,17},
  {&(_tg__ZTV9S20980C199S20980C14__8S20980C1[3]),  3,26},
  {&(_tg__ZTV9S20980C189S20980C199S20980C14__A1__8S20980C1[3]),  3,20},
  {&(_tg__ZTV8S20980C99S20980C189S20980C199S20980C14__A1__8S20980C1[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__8S20980C99S20980C189S20980C199S20980C14__A1__8S20980C1[6]),  6,10},
  {&(_tg__ZTV8S20980C9__9S20980C189S20980C199S20980C14__A1__8S20980C1[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A3__9S20980C189S20980C199S20980C14__A1__8S20980C1[6]),  6,10},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C199S20980C14__8S20980C1[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A3__9S20980C199S20980C14__8S20980C1[6]),  6,10},
  {&(_tg__ZTV9S20980C15__9S20980C14__8S20980C1[8]),  8,14},
  {&(_tg__ZTV8S20980C7__9S20980C14__8S20980C1[15]),  15,29},
  {&(_tg__ZTV11S20980C5_nt8S20980C7__A2__9S20980C14__8S20980C1[2]),  2,6},
  {&(_tg__ZTV9S20980C16__9S20980C14__8S20980C1[26]),  26,44},
  {&(_tg__ZTV8S20980C2__9S20980C14__8S20980C1[28]),  28,47},
  {&(_tg__ZTV8S20980C3__9S20980C14__8S20980C1[7]),  7,12},
  {&(_tg__ZTV8S20980C4__A1__9S20980C14__8S20980C1[8]),  8,14},
  {&(_tg__ZTV11S20980C5_nt8S20980C78S20980C68S20980C2__A5__9S20980C14__8S20980C1[2]),  2,6},
  {&(_tg__ZTV8S20980C88S20980C68S20980C2__9S20980C14__8S20980C1[2]),  2,12},
  {&(_tg__ZTV11S20980C5_nt8S20980C88S20980C68S20980C2__A7__9S20980C14__8S20980C1[2]),  2,6},
  {&(_tg__ZTV8S20980C48S20980C68S20980C2__A4__9S20980C14__8S20980C1[2]),  2,8},
  {&(_tg__ZTV9S20980C118S20980C2__9S20980C14__8S20980C1[2]),  2,4},
  {&(_tg__ZTV8S20980C88S20980C2__A1__9S20980C14__8S20980C1[2]),  2,12},
  {&(_tg__ZTV11S20980C5_nt8S20980C88S20980C2__A10__9S20980C14__8S20980C1[2]),  2,6},
  {&(_tg__ZTV9S20980C18__9S20980C14__8S20980C1[20]),  20,37},
  {&(_tg__ZTV11S20980C5_nt8S20980C79S20980C18__A13__9S20980C14__8S20980C1[2]),  2,6},
  {&(_tg__ZTV11S20980C5_nt9S20980C18__A14__9S20980C14__8S20980C1[2]),  2,6},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C14__8S20980C1[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A15__9S20980C14__8S20980C1[6]),  6,10},
  {&(_tg__ZTV9S20980C19__9S20980C14__8S20980C1[3]),  3,26},
  {&(_tg__ZTV8S20980C99S20980C189S20980C19__A1__9S20980C14__8S20980C1[3]),  3,12},
  {&(_ZTV8S20980C1[122]),  122,385},
  {&(_ZTV8S20980C1[202]),  202,385},
  {&(_ZTV8S20980C1[215]),  215,385},
  {&(_ZTV8S20980C1[143]),  143,385},
  {&(_ZTV8S20980C1[149]),  149,385},
  {&(_ZTV8S20980C1[161]),  161,385},
  {&(_ZTV8S20980C1[167]),  167,385},
  {&(_ZTV8S20980C1[175]),  175,385},
  {&(_ZTV8S20980C1[179]),  179,385},
  {&(_ZTV8S20980C1[191]),  191,385},
  {&(_ZTV8S20980C1[37]),  37,385},
  {&(_ZTV8S20980C1[229]),  229,385},
  {&(_ZTV8S20980C1[250]),  250,385},
  {&(_ZTV8S20980C1[266]),  266,385},
  {&(_ZTV8S20980C1[296]),  296,385},
  {&(_ZTV8S20980C1[334]),  334,385},
  {&(_ZTV8S20980C1[353]),  353,385},
  {&(_ZTV8S20980C1[359]),  359,385},
  {&(_ZTV8S20980C1[366]),  366,385},
  {&(_ZTV8S20980C1[381]),  381,385},
  {&(_ZTV8S20980C1[47]),  47,385},
  {&(_ZTV8S20980C1[85]),  85,385},
  {&(_tg__ZTV8S20980C2__8S20980C1[4]),  4,23},
  {&(_tg__ZTV8S20980C68S20980C2__8S20980C1[4]),  4,18},
  {&(_tg__ZTV8S20980C3__8S20980C68S20980C2__8S20980C1[7]),  7,12},
  {&(_tg__ZTV8S20980C4__8S20980C68S20980C2__8S20980C1[8]),  8,14},
  {&(_tg__ZTV8S20980C3__8S20980C2__8S20980C1[7]),  7,12},
  {&(_tg__ZTV8S20980C4__8S20980C2__8S20980C1[8]),  8,14},
  {&(_tg__ZTV8S20980C3__8S20980C1[3]),  3,8},
  {&(_tg__ZTV8S20980C4__8S20980C3__8S20980C1[8]),  8,14},
  {&(_tg__ZTV9S20980C15__8S20980C1[3]),  3,9},
  {&(_tg__ZTV8S20980C7__9S20980C15__8S20980C1[15]),  15,29},
  {&(_tg__ZTV11S20980C5_nt8S20980C7__A1__9S20980C15__8S20980C1[2]),  2,6},
  {&(_tg__ZTV9S20980C16__8S20980C1[9]),  9,27},
  {&(_tg__ZTV9S20980C179S20980C16__8S20980C1[4]),  4,16},
  {&(_tg__ZTV9S20980C18__9S20980C179S20980C16__8S20980C1[20]),  20,37},
  {&(_tg__ZTV11S20980C5_nt8S20980C79S20980C18__A2__9S20980C179S20980C16__8S20980C1[2]),  2,6},
  {&(_tg__ZTV11S20980C5_nt9S20980C18__A3__9S20980C179S20980C16__8S20980C1[2]),  2,6},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C179S20980C16__8S20980C1[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A4__9S20980C179S20980C16__8S20980C1[6]),  6,10},
  {&(_tg__ZTV8S20980C2__9S20980C16__8S20980C1[28]),  28,47},
  {&(_tg__ZTV8S20980C3__9S20980C16__8S20980C1[7]),  7,12},
  {&(_tg__ZTV8S20980C4__9S20980C16__8S20980C1[8]),  8,14},
  {&(_tg__ZTV11S20980C5_nt8S20980C78S20980C68S20980C2__A2__9S20980C16__8S20980C1[2]),  2,6},
  {&(_tg__ZTV8S20980C88S20980C68S20980C2__9S20980C16__8S20980C1[2]),  2,12},
  {&(_tg__ZTV11S20980C5_nt8S20980C88S20980C68S20980C2__A4__9S20980C16__8S20980C1[2]),  2,6},
  {&(_tg__ZTV8S20980C48S20980C68S20980C2__A3__9S20980C16__8S20980C1[2]),  2,8},
  {&(_tg__ZTV9S20980C118S20980C2__9S20980C16__8S20980C1[2]),  2,4},
  {&(_tg__ZTV8S20980C88S20980C2__A1__9S20980C16__8S20980C1[2]),  2,12},
  {&(_tg__ZTV11S20980C5_nt8S20980C88S20980C2__A7__9S20980C16__8S20980C1[2]),  2,6},
  {&(_tg__ZTV9S20980C15__9S20980C16__8S20980C1[8]),  8,14},
  {&(_tg__ZTV8S20980C7__A1__9S20980C16__8S20980C1[15]),  15,29},
  {&(_tg__ZTV11S20980C5_nt8S20980C7__A9__9S20980C16__8S20980C1[2]),  2,6},
  {&(_tg__ZTV9S20980C18__9S20980C16__8S20980C1[20]),  20,37},
  {&(_tg__ZTV11S20980C5_nt8S20980C79S20980C18__A12__9S20980C16__8S20980C1[2]),  2,6},
  {&(_tg__ZTV11S20980C5_nt9S20980C18__A13__9S20980C16__8S20980C1[2]),  2,6},
  {&(_tg__ZTV8S20980C99S20980C18__9S20980C16__8S20980C1[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A14__9S20980C16__8S20980C1[6]),  6,10},
  {&(_tg__ZTV9S20980C18__8S20980C1[3]),  3,20},
  {&(_tg__ZTV8S20980C99S20980C18__8S20980C1[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__8S20980C99S20980C18__8S20980C1[6]),  6,10},
  {&(_tg__ZTV8S20980C9__9S20980C18__8S20980C1[3]),  3,12},
  {&(_tg__ZTV11S20980C5_nt__A3__9S20980C18__8S20980C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S20980C1[];
extern  VTBL_ENTRY _ZTV8S20980C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20980C1[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C16D0Ev,_ZTv0_n40_N9S20980C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20980C16D0Ev,_ZThn56_N9S20980C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C16D1Ev,_ZTv0_n40_N9S20980C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20980C16D1Ev,_ZThn56_N9S20980C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C17D0Ev,_ZTv0_n40_N9S20980C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20980C17D0Ev,_ZThn56_N9S20980C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C17D1Ev,_ZTv0_n40_N9S20980C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20980C17D1Ev,_ZThn56_N9S20980C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C15D0Ev,_ZTv0_n36_N9S20980C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20980C15D0Ev,_ZThn8_N9S20980C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C15D1Ev,_ZTv0_n36_N9S20980C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20980C15D1Ev,_ZThn8_N9S20980C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C2D0Ev,_ZTv0_n16_N8S20980C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C2D0Ev,_ZThn308_N8S20980C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C2D1Ev,_ZTv0_n16_N8S20980C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C2D1Ev,_ZThn308_N8S20980C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C6D0Ev,_ZTv0_n16_N8S20980C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C6D0Ev,_ZThn308_N8S20980C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C6D1Ev,_ZTv0_n16_N8S20980C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20980C6D1Ev,_ZThn308_N8S20980C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C14D0Ev,_ZTv0_n40_N9S20980C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S20980C14D0Ev,_ZThn484_N9S20980C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20980C14D1Ev,_ZTv0_n40_N9S20980C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S20980C14D1Ev,_ZThn484_N9S20980C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20980C14D0Ev,_ZTv0_n44_N9S20980C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20980C14D0Ev,_ZThn64_N9S20980C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20980C14D1Ev,_ZTv0_n44_N9S20980C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20980C14D1Ev,_ZThn64_N9S20980C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20980C14D0Ev,_ZTv0_n64_N9S20980C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N9S20980C14D0Ev,_ZThn428_N9S20980C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N9S20980C14D1Ev,_ZTv0_n64_N9S20980C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N9S20980C14D1Ev,_ZThn428_N9S20980C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C14D0Ev,_ZTv0_n36_N9S20980C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn816_N9S20980C14D0Ev,_ZThn412_N9S20980C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20980C14D1Ev,_ZTv0_n36_N9S20980C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn816_N9S20980C14D1Ev,_ZThn412_N9S20980C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20980C14D0Ev,_ZTv0_n16_N9S20980C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S20980C14D0Ev,_ZThn372_N9S20980C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S20980C14D0Ev,_ZThn404_N9S20980C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20980C14D1Ev,_ZTv0_n16_N9S20980C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S20980C14D1Ev,_ZThn372_N9S20980C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S20980C14D1Ev,_ZThn404_N9S20980C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20980C1D0Ev,_ZTv0_n40_N8S20980C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S20980C1D0Ev,_ZThn532_N8S20980C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20980C1D1Ev,_ZTv0_n40_N8S20980C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1056_N8S20980C1D1Ev,_ZThn532_N8S20980C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20980C1D0Ev,_ZTv0_n64_N8S20980C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn944_N8S20980C1D0Ev,_ZThn476_N8S20980C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S20980C1D1Ev,_ZTv0_n64_N8S20980C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn944_N8S20980C1D1Ev,_ZThn476_N8S20980C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20980C1D0Ev,_ZTv0_n36_N8S20980C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S20980C1D0Ev,_ZThn460_N8S20980C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20980C1D1Ev,_ZTv0_n36_N8S20980C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S20980C1D1Ev,_ZThn460_N8S20980C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C1D0Ev,_ZTv0_n16_N8S20980C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N8S20980C1D0Ev,_ZThn452_N8S20980C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S20980C1D0Ev,_ZThn420_N8S20980C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20980C1D1Ev,_ZTv0_n16_N8S20980C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N8S20980C1D1Ev,_ZThn452_N8S20980C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S20980C1D1Ev,_ZThn420_N8S20980C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20980C1D0Ev,_ZTv0_n44_N8S20980C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20980C1D0Ev,_ZThn112_N8S20980C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20980C1D1Ev,_ZTv0_n44_N8S20980C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20980C1D1Ev,_ZThn112_N8S20980C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20980C1 = {  "S20980C1", // class name
  bases_S20980C1, 53,
  &(vtc_S20980C1[0]), // expected_vtbl_contents
  &(vtt_S20980C1[0]), // expected_vtt_contents
  ABISELECT(1120,564), // object size
  NSPAIRA(_ZTI8S20980C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20980C1),385, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20980C1),96, //virtual table table var
  53, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1604C5_nt  {
  int s1604c5f0[2];
  void  mf1604c5(); // _ZN10S1604C5_nt8mf1604c5Ev
};
//SIG(-1 S1604C5_nt) C1{ m Fi[2]}


void  S1604C5_nt ::mf1604c5(){}

//skip512 S1604C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1604C4_nt  {
  int s1604c4f0;
  __tsi64 s1604c4f1;
  void *s1604c4f2[4];
  int s1604c4f3[2];
  void *s1604c4f4;
  ::S1604C5_nt s1604c4f5;
  void *s1604c4f6[2];
  virtual  ~S1604C4_nt(); // _ZN10S1604C4_ntD1Ev
  virtual void  v9(); // _ZN10S1604C4_nt2v9Ev
  virtual void  v10(); // _ZN10S1604C4_nt3v10Ev
  virtual void  v11(); // _ZN10S1604C4_nt3v11Ev
  virtual void  v12(); // _ZN10S1604C4_nt3v12Ev
  virtual void  v13(); // _ZN10S1604C4_nt3v13Ev
  virtual void  v14(); // _ZN10S1604C4_nt3v14Ev
  virtual void  v15(); // _ZN10S1604C4_nt3v15Ev
  virtual void  v16(); // _ZN10S1604C4_nt3v16Ev
  virtual void  v17(); // _ZN10S1604C4_nt3v17Ev
  virtual void  v18(); // _ZN10S1604C4_nt3v18Ev
  virtual void  v19(); // _ZN10S1604C4_nt3v19Ev
  virtual void  v20(); // _ZN10S1604C4_nt3v20Ev
  virtual void  v21(); // _ZN10S1604C4_nt3v21Ev
  virtual void  v22(); // _ZN10S1604C4_nt3v22Ev
  virtual void  v23(); // _ZN10S1604C4_nt3v23Ev
  virtual void  v24(); // _ZN10S1604C4_nt3v24Ev
  virtual void  v25(); // _ZN10S1604C4_nt3v25Ev
  virtual void  v26(); // _ZN10S1604C4_nt3v26Ev
  virtual void  v27(); // _ZN10S1604C4_nt3v27Ev
  virtual void  v28(); // _ZN10S1604C4_nt3v28Ev
  virtual void  v29(); // _ZN10S1604C4_nt3v29Ev
  virtual void  v30(); // _ZN10S1604C4_nt3v30Ev
  virtual void  v31(); // _ZN10S1604C4_nt3v31Ev
  virtual void  v32(); // _ZN10S1604C4_nt3v32Ev
  virtual void  v33(); // _ZN10S1604C4_nt3v33Ev
  virtual void  v34(); // _ZN10S1604C4_nt3v34Ev
  virtual void  v35(); // _ZN10S1604C4_nt3v35Ev
  virtual void  v36(); // _ZN10S1604C4_nt3v36Ev
  virtual void  v37(); // _ZN10S1604C4_nt3v37Ev
  virtual void  v38(); // _ZN10S1604C4_nt3v38Ev
  virtual void  v39(); // _ZN10S1604C4_nt3v39Ev
  virtual void  v40(); // _ZN10S1604C4_nt3v40Ev
  virtual void  v41(); // _ZN10S1604C4_nt3v41Ev
  virtual void  v42(); // _ZN10S1604C4_nt3v42Ev
  virtual void  v43(); // _ZN10S1604C4_nt3v43Ev
  virtual void  v44(); // _ZN10S1604C4_nt3v44Ev
  virtual void  v45(); // _ZN10S1604C4_nt3v45Ev
  virtual void  v46(); // _ZN10S1604C4_nt3v46Ev
  virtual void  v47(); // _ZN10S1604C4_nt3v47Ev
  virtual void  v48(); // _ZN10S1604C4_nt3v48Ev
  virtual void  v49(); // _ZN10S1604C4_nt3v49Ev
  virtual void  v50(); // _ZN10S1604C4_nt3v50Ev
  virtual void  v51(); // _ZN10S1604C4_nt3v51Ev
  virtual void  v52(); // _ZN10S1604C4_nt3v52Ev
  virtual void  v53(); // _ZN10S1604C4_nt3v53Ev
  virtual void  v54(); // _ZN10S1604C4_nt3v54Ev
  virtual void  v55(); // _ZN10S1604C4_nt3v55Ev
  virtual void  v56(); // _ZN10S1604C4_nt3v56Ev
  virtual void  v57(); // _ZN10S1604C4_nt3v57Ev
  virtual void  v58(); // _ZN10S1604C4_nt3v58Ev
  virtual void  v59(); // _ZN10S1604C4_nt3v59Ev
  virtual void  v60(); // _ZN10S1604C4_nt3v60Ev
  virtual void  v61(); // _ZN10S1604C4_nt3v61Ev
  virtual void  v62(); // _ZN10S1604C4_nt3v62Ev
  virtual void  v63(); // _ZN10S1604C4_nt3v63Ev
  virtual void  v64(); // _ZN10S1604C4_nt3v64Ev
  virtual void  v65(); // _ZN10S1604C4_nt3v65Ev
  virtual void  v66(); // _ZN10S1604C4_nt3v66Ev
  virtual void  v67(); // _ZN10S1604C4_nt3v67Ev
  virtual void  v68(); // _ZN10S1604C4_nt3v68Ev
  virtual void  v69(); // _ZN10S1604C4_nt3v69Ev
  virtual void  v70(); // _ZN10S1604C4_nt3v70Ev
  virtual void  v71(); // _ZN10S1604C4_nt3v71Ev
  virtual void  v72(); // _ZN10S1604C4_nt3v72Ev
  S1604C4_nt(); // tgen
};
//SIG(-1 S1604C4_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]}


 S1604C4_nt ::~S1604C4_nt(){ note_dtor("S1604C4_nt", this);}
void  S1604C4_nt ::v9(){vfunc_called(this, "_ZN10S1604C4_nt2v9Ev");}
void  S1604C4_nt ::v10(){vfunc_called(this, "_ZN10S1604C4_nt3v10Ev");}
void  S1604C4_nt ::v11(){vfunc_called(this, "_ZN10S1604C4_nt3v11Ev");}
void  S1604C4_nt ::v12(){vfunc_called(this, "_ZN10S1604C4_nt3v12Ev");}
void  S1604C4_nt ::v13(){vfunc_called(this, "_ZN10S1604C4_nt3v13Ev");}
void  S1604C4_nt ::v14(){vfunc_called(this, "_ZN10S1604C4_nt3v14Ev");}
void  S1604C4_nt ::v15(){vfunc_called(this, "_ZN10S1604C4_nt3v15Ev");}
void  S1604C4_nt ::v16(){vfunc_called(this, "_ZN10S1604C4_nt3v16Ev");}
void  S1604C4_nt ::v17(){vfunc_called(this, "_ZN10S1604C4_nt3v17Ev");}
void  S1604C4_nt ::v18(){vfunc_called(this, "_ZN10S1604C4_nt3v18Ev");}
void  S1604C4_nt ::v19(){vfunc_called(this, "_ZN10S1604C4_nt3v19Ev");}
void  S1604C4_nt ::v20(){vfunc_called(this, "_ZN10S1604C4_nt3v20Ev");}
void  S1604C4_nt ::v21(){vfunc_called(this, "_ZN10S1604C4_nt3v21Ev");}
void  S1604C4_nt ::v22(){vfunc_called(this, "_ZN10S1604C4_nt3v22Ev");}
void  S1604C4_nt ::v23(){vfunc_called(this, "_ZN10S1604C4_nt3v23Ev");}
void  S1604C4_nt ::v24(){vfunc_called(this, "_ZN10S1604C4_nt3v24Ev");}
void  S1604C4_nt ::v25(){vfunc_called(this, "_ZN10S1604C4_nt3v25Ev");}
void  S1604C4_nt ::v26(){vfunc_called(this, "_ZN10S1604C4_nt3v26Ev");}
void  S1604C4_nt ::v27(){vfunc_called(this, "_ZN10S1604C4_nt3v27Ev");}
void  S1604C4_nt ::v28(){vfunc_called(this, "_ZN10S1604C4_nt3v28Ev");}
void  S1604C4_nt ::v29(){vfunc_called(this, "_ZN10S1604C4_nt3v29Ev");}
void  S1604C4_nt ::v30(){vfunc_called(this, "_ZN10S1604C4_nt3v30Ev");}
void  S1604C4_nt ::v31(){vfunc_called(this, "_ZN10S1604C4_nt3v31Ev");}
void  S1604C4_nt ::v32(){vfunc_called(this, "_ZN10S1604C4_nt3v32Ev");}
void  S1604C4_nt ::v33(){vfunc_called(this, "_ZN10S1604C4_nt3v33Ev");}
void  S1604C4_nt ::v34(){vfunc_called(this, "_ZN10S1604C4_nt3v34Ev");}
void  S1604C4_nt ::v35(){vfunc_called(this, "_ZN10S1604C4_nt3v35Ev");}
void  S1604C4_nt ::v36(){vfunc_called(this, "_ZN10S1604C4_nt3v36Ev");}
void  S1604C4_nt ::v37(){vfunc_called(this, "_ZN10S1604C4_nt3v37Ev");}
void  S1604C4_nt ::v38(){vfunc_called(this, "_ZN10S1604C4_nt3v38Ev");}
void  S1604C4_nt ::v39(){vfunc_called(this, "_ZN10S1604C4_nt3v39Ev");}
void  S1604C4_nt ::v40(){vfunc_called(this, "_ZN10S1604C4_nt3v40Ev");}
void  S1604C4_nt ::v41(){vfunc_called(this, "_ZN10S1604C4_nt3v41Ev");}
void  S1604C4_nt ::v42(){vfunc_called(this, "_ZN10S1604C4_nt3v42Ev");}
void  S1604C4_nt ::v43(){vfunc_called(this, "_ZN10S1604C4_nt3v43Ev");}
void  S1604C4_nt ::v44(){vfunc_called(this, "_ZN10S1604C4_nt3v44Ev");}
void  S1604C4_nt ::v45(){vfunc_called(this, "_ZN10S1604C4_nt3v45Ev");}
void  S1604C4_nt ::v46(){vfunc_called(this, "_ZN10S1604C4_nt3v46Ev");}
void  S1604C4_nt ::v47(){vfunc_called(this, "_ZN10S1604C4_nt3v47Ev");}
void  S1604C4_nt ::v48(){vfunc_called(this, "_ZN10S1604C4_nt3v48Ev");}
void  S1604C4_nt ::v49(){vfunc_called(this, "_ZN10S1604C4_nt3v49Ev");}
void  S1604C4_nt ::v50(){vfunc_called(this, "_ZN10S1604C4_nt3v50Ev");}
void  S1604C4_nt ::v51(){vfunc_called(this, "_ZN10S1604C4_nt3v51Ev");}
void  S1604C4_nt ::v52(){vfunc_called(this, "_ZN10S1604C4_nt3v52Ev");}
void  S1604C4_nt ::v53(){vfunc_called(this, "_ZN10S1604C4_nt3v53Ev");}
void  S1604C4_nt ::v54(){vfunc_called(this, "_ZN10S1604C4_nt3v54Ev");}
void  S1604C4_nt ::v55(){vfunc_called(this, "_ZN10S1604C4_nt3v55Ev");}
void  S1604C4_nt ::v56(){vfunc_called(this, "_ZN10S1604C4_nt3v56Ev");}
void  S1604C4_nt ::v57(){vfunc_called(this, "_ZN10S1604C4_nt3v57Ev");}
void  S1604C4_nt ::v58(){vfunc_called(this, "_ZN10S1604C4_nt3v58Ev");}
void  S1604C4_nt ::v59(){vfunc_called(this, "_ZN10S1604C4_nt3v59Ev");}
void  S1604C4_nt ::v60(){vfunc_called(this, "_ZN10S1604C4_nt3v60Ev");}
void  S1604C4_nt ::v61(){vfunc_called(this, "_ZN10S1604C4_nt3v61Ev");}
void  S1604C4_nt ::v62(){vfunc_called(this, "_ZN10S1604C4_nt3v62Ev");}
void  S1604C4_nt ::v63(){vfunc_called(this, "_ZN10S1604C4_nt3v63Ev");}
void  S1604C4_nt ::v64(){vfunc_called(this, "_ZN10S1604C4_nt3v64Ev");}
void  S1604C4_nt ::v65(){vfunc_called(this, "_ZN10S1604C4_nt3v65Ev");}
void  S1604C4_nt ::v66(){vfunc_called(this, "_ZN10S1604C4_nt3v66Ev");}
void  S1604C4_nt ::v67(){vfunc_called(this, "_ZN10S1604C4_nt3v67Ev");}
void  S1604C4_nt ::v68(){vfunc_called(this, "_ZN10S1604C4_nt3v68Ev");}
void  S1604C4_nt ::v69(){vfunc_called(this, "_ZN10S1604C4_nt3v69Ev");}
void  S1604C4_nt ::v70(){vfunc_called(this, "_ZN10S1604C4_nt3v70Ev");}
void  S1604C4_nt ::v71(){vfunc_called(this, "_ZN10S1604C4_nt3v71Ev");}
void  S1604C4_nt ::v72(){vfunc_called(this, "_ZN10S1604C4_nt3v72Ev");}
S1604C4_nt ::S1604C4_nt(){ note_ctor("S1604C4_nt", this);} // tgen

//skip512 S1604C4_nt

#else // __cplusplus

extern void _ZN10S1604C4_ntC1Ev();
extern void _ZN10S1604C4_ntD1Ev();
Name_Map name_map_S1604C4_nt[] = {
  NSPAIR(_ZN10S1604C4_ntC1Ev),
  NSPAIR(_ZN10S1604C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S1604C4_nt[];
extern void _ZN10S1604C4_ntD1Ev();
extern void _ZN10S1604C4_ntD0Ev();
extern void _ZN10S1604C4_nt2v9Ev();
extern void _ZN10S1604C4_nt3v10Ev();
extern void _ZN10S1604C4_nt3v11Ev();
extern void _ZN10S1604C4_nt3v12Ev();
extern void _ZN10S1604C4_nt3v13Ev();
extern void _ZN10S1604C4_nt3v14Ev();
extern void _ZN10S1604C4_nt3v15Ev();
extern void _ZN10S1604C4_nt3v16Ev();
extern void _ZN10S1604C4_nt3v17Ev();
extern void _ZN10S1604C4_nt3v18Ev();
extern void _ZN10S1604C4_nt3v19Ev();
extern void _ZN10S1604C4_nt3v20Ev();
extern void _ZN10S1604C4_nt3v21Ev();
extern void _ZN10S1604C4_nt3v22Ev();
extern void _ZN10S1604C4_nt3v23Ev();
extern void _ZN10S1604C4_nt3v24Ev();
extern void _ZN10S1604C4_nt3v25Ev();
extern void _ZN10S1604C4_nt3v26Ev();
extern void _ZN10S1604C4_nt3v27Ev();
extern void _ZN10S1604C4_nt3v28Ev();
extern void _ZN10S1604C4_nt3v29Ev();
extern void _ZN10S1604C4_nt3v30Ev();
extern void _ZN10S1604C4_nt3v31Ev();
extern void _ZN10S1604C4_nt3v32Ev();
extern void _ZN10S1604C4_nt3v33Ev();
extern void _ZN10S1604C4_nt3v34Ev();
extern void _ZN10S1604C4_nt3v35Ev();
extern void _ZN10S1604C4_nt3v36Ev();
extern void _ZN10S1604C4_nt3v37Ev();
extern void _ZN10S1604C4_nt3v38Ev();
extern void _ZN10S1604C4_nt3v39Ev();
extern void _ZN10S1604C4_nt3v40Ev();
extern void _ZN10S1604C4_nt3v41Ev();
extern void _ZN10S1604C4_nt3v42Ev();
extern void _ZN10S1604C4_nt3v43Ev();
extern void _ZN10S1604C4_nt3v44Ev();
extern void _ZN10S1604C4_nt3v45Ev();
extern void _ZN10S1604C4_nt3v46Ev();
extern void _ZN10S1604C4_nt3v47Ev();
extern void _ZN10S1604C4_nt3v48Ev();
extern void _ZN10S1604C4_nt3v49Ev();
extern void _ZN10S1604C4_nt3v50Ev();
extern void _ZN10S1604C4_nt3v51Ev();
extern void _ZN10S1604C4_nt3v52Ev();
extern void _ZN10S1604C4_nt3v53Ev();
extern void _ZN10S1604C4_nt3v54Ev();
extern void _ZN10S1604C4_nt3v55Ev();
extern void _ZN10S1604C4_nt3v56Ev();
extern void _ZN10S1604C4_nt3v57Ev();
extern void _ZN10S1604C4_nt3v58Ev();
extern void _ZN10S1604C4_nt3v59Ev();
extern void _ZN10S1604C4_nt3v60Ev();
extern void _ZN10S1604C4_nt3v61Ev();
extern void _ZN10S1604C4_nt3v62Ev();
extern void _ZN10S1604C4_nt3v63Ev();
extern void _ZN10S1604C4_nt3v64Ev();
extern void _ZN10S1604C4_nt3v65Ev();
extern void _ZN10S1604C4_nt3v66Ev();
extern void _ZN10S1604C4_nt3v67Ev();
extern void _ZN10S1604C4_nt3v68Ev();
extern void _ZN10S1604C4_nt3v69Ev();
extern void _ZN10S1604C4_nt3v70Ev();
extern void _ZN10S1604C4_nt3v71Ev();
extern void _ZN10S1604C4_nt3v72Ev();
static  VTBL_ENTRY vtc_S1604C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1604C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S1604C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v72Ev,
};
extern VTBL_ENTRY _ZTI10S1604C4_nt[];
VTBL_ENTRY *P__ZTI10S1604C4_nt = _ZTI10S1604C4_nt; 
extern  VTBL_ENTRY _ZTV10S1604C4_nt[];
Class_Descriptor cd_S1604C4_nt = {  "S1604C4_nt", // class name
  0,0,//no base classes
  &(vtc_S1604C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S1604C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S1604C4_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  S1604C3_nt  : S1604C4_nt {
  unsigned int s1604c3f0:1;
  unsigned int s1604c3f1:1;
  unsigned int s1604c3f2:1;
  unsigned int s1604c3f3:1;
  unsigned int s1604c3f4:1;
  unsigned int s1604c3f5:1;
  unsigned int s1604c3f6:1;
  ::S11969C29_nt s1604c3f7;
  virtual  ~S1604C3_nt(); // _ZN10S1604C3_ntD1Ev
  virtual void  v73(); // _ZN10S1604C3_nt3v73Ev
  virtual void  v74(); // _ZN10S1604C3_nt3v74Ev
  virtual void  v75(); // _ZN10S1604C3_nt3v75Ev
  virtual void  v76(); // _ZN10S1604C3_nt3v76Ev
  virtual void  v77(); // _ZN10S1604C3_nt3v77Ev
  virtual void  v78(); // _ZN10S1604C3_nt3v78Ev
  virtual void  v79(); // _ZN10S1604C3_nt3v79Ev
  virtual void  v80(); // _ZN10S1604C3_nt3v80Ev
  virtual void  v81(); // _ZN10S1604C3_nt3v81Ev
  virtual void  v82(); // _ZN10S1604C3_nt3v82Ev
  virtual void  v83(); // _ZN10S1604C3_nt3v83Ev
  virtual void  v84(); // _ZN10S1604C3_nt3v84Ev
  virtual void  v85(); // _ZN10S1604C3_nt3v85Ev
  virtual void  v86(); // _ZN10S1604C3_nt3v86Ev
  virtual void  v87(); // _ZN10S1604C3_nt3v87Ev
  virtual void  v88(); // _ZN10S1604C3_nt3v88Ev
  virtual void  v89(); // _ZN10S1604C3_nt3v89Ev
  virtual void  v90(); // _ZN10S1604C3_nt3v90Ev
  virtual void  v91(); // _ZN10S1604C3_nt3v91Ev
  virtual void  v92(); // _ZN10S1604C3_nt3v92Ev
  S1604C3_nt(); // tgen
};
//SIG(-1 S1604C3_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}}


 S1604C3_nt ::~S1604C3_nt(){ note_dtor("S1604C3_nt", this);}
void  S1604C3_nt ::v73(){vfunc_called(this, "_ZN10S1604C3_nt3v73Ev");}
void  S1604C3_nt ::v74(){vfunc_called(this, "_ZN10S1604C3_nt3v74Ev");}
void  S1604C3_nt ::v75(){vfunc_called(this, "_ZN10S1604C3_nt3v75Ev");}
void  S1604C3_nt ::v76(){vfunc_called(this, "_ZN10S1604C3_nt3v76Ev");}
void  S1604C3_nt ::v77(){vfunc_called(this, "_ZN10S1604C3_nt3v77Ev");}
void  S1604C3_nt ::v78(){vfunc_called(this, "_ZN10S1604C3_nt3v78Ev");}
void  S1604C3_nt ::v79(){vfunc_called(this, "_ZN10S1604C3_nt3v79Ev");}
void  S1604C3_nt ::v80(){vfunc_called(this, "_ZN10S1604C3_nt3v80Ev");}
void  S1604C3_nt ::v81(){vfunc_called(this, "_ZN10S1604C3_nt3v81Ev");}
void  S1604C3_nt ::v82(){vfunc_called(this, "_ZN10S1604C3_nt3v82Ev");}
void  S1604C3_nt ::v83(){vfunc_called(this, "_ZN10S1604C3_nt3v83Ev");}
void  S1604C3_nt ::v84(){vfunc_called(this, "_ZN10S1604C3_nt3v84Ev");}
void  S1604C3_nt ::v85(){vfunc_called(this, "_ZN10S1604C3_nt3v85Ev");}
void  S1604C3_nt ::v86(){vfunc_called(this, "_ZN10S1604C3_nt3v86Ev");}
void  S1604C3_nt ::v87(){vfunc_called(this, "_ZN10S1604C3_nt3v87Ev");}
void  S1604C3_nt ::v88(){vfunc_called(this, "_ZN10S1604C3_nt3v88Ev");}
void  S1604C3_nt ::v89(){vfunc_called(this, "_ZN10S1604C3_nt3v89Ev");}
void  S1604C3_nt ::v90(){vfunc_called(this, "_ZN10S1604C3_nt3v90Ev");}
void  S1604C3_nt ::v91(){vfunc_called(this, "_ZN10S1604C3_nt3v91Ev");}
void  S1604C3_nt ::v92(){vfunc_called(this, "_ZN10S1604C3_nt3v92Ev");}
S1604C3_nt ::S1604C3_nt(){ note_ctor("S1604C3_nt", this);} // tgen

//skip512 S1604C3_nt

#else // __cplusplus

extern void _ZN10S1604C3_ntC1Ev();
extern void _ZN10S1604C3_ntD1Ev();
Name_Map name_map_S1604C3_nt[] = {
  NSPAIR(_ZN10S1604C3_ntC1Ev),
  NSPAIR(_ZN10S1604C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1604C4_nt;
extern VTBL_ENTRY _ZTI10S1604C4_nt[];
extern  VTBL_ENTRY _ZTV10S1604C4_nt[];
static Base_Class bases_S1604C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1604C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1604C3_nt[];
extern void _ZN10S1604C3_ntD1Ev();
extern void _ZN10S1604C3_ntD0Ev();
extern void _ZN10S1604C4_nt2v9Ev();
extern void _ZN10S1604C4_nt3v10Ev();
extern void _ZN10S1604C4_nt3v11Ev();
extern void _ZN10S1604C4_nt3v12Ev();
extern void _ZN10S1604C4_nt3v13Ev();
extern void _ZN10S1604C4_nt3v14Ev();
extern void _ZN10S1604C4_nt3v15Ev();
extern void _ZN10S1604C4_nt3v16Ev();
extern void _ZN10S1604C4_nt3v17Ev();
extern void _ZN10S1604C4_nt3v18Ev();
extern void _ZN10S1604C4_nt3v19Ev();
extern void _ZN10S1604C4_nt3v20Ev();
extern void _ZN10S1604C4_nt3v21Ev();
extern void _ZN10S1604C4_nt3v22Ev();
extern void _ZN10S1604C4_nt3v23Ev();
extern void _ZN10S1604C4_nt3v24Ev();
extern void _ZN10S1604C4_nt3v25Ev();
extern void _ZN10S1604C4_nt3v26Ev();
extern void _ZN10S1604C4_nt3v27Ev();
extern void _ZN10S1604C4_nt3v28Ev();
extern void _ZN10S1604C4_nt3v29Ev();
extern void _ZN10S1604C4_nt3v30Ev();
extern void _ZN10S1604C4_nt3v31Ev();
extern void _ZN10S1604C4_nt3v32Ev();
extern void _ZN10S1604C4_nt3v33Ev();
extern void _ZN10S1604C4_nt3v34Ev();
extern void _ZN10S1604C4_nt3v35Ev();
extern void _ZN10S1604C4_nt3v36Ev();
extern void _ZN10S1604C4_nt3v37Ev();
extern void _ZN10S1604C4_nt3v38Ev();
extern void _ZN10S1604C4_nt3v39Ev();
extern void _ZN10S1604C4_nt3v40Ev();
extern void _ZN10S1604C4_nt3v41Ev();
extern void _ZN10S1604C4_nt3v42Ev();
extern void _ZN10S1604C4_nt3v43Ev();
extern void _ZN10S1604C4_nt3v44Ev();
extern void _ZN10S1604C4_nt3v45Ev();
extern void _ZN10S1604C4_nt3v46Ev();
extern void _ZN10S1604C4_nt3v47Ev();
extern void _ZN10S1604C4_nt3v48Ev();
extern void _ZN10S1604C4_nt3v49Ev();
extern void _ZN10S1604C4_nt3v50Ev();
extern void _ZN10S1604C4_nt3v51Ev();
extern void _ZN10S1604C4_nt3v52Ev();
extern void _ZN10S1604C4_nt3v53Ev();
extern void _ZN10S1604C4_nt3v54Ev();
extern void _ZN10S1604C4_nt3v55Ev();
extern void _ZN10S1604C4_nt3v56Ev();
extern void _ZN10S1604C4_nt3v57Ev();
extern void _ZN10S1604C4_nt3v58Ev();
extern void _ZN10S1604C4_nt3v59Ev();
extern void _ZN10S1604C4_nt3v60Ev();
extern void _ZN10S1604C4_nt3v61Ev();
extern void _ZN10S1604C4_nt3v62Ev();
extern void _ZN10S1604C4_nt3v63Ev();
extern void _ZN10S1604C4_nt3v64Ev();
extern void _ZN10S1604C4_nt3v65Ev();
extern void _ZN10S1604C4_nt3v66Ev();
extern void _ZN10S1604C4_nt3v67Ev();
extern void _ZN10S1604C4_nt3v68Ev();
extern void _ZN10S1604C4_nt3v69Ev();
extern void _ZN10S1604C4_nt3v70Ev();
extern void _ZN10S1604C4_nt3v71Ev();
extern void _ZN10S1604C4_nt3v72Ev();
extern void _ZN10S1604C3_nt3v73Ev();
extern void _ZN10S1604C3_nt3v74Ev();
extern void _ZN10S1604C3_nt3v75Ev();
extern void _ZN10S1604C3_nt3v76Ev();
extern void _ZN10S1604C3_nt3v77Ev();
extern void _ZN10S1604C3_nt3v78Ev();
extern void _ZN10S1604C3_nt3v79Ev();
extern void _ZN10S1604C3_nt3v80Ev();
extern void _ZN10S1604C3_nt3v81Ev();
extern void _ZN10S1604C3_nt3v82Ev();
extern void _ZN10S1604C3_nt3v83Ev();
extern void _ZN10S1604C3_nt3v84Ev();
extern void _ZN10S1604C3_nt3v85Ev();
extern void _ZN10S1604C3_nt3v86Ev();
extern void _ZN10S1604C3_nt3v87Ev();
extern void _ZN10S1604C3_nt3v88Ev();
extern void _ZN10S1604C3_nt3v89Ev();
extern void _ZN10S1604C3_nt3v90Ev();
extern void _ZN10S1604C3_nt3v91Ev();
extern void _ZN10S1604C3_nt3v92Ev();
static  VTBL_ENTRY vtc_S1604C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1604C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1604C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v92Ev,
};
extern VTBL_ENTRY _ZTI10S1604C3_nt[];
VTBL_ENTRY *P__ZTI10S1604C3_nt = _ZTI10S1604C3_nt; 
extern  VTBL_ENTRY _ZTV10S1604C3_nt[];
Class_Descriptor cd_S1604C3_nt = {  "S1604C3_nt", // class name
  bases_S1604C3_nt, 1,
  &(vtc_S1604C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI10S1604C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1604C3_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  S1604C2_nt  : S1604C3_nt {
  virtual  ~S1604C2_nt(); // _ZN10S1604C2_ntD1Ev
  virtual void  v93(); // _ZN10S1604C2_nt3v93Ev
  virtual void  v94(); // _ZN10S1604C2_nt3v94Ev
  S1604C2_nt(); // tgen
};
//SIG(-1 S1604C2_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}


 S1604C2_nt ::~S1604C2_nt(){ note_dtor("S1604C2_nt", this);}
void  S1604C2_nt ::v93(){vfunc_called(this, "_ZN10S1604C2_nt3v93Ev");}
void  S1604C2_nt ::v94(){vfunc_called(this, "_ZN10S1604C2_nt3v94Ev");}
S1604C2_nt ::S1604C2_nt(){ note_ctor("S1604C2_nt", this);} // tgen

//skip512 S1604C2_nt

#else // __cplusplus

extern void _ZN10S1604C2_ntC1Ev();
extern void _ZN10S1604C2_ntD1Ev();
Name_Map name_map_S1604C2_nt[] = {
  NSPAIR(_ZN10S1604C2_ntC1Ev),
  NSPAIR(_ZN10S1604C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1604C4_nt;
extern VTBL_ENTRY _ZTI10S1604C4_nt[];
extern  VTBL_ENTRY _ZTV10S1604C4_nt[];
extern Class_Descriptor cd_S1604C3_nt;
extern VTBL_ENTRY _ZTI10S1604C3_nt[];
extern  VTBL_ENTRY _ZTV10S1604C3_nt[];
static Base_Class bases_S1604C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1604C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1604C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S1604C2_nt[];
extern void _ZN10S1604C2_ntD1Ev();
extern void _ZN10S1604C2_ntD0Ev();
extern void _ZN10S1604C4_nt2v9Ev();
extern void _ZN10S1604C4_nt3v10Ev();
extern void _ZN10S1604C4_nt3v11Ev();
extern void _ZN10S1604C4_nt3v12Ev();
extern void _ZN10S1604C4_nt3v13Ev();
extern void _ZN10S1604C4_nt3v14Ev();
extern void _ZN10S1604C4_nt3v15Ev();
extern void _ZN10S1604C4_nt3v16Ev();
extern void _ZN10S1604C4_nt3v17Ev();
extern void _ZN10S1604C4_nt3v18Ev();
extern void _ZN10S1604C4_nt3v19Ev();
extern void _ZN10S1604C4_nt3v20Ev();
extern void _ZN10S1604C4_nt3v21Ev();
extern void _ZN10S1604C4_nt3v22Ev();
extern void _ZN10S1604C4_nt3v23Ev();
extern void _ZN10S1604C4_nt3v24Ev();
extern void _ZN10S1604C4_nt3v25Ev();
extern void _ZN10S1604C4_nt3v26Ev();
extern void _ZN10S1604C4_nt3v27Ev();
extern void _ZN10S1604C4_nt3v28Ev();
extern void _ZN10S1604C4_nt3v29Ev();
extern void _ZN10S1604C4_nt3v30Ev();
extern void _ZN10S1604C4_nt3v31Ev();
extern void _ZN10S1604C4_nt3v32Ev();
extern void _ZN10S1604C4_nt3v33Ev();
extern void _ZN10S1604C4_nt3v34Ev();
extern void _ZN10S1604C4_nt3v35Ev();
extern void _ZN10S1604C4_nt3v36Ev();
extern void _ZN10S1604C4_nt3v37Ev();
extern void _ZN10S1604C4_nt3v38Ev();
extern void _ZN10S1604C4_nt3v39Ev();
extern void _ZN10S1604C4_nt3v40Ev();
extern void _ZN10S1604C4_nt3v41Ev();
extern void _ZN10S1604C4_nt3v42Ev();
extern void _ZN10S1604C4_nt3v43Ev();
extern void _ZN10S1604C4_nt3v44Ev();
extern void _ZN10S1604C4_nt3v45Ev();
extern void _ZN10S1604C4_nt3v46Ev();
extern void _ZN10S1604C4_nt3v47Ev();
extern void _ZN10S1604C4_nt3v48Ev();
extern void _ZN10S1604C4_nt3v49Ev();
extern void _ZN10S1604C4_nt3v50Ev();
extern void _ZN10S1604C4_nt3v51Ev();
extern void _ZN10S1604C4_nt3v52Ev();
extern void _ZN10S1604C4_nt3v53Ev();
extern void _ZN10S1604C4_nt3v54Ev();
extern void _ZN10S1604C4_nt3v55Ev();
extern void _ZN10S1604C4_nt3v56Ev();
extern void _ZN10S1604C4_nt3v57Ev();
extern void _ZN10S1604C4_nt3v58Ev();
extern void _ZN10S1604C4_nt3v59Ev();
extern void _ZN10S1604C4_nt3v60Ev();
extern void _ZN10S1604C4_nt3v61Ev();
extern void _ZN10S1604C4_nt3v62Ev();
extern void _ZN10S1604C4_nt3v63Ev();
extern void _ZN10S1604C4_nt3v64Ev();
extern void _ZN10S1604C4_nt3v65Ev();
extern void _ZN10S1604C4_nt3v66Ev();
extern void _ZN10S1604C4_nt3v67Ev();
extern void _ZN10S1604C4_nt3v68Ev();
extern void _ZN10S1604C4_nt3v69Ev();
extern void _ZN10S1604C4_nt3v70Ev();
extern void _ZN10S1604C4_nt3v71Ev();
extern void _ZN10S1604C4_nt3v72Ev();
extern void _ZN10S1604C3_nt3v73Ev();
extern void _ZN10S1604C3_nt3v74Ev();
extern void _ZN10S1604C3_nt3v75Ev();
extern void _ZN10S1604C3_nt3v76Ev();
extern void _ZN10S1604C3_nt3v77Ev();
extern void _ZN10S1604C3_nt3v78Ev();
extern void _ZN10S1604C3_nt3v79Ev();
extern void _ZN10S1604C3_nt3v80Ev();
extern void _ZN10S1604C3_nt3v81Ev();
extern void _ZN10S1604C3_nt3v82Ev();
extern void _ZN10S1604C3_nt3v83Ev();
extern void _ZN10S1604C3_nt3v84Ev();
extern void _ZN10S1604C3_nt3v85Ev();
extern void _ZN10S1604C3_nt3v86Ev();
extern void _ZN10S1604C3_nt3v87Ev();
extern void _ZN10S1604C3_nt3v88Ev();
extern void _ZN10S1604C3_nt3v89Ev();
extern void _ZN10S1604C3_nt3v90Ev();
extern void _ZN10S1604C3_nt3v91Ev();
extern void _ZN10S1604C3_nt3v92Ev();
extern void _ZN10S1604C2_nt3v93Ev();
extern void _ZN10S1604C2_nt3v94Ev();
static  VTBL_ENTRY vtc_S1604C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1604C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1604C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1604C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1604C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1604C2_nt3v94Ev,
};
extern VTBL_ENTRY _ZTI10S1604C2_nt[];
VTBL_ENTRY *P__ZTI10S1604C2_nt = _ZTI10S1604C2_nt; 
extern  VTBL_ENTRY _ZTV10S1604C2_nt[];
Class_Descriptor cd_S1604C2_nt = {  "S1604C2_nt", // class name
  bases_S1604C2_nt, 2,
  &(vtc_S1604C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI10S1604C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1604C2_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  S1604C11_nt  {
  void *s1604c11f0;
  int s1604c11f1[2];
  void  mf1604c11(); // _ZN11S1604C11_nt9mf1604c11Ev
};
//SIG(-1 S1604C11_nt) C1{ m Fp Fi[2]}


void  S1604C11_nt ::mf1604c11(){}

//skip512 S1604C11_nt

#else // __cplusplus

Class_Descriptor cd_S1604C11_nt = {  "S1604C11_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  S1604C10_nt  : S1604C11_nt {
};
//SIG(-1 S1604C10_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S1604C10_nt

#else // __cplusplus

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



//skip512 S1604C9_nt

#else // __cplusplus

extern Class_Descriptor cd_S1604C11_nt;
extern Class_Descriptor cd_S1604C10_nt;
static Base_Class bases_S1604C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1604C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1604C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1604C8_nt  {
  char s1604c8f0[4];
  ::S1604C9_nt s1604c8f1;
  int s1604c8f2[2];
  void  mf1604c8(); // _ZN10S1604C8_nt8mf1604c8Ev
};
//SIG(-1 S1604C8_nt) C1{ m Fc[4] FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fi[2]}


void  S1604C8_nt ::mf1604c8(){}

//skip512 S1604C8_nt

#else // __cplusplus

Class_Descriptor cd_S1604C8_nt = {  "S1604C8_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  S1604C7_nt  : S1604C8_nt {
  void *s1604c7f0;
};
//SIG(-1 S1604C7_nt) C1{ BC2{ m Fc[4] FC3{ BC4{ BC5{ m Fp Fi[2]}}} Fi[2]} Fp}



//skip512 S1604C7_nt

#else // __cplusplus

extern Class_Descriptor cd_S1604C8_nt;
static Base_Class bases_S1604C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1604C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1604C1  : S1604C2_nt {
  ::S1604C7_nt s1604c1f0;
  virtual  ~S1604C1(); // _ZN7S1604C1D1Ev
  virtual void  v1(); // _ZN7S1604C12v1Ev
  virtual void  v2(); // _ZN7S1604C12v2Ev
  virtual void  v3(); // _ZN7S1604C12v3Ev
  virtual void  v4(); // _ZN7S1604C12v4Ev
  virtual void  v5(); // _ZN7S1604C12v5Ev
  virtual void  v6(); // _ZN7S1604C12v6Ev
  virtual void  v7(); // _ZN7S1604C12v7Ev
  virtual void  v8(); // _ZN7S1604C12v8Ev
  S1604C1(); // tgen
};
//SIG(1 S1604C1) C1{ BC2{ BC3{ BC4{ 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 FC5{ m Fi[2]} Fp[2]} vd v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC6{ m}} vd v93 v94} vd v1 v2 v3 v4 v5 v6 v7 v8 FC7{ BC8{ m Fc[4] FC9{ BC10{ BC11{ m Fp Fi[2]}}} Fi[2]} Fp}}


 S1604C1 ::~S1604C1(){ note_dtor("S1604C1", this);}
void  S1604C1 ::v1(){vfunc_called(this, "_ZN7S1604C12v1Ev");}
void  S1604C1 ::v2(){vfunc_called(this, "_ZN7S1604C12v2Ev");}
void  S1604C1 ::v3(){vfunc_called(this, "_ZN7S1604C12v3Ev");}
void  S1604C1 ::v4(){vfunc_called(this, "_ZN7S1604C12v4Ev");}
void  S1604C1 ::v5(){vfunc_called(this, "_ZN7S1604C12v5Ev");}
void  S1604C1 ::v6(){vfunc_called(this, "_ZN7S1604C12v6Ev");}
void  S1604C1 ::v7(){vfunc_called(this, "_ZN7S1604C12v7Ev");}
void  S1604C1 ::v8(){vfunc_called(this, "_ZN7S1604C12v8Ev");}
S1604C1 ::S1604C1(){ note_ctor("S1604C1", this);} // tgen

static void Test_S1604C1()
{
  extern Class_Descriptor cd_S1604C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,24)];
    init_test(&cd_S1604C1, buf);
    S1604C1 *dp, &lv = *(dp=new (buf) S1604C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,92), "sizeof(S1604C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1604C1)");
    check_base_class_offset(lv, (S1604C4_nt*)(S1604C3_nt*)(S1604C2_nt*), 0, "S1604C1");
    check_base_class_offset(lv, (S1604C3_nt*)(S1604C2_nt*), 0, "S1604C1");
    check_base_class_offset(lv, (S1604C2_nt*), 0, "S1604C1");
    check_field_offset(lv, s1604c1f0, ABISELECT(104,64), "S1604C1.s1604c1f0");
    test_class_info(&lv, &cd_S1604C1);
    dp->~S1604C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1604C1(Test_S1604C1, "S1604C1", ABISELECT(144,92));

#else // __cplusplus

extern void _ZN7S1604C1C1Ev();
extern void _ZN7S1604C1D1Ev();
Name_Map name_map_S1604C1[] = {
  NSPAIR(_ZN7S1604C1C1Ev),
  NSPAIR(_ZN7S1604C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1604C4_nt;
extern VTBL_ENTRY _ZTI10S1604C4_nt[];
extern  VTBL_ENTRY _ZTV10S1604C4_nt[];
extern Class_Descriptor cd_S1604C3_nt;
extern VTBL_ENTRY _ZTI10S1604C3_nt[];
extern  VTBL_ENTRY _ZTV10S1604C3_nt[];
extern Class_Descriptor cd_S1604C2_nt;
extern VTBL_ENTRY _ZTI10S1604C2_nt[];
extern  VTBL_ENTRY _ZTV10S1604C2_nt[];
static Base_Class bases_S1604C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1604C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1604C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1604C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1604C1[];
extern void _ZN7S1604C1D1Ev();
extern void _ZN7S1604C1D0Ev();
extern void _ZN10S1604C4_nt2v9Ev();
extern void _ZN10S1604C4_nt3v10Ev();
extern void _ZN10S1604C4_nt3v11Ev();
extern void _ZN10S1604C4_nt3v12Ev();
extern void _ZN10S1604C4_nt3v13Ev();
extern void _ZN10S1604C4_nt3v14Ev();
extern void _ZN10S1604C4_nt3v15Ev();
extern void _ZN10S1604C4_nt3v16Ev();
extern void _ZN10S1604C4_nt3v17Ev();
extern void _ZN10S1604C4_nt3v18Ev();
extern void _ZN10S1604C4_nt3v19Ev();
extern void _ZN10S1604C4_nt3v20Ev();
extern void _ZN10S1604C4_nt3v21Ev();
extern void _ZN10S1604C4_nt3v22Ev();
extern void _ZN10S1604C4_nt3v23Ev();
extern void _ZN10S1604C4_nt3v24Ev();
extern void _ZN10S1604C4_nt3v25Ev();
extern void _ZN10S1604C4_nt3v26Ev();
extern void _ZN10S1604C4_nt3v27Ev();
extern void _ZN10S1604C4_nt3v28Ev();
extern void _ZN10S1604C4_nt3v29Ev();
extern void _ZN10S1604C4_nt3v30Ev();
extern void _ZN10S1604C4_nt3v31Ev();
extern void _ZN10S1604C4_nt3v32Ev();
extern void _ZN10S1604C4_nt3v33Ev();
extern void _ZN10S1604C4_nt3v34Ev();
extern void _ZN10S1604C4_nt3v35Ev();
extern void _ZN10S1604C4_nt3v36Ev();
extern void _ZN10S1604C4_nt3v37Ev();
extern void _ZN10S1604C4_nt3v38Ev();
extern void _ZN10S1604C4_nt3v39Ev();
extern void _ZN10S1604C4_nt3v40Ev();
extern void _ZN10S1604C4_nt3v41Ev();
extern void _ZN10S1604C4_nt3v42Ev();
extern void _ZN10S1604C4_nt3v43Ev();
extern void _ZN10S1604C4_nt3v44Ev();
extern void _ZN10S1604C4_nt3v45Ev();
extern void _ZN10S1604C4_nt3v46Ev();
extern void _ZN10S1604C4_nt3v47Ev();
extern void _ZN10S1604C4_nt3v48Ev();
extern void _ZN10S1604C4_nt3v49Ev();
extern void _ZN10S1604C4_nt3v50Ev();
extern void _ZN10S1604C4_nt3v51Ev();
extern void _ZN10S1604C4_nt3v52Ev();
extern void _ZN10S1604C4_nt3v53Ev();
extern void _ZN10S1604C4_nt3v54Ev();
extern void _ZN10S1604C4_nt3v55Ev();
extern void _ZN10S1604C4_nt3v56Ev();
extern void _ZN10S1604C4_nt3v57Ev();
extern void _ZN10S1604C4_nt3v58Ev();
extern void _ZN10S1604C4_nt3v59Ev();
extern void _ZN10S1604C4_nt3v60Ev();
extern void _ZN10S1604C4_nt3v61Ev();
extern void _ZN10S1604C4_nt3v62Ev();
extern void _ZN10S1604C4_nt3v63Ev();
extern void _ZN10S1604C4_nt3v64Ev();
extern void _ZN10S1604C4_nt3v65Ev();
extern void _ZN10S1604C4_nt3v66Ev();
extern void _ZN10S1604C4_nt3v67Ev();
extern void _ZN10S1604C4_nt3v68Ev();
extern void _ZN10S1604C4_nt3v69Ev();
extern void _ZN10S1604C4_nt3v70Ev();
extern void _ZN10S1604C4_nt3v71Ev();
extern void _ZN10S1604C4_nt3v72Ev();
extern void _ZN10S1604C3_nt3v73Ev();
extern void _ZN10S1604C3_nt3v74Ev();
extern void _ZN10S1604C3_nt3v75Ev();
extern void _ZN10S1604C3_nt3v76Ev();
extern void _ZN10S1604C3_nt3v77Ev();
extern void _ZN10S1604C3_nt3v78Ev();
extern void _ZN10S1604C3_nt3v79Ev();
extern void _ZN10S1604C3_nt3v80Ev();
extern void _ZN10S1604C3_nt3v81Ev();
extern void _ZN10S1604C3_nt3v82Ev();
extern void _ZN10S1604C3_nt3v83Ev();
extern void _ZN10S1604C3_nt3v84Ev();
extern void _ZN10S1604C3_nt3v85Ev();
extern void _ZN10S1604C3_nt3v86Ev();
extern void _ZN10S1604C3_nt3v87Ev();
extern void _ZN10S1604C3_nt3v88Ev();
extern void _ZN10S1604C3_nt3v89Ev();
extern void _ZN10S1604C3_nt3v90Ev();
extern void _ZN10S1604C3_nt3v91Ev();
extern void _ZN10S1604C3_nt3v92Ev();
extern void _ZN10S1604C2_nt3v93Ev();
extern void _ZN10S1604C2_nt3v94Ev();
extern void _ZN7S1604C12v1Ev();
extern void _ZN7S1604C12v2Ev();
extern void _ZN7S1604C12v3Ev();
extern void _ZN7S1604C12v4Ev();
extern void _ZN7S1604C12v5Ev();
extern void _ZN7S1604C12v6Ev();
extern void _ZN7S1604C12v7Ev();
extern void _ZN7S1604C12v8Ev();
static  VTBL_ENTRY vtc_S1604C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1604C1[0]),
  (VTBL_ENTRY)&_ZN7S1604C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1604C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1604C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1604C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1604C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1604C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN7S1604C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1604C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1604C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1604C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1604C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1604C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1604C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1604C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S1604C1[];
extern  VTBL_ENTRY _ZTV7S1604C1[];
Class_Descriptor cd_S1604C1 = {  "S1604C1", // class name
  bases_S1604C1, 3,
  &(vtc_S1604C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,92), // object size
  NSPAIRA(_ZTI7S1604C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1604C1),98, //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  S6508C2  {
  int s6508c2f0;
  __tsi64 s6508c2f1;
  void *s6508c2f2[4];
  int s6508c2f3[2];
  void *s6508c2f4;
  ::S1604C5_nt s6508c2f5;
  void *s6508c2f6[2];
  virtual  ~S6508C2(); // _ZN7S6508C2D1Ev
  virtual void  v16(); // _ZN7S6508C23v16Ev
  virtual void  v17(); // _ZN7S6508C23v17Ev
  virtual void  v18(); // _ZN7S6508C23v18Ev
  virtual void  v19(); // _ZN7S6508C23v19Ev
  virtual void  v20(); // _ZN7S6508C23v20Ev
  virtual void  v21(); // _ZN7S6508C23v21Ev
  virtual void  v22(); // _ZN7S6508C23v22Ev
  virtual void  v23(); // _ZN7S6508C23v23Ev
  virtual void  v24(); // _ZN7S6508C23v24Ev
  virtual void  v25(); // _ZN7S6508C23v25Ev
  virtual void  v26(); // _ZN7S6508C23v26Ev
  virtual void  v27(); // _ZN7S6508C23v27Ev
  virtual void  v28(); // _ZN7S6508C23v28Ev
  virtual void  v29(); // _ZN7S6508C23v29Ev
  virtual void  v30(); // _ZN7S6508C23v30Ev
  virtual void  v31(); // _ZN7S6508C23v31Ev
  virtual void  v32(); // _ZN7S6508C23v32Ev
  virtual void  v33(); // _ZN7S6508C23v33Ev
  virtual void  v34(); // _ZN7S6508C23v34Ev
  virtual void  v35(); // _ZN7S6508C23v35Ev
  virtual void  v36(); // _ZN7S6508C23v36Ev
  virtual void  v37(); // _ZN7S6508C23v37Ev
  virtual void  v38(); // _ZN7S6508C23v38Ev
  virtual void  v39(); // _ZN7S6508C23v39Ev
  virtual void  v40(); // _ZN7S6508C23v40Ev
  virtual void  v41(); // _ZN7S6508C23v41Ev
  virtual void  v42(); // _ZN7S6508C23v42Ev
  virtual void  v43(); // _ZN7S6508C23v43Ev
  virtual void  v44(); // _ZN7S6508C23v44Ev
  virtual void  v45(); // _ZN7S6508C23v45Ev
  virtual void  v46(); // _ZN7S6508C23v46Ev
  virtual void  v47(); // _ZN7S6508C23v47Ev
  virtual void  v48(); // _ZN7S6508C23v48Ev
  virtual void  v49(); // _ZN7S6508C23v49Ev
  virtual void  v50(); // _ZN7S6508C23v50Ev
  virtual void  v51(); // _ZN7S6508C23v51Ev
  virtual void  v52(); // _ZN7S6508C23v52Ev
  virtual void  v53(); // _ZN7S6508C23v53Ev
  virtual void  v54(); // _ZN7S6508C23v54Ev
  virtual void  v55(); // _ZN7S6508C23v55Ev
  virtual void  v56(); // _ZN7S6508C23v56Ev
  virtual void  v57(); // _ZN7S6508C23v57Ev
  virtual void  v58(); // _ZN7S6508C23v58Ev
  virtual void  v59(); // _ZN7S6508C23v59Ev
  virtual void  v60(); // _ZN7S6508C23v60Ev
  virtual void  v61(); // _ZN7S6508C23v61Ev
  virtual void  v62(); // _ZN7S6508C23v62Ev
  virtual void  v63(); // _ZN7S6508C23v63Ev
  virtual void  v64(); // _ZN7S6508C23v64Ev
  virtual void  v65(); // _ZN7S6508C23v65Ev
  virtual void  v66(); // _ZN7S6508C23v66Ev
  virtual void  v67(); // _ZN7S6508C23v67Ev
  virtual void  v68(); // _ZN7S6508C23v68Ev
  virtual void  v69(); // _ZN7S6508C23v69Ev
  virtual void  v70(); // _ZN7S6508C23v70Ev
  virtual void  v71(); // _ZN7S6508C23v71Ev
  virtual void  v72(); // _ZN7S6508C23v72Ev
  virtual void  v73(); // _ZN7S6508C23v73Ev
  virtual void  v74(); // _ZN7S6508C23v74Ev
  virtual void  v75(); // _ZN7S6508C23v75Ev
  virtual void  v76(); // _ZN7S6508C23v76Ev
  virtual void  v77(); // _ZN7S6508C23v77Ev
  virtual void  v78(); // _ZN7S6508C23v78Ev
  virtual void  v79(); // _ZN7S6508C23v79Ev
  S6508C2(); // tgen
};
//SIG(-1 S6508C2) 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]}


 S6508C2 ::~S6508C2(){ note_dtor("S6508C2", this);}
void  S6508C2 ::v16(){vfunc_called(this, "_ZN7S6508C23v16Ev");}
void  S6508C2 ::v17(){vfunc_called(this, "_ZN7S6508C23v17Ev");}
void  S6508C2 ::v18(){vfunc_called(this, "_ZN7S6508C23v18Ev");}
void  S6508C2 ::v19(){vfunc_called(this, "_ZN7S6508C23v19Ev");}
void  S6508C2 ::v20(){vfunc_called(this, "_ZN7S6508C23v20Ev");}
void  S6508C2 ::v21(){vfunc_called(this, "_ZN7S6508C23v21Ev");}
void  S6508C2 ::v22(){vfunc_called(this, "_ZN7S6508C23v22Ev");}
void  S6508C2 ::v23(){vfunc_called(this, "_ZN7S6508C23v23Ev");}
void  S6508C2 ::v24(){vfunc_called(this, "_ZN7S6508C23v24Ev");}
void  S6508C2 ::v25(){vfunc_called(this, "_ZN7S6508C23v25Ev");}
void  S6508C2 ::v26(){vfunc_called(this, "_ZN7S6508C23v26Ev");}
void  S6508C2 ::v27(){vfunc_called(this, "_ZN7S6508C23v27Ev");}
void  S6508C2 ::v28(){vfunc_called(this, "_ZN7S6508C23v28Ev");}
void  S6508C2 ::v29(){vfunc_called(this, "_ZN7S6508C23v29Ev");}
void  S6508C2 ::v30(){vfunc_called(this, "_ZN7S6508C23v30Ev");}
void  S6508C2 ::v31(){vfunc_called(this, "_ZN7S6508C23v31Ev");}
void  S6508C2 ::v32(){vfunc_called(this, "_ZN7S6508C23v32Ev");}
void  S6508C2 ::v33(){vfunc_called(this, "_ZN7S6508C23v33Ev");}
void  S6508C2 ::v34(){vfunc_called(this, "_ZN7S6508C23v34Ev");}
void  S6508C2 ::v35(){vfunc_called(this, "_ZN7S6508C23v35Ev");}
void  S6508C2 ::v36(){vfunc_called(this, "_ZN7S6508C23v36Ev");}
void  S6508C2 ::v37(){vfunc_called(this, "_ZN7S6508C23v37Ev");}
void  S6508C2 ::v38(){vfunc_called(this, "_ZN7S6508C23v38Ev");}
void  S6508C2 ::v39(){vfunc_called(this, "_ZN7S6508C23v39Ev");}
void  S6508C2 ::v40(){vfunc_called(this, "_ZN7S6508C23v40Ev");}
void  S6508C2 ::v41(){vfunc_called(this, "_ZN7S6508C23v41Ev");}
void  S6508C2 ::v42(){vfunc_called(this, "_ZN7S6508C23v42Ev");}
void  S6508C2 ::v43(){vfunc_called(this, "_ZN7S6508C23v43Ev");}
void  S6508C2 ::v44(){vfunc_called(this, "_ZN7S6508C23v44Ev");}
void  S6508C2 ::v45(){vfunc_called(this, "_ZN7S6508C23v45Ev");}
void  S6508C2 ::v46(){vfunc_called(this, "_ZN7S6508C23v46Ev");}
void  S6508C2 ::v47(){vfunc_called(this, "_ZN7S6508C23v47Ev");}
void  S6508C2 ::v48(){vfunc_called(this, "_ZN7S6508C23v48Ev");}
void  S6508C2 ::v49(){vfunc_called(this, "_ZN7S6508C23v49Ev");}
void  S6508C2 ::v50(){vfunc_called(this, "_ZN7S6508C23v50Ev");}
void  S6508C2 ::v51(){vfunc_called(this, "_ZN7S6508C23v51Ev");}
void  S6508C2 ::v52(){vfunc_called(this, "_ZN7S6508C23v52Ev");}
void  S6508C2 ::v53(){vfunc_called(this, "_ZN7S6508C23v53Ev");}
void  S6508C2 ::v54(){vfunc_called(this, "_ZN7S6508C23v54Ev");}
void  S6508C2 ::v55(){vfunc_called(this, "_ZN7S6508C23v55Ev");}
void  S6508C2 ::v56(){vfunc_called(this, "_ZN7S6508C23v56Ev");}
void  S6508C2 ::v57(){vfunc_called(this, "_ZN7S6508C23v57Ev");}
void  S6508C2 ::v58(){vfunc_called(this, "_ZN7S6508C23v58Ev");}
void  S6508C2 ::v59(){vfunc_called(this, "_ZN7S6508C23v59Ev");}
void  S6508C2 ::v60(){vfunc_called(this, "_ZN7S6508C23v60Ev");}
void  S6508C2 ::v61(){vfunc_called(this, "_ZN7S6508C23v61Ev");}
void  S6508C2 ::v62(){vfunc_called(this, "_ZN7S6508C23v62Ev");}
void  S6508C2 ::v63(){vfunc_called(this, "_ZN7S6508C23v63Ev");}
void  S6508C2 ::v64(){vfunc_called(this, "_ZN7S6508C23v64Ev");}
void  S6508C2 ::v65(){vfunc_called(this, "_ZN7S6508C23v65Ev");}
void  S6508C2 ::v66(){vfunc_called(this, "_ZN7S6508C23v66Ev");}
void  S6508C2 ::v67(){vfunc_called(this, "_ZN7S6508C23v67Ev");}
void  S6508C2 ::v68(){vfunc_called(this, "_ZN7S6508C23v68Ev");}
void  S6508C2 ::v69(){vfunc_called(this, "_ZN7S6508C23v69Ev");}
void  S6508C2 ::v70(){vfunc_called(this, "_ZN7S6508C23v70Ev");}
void  S6508C2 ::v71(){vfunc_called(this, "_ZN7S6508C23v71Ev");}
void  S6508C2 ::v72(){vfunc_called(this, "_ZN7S6508C23v72Ev");}
void  S6508C2 ::v73(){vfunc_called(this, "_ZN7S6508C23v73Ev");}
void  S6508C2 ::v74(){vfunc_called(this, "_ZN7S6508C23v74Ev");}
void  S6508C2 ::v75(){vfunc_called(this, "_ZN7S6508C23v75Ev");}
void  S6508C2 ::v76(){vfunc_called(this, "_ZN7S6508C23v76Ev");}
void  S6508C2 ::v77(){vfunc_called(this, "_ZN7S6508C23v77Ev");}
void  S6508C2 ::v78(){vfunc_called(this, "_ZN7S6508C23v78Ev");}
void  S6508C2 ::v79(){vfunc_called(this, "_ZN7S6508C23v79Ev");}
S6508C2 ::S6508C2(){ note_ctor("S6508C2", this);} // tgen

static void Test_S6508C2()
{
  extern Class_Descriptor cd_S6508C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6508C2, buf);
    S6508C2 *dp, &lv = *(dp=new (buf) S6508C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6508C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6508C2)");
    check_field_offset(lv, s6508c2f0, ABISELECT(8,4), "S6508C2.s6508c2f0");
    check_field_offset(lv, s6508c2f1, ABISELECT(16,8), "S6508C2.s6508c2f1");
    check_field_offset(lv, s6508c2f2, ABISELECT(24,16), "S6508C2.s6508c2f2");
    check_field_offset(lv, s6508c2f3, ABISELECT(56,32), "S6508C2.s6508c2f3");
    check_field_offset(lv, s6508c2f4, ABISELECT(64,40), "S6508C2.s6508c2f4");
    check_field_offset(lv, s6508c2f5, ABISELECT(72,44), "S6508C2.s6508c2f5");
    check_field_offset(lv, s6508c2f6, ABISELECT(80,52), "S6508C2.s6508c2f6");
    test_class_info(&lv, &cd_S6508C2);
    dp->~S6508C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6508C2(Test_S6508C2, "S6508C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6508C2C1Ev();
extern void _ZN7S6508C2D1Ev();
Name_Map name_map_S6508C2[] = {
  NSPAIR(_ZN7S6508C2C1Ev),
  NSPAIR(_ZN7S6508C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6508C2[];
extern void _ZN7S6508C2D1Ev();
extern void _ZN7S6508C2D0Ev();
extern void _ZN7S6508C23v16Ev();
extern void _ZN7S6508C23v17Ev();
extern void _ZN7S6508C23v18Ev();
extern void _ZN7S6508C23v19Ev();
extern void _ZN7S6508C23v20Ev();
extern void _ZN7S6508C23v21Ev();
extern void _ZN7S6508C23v22Ev();
extern void _ZN7S6508C23v23Ev();
extern void _ZN7S6508C23v24Ev();
extern void _ZN7S6508C23v25Ev();
extern void _ZN7S6508C23v26Ev();
extern void _ZN7S6508C23v27Ev();
extern void _ZN7S6508C23v28Ev();
extern void _ZN7S6508C23v29Ev();
extern void _ZN7S6508C23v30Ev();
extern void _ZN7S6508C23v31Ev();
extern void _ZN7S6508C23v32Ev();
extern void _ZN7S6508C23v33Ev();
extern void _ZN7S6508C23v34Ev();
extern void _ZN7S6508C23v35Ev();
extern void _ZN7S6508C23v36Ev();
extern void _ZN7S6508C23v37Ev();
extern void _ZN7S6508C23v38Ev();
extern void _ZN7S6508C23v39Ev();
extern void _ZN7S6508C23v40Ev();
extern void _ZN7S6508C23v41Ev();
extern void _ZN7S6508C23v42Ev();
extern void _ZN7S6508C23v43Ev();
extern void _ZN7S6508C23v44Ev();
extern void _ZN7S6508C23v45Ev();
extern void _ZN7S6508C23v46Ev();
extern void _ZN7S6508C23v47Ev();
extern void _ZN7S6508C23v48Ev();
extern void _ZN7S6508C23v49Ev();
extern void _ZN7S6508C23v50Ev();
extern void _ZN7S6508C23v51Ev();
extern void _ZN7S6508C23v52Ev();
extern void _ZN7S6508C23v53Ev();
extern void _ZN7S6508C23v54Ev();
extern void _ZN7S6508C23v55Ev();
extern void _ZN7S6508C23v56Ev();
extern void _ZN7S6508C23v57Ev();
extern void _ZN7S6508C23v58Ev();
extern void _ZN7S6508C23v59Ev();
extern void _ZN7S6508C23v60Ev();
extern void _ZN7S6508C23v61Ev();
extern void _ZN7S6508C23v62Ev();
extern void _ZN7S6508C23v63Ev();
extern void _ZN7S6508C23v64Ev();
extern void _ZN7S6508C23v65Ev();
extern void _ZN7S6508C23v66Ev();
extern void _ZN7S6508C23v67Ev();
extern void _ZN7S6508C23v68Ev();
extern void _ZN7S6508C23v69Ev();
extern void _ZN7S6508C23v70Ev();
extern void _ZN7S6508C23v71Ev();
extern void _ZN7S6508C23v72Ev();
extern void _ZN7S6508C23v73Ev();
extern void _ZN7S6508C23v74Ev();
extern void _ZN7S6508C23v75Ev();
extern void _ZN7S6508C23v76Ev();
extern void _ZN7S6508C23v77Ev();
extern void _ZN7S6508C23v78Ev();
extern void _ZN7S6508C23v79Ev();
static  VTBL_ENTRY vtc_S6508C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6508C2[0]),
  (VTBL_ENTRY)&_ZN7S6508C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6508C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v68Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v69Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v70Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v71Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v72Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v73Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v74Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v75Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v76Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v77Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v78Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v79Ev,
};
extern VTBL_ENTRY _ZTI7S6508C2[];
extern  VTBL_ENTRY _ZTV7S6508C2[];
Class_Descriptor cd_S6508C2 = {  "S6508C2", // class name
  0,0,//no base classes
  &(vtc_S6508C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6508C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6508C2),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  S6508C6_nt  : S1604C11_nt {
};
//SIG(-1 S6508C6_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S6508C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S1604C11_nt;
static Base_Class bases_S6508C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1604C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S6508C7_nt  {
  int s6508c7f0[3];
  void  mf6508c7(); // _ZN10S6508C7_nt8mf6508c7Ev
};
//SIG(-1 S6508C7_nt) C1{ m Fi[3]}


void  S6508C7_nt ::mf6508c7(){}

//skip512 S6508C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S6508C10()
{
  extern Class_Descriptor cd_S6508C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6508C10, buf);
    S6508C10 &lv = *(new (buf) S6508C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6508C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6508C10)");
    check_base_class_offset(lv, (S1604C11_nt*), 0, "S6508C10");
    test_class_info(&lv, &cd_S6508C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6508C10(Test_S6508C10, "S6508C10", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1604C11_nt;
static Base_Class bases_S6508C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1604C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6508C10 = {  "S6508C10", // class name
  bases_S6508C10, 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  S6508C8  {
  ::S6508C6_nt s6508c8f0;
  ::S6508C10 s6508c8f1;
  void  mf6508c8(); // _ZN7S6508C88mf6508c8Ev
};
//SIG(-1 S6508C8) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC4{ BC3}}


void  S6508C8 ::mf6508c8(){}

static void Test_S6508C8()
{
  {
    init_simple_test("S6508C8");
    S6508C8 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S6508C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6508C8)");
    check_field_offset(lv, s6508c8f0, 0, "S6508C8.s6508c8f0");
    check_field_offset(lv, s6508c8f1, ABISELECT(16,12), "S6508C8.s6508c8f1");
  }
}
static Arrange_To_Call_Me vS6508C8(Test_S6508C8, "S6508C8", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6508C11_nt  {
  ::S6508C7_nt s6508c11f0;
  ::S6508C7_nt s6508c11f1;
  int s6508c11f2;
  void  mf6508c11(); // _ZN11S6508C11_nt9mf6508c11Ev
};
//SIG(-1 S6508C11_nt) C1{ m FC2{ m Fi[3]} FC2 Fi}


void  S6508C11_nt ::mf6508c11(){}

//skip512 S6508C11_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S6508C14()
{
  extern Class_Descriptor cd_S6508C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6508C14, buf);
    S6508C14 &lv = *(new (buf) S6508C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6508C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6508C14)");
    check_base_class_offset(lv, (S1604C11_nt*), 0, "S6508C14");
    test_class_info(&lv, &cd_S6508C14);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6508C14(Test_S6508C14, "S6508C14", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1604C11_nt;
static Base_Class bases_S6508C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1604C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6508C14 = {  "S6508C14", // class name
  bases_S6508C14, 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  S6508C16_nt  {
  int s6508c16f0;
  void  mf6508c16(); // _ZN11S6508C16_nt9mf6508c16Ev
};
//SIG(-1 S6508C16_nt) C1{ m Fi}


void  S6508C16_nt ::mf6508c16(){}

//skip512 S6508C16_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S6508C16_nt[];
VTBL_ENTRY *P__ZTI11S6508C16_nt = _ZTI11S6508C16_nt; 
Class_Descriptor cd_S6508C16_nt = {  "S6508C16_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI11S6508C16_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  S6508C1  : S6508C2 {
  ::S1604C10_nt s6508c1f0;
  ::S6508C6_nt s6508c1f1;
  int s6508c1f2[2];
  ::S6508C7_nt s6508c1f3;
  int s6508c1f4[3];
  ::S6508C8 s6508c1f5;
  void *s6508c1f6;
  ::S6508C11_nt s6508c1f7;
  ::S6508C10 s6508c1f8;
  ::S6508C14 s6508c1f9;
  int s6508c1f10[6];
  ::S6508C14 s6508c1f11;
  ::S6508C16_nt s6508c1f12;
  virtual  ~S6508C1(); // _ZN7S6508C1D1Ev
  virtual void  v1(); // _ZN7S6508C12v1Ev
  virtual void  v2(); // _ZN7S6508C12v2Ev
  virtual void  v3(); // _ZN7S6508C12v3Ev
  virtual void  v4(); // _ZN7S6508C12v4Ev
  virtual void  v5(); // _ZN7S6508C12v5Ev
  virtual void  v6(); // _ZN7S6508C12v6Ev
  virtual void  v7(); // _ZN7S6508C12v7Ev
  virtual void  v8(); // _ZN7S6508C12v8Ev
  virtual void  v9(); // _ZN7S6508C12v9Ev
  virtual void  v10(); // _ZN7S6508C13v10Ev
  virtual void  v11(); // _ZN7S6508C13v11Ev
  virtual void  v12(); // _ZN7S6508C13v12Ev
  virtual void  v13(); // _ZN7S6508C13v13Ev
  virtual void  v14(); // _ZN7S6508C13v14Ev
  virtual void  v15(); // _ZN7S6508C13v15Ev
  S6508C1(); // tgen
};
//SIG(1 S6508C1) C1{ BC2{ vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 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 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 FC4{ BC5{ m Fp Fi[2]}} FC6{ BC5} Fi[2] FC7{ m Fi[3]} Fi[3] FC8{ m FC6 FC9{ BC5}} Fp FC10{ m FC7 FC7 Fi} FC9 FC11{ BC5} Fi[6] FC11 FC12{ m Fi}}


 S6508C1 ::~S6508C1(){ note_dtor("S6508C1", this);}
void  S6508C1 ::v1(){vfunc_called(this, "_ZN7S6508C12v1Ev");}
void  S6508C1 ::v2(){vfunc_called(this, "_ZN7S6508C12v2Ev");}
void  S6508C1 ::v3(){vfunc_called(this, "_ZN7S6508C12v3Ev");}
void  S6508C1 ::v4(){vfunc_called(this, "_ZN7S6508C12v4Ev");}
void  S6508C1 ::v5(){vfunc_called(this, "_ZN7S6508C12v5Ev");}
void  S6508C1 ::v6(){vfunc_called(this, "_ZN7S6508C12v6Ev");}
void  S6508C1 ::v7(){vfunc_called(this, "_ZN7S6508C12v7Ev");}
void  S6508C1 ::v8(){vfunc_called(this, "_ZN7S6508C12v8Ev");}
void  S6508C1 ::v9(){vfunc_called(this, "_ZN7S6508C12v9Ev");}
void  S6508C1 ::v10(){vfunc_called(this, "_ZN7S6508C13v10Ev");}
void  S6508C1 ::v11(){vfunc_called(this, "_ZN7S6508C13v11Ev");}
void  S6508C1 ::v12(){vfunc_called(this, "_ZN7S6508C13v12Ev");}
void  S6508C1 ::v13(){vfunc_called(this, "_ZN7S6508C13v13Ev");}
void  S6508C1 ::v14(){vfunc_called(this, "_ZN7S6508C13v14Ev");}
void  S6508C1 ::v15(){vfunc_called(this, "_ZN7S6508C13v15Ev");}
S6508C1 ::S6508C1(){ note_ctor("S6508C1", this);} // tgen

static void Test_S6508C1()
{
  extern Class_Descriptor cd_S6508C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,60)];
    init_test(&cd_S6508C1, buf);
    S6508C1 *dp, &lv = *(dp=new (buf) S6508C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,236), "sizeof(S6508C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6508C1)");
    check_base_class_offset(lv, (S6508C2*), 0, "S6508C1");
    check_field_offset(lv, s6508c1f0, ABISELECT(96,60), "S6508C1.s6508c1f0");
    check_field_offset(lv, s6508c1f1, ABISELECT(112,72), "S6508C1.s6508c1f1");
    check_field_offset(lv, s6508c1f2, ABISELECT(128,84), "S6508C1.s6508c1f2");
    check_field_offset(lv, s6508c1f3, ABISELECT(136,92), "S6508C1.s6508c1f3");
    check_field_offset(lv, s6508c1f4, ABISELECT(148,104), "S6508C1.s6508c1f4");
    check_field_offset(lv, s6508c1f5, ABISELECT(160,116), "S6508C1.s6508c1f5");
    check_field_offset(lv, s6508c1f6, ABISELECT(192,140), "S6508C1.s6508c1f6");
    check_field_offset(lv, s6508c1f7, ABISELECT(200,144), "S6508C1.s6508c1f7");
    check_field_offset(lv, s6508c1f8, ABISELECT(232,172), "S6508C1.s6508c1f8");
    check_field_offset(lv, s6508c1f9, ABISELECT(248,184), "S6508C1.s6508c1f9");
    check_field_offset(lv, s6508c1f10, ABISELECT(264,196), "S6508C1.s6508c1f10");
    check_field_offset(lv, s6508c1f11, ABISELECT(288,220), "S6508C1.s6508c1f11");
    check_field_offset(lv, s6508c1f12, ABISELECT(304,232), "S6508C1.s6508c1f12");
    test_class_info(&lv, &cd_S6508C1);
    dp->~S6508C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6508C1(Test_S6508C1, "S6508C1", ABISELECT(312,236));

#else // __cplusplus

extern void _ZN7S6508C1C1Ev();
extern void _ZN7S6508C1D1Ev();
Name_Map name_map_S6508C1[] = {
  NSPAIR(_ZN7S6508C1C1Ev),
  NSPAIR(_ZN7S6508C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6508C2;
extern VTBL_ENTRY _ZTI7S6508C2[];
extern  VTBL_ENTRY _ZTV7S6508C2[];
static Base_Class bases_S6508C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6508C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6508C1[];
extern void _ZN7S6508C1D1Ev();
extern void _ZN7S6508C1D0Ev();
extern void _ZN7S6508C23v16Ev();
extern void _ZN7S6508C23v17Ev();
extern void _ZN7S6508C23v18Ev();
extern void _ZN7S6508C23v19Ev();
extern void _ZN7S6508C23v20Ev();
extern void _ZN7S6508C23v21Ev();
extern void _ZN7S6508C23v22Ev();
extern void _ZN7S6508C23v23Ev();
extern void _ZN7S6508C23v24Ev();
extern void _ZN7S6508C23v25Ev();
extern void _ZN7S6508C23v26Ev();
extern void _ZN7S6508C23v27Ev();
extern void _ZN7S6508C23v28Ev();
extern void _ZN7S6508C23v29Ev();
extern void _ZN7S6508C23v30Ev();
extern void _ZN7S6508C23v31Ev();
extern void _ZN7S6508C23v32Ev();
extern void _ZN7S6508C23v33Ev();
extern void _ZN7S6508C23v34Ev();
extern void _ZN7S6508C23v35Ev();
extern void _ZN7S6508C23v36Ev();
extern void _ZN7S6508C23v37Ev();
extern void _ZN7S6508C23v38Ev();
extern void _ZN7S6508C23v39Ev();
extern void _ZN7S6508C23v40Ev();
extern void _ZN7S6508C23v41Ev();
extern void _ZN7S6508C23v42Ev();
extern void _ZN7S6508C23v43Ev();
extern void _ZN7S6508C23v44Ev();
extern void _ZN7S6508C23v45Ev();
extern void _ZN7S6508C23v46Ev();
extern void _ZN7S6508C23v47Ev();
extern void _ZN7S6508C23v48Ev();
extern void _ZN7S6508C23v49Ev();
extern void _ZN7S6508C23v50Ev();
extern void _ZN7S6508C23v51Ev();
extern void _ZN7S6508C23v52Ev();
extern void _ZN7S6508C23v53Ev();
extern void _ZN7S6508C23v54Ev();
extern void _ZN7S6508C23v55Ev();
extern void _ZN7S6508C23v56Ev();
extern void _ZN7S6508C23v57Ev();
extern void _ZN7S6508C23v58Ev();
extern void _ZN7S6508C23v59Ev();
extern void _ZN7S6508C23v60Ev();
extern void _ZN7S6508C23v61Ev();
extern void _ZN7S6508C23v62Ev();
extern void _ZN7S6508C23v63Ev();
extern void _ZN7S6508C23v64Ev();
extern void _ZN7S6508C23v65Ev();
extern void _ZN7S6508C23v66Ev();
extern void _ZN7S6508C23v67Ev();
extern void _ZN7S6508C23v68Ev();
extern void _ZN7S6508C23v69Ev();
extern void _ZN7S6508C23v70Ev();
extern void _ZN7S6508C23v71Ev();
extern void _ZN7S6508C23v72Ev();
extern void _ZN7S6508C23v73Ev();
extern void _ZN7S6508C23v74Ev();
extern void _ZN7S6508C23v75Ev();
extern void _ZN7S6508C23v76Ev();
extern void _ZN7S6508C23v77Ev();
extern void _ZN7S6508C23v78Ev();
extern void _ZN7S6508C23v79Ev();
extern void _ZN7S6508C12v1Ev();
extern void _ZN7S6508C12v2Ev();
extern void _ZN7S6508C12v3Ev();
extern void _ZN7S6508C12v4Ev();
extern void _ZN7S6508C12v5Ev();
extern void _ZN7S6508C12v6Ev();
extern void _ZN7S6508C12v7Ev();
extern void _ZN7S6508C12v8Ev();
extern void _ZN7S6508C12v9Ev();
extern void _ZN7S6508C13v10Ev();
extern void _ZN7S6508C13v11Ev();
extern void _ZN7S6508C13v12Ev();
extern void _ZN7S6508C13v13Ev();
extern void _ZN7S6508C13v14Ev();
extern void _ZN7S6508C13v15Ev();
static  VTBL_ENTRY vtc_S6508C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6508C1[0]),
  (VTBL_ENTRY)&_ZN7S6508C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6508C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v68Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v69Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v70Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v71Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v72Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v73Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v74Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v75Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v76Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v77Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v78Ev,
  (VTBL_ENTRY)&_ZN7S6508C23v79Ev,
  (VTBL_ENTRY)&_ZN7S6508C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6508C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6508C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6508C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6508C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6508C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6508C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6508C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6508C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6508C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6508C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6508C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6508C13v13Ev,
  (VTBL_ENTRY)&_ZN7S6508C13v14Ev,
  (VTBL_ENTRY)&_ZN7S6508C13v15Ev,
};
extern VTBL_ENTRY _ZTI7S6508C1[];
extern  VTBL_ENTRY _ZTV7S6508C1[];
Class_Descriptor cd_S6508C1 = {  "S6508C1", // class name
  bases_S6508C1, 1,
  &(vtc_S6508C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,236), // object size
  NSPAIRA(_ZTI7S6508C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6508C1),83, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20903C3  {
  long double s20903c3f0;
  virtual void  v7(); // _ZN8S20903C32v7Ev
  virtual void  v8(); // _ZN8S20903C32v8Ev
  virtual void  v9(); // _ZN8S20903C32v9Ev
  virtual void  v10(); // _ZN8S20903C33v10Ev
  virtual void  v11(); // _ZN8S20903C33v11Ev
  ~S20903C3(); // tgen
  S20903C3(); // tgen
};
//SIG(-1 S20903C3) C1{ v1 v2 v3 v4 v5 FD}


void  S20903C3 ::v7(){vfunc_called(this, "_ZN8S20903C32v7Ev");}
void  S20903C3 ::v8(){vfunc_called(this, "_ZN8S20903C32v8Ev");}
void  S20903C3 ::v9(){vfunc_called(this, "_ZN8S20903C32v9Ev");}
void  S20903C3 ::v10(){vfunc_called(this, "_ZN8S20903C33v10Ev");}
void  S20903C3 ::v11(){vfunc_called(this, "_ZN8S20903C33v11Ev");}
S20903C3 ::~S20903C3(){ note_dtor("S20903C3", this);} // tgen
S20903C3 ::S20903C3(){ note_ctor("S20903C3", this);} // tgen

static void Test_S20903C3()
{
  extern Class_Descriptor cd_S20903C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S20903C3, buf);
    S20903C3 *dp, &lv = *(dp=new (buf) S20903C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20903C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20903C3)");
    check_field_offset(lv, s20903c3f0, ABISELECT(16,4), "S20903C3.s20903c3f0");
    test_class_info(&lv, &cd_S20903C3);
    dp->~S20903C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C3(Test_S20903C3, "S20903C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20903C3C1Ev();
extern void _ZN8S20903C3D1Ev();
Name_Map name_map_S20903C3[] = {
  NSPAIR(_ZN8S20903C3C1Ev),
  NSPAIR(_ZN8S20903C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20903C3[];
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY vtc_S20903C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C3[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
Class_Descriptor cd_S20903C3 = {  "S20903C3", // class name
  0,0,//no base classes
  &(vtc_S20903C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20903C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20903C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20903C4_nt  {
  virtual void  v12(); // _ZN11S20903C4_nt3v12Ev
  virtual void  v13(); // _ZN11S20903C4_nt3v13Ev
  virtual void  v14(); // _ZN11S20903C4_nt3v14Ev
  ~S20903C4_nt(); // tgen
  S20903C4_nt(); // tgen
};
//SIG(-1 S20903C4_nt) C1{ v1 v2 v3}


void  S20903C4_nt ::v12(){vfunc_called(this, "_ZN11S20903C4_nt3v12Ev");}
void  S20903C4_nt ::v13(){vfunc_called(this, "_ZN11S20903C4_nt3v13Ev");}
void  S20903C4_nt ::v14(){vfunc_called(this, "_ZN11S20903C4_nt3v14Ev");}
S20903C4_nt ::~S20903C4_nt(){ note_dtor("S20903C4_nt", this);} // tgen
S20903C4_nt ::S20903C4_nt(){ note_ctor("S20903C4_nt", this);} // tgen

//skip512 S20903C4_nt

#else // __cplusplus

extern void _ZN11S20903C4_ntC1Ev();
extern void _ZN11S20903C4_ntD1Ev();
Name_Map name_map_S20903C4_nt[] = {
  NSPAIR(_ZN11S20903C4_ntC1Ev),
  NSPAIR(_ZN11S20903C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
static  VTBL_ENTRY vtc_S20903C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20903C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
VTBL_ENTRY *P__ZTI11S20903C4_nt = _ZTI11S20903C4_nt; 
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
Class_Descriptor cd_S20903C4_nt = {  "S20903C4_nt", // class name
  0,0,//no base classes
  &(vtc_S20903C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20903C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20903C4_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  S20903C7  : virtual S20903C3 {
  ::S20903C3 s20903c7f0;
  virtual  ~S20903C7(); // _ZN8S20903C7D2Ev
  virtual void  v15(); // _ZN8S20903C73v15Ev
  virtual void  v16(); // _ZN8S20903C73v16Ev
  virtual void  v17(); // _ZN8S20903C73v17Ev
  virtual void  v18(); // _ZN8S20903C73v18Ev
  virtual void  v19(); // _ZN8S20903C73v19Ev
  S20903C7(); // tgen
};
//SIG(-1 S20903C7) C1{ VBC2{ v6 v7 v8 v9 v10 FD} vd v1 v2 v3 v4 v5 FC2}


 S20903C7 ::~S20903C7(){ note_dtor("S20903C7", this);}
void  S20903C7 ::v15(){vfunc_called(this, "_ZN8S20903C73v15Ev");}
void  S20903C7 ::v16(){vfunc_called(this, "_ZN8S20903C73v16Ev");}
void  S20903C7 ::v17(){vfunc_called(this, "_ZN8S20903C73v17Ev");}
void  S20903C7 ::v18(){vfunc_called(this, "_ZN8S20903C73v18Ev");}
void  S20903C7 ::v19(){vfunc_called(this, "_ZN8S20903C73v19Ev");}
S20903C7 ::S20903C7(){ note_ctor("S20903C7", this);} // tgen

static void Test_S20903C7()
{
  extern Class_Descriptor cd_S20903C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20903C7, buf);
    S20903C7 *dp, &lv = *(dp=new (buf) S20903C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20903C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20903C7)");
    check_base_class_offset(lv, (S20903C3*), ABISELECT(48,20), "S20903C7");
    check_field_offset(lv, s20903c7f0, ABISELECT(16,4), "S20903C7.s20903c7f0");
    test_class_info(&lv, &cd_S20903C7);
    dp->~S20903C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C7(Test_S20903C7, "S20903C7", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S20903C7C1Ev();
extern void _ZN8S20903C7D2Ev();
Name_Map name_map_S20903C7[] = {
  NSPAIR(_ZN8S20903C7C1Ev),
  NSPAIR(_ZN8S20903C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
static Base_Class bases_S20903C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20903C3,    ABISELECT(48,20), //bcp->offset
    10, //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 _ZTI8S20903C7[];
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY vtc_S20903C7[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S20903C7[];
static  VTT_ENTRY vtt_S20903C7[] = {
  {&(_ZTV8S20903C7[3]),  3,22},
  {&(_ZTV8S20903C7[17]),  17,22},
};
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
Class_Descriptor cd_S20903C7 = {  "S20903C7", // class name
  bases_S20903C7, 1,
  &(vtc_S20903C7[0]), // expected_vtbl_contents
  &(vtt_S20903C7[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S20903C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20903C7),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20903C7),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  S20903C6  : S20903C7 {
  virtual void  v20(); // _ZN8S20903C63v20Ev
  virtual void  v21(); // _ZN8S20903C63v21Ev
  ~S20903C6(); // tgen
  S20903C6(); // tgen
};
//SIG(-1 S20903C6) C1{ BC2{ VBC3{ v3 v4 v5 v6 v7 FD} vd v8 v9 v10 v11 v12 FC3} v1 v2}


void  S20903C6 ::v20(){vfunc_called(this, "_ZN8S20903C63v20Ev");}
void  S20903C6 ::v21(){vfunc_called(this, "_ZN8S20903C63v21Ev");}
S20903C6 ::~S20903C6(){ note_dtor("S20903C6", this);} // tgen
S20903C6 ::S20903C6(){ note_ctor("S20903C6", this);} // tgen

static void Test_S20903C6()
{
  extern Class_Descriptor cd_S20903C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20903C6, buf);
    S20903C6 *dp, &lv = *(dp=new (buf) S20903C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20903C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20903C6)");
    check_base_class_offset(lv, (S20903C3*)(S20903C7*), ABISELECT(48,20), "S20903C6");
    check_base_class_offset(lv, (S20903C7*), 0, "S20903C6");
    test_class_info(&lv, &cd_S20903C6);
    dp->~S20903C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C6(Test_S20903C6, "S20903C6", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S20903C6C1Ev();
extern void _ZN8S20903C6D1Ev();
Name_Map name_map_S20903C6[] = {
  NSPAIR(_ZN8S20903C6C1Ev),
  NSPAIR(_ZN8S20903C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
static Base_Class bases_S20903C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20903C3,    ABISELECT(48,20), //bcp->offset
    12, //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_S20903C7,    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 _ZTI8S20903C6[];
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY vtc_S20903C6[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S20903C6[];
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C7__8S20903C6[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C7__8S20903C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
static  VTT_ENTRY vtt_S20903C6[] = {
  {&(_ZTV8S20903C6[3]),  3,24},
  {&(_tg__ZTV8S20903C7__8S20903C6[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C7__8S20903C6[7]),  7,12},
  {&(_ZTV8S20903C6[19]),  19,24},
};
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
Class_Descriptor cd_S20903C6 = {  "S20903C6", // class name
  bases_S20903C6, 2,
  &(vtc_S20903C6[0]), // expected_vtbl_contents
  &(vtt_S20903C6[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S20903C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20903C6),24, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20903C6),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  S20903C8  : virtual S20903C3 , S20903C7 , S20903C6 {
  char s20903c8f0[8];
  virtual void  v22(); // _ZN8S20903C83v22Ev
  virtual void  v23(); // _ZN8S20903C83v23Ev
  virtual void  v24(); // _ZN8S20903C83v24Ev
  virtual void  v25(); // _ZN8S20903C83v25Ev
  virtual void  v26(); // _ZN8S20903C83v26Ev
  virtual void  v27(); // _ZN8S20903C83v27Ev
  virtual void  v28(); // _ZN8S20903C83v28Ev
  ~S20903C8(); // tgen
  S20903C8(); // tgen
};
//SIG(-1 S20903C8) C1{ VBC2{ v8 v9 v10 v11 v12 FD} BC3{ VBC2 vd v13 v14 v15 v16 v17 FC2} BC4{ BC3 v18 v19} v1 v2 v3 v4 v5 v6 v7 Fc[8]}


void  S20903C8 ::v22(){vfunc_called(this, "_ZN8S20903C83v22Ev");}
void  S20903C8 ::v23(){vfunc_called(this, "_ZN8S20903C83v23Ev");}
void  S20903C8 ::v24(){vfunc_called(this, "_ZN8S20903C83v24Ev");}
void  S20903C8 ::v25(){vfunc_called(this, "_ZN8S20903C83v25Ev");}
void  S20903C8 ::v26(){vfunc_called(this, "_ZN8S20903C83v26Ev");}
void  S20903C8 ::v27(){vfunc_called(this, "_ZN8S20903C83v27Ev");}
void  S20903C8 ::v28(){vfunc_called(this, "_ZN8S20903C83v28Ev");}
S20903C8 ::~S20903C8(){ note_dtor("S20903C8", this);} // tgen
S20903C8 ::S20903C8(){ note_ctor("S20903C8", this);} // tgen

static void Test_S20903C8()
{
  extern Class_Descriptor cd_S20903C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,17)];
    init_test(&cd_S20903C8, buf);
    S20903C8 *dp, &lv = *(dp=new (buf) S20903C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,64), "sizeof(S20903C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20903C8)");
    check_base_class_offset(lv, (S20903C3*), ABISELECT(112,48), "S20903C8");
    /*is_ambiguous_... S20903C8::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*), ABISELECT(112,48), "S20903C8");
    check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*), ABISELECT(112,48), "S20903C8");
    /*is_ambiguous_... S20903C8::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C7*), 0, "S20903C8");
    check_base_class_offset(lv, (S20903C7*)(S20903C6*), ABISELECT(48,20), "S20903C8");
    check_base_class_offset(lv, (S20903C6*), ABISELECT(48,20), "S20903C8");
    check_field_offset(lv, s20903c8f0, ABISELECT(96,40), "S20903C8.s20903c8f0");
    test_class_info(&lv, &cd_S20903C8);
    dp->~S20903C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C8(Test_S20903C8, "S20903C8", ABISELECT(144,64));

#else // __cplusplus

extern void _ZN8S20903C8C1Ev();
extern void _ZN8S20903C8D1Ev();
Name_Map name_map_S20903C8[] = {
  NSPAIR(_ZN8S20903C8C1Ev),
  NSPAIR(_ZN8S20903C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
static Base_Class bases_S20903C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20903C3,    ABISELECT(112,48), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20903C7,    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_S20903C7,    ABISELECT(48,20), //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_S20903C6,    ABISELECT(48,20), //bcp->offset
    17, //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 _ZTI8S20903C8[];
extern void _ZN8S20903C8D1Ev();
extern void _ZN8S20903C8D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
extern void ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY vtc_S20903C8[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
  ABISELECT(64,28),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S20903C8[];
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C7__8S20903C8[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C7__8S20903C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C8[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C6__A1__8S20903C8[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C6__A1__8S20903C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C6__8S20903C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
static  VTT_ENTRY vtt_S20903C8[] = {
  {&(_ZTV8S20903C8[3]),  3,41},
  {&(_tg__ZTV8S20903C7__8S20903C8[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C7__8S20903C8[7]),  7,12},
  {&(_tg__ZTV8S20903C6__8S20903C8[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C6__A1__8S20903C8[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C6__A1__8S20903C8[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C6__8S20903C8[7]),  7,12},
  {&(_ZTV8S20903C8[36]),  36,41},
  {&(_ZTV8S20903C8[20]),  20,41},
};
extern VTBL_ENTRY _ZTI8S20903C8[];
extern  VTBL_ENTRY _ZTV8S20903C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C8[];
Class_Descriptor cd_S20903C8 = {  "S20903C8", // class name
  bases_S20903C8, 4,
  &(vtc_S20903C8[0]), // expected_vtbl_contents
  &(vtt_S20903C8[0]), // expected_vtt_contents
  ABISELECT(144,64), // object size
  NSPAIRA(_ZTI8S20903C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20903C8),41, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20903C8),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20903C5  : S20903C6 , S20903C3 , virtual S20903C8 {
  int s20903c5f0;
  virtual void  v29(); // _ZN8S20903C53v29Ev
  virtual void  v30(); // _ZN8S20903C53v30Ev
  virtual void  v31(); // _ZN8S20903C53v31Ev
  virtual void  v32(); // _ZN8S20903C53v32Ev
  virtual void  v33(); // _ZN8S20903C53v33Ev
  virtual void  v34(); // _ZN8S20903C53v34Ev
  virtual void  v35(); // _ZN8S20903C53v35Ev
  ~S20903C5(); // tgen
  S20903C5(); // tgen
};
//SIG(-1 S20903C5) C1{ BC2{ BC3{ VBC4{ v8 v9 v10 v11 v12 FD} vd v13 v14 v15 v16 v17 FC4} v18 v19} BC4 VBC5{ VBC4 BC3 BC2 v20 v21 v22 v23 v24 v25 v26 Fc[8]} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S20903C5 ::v29(){vfunc_called(this, "_ZN8S20903C53v29Ev");}
void  S20903C5 ::v30(){vfunc_called(this, "_ZN8S20903C53v30Ev");}
void  S20903C5 ::v31(){vfunc_called(this, "_ZN8S20903C53v31Ev");}
void  S20903C5 ::v32(){vfunc_called(this, "_ZN8S20903C53v32Ev");}
void  S20903C5 ::v33(){vfunc_called(this, "_ZN8S20903C53v33Ev");}
void  S20903C5 ::v34(){vfunc_called(this, "_ZN8S20903C53v34Ev");}
void  S20903C5 ::v35(){vfunc_called(this, "_ZN8S20903C53v35Ev");}
S20903C5 ::~S20903C5(){ note_dtor("S20903C5", this);} // tgen
S20903C5 ::S20903C5(){ note_ctor("S20903C5", this);} // tgen

static void Test_S20903C5()
{
  extern Class_Descriptor cd_S20903C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,27)];
    init_test(&cd_S20903C5, buf);
    S20903C5 *dp, &lv = *(dp=new (buf) S20903C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,104), "sizeof(S20903C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20903C5)");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*), ABISELECT(96,40), "S20903C5");
    check_base_class_offset(lv, (S20903C3*)(S20903C8*), ABISELECT(96,40), "S20903C5");
    /*is_ambiguous_... S20903C8::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C8*), ABISELECT(96,40), "S20903C5");
    check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(96,40), "S20903C5");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*), 0, "S20903C5");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C6*), 0, "S20903C5");
    /*is_ambiguous_... S20903C5::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*), ABISELECT(48,20), "S20903C5");
    /*is_ambiguous_... S20903C8::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C8*), ABISELECT(128,56), "S20903C5");
    check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(176,76), "S20903C5");
    check_base_class_offset(lv, (S20903C6*)(S20903C8*), ABISELECT(176,76), "S20903C5");
    check_base_class_offset(lv, (S20903C8*), ABISELECT(128,56), "S20903C5");
    check_field_offset(lv, s20903c5f0, ABISELECT(80,36), "S20903C5.s20903c5f0");
    test_class_info(&lv, &cd_S20903C5);
    dp->~S20903C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C5(Test_S20903C5, "S20903C5", ABISELECT(240,104));

#else // __cplusplus

extern void _ZN8S20903C5C1Ev();
extern void _ZN8S20903C5D1Ev();
Name_Map name_map_S20903C5[] = {
  NSPAIR(_ZN8S20903C5C1Ev),
  NSPAIR(_ZN8S20903C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C8;
extern VTBL_ENTRY _ZTI8S20903C8[];
extern  VTBL_ENTRY _ZTV8S20903C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C8[];
static Base_Class bases_S20903C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20903C3,    ABISELECT(96,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20903C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20903C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20903C3,    ABISELECT(48,20), //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_S20903C7,    ABISELECT(128,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(176,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(176,76), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20903C8,    ABISELECT(128,56), //bcp->offset
    39, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20903C5[];
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S20903C5D1Ev,_ZThn56_N8S20903C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S20903C5D0Ev,_ZThn56_N8S20903C5D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY vtc_S20903C5[] = {
  ABISELECT(128,56),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-56),
  ABISELECT(-32,-16),
  ABISELECT(-128,-56),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
  ABISELECT(-80,-36),
  ABISELECT(-176,-76),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern VTBL_ENTRY _ZTV8S20903C5[];
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C5[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C6__8S20903C5[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C6__8S20903C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C6__8S20903C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C8D1Ev();
extern void _ZN8S20903C8D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C5[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C8__A1__8S20903C5[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C8__A1__8S20903C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C5[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C8__A2__8S20903C5[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__8S20903C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C8__A1__8S20903C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C8__8S20903C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C8__8S20903C5[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
static  VTT_ENTRY vtt_S20903C5[] = {
  {&(_ZTV8S20903C5[4]),  4,83},
  {&(_tg__ZTV8S20903C6__8S20903C5[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C6__8S20903C5[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C6__8S20903C5[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C6__8S20903C5[7]),  7,12},
  {&(_ZTV8S20903C5[34]),  34,83},
  {&(_ZTV8S20903C5[57]),  57,83},
  {&(_ZTV8S20903C5[74]),  74,83},
  {&(_tg__ZTV8S20903C8__8S20903C5[3]),  3,17},
  {&(_tg__ZTV8S20903C78S20903C8__A1__8S20903C5[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C8__A1__8S20903C5[7]),  7,12},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C5[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C8__A2__8S20903C5[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__8S20903C5[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C8__A1__8S20903C5[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C8__8S20903C5[7]),  7,12},
  {&(_tg__ZTV8S20903C6__8S20903C8__8S20903C5[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20903C5D0Ev,_ZThn56_N8S20903C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20903C5D1Ev,_ZThn56_N8S20903C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20903C5 = {  "S20903C5", // class name
  bases_S20903C5, 8,
  &(vtc_S20903C5[0]), // expected_vtbl_contents
  &(vtt_S20903C5[0]), // expected_vtt_contents
  ABISELECT(240,104), // object size
  NSPAIRA(_ZTI8S20903C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20903C5),83, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20903C5),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20903C2  : virtual S20903C3 , S20903C4_nt , virtual S20903C5 {
  virtual  ~S20903C2(); // _ZN8S20903C2D2Ev
  virtual void  v36(); // _ZN8S20903C23v36Ev
  virtual void  v37(); // _ZN8S20903C23v37Ev
  virtual void  v38(); // _ZN8S20903C23v38Ev
  S20903C2(); // tgen
};
//SIG(-1 S20903C2) C1{ VBC2{ v4 v5 v6 v7 v8 FD} BC3{ v9 v10 v11} VBC4{ BC5{ BC6{ VBC2 vd v12 v13 v14 v15 v16 FC2} v17 v18} BC2 VBC7{ VBC2 BC6 BC5 v19 v20 v21 v22 v23 v24 v25 Fc[8]} v26 v27 v28 v29 v30 v31 v32 Fi} vd v1 v2 v3}


 S20903C2 ::~S20903C2(){ note_dtor("S20903C2", this);}
void  S20903C2 ::v36(){vfunc_called(this, "_ZN8S20903C23v36Ev");}
void  S20903C2 ::v37(){vfunc_called(this, "_ZN8S20903C23v37Ev");}
void  S20903C2 ::v38(){vfunc_called(this, "_ZN8S20903C23v38Ev");}
S20903C2 ::S20903C2(){ note_ctor("S20903C2", this);} // tgen

static void Test_S20903C2()
{
  extern Class_Descriptor cd_S20903C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,28)];
    init_test(&cd_S20903C2, buf);
    S20903C2 *dp, &lv = *(dp=new (buf) S20903C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,108), "sizeof(S20903C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20903C2)");
    /*is_ambiguous_... S20903C2::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*), ABISELECT(16,4), "S20903C2");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C5*), ABISELECT(16,4), "S20903C2");
    check_base_class_offset(lv, (S20903C3*)(S20903C8*), ABISELECT(16,4), "S20903C2");
    /*is_ambiguous_... S20903C8::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C8*), ABISELECT(16,4), "S20903C2");
    check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(16,4), "S20903C2");
    check_base_class_offset(lv, (S20903C4_nt*), 0, "S20903C2");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C5*), ABISELECT(48,20), "S20903C2");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C5*), ABISELECT(48,20), "S20903C2");
    /*is_ambiguous_... S20903C5::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C5*), ABISELECT(96,40), "S20903C2");
    /*is_ambiguous_... S20903C8::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C8*), ABISELECT(144,60), "S20903C2");
    check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(192,80), "S20903C2");
    check_base_class_offset(lv, (S20903C6*)(S20903C8*), ABISELECT(192,80), "S20903C2");
    check_base_class_offset(lv, (S20903C8*)(S20903C5*), ABISELECT(144,60), "S20903C2");
    check_base_class_offset(lv, (S20903C5*), ABISELECT(48,20), "S20903C2");
    test_class_info(&lv, &cd_S20903C2);
    dp->~S20903C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C2(Test_S20903C2, "S20903C2", ABISELECT(256,108));

#else // __cplusplus

extern void _ZN8S20903C2C1Ev();
extern void _ZN8S20903C2D2Ev();
Name_Map name_map_S20903C2[] = {
  NSPAIR(_ZN8S20903C2C1Ev),
  NSPAIR(_ZN8S20903C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C4_nt;
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C8;
extern VTBL_ENTRY _ZTI8S20903C8[];
extern  VTBL_ENTRY _ZTV8S20903C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C8[];
extern Class_Descriptor cd_S20903C5;
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
static Base_Class bases_S20903C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20903C3,    ABISELECT(16,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20903C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20903C7,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(96,40), //bcp->offset
    65, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(144,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(192,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(192,80), //bcp->offset
    104, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20903C8,    ABISELECT(144,60), //bcp->offset
    72, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20903C5,    ABISELECT(48,20), //bcp->offset
    25, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    3, //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 _ZTI8S20903C2[];
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN8S20903C2D1Ev();
extern void _ZN8S20903C2D0Ev();
extern void _ZN8S20903C23v36Ev();
extern void _ZN8S20903C23v37Ev();
extern void _ZN8S20903C23v38Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZTv0_n40_N8S20903C2D1Ev,_ZTv0_n20_N8S20903C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C2D1Ev,_ZThn20_N8S20903C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20903C2D0Ev,_ZTv0_n20_N8S20903C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20903C2D0Ev,_ZThn20_N8S20903C2D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZTv0_n32_N8S20903C2D1Ev,_ZTv0_n16_N8S20903C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S20903C2D1Ev,_ZThn60_N8S20903C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C2D0Ev,_ZTv0_n16_N8S20903C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S20903C2D0Ev,_ZThn60_N8S20903C2D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20903C2D1Ev,_ZTvn20_n16_N8S20903C2D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C2D0Ev,_ZTvn20_n16_N8S20903C2D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY vtc_S20903C2[] = {
  ABISELECT(144,60),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S20903C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C23v36Ev,
  (VTBL_ENTRY)&_ZN8S20903C23v37Ev,
  (VTBL_ENTRY)&_ZN8S20903C23v38Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  ABISELECT(96,40),
  ABISELECT(-32,-16),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20903C2D1Ev,_ZTv0_n20_N8S20903C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20903C2D0Ev,_ZTv0_n20_N8S20903C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-60),
  ABISELECT(-128,-56),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C2D1Ev,_ZTv0_n16_N8S20903C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C2D0Ev,_ZTv0_n16_N8S20903C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
  ABISELECT(-176,-76),
  ABISELECT(-192,-80),
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C2D1Ev,_ZTvn20_n16_N8S20903C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C2D0Ev,_ZTvn20_n16_N8S20903C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern VTBL_ENTRY _ZTV8S20903C2[];
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C5__8S20903C2[] = {
  ABISELECT(96,40),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C5__8S20903C2[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C5__8S20903C2[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C5__8S20903C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C5__8S20903C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C5__8S20903C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S20903C5D1Ev,_ZThn40_N8S20903C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S20903C5D0Ev,_ZThn40_N8S20903C5D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C5__8S20903C2[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  ABISELECT(-128,-56),
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C5__8S20903C2[] = {
  ABISELECT(-176,-76),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C8D1Ev();
extern void _ZN8S20903C8D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C2[] = {
  ABISELECT(-128,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C8__A1__8S20903C2[] = {
  ABISELECT(-128,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C8__A1__8S20903C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,56),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C2[] = {
  ABISELECT(-176,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C8__A2__8S20903C2[] = {
  ABISELECT(-176,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__8S20903C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,76),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C8__A1__8S20903C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,76),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C8__8S20903C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,56),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C8__8S20903C2[] = {
  ABISELECT(-176,-76),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
static  VTT_ENTRY vtt_S20903C2[] = {
  {&(_ZTV8S20903C2[5]),  5,116},
  {&(_ZTV8S20903C2[20]),  20,116},
  {&(_ZTV8S20903C2[49]),  49,116},
  {&(_ZTV8S20903C2[67]),  67,116},
  {&(_ZTV8S20903C2[90]),  90,116},
  {&(_ZTV8S20903C2[107]),  107,116},
  {&(_tg__ZTV8S20903C5__8S20903C2[4]),  4,20},
  {&(_tg__ZTV8S20903C68S20903C5__8S20903C2[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C5__8S20903C2[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C5__8S20903C2[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C5__8S20903C2[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C5__8S20903C2[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C5__8S20903C2[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C5__8S20903C2[3]),  3,12},
  {&(_tg__ZTV8S20903C8__8S20903C2[3]),  3,17},
  {&(_tg__ZTV8S20903C78S20903C8__A1__8S20903C2[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C8__A1__8S20903C2[7]),  7,12},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C2[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C8__A2__8S20903C2[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__8S20903C2[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C8__A1__8S20903C2[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C8__8S20903C2[7]),  7,12},
  {&(_tg__ZTV8S20903C6__8S20903C8__8S20903C2[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20903C2[];
extern  VTBL_ENTRY _ZTV8S20903C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C2[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20903C5D0Ev,_ZThn40_N8S20903C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20903C5D1Ev,_ZThn40_N8S20903C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C2D0Ev,_ZTv0_n16_N8S20903C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20903C2D0Ev,_ZThn60_N8S20903C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C2D1Ev,_ZTv0_n16_N8S20903C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20903C2D1Ev,_ZThn60_N8S20903C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20903C2D0Ev,_ZTv0_n20_N8S20903C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20903C2D0Ev,_ZThn20_N8S20903C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20903C2D1Ev,_ZTv0_n20_N8S20903C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20903C2D1Ev,_ZThn20_N8S20903C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20903C2 = {  "S20903C2", // class name
  bases_S20903C2, 10,
  &(vtc_S20903C2[0]), // expected_vtbl_contents
  &(vtt_S20903C2[0]), // expected_vtt_contents
  ABISELECT(256,108), // object size
  NSPAIRA(_ZTI8S20903C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20903C2),116, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20903C2),23, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20903C11  : S20903C4_nt {
  int s20903c11f0[3];
  virtual void  v39(); // _ZN9S20903C113v39Ev
  virtual void  v40(); // _ZN9S20903C113v40Ev
  virtual void  v41(); // _ZN9S20903C113v41Ev
  virtual void  v42(); // _ZN9S20903C113v42Ev
  virtual void  v43(); // _ZN9S20903C113v43Ev
  virtual void  v44(); // _ZN9S20903C113v44Ev
  ~S20903C11(); // tgen
  S20903C11(); // tgen
};
//SIG(-1 S20903C11) C1{ BC2{ v7 v8 v9} v1 v2 v3 v4 v5 v6 Fi[3]}


void  S20903C11 ::v39(){vfunc_called(this, "_ZN9S20903C113v39Ev");}
void  S20903C11 ::v40(){vfunc_called(this, "_ZN9S20903C113v40Ev");}
void  S20903C11 ::v41(){vfunc_called(this, "_ZN9S20903C113v41Ev");}
void  S20903C11 ::v42(){vfunc_called(this, "_ZN9S20903C113v42Ev");}
void  S20903C11 ::v43(){vfunc_called(this, "_ZN9S20903C113v43Ev");}
void  S20903C11 ::v44(){vfunc_called(this, "_ZN9S20903C113v44Ev");}
S20903C11 ::~S20903C11(){ note_dtor("S20903C11", this);} // tgen
S20903C11 ::S20903C11(){ note_ctor("S20903C11", this);} // tgen

static void Test_S20903C11()
{
  extern Class_Descriptor cd_S20903C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20903C11, buf);
    S20903C11 *dp, &lv = *(dp=new (buf) S20903C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20903C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20903C11)");
    check_base_class_offset(lv, (S20903C4_nt*), 0, "S20903C11");
    check_field_offset(lv, s20903c11f0, ABISELECT(8,4), "S20903C11.s20903c11f0");
    test_class_info(&lv, &cd_S20903C11);
    dp->~S20903C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C11(Test_S20903C11, "S20903C11", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20903C11C1Ev();
extern void _ZN9S20903C11D1Ev();
Name_Map name_map_S20903C11[] = {
  NSPAIR(_ZN9S20903C11C1Ev),
  NSPAIR(_ZN9S20903C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20903C4_nt;
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
static Base_Class bases_S20903C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20903C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20903C11[];
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
static  VTBL_ENTRY vtc_S20903C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20903C11[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
};
extern VTBL_ENTRY _ZTI9S20903C11[];
extern  VTBL_ENTRY _ZTV9S20903C11[];
Class_Descriptor cd_S20903C11 = {  "S20903C11", // class name
  bases_S20903C11, 1,
  &(vtc_S20903C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20903C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20903C11),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20903C12  {
  __tsi64 s20903c12f0[3];
  virtual  ~S20903C12(); // _ZN9S20903C12D1Ev
  virtual void  v45(); // _ZN9S20903C123v45Ev
  virtual void  v46(); // _ZN9S20903C123v46Ev
  virtual void  v47(); // _ZN9S20903C123v47Ev
  virtual void  v48(); // _ZN9S20903C123v48Ev
  virtual void  v49(); // _ZN9S20903C123v49Ev
  S20903C12(); // tgen
};
//SIG(-1 S20903C12) C1{ vd v1 v2 v3 v4 v5 FL[3]}


 S20903C12 ::~S20903C12(){ note_dtor("S20903C12", this);}
void  S20903C12 ::v45(){vfunc_called(this, "_ZN9S20903C123v45Ev");}
void  S20903C12 ::v46(){vfunc_called(this, "_ZN9S20903C123v46Ev");}
void  S20903C12 ::v47(){vfunc_called(this, "_ZN9S20903C123v47Ev");}
void  S20903C12 ::v48(){vfunc_called(this, "_ZN9S20903C123v48Ev");}
void  S20903C12 ::v49(){vfunc_called(this, "_ZN9S20903C123v49Ev");}
S20903C12 ::S20903C12(){ note_ctor("S20903C12", this);} // tgen

static void Test_S20903C12()
{
  extern Class_Descriptor cd_S20903C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S20903C12, buf);
    S20903C12 *dp, &lv = *(dp=new (buf) S20903C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S20903C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20903C12)");
    check_field_offset(lv, s20903c12f0, ABISELECT(8,4), "S20903C12.s20903c12f0");
    test_class_info(&lv, &cd_S20903C12);
    dp->~S20903C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C12(Test_S20903C12, "S20903C12", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN9S20903C12C1Ev();
extern void _ZN9S20903C12D1Ev();
Name_Map name_map_S20903C12[] = {
  NSPAIR(_ZN9S20903C12C1Ev),
  NSPAIR(_ZN9S20903C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20903C12[];
extern void _ZN9S20903C12D1Ev();
extern void _ZN9S20903C12D0Ev();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
static  VTBL_ENTRY vtc_S20903C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20903C12[0]),
  (VTBL_ENTRY)&_ZN9S20903C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20903C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
};
extern VTBL_ENTRY _ZTI9S20903C12[];
extern  VTBL_ENTRY _ZTV9S20903C12[];
Class_Descriptor cd_S20903C12 = {  "S20903C12", // class name
  0,0,//no base classes
  &(vtc_S20903C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI9S20903C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20903C12),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  S20903C10  : virtual S20903C11 , virtual S20903C4_nt , virtual S20903C3 , S20903C12 , S20903C5 {
  void *s20903c10f0;
  virtual  ~S20903C10(); // _ZN9S20903C10D2Ev
  virtual void  v50(); // _ZN9S20903C103v50Ev
  S20903C10(); // tgen
};
//SIG(-1 S20903C10) C1{ VBC2{ BC3{ v2 v3 v4} v5 v6 v7 v8 v9 v10 Fi[3]} VBC3 VBC4{ v11 v12 v13 v14 v15 FD} BC5{ vd v16 v17 v18 v19 v20 FL[3]} BC6{ BC7{ BC8{ VBC4 vd v21 v22 v23 v24 v25 FC4} v26 v27} BC4 VBC9{ VBC4 BC8 BC7 v28 v29 v30 v31 v32 v33 v34 Fc[8]} v35 v36 v37 v38 v39 v40 v41 Fi} vd v1 Fp}


 S20903C10 ::~S20903C10(){ note_dtor("S20903C10", this);}
void  S20903C10 ::v50(){vfunc_called(this, "_ZN9S20903C103v50Ev");}
S20903C10 ::S20903C10(){ note_ctor("S20903C10", this);} // tgen

static void Test_S20903C10()
{
  extern Class_Descriptor cd_S20903C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,40)];
    init_test(&cd_S20903C10, buf);
    S20903C10 *dp, &lv = *(dp=new (buf) S20903C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,156), "sizeof(S20903C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20903C10)");
    check_base_class_offset(lv, (S20903C4_nt*)(S20903C11*), ABISELECT(128,72), "S20903C10");
    check_base_class_offset(lv, (S20903C11*), ABISELECT(128,72), "S20903C10");
    /*is_ambiguous_... S20903C10::S20903C4_nt */ AMB_check_base_class_offset(lv, (S20903C4_nt*), ABISELECT(152,88), "S20903C10");
    /*is_ambiguous_... S20903C10::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*), ABISELECT(160,92), "S20903C10");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C5*), ABISELECT(160,92), "S20903C10");
    check_base_class_offset(lv, (S20903C3*)(S20903C8*), ABISELECT(160,92), "S20903C10");
    /*is_ambiguous_... S20903C8::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C8*), ABISELECT(160,92), "S20903C10");
    check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(160,92), "S20903C10");
    check_base_class_offset(lv, (S20903C12*), 0, "S20903C10");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C5*), ABISELECT(32,28), "S20903C10");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C5*), ABISELECT(32,28), "S20903C10");
    /*is_ambiguous_... S20903C5::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C5*), ABISELECT(80,48), "S20903C10");
    /*is_ambiguous_... S20903C8::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C8*), ABISELECT(192,108), "S20903C10");
    check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(240,128), "S20903C10");
    check_base_class_offset(lv, (S20903C6*)(S20903C8*), ABISELECT(240,128), "S20903C10");
    check_base_class_offset(lv, (S20903C8*)(S20903C5*), ABISELECT(192,108), "S20903C10");
    check_base_class_offset(lv, (S20903C5*), ABISELECT(32,28), "S20903C10");
    check_field_offset(lv, s20903c10f0, ABISELECT(120,68), "S20903C10.s20903c10f0");
    test_class_info(&lv, &cd_S20903C10);
    dp->~S20903C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C10(Test_S20903C10, "S20903C10", ABISELECT(304,156));

#else // __cplusplus

extern void _ZN9S20903C10C1Ev();
extern void _ZN9S20903C10D2Ev();
Name_Map name_map_S20903C10[] = {
  NSPAIR(_ZN9S20903C10C1Ev),
  NSPAIR(_ZN9S20903C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20903C4_nt;
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
extern Class_Descriptor cd_S20903C11;
extern VTBL_ENTRY _ZTI9S20903C11[];
extern  VTBL_ENTRY _ZTV9S20903C11[];
extern Class_Descriptor cd_S20903C4_nt;
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C12;
extern VTBL_ENTRY _ZTI9S20903C12[];
extern  VTBL_ENTRY _ZTV9S20903C12[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C8;
extern VTBL_ENTRY _ZTI8S20903C8[];
extern  VTBL_ENTRY _ZTV8S20903C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C8[];
extern Class_Descriptor cd_S20903C5;
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
static Base_Class bases_S20903C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20903C4_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20903C11,    ABISELECT(128,72), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20903C4_nt,    ABISELECT(152,88), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20903C3,    ABISELECT(160,92), //bcp->offset
    69, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20903C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20903C7,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(80,48), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(240,128), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(240,128), //bcp->offset
    113, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20903C8,    ABISELECT(192,108), //bcp->offset
    81, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20903C5,    ABISELECT(32,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI9S20903C10[];
extern void _ZN9S20903C10D1Ev();
extern void _ZN9S20903C10D0Ev();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
extern void ABISELECT(_ZThn32_N9S20903C10D1Ev,_ZThn28_N9S20903C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S20903C10D0Ev,_ZThn28_N9S20903C10D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev)();
extern void ABISELECT(_ZThn192_N9S20903C10D1Ev,_ZThn108_N9S20903C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev)();
extern void ABISELECT(_ZThn192_N9S20903C10D0Ev,_ZThn108_N9S20903C10D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
extern void ABISELECT(_ZTvn48_n32_N9S20903C10D1Ev,_ZTvn20_n16_N9S20903C10D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N9S20903C10D0Ev,_ZTvn20_n16_N9S20903C10D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY vtc_S20903C10[] = {
  ABISELECT(192,108),
  ABISELECT(160,92),
  ABISELECT(152,88),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN9S20903C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20903C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
  ABISELECT(160,80),
  ABISELECT(128,64),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20903C10D1Ev,_ZThn28_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20903C10D0Ev,_ZThn28_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
  ABISELECT(-80,-36),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C10D1Ev,_ZTvn20_n16_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C10D0Ev,_ZTvn20_n16_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern VTBL_ENTRY _ZTV9S20903C10[];
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C5__9S20903C10[] = {
  ABISELECT(160,80),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C5__9S20903C10[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C5__9S20903C10[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C5__9S20903C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C5__9S20903C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C5__9S20903C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZThn160_N8S20903C5D1Ev,_ZThn80_N8S20903C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void ABISELECT(_ZThn160_N8S20903C5D0Ev,_ZThn80_N8S20903C5D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C5__9S20903C10[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  ABISELECT(-32,-16),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C5__9S20903C10[] = {
  ABISELECT(-80,-36),
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C8D1Ev();
extern void _ZN8S20903C8D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__9S20903C10[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C8__A1__9S20903C10[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C8__A1__9S20903C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__9S20903C10[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C8__A2__9S20903C10[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__9S20903C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C8__A1__9S20903C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C8__9S20903C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C8__9S20903C10[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
static  VTT_ENTRY vtt_S20903C10[] = {
  {&(_ZTV9S20903C10[6]),  6,125},
  {&(_tg__ZTV8S20903C5__9S20903C10[4]),  4,20},
  {&(_tg__ZTV8S20903C68S20903C5__9S20903C10[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C5__9S20903C10[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C5__9S20903C10[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C5__9S20903C10[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C5__9S20903C10[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C5__9S20903C10[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C5__9S20903C10[3]),  3,12},
  {&(_ZTV9S20903C10[52]),  52,125},
  {&(_ZTV9S20903C10[66]),  66,125},
  {&(_ZTV9S20903C10[76]),  76,125},
  {&(_ZTV9S20903C10[18]),  18,125},
  {&(_ZTV9S20903C10[99]),  99,125},
  {&(_ZTV9S20903C10[116]),  116,125},
  {&(_tg__ZTV8S20903C8__9S20903C10[3]),  3,17},
  {&(_tg__ZTV8S20903C78S20903C8__A1__9S20903C10[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C8__A1__9S20903C10[7]),  7,12},
  {&(_tg__ZTV8S20903C68S20903C8__A1__9S20903C10[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C8__A2__9S20903C10[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__9S20903C10[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C8__A1__9S20903C10[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C8__9S20903C10[7]),  7,12},
  {&(_tg__ZTV8S20903C6__8S20903C8__9S20903C10[3]),  3,12},
};
extern VTBL_ENTRY _ZTI9S20903C10[];
extern  VTBL_ENTRY _ZTV9S20903C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20903C10[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20903C5D0Ev,_ZThn80_N8S20903C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20903C5D1Ev,_ZThn80_N8S20903C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20903C10D0Ev,_ZThn108_N9S20903C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20903C10D1Ev,_ZThn108_N9S20903C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20903C10 = {  "S20903C10", // class name
  bases_S20903C10, 13,
  &(vtc_S20903C10[0]), // expected_vtbl_contents
  &(vtt_S20903C10[0]), // expected_vtt_contents
  ABISELECT(304,156), // object size
  NSPAIRA(_ZTI9S20903C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20903C10),125, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20903C10),24, //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  S20903C9  : S20903C5 , S20903C6 , S20903C8 , S20903C10 , S20903C3 {
  ::S20903C6 s20903c9f0[3];
  ::S20903C6 s20903c9f1;
  virtual  ~S20903C9(); // _ZN8S20903C9D2Ev
  virtual void  v51(); // _ZN8S20903C93v51Ev
  virtual void  v52(); // _ZN8S20903C93v52Ev
  virtual void  v53(); // _ZN8S20903C93v53Ev
  virtual void  v54(); // _ZN8S20903C93v54Ev
  virtual void  v55(); // _ZN8S20903C93v55Ev
  virtual void  v56(); // _ZN8S20903C93v56Ev
  virtual void  v57(); // _ZN8S20903C93v57Ev
  virtual void  v58(); // _ZN8S20903C93v58Ev
  virtual void  v59(); // _ZN8S20903C93v59Ev
  virtual void  v60(); // _ZN8S20903C93v60Ev
  S20903C9(); // tgen
};
//SIG(-1 S20903C9) C1{ BC2{ BC3{ BC4{ VBC5{ v11 v12 v13 v14 v15 FD} vd v16 v17 v18 v19 v20 FC5} v21 v22} BC5 VBC6{ VBC5 BC4 BC3 v23 v24 v25 v26 v27 v28 v29 Fc[8]} v30 v31 v32 v33 v34 v35 v36 Fi} BC3 BC6 BC7{ VBC8{ BC9{ v37 v38 v39} v40 v41 v42 v43 v44 v45 Fi[3]} VBC9 VBC5 BC10{ vd v46 v47 v48 v49 v50 FL[3]} BC2 vd v51 Fp} BC5 vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC3[3] FC3}


 S20903C9 ::~S20903C9(){ note_dtor("S20903C9", this);}
void  S20903C9 ::v51(){vfunc_called(this, "_ZN8S20903C93v51Ev");}
void  S20903C9 ::v52(){vfunc_called(this, "_ZN8S20903C93v52Ev");}
void  S20903C9 ::v53(){vfunc_called(this, "_ZN8S20903C93v53Ev");}
void  S20903C9 ::v54(){vfunc_called(this, "_ZN8S20903C93v54Ev");}
void  S20903C9 ::v55(){vfunc_called(this, "_ZN8S20903C93v55Ev");}
void  S20903C9 ::v56(){vfunc_called(this, "_ZN8S20903C93v56Ev");}
void  S20903C9 ::v57(){vfunc_called(this, "_ZN8S20903C93v57Ev");}
void  S20903C9 ::v58(){vfunc_called(this, "_ZN8S20903C93v58Ev");}
void  S20903C9 ::v59(){vfunc_called(this, "_ZN8S20903C93v59Ev");}
void  S20903C9 ::v60(){vfunc_called(this, "_ZN8S20903C93v60Ev");}
S20903C9 ::S20903C9(){ note_ctor("S20903C9", this);} // tgen

static void Test_S20903C9()
{
  extern Class_Descriptor cd_S20903C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,107)];
    init_test(&cd_S20903C9, buf);
    S20903C9 *dp, &lv = *(dp=new (buf) S20903C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,424), "sizeof(S20903C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20903C9)");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C5*), ABISELECT(736,340), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C8*), ABISELECT(736,340), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C8*), ABISELECT(736,340), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(736,340), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*), ABISELECT(736,340), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C8*), ABISELECT(736,340), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C8*), ABISELECT(736,340), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(736,340), "S20903C9");
    /*is_ambiguous_... S20903C10::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C10*), ABISELECT(736,340), "S20903C9");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C5*)(S20903C10*), ABISELECT(736,340), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C5*), 0, "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C5*), 0, "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C5*), ABISELECT(48,20), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C8*), ABISELECT(768,356), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(816,376), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C8*), ABISELECT(816,376), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C8*)(S20903C5*), ABISELECT(768,356), "S20903C9");
    check_base_class_offset(lv, (S20903C8*)(S20903C5*)(S20903C10*), ABISELECT(768,356), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C5*), 0, "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*), ABISELECT(96,40), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C6*), ABISELECT(96,40), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C8*), ABISELECT(144,60), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(192,80), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C8*), ABISELECT(192,80), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C8*), ABISELECT(144,60), "S20903C9");
    check_base_class_offset(lv, (S20903C4_nt*)(S20903C11*), ABISELECT(872,404), "S20903C9");
    check_base_class_offset(lv, (S20903C11*)(S20903C10*), ABISELECT(872,404), "S20903C9");
    /*is_ambiguous_... S20903C10::S20903C4_nt */ AMB_check_base_class_offset(lv, (S20903C4_nt*)(S20903C10*), ABISELECT(896,420), "S20903C9");
    check_base_class_offset(lv, (S20903C12*)(S20903C10*), ABISELECT(256,108), "S20903C9");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C5*)(S20903C10*), ABISELECT(288,136), "S20903C9");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C5*)(S20903C10*), ABISELECT(288,136), "S20903C9");
    /*is_ambiguous_... S20903C5::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C5*)(S20903C10*), ABISELECT(336,156), "S20903C9");
    check_base_class_offset(lv, (S20903C5*)(S20903C10*), ABISELECT(288,136), "S20903C9");
    check_base_class_offset(lv, (S20903C10*), ABISELECT(256,108), "S20903C9");
    /*is_ambiguous_... S20903C9::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*), ABISELECT(384,180), "S20903C9");
    check_field_offset(lv, s20903c9f0, ABISELECT(416,196), "S20903C9.s20903c9f0");
    check_field_offset(lv, s20903c9f1, ABISELECT(656,304), "S20903C9.s20903c9f1");
    test_class_info(&lv, &cd_S20903C9);
    dp->~S20903C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C9(Test_S20903C9, "S20903C9", ABISELECT(912,424));

#else // __cplusplus

extern void _ZN8S20903C9C1Ev();
extern void _ZN8S20903C9D2Ev();
Name_Map name_map_S20903C9[] = {
  NSPAIR(_ZN8S20903C9C1Ev),
  NSPAIR(_ZN8S20903C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C8;
extern VTBL_ENTRY _ZTI8S20903C8[];
extern  VTBL_ENTRY _ZTV8S20903C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C8[];
extern Class_Descriptor cd_S20903C5;
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C8;
extern VTBL_ENTRY _ZTI8S20903C8[];
extern  VTBL_ENTRY _ZTV8S20903C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C8[];
extern Class_Descriptor cd_S20903C4_nt;
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
extern Class_Descriptor cd_S20903C11;
extern VTBL_ENTRY _ZTI9S20903C11[];
extern  VTBL_ENTRY _ZTV9S20903C11[];
extern Class_Descriptor cd_S20903C4_nt;
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
extern Class_Descriptor cd_S20903C12;
extern VTBL_ENTRY _ZTI9S20903C12[];
extern  VTBL_ENTRY _ZTV9S20903C12[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C5;
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
extern Class_Descriptor cd_S20903C10;
extern VTBL_ENTRY _ZTI9S20903C10[];
extern  VTBL_ENTRY _ZTV9S20903C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20903C10[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
static Base_Class bases_S20903C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20903C3,    ABISELECT(736,340), //bcp->offset
    128, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20903C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20903C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(48,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(768,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(816,376), //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(816,376), //bcp->offset
    172, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20903C8,    ABISELECT(768,356), //bcp->offset
    140, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20903C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20903C7,    ABISELECT(96,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(96,40), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20903C7,    ABISELECT(144,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
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(192,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(192,80), //bcp->offset
    68, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20903C8,    ABISELECT(144,60), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20903C4_nt,    ABISELECT(872,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20903C11,    ABISELECT(872,404), //bcp->offset
    184, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20903C4_nt,    ABISELECT(896,420), //bcp->offset
    204, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20903C12,    ABISELECT(256,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(288,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(288,136), //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
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(336,156), //bcp->offset
    114, //bcp->virtual_function_table_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
    22, //immediately_derived
  0, 0},
  {&cd_S20903C5,    ABISELECT(288,136), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20903C10,    ABISELECT(256,108), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20903C3,    ABISELECT(384,180), //bcp->offset
    121, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20903C9[];
extern void _ZN8S20903C9D1Ev();
extern void _ZN8S20903C9D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C93v51Ev();
extern void _ZN8S20903C93v52Ev();
extern void _ZN8S20903C93v53Ev();
extern void _ZN8S20903C93v54Ev();
extern void _ZN8S20903C93v55Ev();
extern void _ZN8S20903C93v56Ev();
extern void _ZN8S20903C93v57Ev();
extern void _ZN8S20903C93v58Ev();
extern void _ZN8S20903C93v59Ev();
extern void _ZN8S20903C93v60Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZThn96_N8S20903C9D1Ev,_ZThn40_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S20903C9D0Ev,_ZThn40_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void ABISELECT(_ZThn144_N8S20903C9D1Ev,_ZThn60_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S20903C9D0Ev,_ZThn60_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
extern void ABISELECT(_ZThn192_N8S20903C9D1Ev,_ZThn80_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S20903C9D0Ev,_ZThn80_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void ABISELECT(_ZThn256_N8S20903C9D1Ev,_ZThn108_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S20903C9D0Ev,_ZThn108_N8S20903C9D0Ev)();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
extern void ABISELECT(_ZThn288_N8S20903C9D1Ev,_ZThn136_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn288_N8S20903C9D0Ev,_ZThn136_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZTv0_n32_N8S20903C9D1Ev,_ZTv0_n16_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn768_N8S20903C9D1Ev,_ZThn356_N8S20903C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C9D0Ev,_ZTv0_n16_N8S20903C9D0Ev)();
extern void ABISELECT(_ZThn768_N8S20903C9D0Ev,_ZThn356_N8S20903C9D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20903C9D1Ev,_ZTvn20_n16_N8S20903C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C9D0Ev,_ZTvn20_n16_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
static  VTBL_ENTRY vtc_S20903C9[] = {
  ABISELECT(896,420),
  ABISELECT(872,404),
  ABISELECT(768,356),
  ABISELECT(736,340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN8S20903C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v51Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v52Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v53Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v54Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v55Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v56Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v57Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v58Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v59Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v60Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(640,300),
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20903C9D1Ev,_ZThn40_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20903C9D0Ev,_ZThn40_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  ABISELECT(592,280),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20903C9D1Ev,_ZThn60_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20903C9D0Ev,_ZThn60_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
  ABISELECT(544,260),
  ABISELECT(-192,-80),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S20903C9D1Ev,_ZThn80_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S20903C9D0Ev,_ZThn80_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  ABISELECT(512,248),
  ABISELECT(480,232),
  ABISELECT(640,312),
  ABISELECT(616,296),
  ABISELECT(-256,-108),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S20903C9D1Ev,_ZThn108_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S20903C9D0Ev,_ZThn108_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
  ABISELECT(480,220),
  ABISELECT(448,204),
  ABISELECT(-288,-136),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S20903C9D1Ev,_ZThn136_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S20903C9D0Ev,_ZThn136_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  ABISELECT(-336,-156),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(-384,-180),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-340),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-768,-356),
  ABISELECT(-32,-16),
  ABISELECT(-768,-356),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C9D1Ev,_ZTv0_n16_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C9D0Ev,_ZTv0_n16_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
  ABISELECT(-80,-36),
  ABISELECT(-816,-376),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C9D1Ev,_ZTvn20_n16_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C9D0Ev,_ZTvn20_n16_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-872,-404),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
  0,
  0,
  0,
  ABISELECT(-896,-420),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
};
extern VTBL_ENTRY _ZTV8S20903C9[];
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C5__8S20903C9[] = {
  ABISELECT(768,356),
  ABISELECT(736,340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C5__8S20903C9[] = {
  ABISELECT(736,340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C5__8S20903C9[] = {
  ABISELECT(736,340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C5__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-340),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C5__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-340),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C5__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-340),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZThn768_N8S20903C5D1Ev,_ZThn356_N8S20903C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void ABISELECT(_ZThn768_N8S20903C5D0Ev,_ZThn356_N8S20903C5D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C5__8S20903C9[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-768,-356),
  ABISELECT(-32,-16),
  ABISELECT(-768,-356),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C5__8S20903C9[] = {
  ABISELECT(-80,-36),
  ABISELECT(-816,-376),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__A2__8S20903C9[] = {
  ABISELECT(640,300),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C6__A3__8S20903C9[] = {
  ABISELECT(640,300),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C6__A3__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-300),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C6__A2__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-300),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C8D1Ev();
extern void _ZN8S20903C8D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__A__8S20903C9[] = {
  ABISELECT(592,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C8__A4__8S20903C9[] = {
  ABISELECT(592,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C8__A4__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-280),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A3__8S20903C9[] = {
  ABISELECT(544,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C8__A5__8S20903C9[] = {
  ABISELECT(544,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A5__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-260),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C8__A3__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-260),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C8__A__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-280),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C8__A__8S20903C9[] = {
  ABISELECT(544,260),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN9S20903C10D1Ev();
extern void _ZN9S20903C10D0Ev();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C10__8S20903C9[] = {
  ABISELECT(512,248),
  ABISELECT(480,232),
  ABISELECT(640,312),
  ABISELECT(616,296),
  0,
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN9S20903C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20903C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
};
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C59S20903C10__A1__8S20903C9[] = {
  ABISELECT(480,220),
  ABISELECT(448,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C59S20903C10__A4__8S20903C9[] = {
  ABISELECT(448,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C59S20903C10__A6__8S20903C9[] = {
  ABISELECT(448,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C59S20903C10__A6__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-204),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C59S20903C10__A4__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-204),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C59S20903C10__A1__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-204),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZThn480_N8S20903C5D1Ev,_ZThn220_N8S20903C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void ABISELECT(_ZThn480_N8S20903C5D0Ev,_ZThn220_N8S20903C5D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C59S20903C10__A1__8S20903C9[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-220),
  ABISELECT(-32,-16),
  ABISELECT(-480,-220),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C59S20903C10__A1__8S20903C9[] = {
  ABISELECT(-80,-36),
  ABISELECT(-528,-240),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C11__9S20903C10__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-616,-296),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20903C4_nt__A1__9S20903C10__8S20903C9[] = {
  0,
  0,
  0,
  ABISELECT(-640,-312),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__9S20903C10__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-232),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn32_N9S20903C10D1Ev,_ZThn28_N9S20903C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S20903C10D0Ev,_ZThn28_N9S20903C10D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C5__9S20903C10__8S20903C9[] = {
  ABISELECT(480,220),
  ABISELECT(448,204),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20903C10D1Ev,_ZThn28_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20903C10D0Ev,_ZThn28_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev)();
extern void ABISELECT(_ZThn512_N9S20903C10D1Ev,_ZThn248_N9S20903C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev)();
extern void ABISELECT(_ZThn512_N9S20903C10D0Ev,_ZThn248_N9S20903C10D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__9S20903C10__8S20903C9[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-248),
  ABISELECT(-32,-16),
  ABISELECT(-512,-248),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N9S20903C10D1Ev,_ZTvn20_n16_N9S20903C10D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N9S20903C10D0Ev,_ZTvn20_n16_N9S20903C10D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__9S20903C10__8S20903C9[] = {
  ABISELECT(-80,-36),
  ABISELECT(-560,-268),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C10D1Ev,_ZTvn20_n16_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C10D0Ev,_ZTvn20_n16_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C8D1Ev();
extern void _ZN8S20903C8D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C9[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C8__A1__8S20903C9[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C8__A1__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C9[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C8__A2__8S20903C9[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C8__A1__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C8__8S20903C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C8__8S20903C9[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
static  VTT_ENTRY vtt_S20903C9[] = {
  {&(_ZTV8S20903C9[6]),  6,212},
  {&(_tg__ZTV8S20903C5__8S20903C9[4]),  4,20},
  {&(_tg__ZTV8S20903C68S20903C5__8S20903C9[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C5__8S20903C9[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C5__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C5__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C5__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C5__8S20903C9[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C5__8S20903C9[3]),  3,12},
  {&(_tg__ZTV8S20903C6__A2__8S20903C9[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C6__A3__8S20903C9[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C6__A3__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C6__A2__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C8__A__8S20903C9[3]),  3,17},
  {&(_tg__ZTV8S20903C78S20903C8__A4__8S20903C9[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C8__A4__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C68S20903C8__A3__8S20903C9[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C8__A5__8S20903C9[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A5__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C8__A3__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C8__A__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C6__8S20903C8__A__8S20903C9[3]),  3,12},
  {&(_tg__ZTV9S20903C10__8S20903C9[6]),  6,14},
  {&(_tg__ZTV8S20903C59S20903C10__A1__8S20903C9[4]),  4,20},
  {&(_tg__ZTV8S20903C68S20903C59S20903C10__A4__8S20903C9[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C59S20903C10__A6__8S20903C9[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C59S20903C10__A6__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C59S20903C10__A4__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C59S20903C10__A1__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C59S20903C10__A1__8S20903C9[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C59S20903C10__A1__8S20903C9[3]),  3,12},
  {&(_tg__ZTV9S20903C11__9S20903C10__8S20903C9[11]),  11,20},
  {&(_tg__ZTV11S20903C4_nt__A1__9S20903C10__8S20903C9[5]),  5,8},
  {&(_tg__ZTV8S20903C3__9S20903C10__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C5__9S20903C10__8S20903C9[4]),  4,20},
  {&(_tg__ZTV8S20903C8__9S20903C10__8S20903C9[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__9S20903C10__8S20903C9[3]),  3,12},
  {&(_ZTV8S20903C9[135]),  135,212},
  {&(_ZTV8S20903C9[158]),  158,212},
  {&(_ZTV8S20903C9[175]),  175,212},
  {&(_ZTV8S20903C9[42]),  42,212},
  {&(_ZTV8S20903C9[54]),  54,212},
  {&(_ZTV8S20903C9[71]),  71,212},
  {&(_ZTV8S20903C9[86]),  86,212},
  {&(_ZTV8S20903C9[195]),  195,212},
  {&(_ZTV8S20903C9[209]),  209,212},
  {&(_ZTV8S20903C9[98]),  98,212},
  {&(_tg__ZTV8S20903C8__8S20903C9[3]),  3,17},
  {&(_tg__ZTV8S20903C78S20903C8__A1__8S20903C9[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C8__A1__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C9[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C8__A2__8S20903C9[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C8__A1__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C8__8S20903C9[7]),  7,12},
  {&(_tg__ZTV8S20903C6__8S20903C8__8S20903C9[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20903C9[];
extern  VTBL_ENTRY _ZTV8S20903C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C9[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20903C10D0Ev,_ZThn248_N9S20903C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20903C10D1Ev,_ZThn248_N9S20903C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20903C5D0Ev,_ZThn220_N8S20903C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S20903C5D0Ev,_ZThn356_N8S20903C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20903C5D1Ev,_ZThn220_N8S20903C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S20903C5D1Ev,_ZThn356_N8S20903C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C9D0Ev,_ZTv0_n16_N8S20903C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S20903C9D0Ev,_ZThn356_N8S20903C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C9D1Ev,_ZTv0_n16_N8S20903C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S20903C9D1Ev,_ZThn356_N8S20903C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20903C9 = {  "S20903C9", // class name
  bases_S20903C9, 25,
  &(vtc_S20903C9[0]), // expected_vtbl_contents
  &(vtt_S20903C9[0]), // expected_vtt_contents
  ABISELECT(912,424), // object size
  NSPAIRA(_ZTI8S20903C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20903C9),212, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20903C9),56, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20903C14_nt  {
  virtual void  v61(); // _ZN12S20903C14_nt3v61Ev
  ~S20903C14_nt(); // tgen
  S20903C14_nt(); // tgen
};
//SIG(-1 S20903C14_nt) C1{ v1}


void  S20903C14_nt ::v61(){vfunc_called(this, "_ZN12S20903C14_nt3v61Ev");}
S20903C14_nt ::~S20903C14_nt(){ note_dtor("S20903C14_nt", this);} // tgen
S20903C14_nt ::S20903C14_nt(){ note_ctor("S20903C14_nt", this);} // tgen

//skip512 S20903C14_nt

#else // __cplusplus

extern void _ZN12S20903C14_ntC1Ev();
extern void _ZN12S20903C14_ntD1Ev();
Name_Map name_map_S20903C14_nt[] = {
  NSPAIR(_ZN12S20903C14_ntC1Ev),
  NSPAIR(_ZN12S20903C14_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S20903C14_nt[];
extern void _ZN12S20903C14_nt3v61Ev();
static  VTBL_ENTRY vtc_S20903C14_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S20903C14_nt[0]),
  (VTBL_ENTRY)&_ZN12S20903C14_nt3v61Ev,
};
extern VTBL_ENTRY _ZTI12S20903C14_nt[];
VTBL_ENTRY *P__ZTI12S20903C14_nt = _ZTI12S20903C14_nt; 
extern  VTBL_ENTRY _ZTV12S20903C14_nt[];
Class_Descriptor cd_S20903C14_nt = {  "S20903C14_nt", // class name
  0,0,//no base classes
  &(vtc_S20903C14_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S20903C14_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S20903C14_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  S20903C13  : S20903C14_nt {
  virtual void  v62(); // _ZN9S20903C133v62Ev
  ~S20903C13(); // tgen
  S20903C13(); // tgen
};
//SIG(-1 S20903C13) C1{ BC2{ v2} v1}


void  S20903C13 ::v62(){vfunc_called(this, "_ZN9S20903C133v62Ev");}
S20903C13 ::~S20903C13(){ note_dtor("S20903C13", this);} // tgen
S20903C13 ::S20903C13(){ note_ctor("S20903C13", this);} // tgen

static void Test_S20903C13()
{
  extern Class_Descriptor cd_S20903C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20903C13, buf);
    S20903C13 *dp, &lv = *(dp=new (buf) S20903C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20903C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20903C13)");
    check_base_class_offset(lv, (S20903C14_nt*), 0, "S20903C13");
    test_class_info(&lv, &cd_S20903C13);
    dp->~S20903C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C13(Test_S20903C13, "S20903C13", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20903C13C1Ev();
extern void _ZN9S20903C13D1Ev();
Name_Map name_map_S20903C13[] = {
  NSPAIR(_ZN9S20903C13C1Ev),
  NSPAIR(_ZN9S20903C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20903C14_nt;
extern VTBL_ENTRY _ZTI12S20903C14_nt[];
extern  VTBL_ENTRY _ZTV12S20903C14_nt[];
static Base_Class bases_S20903C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20903C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20903C13[];
extern void _ZN12S20903C14_nt3v61Ev();
extern void _ZN9S20903C133v62Ev();
static  VTBL_ENTRY vtc_S20903C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20903C13[0]),
  (VTBL_ENTRY)&_ZN12S20903C14_nt3v61Ev,
  (VTBL_ENTRY)&_ZN9S20903C133v62Ev,
};
extern VTBL_ENTRY _ZTI9S20903C13[];
extern  VTBL_ENTRY _ZTV9S20903C13[];
Class_Descriptor cd_S20903C13 = {  "S20903C13", // class name
  bases_S20903C13, 1,
  &(vtc_S20903C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20903C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20903C13),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20903C15  : virtual S20903C4_nt , virtual S20903C9 , S20903C6 , S20903C7 {
  virtual  ~S20903C15(); // _ZN9S20903C15D2Ev
  virtual void  v63(); // _ZN9S20903C153v63Ev
  virtual void  v64(); // _ZN9S20903C153v64Ev
  virtual void  v65(); // _ZN9S20903C153v65Ev
  virtual void  v66(); // _ZN9S20903C153v66Ev
  virtual void  v67(); // _ZN9S20903C153v67Ev
  virtual void  v68(); // _ZN9S20903C153v68Ev
  virtual void  v69(); // _ZN9S20903C153v69Ev
  virtual void  v70(); // _ZN9S20903C153v70Ev
  virtual void  v71(); // _ZN9S20903C153v71Ev
  virtual void  v72(); // _ZN9S20903C153v72Ev
  virtual void  v73(); // _ZN9S20903C153v73Ev
  S20903C15(); // tgen
};
//SIG(-1 S20903C15) C1{ VBC2{ v12 v13 v14} VBC3{ BC4{ BC5{ BC6{ VBC7{ v15 v16 v17 v18 v19 FD} vd v20 v21 v22 v23 v24 FC7} v25 v26} BC7 VBC8{ VBC7 BC6 BC5 v27 v28 v29 v30 v31 v32 v33 Fc[8]} v34 v35 v36 v37 v38 v39 v40 Fi} BC5 BC8 BC9{ VBC10{ BC2 v41 v42 v43 v44 v45 v46 Fi[3]} VBC2 VBC7 BC11{ vd v47 v48 v49 v50 v51 FL[3]} BC4 vd v52 Fp} BC7 vd v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 FC5[3] FC5} BC5 BC6 vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11}


 S20903C15 ::~S20903C15(){ note_dtor("S20903C15", this);}
void  S20903C15 ::v63(){vfunc_called(this, "_ZN9S20903C153v63Ev");}
void  S20903C15 ::v64(){vfunc_called(this, "_ZN9S20903C153v64Ev");}
void  S20903C15 ::v65(){vfunc_called(this, "_ZN9S20903C153v65Ev");}
void  S20903C15 ::v66(){vfunc_called(this, "_ZN9S20903C153v66Ev");}
void  S20903C15 ::v67(){vfunc_called(this, "_ZN9S20903C153v67Ev");}
void  S20903C15 ::v68(){vfunc_called(this, "_ZN9S20903C153v68Ev");}
void  S20903C15 ::v69(){vfunc_called(this, "_ZN9S20903C153v69Ev");}
void  S20903C15 ::v70(){vfunc_called(this, "_ZN9S20903C153v70Ev");}
void  S20903C15 ::v71(){vfunc_called(this, "_ZN9S20903C153v71Ev");}
void  S20903C15 ::v72(){vfunc_called(this, "_ZN9S20903C153v72Ev");}
void  S20903C15 ::v73(){vfunc_called(this, "_ZN9S20903C153v73Ev");}
S20903C15 ::S20903C15(){ note_ctor("S20903C15", this);} // tgen

static void Test_S20903C15()
{
  extern Class_Descriptor cd_S20903C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(64,117)];
    init_test(&cd_S20903C15, buf);
    S20903C15 *dp, &lv = *(dp=new (buf) S20903C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,464), "sizeof(S20903C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20903C15)");
    /*is_ambiguous_... S20903C15::S20903C4_nt */ AMB_check_base_class_offset(lv, (S20903C4_nt*), ABISELECT(96,40), "S20903C15");
    /*is_ambiguous_... S20903C10::S20903C4_nt */ AMB_check_base_class_offset(lv, (S20903C4_nt*)(S20903C10*)(S20903C9*), ABISELECT(96,40), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C5*)(S20903C9*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C15::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C8*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C15::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C8*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C15::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C9*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C8*)(S20903C9*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C8*)(S20903C9*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C8*)(S20903C9*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C10::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C10*)(S20903C9*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C15::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C15::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*), ABISELECT(848,384), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C5*)(S20903C9*), ABISELECT(112,44), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C5*)(S20903C9*), ABISELECT(112,44), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C5*)(S20903C9*), ABISELECT(160,64), "S20903C15");
    /*is_ambiguous_... S20903C15::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C8*), ABISELECT(880,400), "S20903C15");
    /*is_ambiguous_... S20903C15::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(928,420), "S20903C15");
    /*is_ambiguous_... S20903C15::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C8*), ABISELECT(928,420), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C8*)(S20903C5*)(S20903C9*), ABISELECT(880,400), "S20903C15");
    check_base_class_offset(lv, (S20903C8*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(880,400), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C5*)(S20903C9*), ABISELECT(112,44), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C9*), ABISELECT(208,84), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C9*), ABISELECT(208,84), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C8*)(S20903C9*), ABISELECT(256,104), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C8*)(S20903C9*), ABISELECT(304,124), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C8*)(S20903C9*), ABISELECT(304,124), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C8*)(S20903C9*), ABISELECT(256,104), "S20903C15");
    check_base_class_offset(lv, (S20903C4_nt*)(S20903C11*), ABISELECT(984,448), "S20903C15");
    check_base_class_offset(lv, (S20903C11*)(S20903C10*)(S20903C9*), ABISELECT(984,448), "S20903C15");
    check_base_class_offset(lv, (S20903C12*)(S20903C10*)(S20903C9*), ABISELECT(368,152), "S20903C15");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(400,180), "S20903C15");
    /*is_ambiguous_... S20903C5::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(400,180), "S20903C15");
    /*is_ambiguous_... S20903C5::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(448,200), "S20903C15");
    check_base_class_offset(lv, (S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(400,180), "S20903C15");
    check_base_class_offset(lv, (S20903C10*)(S20903C9*), ABISELECT(368,152), "S20903C15");
    /*is_ambiguous_... S20903C9::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C9*), ABISELECT(496,224), "S20903C15");
    check_base_class_offset(lv, (S20903C9*), ABISELECT(112,44), "S20903C15");
    /*is_ambiguous_... S20903C15::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*), 0, "S20903C15");
    /*is_ambiguous_... S20903C15::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C6*), 0, "S20903C15");
    /*is_ambiguous_... S20903C15::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C7*), ABISELECT(48,20), "S20903C15");
    test_class_info(&lv, &cd_S20903C15);
    dp->~S20903C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C15(Test_S20903C15, "S20903C15", ABISELECT(1008,464));

#else // __cplusplus

extern void _ZN9S20903C15C1Ev();
extern void _ZN9S20903C15D2Ev();
Name_Map name_map_S20903C15[] = {
  NSPAIR(_ZN9S20903C15C1Ev),
  NSPAIR(_ZN9S20903C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20903C4_nt;
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C8;
extern VTBL_ENTRY _ZTI8S20903C8[];
extern  VTBL_ENTRY _ZTV8S20903C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C8[];
extern Class_Descriptor cd_S20903C5;
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C8;
extern VTBL_ENTRY _ZTI8S20903C8[];
extern  VTBL_ENTRY _ZTV8S20903C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C8[];
extern Class_Descriptor cd_S20903C4_nt;
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
extern Class_Descriptor cd_S20903C11;
extern VTBL_ENTRY _ZTI9S20903C11[];
extern  VTBL_ENTRY _ZTV9S20903C11[];
extern Class_Descriptor cd_S20903C12;
extern VTBL_ENTRY _ZTI9S20903C12[];
extern  VTBL_ENTRY _ZTV9S20903C12[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C5;
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
extern Class_Descriptor cd_S20903C10;
extern VTBL_ENTRY _ZTI9S20903C10[];
extern  VTBL_ENTRY _ZTV9S20903C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20903C10[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C9;
extern VTBL_ENTRY _ZTI8S20903C9[];
extern  VTBL_ENTRY _ZTV8S20903C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C9[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
static Base_Class bases_S20903C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20903C4_nt,    ABISELECT(96,40), //bcp->offset
    37, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20903C3,    ABISELECT(848,384), //bcp->offset
    216, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20903C7,    ABISELECT(112,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
    9, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(112,44), //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
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(160,64), //bcp->offset
    120, //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
    11, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(880,400), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(928,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(928,420), //bcp->offset
    260, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20903C8,    ABISELECT(880,400), //bcp->offset
    228, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20903C5,    ABISELECT(112,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(208,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(208,84), //bcp->offset
    127, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(256,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(304,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(304,124), //bcp->offset
    156, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20903C8,    ABISELECT(256,104), //bcp->offset
    139, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20903C4_nt,    ABISELECT(984,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20903C11,    ABISELECT(984,448), //bcp->offset
    272, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20903C12,    ABISELECT(368,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(400,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(400,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(448,200), //bcp->offset
    202, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20903C5,    ABISELECT(400,180), //bcp->offset
    182, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20903C10,    ABISELECT(368,152), //bcp->offset
    168, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(496,224), //bcp->offset
    209, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20903C9,    ABISELECT(112,44), //bcp->offset
    45, //bcp->virtual_function_table_offset
    49, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20903C7,    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
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20903C6,    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
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20903C7,    ABISELECT(48,20), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20903C15[];
extern void _ZN9S20903C15D1Ev();
extern void _ZN9S20903C15D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN9S20903C153v63Ev();
extern void _ZN9S20903C153v64Ev();
extern void _ZN9S20903C153v65Ev();
extern void _ZN9S20903C153v66Ev();
extern void _ZN9S20903C153v67Ev();
extern void _ZN9S20903C153v68Ev();
extern void _ZN9S20903C153v69Ev();
extern void _ZN9S20903C153v70Ev();
extern void _ZN9S20903C153v71Ev();
extern void _ZN9S20903C153v72Ev();
extern void _ZN9S20903C153v73Ev();
extern void ABISELECT(_ZThn48_N9S20903C15D1Ev,_ZThn20_N9S20903C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S20903C15D0Ev,_ZThn20_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void ABISELECT(_ZTv0_n56_N9S20903C15D1Ev,_ZTv0_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S20903C15D1Ev,_ZThn44_N9S20903C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20903C15D0Ev,_ZTv0_n28_N9S20903C15D0Ev)();
extern void ABISELECT(_ZThn112_N9S20903C15D0Ev,_ZThn44_N9S20903C15D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C93v51Ev();
extern void _ZN8S20903C93v52Ev();
extern void _ZN8S20903C93v53Ev();
extern void _ZN8S20903C93v54Ev();
extern void _ZN8S20903C93v55Ev();
extern void _ZN8S20903C93v56Ev();
extern void _ZN8S20903C93v57Ev();
extern void _ZN8S20903C93v58Ev();
extern void _ZN8S20903C93v59Ev();
extern void _ZN8S20903C93v60Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZTvn96_n56_N9S20903C15D1Ev,_ZTvn40_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn96_n56_N9S20903C15D0Ev,_ZTvn40_n28_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void ABISELECT(_ZTvn144_n56_N9S20903C15D1Ev,_ZTvn60_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn144_n56_N9S20903C15D0Ev,_ZTvn60_n28_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
extern void ABISELECT(_ZTvn192_n56_N9S20903C15D1Ev,_ZTvn80_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn192_n56_N9S20903C15D0Ev,_ZTvn80_n28_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void ABISELECT(_ZTvn256_n56_N9S20903C15D1Ev,_ZTvn108_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N9S20903C15D0Ev,_ZTvn108_n28_N9S20903C15D0Ev)();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
extern void ABISELECT(_ZTvn288_n56_N9S20903C15D1Ev,_ZTvn136_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn288_n56_N9S20903C15D0Ev,_ZTvn136_n28_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZTv0_n32_N9S20903C15D1Ev,_ZTv0_n16_N9S20903C15D1Ev)();
extern void ABISELECT(_ZThn880_N9S20903C15D1Ev,_ZThn400_N9S20903C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20903C15D0Ev,_ZTv0_n16_N9S20903C15D0Ev)();
extern void ABISELECT(_ZThn880_N9S20903C15D0Ev,_ZThn400_N9S20903C15D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
extern void ABISELECT(_ZTvn48_n32_N9S20903C15D1Ev,_ZTvn20_n16_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N9S20903C15D0Ev,_ZTvn20_n16_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
static  VTBL_ENTRY vtc_S20903C15[] = {
  ABISELECT(984,448),
  ABISELECT(880,400),
  ABISELECT(112,44),
  ABISELECT(96,40),
  ABISELECT(848,384),
  0,
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN9S20903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20903C15D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v66Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v67Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v68Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v69Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v70Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v71Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v72Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v73Ev,
  ABISELECT(800,364),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20903C15D1Ev,_ZThn20_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20903C15D0Ev,_ZThn20_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-44),
  ABISELECT(-16,-4),
  ABISELECT(872,404),
  ABISELECT(768,356),
  ABISELECT(736,340),
  ABISELECT(-112,-44),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20903C15D1Ev,_ZTv0_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20903C15D0Ev,_ZTv0_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v51Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v52Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v53Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v54Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v55Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v56Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v57Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v58Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v59Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v60Ev,
  ABISELECT(-160,-64),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(640,300),
  ABISELECT(-208,-84),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n56_N9S20903C15D1Ev,_ZTvn40_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n56_N9S20903C15D0Ev,_ZTvn40_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  ABISELECT(592,280),
  ABISELECT(-256,-104),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n56_N9S20903C15D1Ev,_ZTvn60_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n56_N9S20903C15D0Ev,_ZTvn60_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
  ABISELECT(544,260),
  ABISELECT(-304,-124),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n56_N9S20903C15D1Ev,_ZTvn80_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n56_N9S20903C15D0Ev,_ZTvn80_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  ABISELECT(512,248),
  ABISELECT(480,232),
  ABISELECT(-272,-112),
  ABISELECT(616,296),
  ABISELECT(-368,-152),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N9S20903C15D1Ev,_ZTvn108_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N9S20903C15D0Ev,_ZTvn108_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
  ABISELECT(480,220),
  ABISELECT(448,204),
  ABISELECT(-400,-180),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn288_n56_N9S20903C15D1Ev,_ZTvn136_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn288_n56_N9S20903C15D0Ev,_ZTvn136_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  ABISELECT(-448,-200),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(-496,-224),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-848,-384),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-880,-400),
  ABISELECT(-32,-16),
  ABISELECT(-880,-400),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C15D1Ev,_ZTv0_n16_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C15D0Ev,_ZTv0_n16_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
  ABISELECT(-80,-36),
  ABISELECT(-928,-420),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C15D1Ev,_ZTvn20_n16_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C15D0Ev,_ZTvn20_n16_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-984,-448),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
};
extern VTBL_ENTRY _ZTV9S20903C15[];
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__A5__9S20903C15[] = {
  ABISELECT(848,384),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C6__A7__9S20903C15[] = {
  ABISELECT(848,384),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C6__A7__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-848,-384),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C6__A5__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-848,-384),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C7__A8__9S20903C15[] = {
  ABISELECT(800,364),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C7__A8__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-800,-364),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C9D1Ev();
extern void _ZN8S20903C9D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C93v51Ev();
extern void _ZN8S20903C93v52Ev();
extern void _ZN8S20903C93v53Ev();
extern void _ZN8S20903C93v54Ev();
extern void _ZN8S20903C93v55Ev();
extern void _ZN8S20903C93v56Ev();
extern void _ZN8S20903C93v57Ev();
extern void _ZN8S20903C93v58Ev();
extern void _ZN8S20903C93v59Ev();
extern void _ZN8S20903C93v60Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C9__9S20903C15[] = {
  ABISELECT(-16,-4),
  ABISELECT(872,404),
  ABISELECT(768,356),
  ABISELECT(736,340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN8S20903C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v51Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v52Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v53Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v54Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v55Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v56Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v57Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v58Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v59Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v60Ev,
};
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C58S20903C9__9S20903C15[] = {
  ABISELECT(768,356),
  ABISELECT(736,340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C58S20903C9__9S20903C15[] = {
  ABISELECT(736,340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C58S20903C9__9S20903C15[] = {
  ABISELECT(736,340),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C58S20903C9__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-340),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C58S20903C9__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-340),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C58S20903C9__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-340),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZThn768_N8S20903C5D1Ev,_ZThn356_N8S20903C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void ABISELECT(_ZThn768_N8S20903C5D0Ev,_ZThn356_N8S20903C5D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C58S20903C9__9S20903C15[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-768,-356),
  ABISELECT(-32,-16),
  ABISELECT(-768,-356),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C58S20903C9__9S20903C15[] = {
  ABISELECT(-80,-36),
  ABISELECT(-816,-376),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C9__A2__9S20903C15[] = {
  ABISELECT(640,300),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C9__A3__9S20903C15[] = {
  ABISELECT(640,300),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C9__A3__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-300),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C9__A2__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-300),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C8D1Ev();
extern void _ZN8S20903C8D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C88S20903C9__A1__9S20903C15[] = {
  ABISELECT(592,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C88S20903C9__A4__9S20903C15[] = {
  ABISELECT(592,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C88S20903C9__A4__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-280),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C88S20903C9__A3__9S20903C15[] = {
  ABISELECT(544,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C88S20903C9__A5__9S20903C15[] = {
  ABISELECT(544,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C88S20903C9__A5__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-260),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C88S20903C9__A3__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-260),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C88S20903C9__A1__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-280),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C88S20903C9__A1__9S20903C15[] = {
  ABISELECT(544,260),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN9S20903C10D1Ev();
extern void _ZN9S20903C10D0Ev();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C108S20903C9__9S20903C15[] = {
  ABISELECT(512,248),
  ABISELECT(480,232),
  ABISELECT(-272,-112),
  ABISELECT(616,296),
  0,
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN9S20903C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20903C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
};
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C59S20903C108S20903C9__A1__9S20903C15[] = {
  ABISELECT(480,220),
  ABISELECT(448,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C59S20903C108S20903C9__A4__9S20903C15[] = {
  ABISELECT(448,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C59S20903C108S20903C9__A6__9S20903C15[] = {
  ABISELECT(448,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C59S20903C108S20903C9__A6__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-204),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C59S20903C108S20903C9__A4__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-204),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C59S20903C108S20903C9__A1__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-204),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZThn480_N8S20903C5D1Ev,_ZThn220_N8S20903C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void ABISELECT(_ZThn480_N8S20903C5D0Ev,_ZThn220_N8S20903C5D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C59S20903C108S20903C9__A1__9S20903C15[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-220),
  ABISELECT(-32,-16),
  ABISELECT(-480,-220),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C59S20903C108S20903C9__A1__9S20903C15[] = {
  ABISELECT(-80,-36),
  ABISELECT(-528,-240),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C11__9S20903C108S20903C9__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-616,-296),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20903C4_nt__A1__9S20903C108S20903C9__9S20903C15[] = {
  0,
  0,
  0,
  ABISELECT(272,112),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__9S20903C108S20903C9__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-232),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn32_N9S20903C10D1Ev,_ZThn28_N9S20903C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S20903C10D0Ev,_ZThn28_N9S20903C10D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C5__9S20903C108S20903C9__9S20903C15[] = {
  ABISELECT(480,220),
  ABISELECT(448,204),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20903C10D1Ev,_ZThn28_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20903C10D0Ev,_ZThn28_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev)();
extern void ABISELECT(_ZThn512_N9S20903C10D1Ev,_ZThn248_N9S20903C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev)();
extern void ABISELECT(_ZThn512_N9S20903C10D0Ev,_ZThn248_N9S20903C10D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__9S20903C108S20903C9__9S20903C15[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-512,-248),
  ABISELECT(-32,-16),
  ABISELECT(-512,-248),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N9S20903C10D1Ev,_ZTvn20_n16_N9S20903C10D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N9S20903C10D0Ev,_ZTvn20_n16_N9S20903C10D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__9S20903C108S20903C9__9S20903C15[] = {
  ABISELECT(-80,-36),
  ABISELECT(-560,-268),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C10D1Ev,_ZTvn20_n16_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C10D0Ev,_ZTvn20_n16_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C9__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-340),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C9D1Ev,_ZTv0_n16_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn768_N8S20903C9D1Ev,_ZThn356_N8S20903C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C9D0Ev,_ZTv0_n16_N8S20903C9D0Ev)();
extern void ABISELECT(_ZThn768_N8S20903C9D0Ev,_ZThn356_N8S20903C9D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C9__9S20903C15[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-768,-356),
  ABISELECT(-32,-16),
  ABISELECT(-768,-356),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C9D1Ev,_ZTv0_n16_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C9D0Ev,_ZTv0_n16_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C9D1Ev,_ZTvn20_n16_N8S20903C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C9D0Ev,_ZTvn20_n16_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C9__9S20903C15[] = {
  ABISELECT(-80,-36),
  ABISELECT(-816,-376),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C9D1Ev,_ZTvn20_n16_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C9D0Ev,_ZTvn20_n16_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZThn96_N8S20903C9D1Ev,_ZThn40_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S20903C9D0Ev,_ZThn40_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__A2__8S20903C9__9S20903C15[] = {
  ABISELECT(640,300),
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20903C9D1Ev,_ZThn40_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20903C9D0Ev,_ZThn40_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZThn144_N8S20903C9D1Ev,_ZThn60_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S20903C9D0Ev,_ZThn60_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__A__8S20903C9__9S20903C15[] = {
  ABISELECT(592,280),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20903C9D1Ev,_ZThn60_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20903C9D0Ev,_ZThn60_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZThn192_N8S20903C9D1Ev,_ZThn80_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S20903C9D0Ev,_ZThn80_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A3__8S20903C9__9S20903C15[] = {
  ABISELECT(544,260),
  ABISELECT(-192,-80),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S20903C9D1Ev,_ZThn80_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S20903C9D0Ev,_ZThn80_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZThn256_N8S20903C9D1Ev,_ZThn108_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S20903C9D0Ev,_ZThn108_N8S20903C9D0Ev)();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C10__8S20903C9__9S20903C15[] = {
  ABISELECT(512,248),
  ABISELECT(480,232),
  ABISELECT(-272,-112),
  ABISELECT(616,296),
  ABISELECT(-256,-108),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S20903C9D1Ev,_ZThn108_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S20903C9D0Ev,_ZThn108_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C11__8S20903C9__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-872,-404),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20903C4_nt__A1__8S20903C9__9S20903C15[] = {
  0,
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
};
extern void ABISELECT(_ZThn288_N8S20903C9D1Ev,_ZThn136_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn288_N8S20903C9D0Ev,_ZThn136_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C59S20903C10__A1__8S20903C9__9S20903C15[] = {
  ABISELECT(480,220),
  ABISELECT(448,204),
  ABISELECT(-288,-136),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S20903C9D1Ev,_ZThn136_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S20903C9D0Ev,_ZThn136_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C8D1Ev();
extern void _ZN8S20903C8D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__9S20903C15[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C8__A1__9S20903C15[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C8__A1__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__9S20903C15[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C8__A2__9S20903C15[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C8__A1__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C8__9S20903C15[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C8__9S20903C15[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
static  VTT_ENTRY vtt_S20903C15[] = {
  {&(_ZTV9S20903C15[7]),  7,292},
  {&(_tg__ZTV8S20903C6__A5__9S20903C15[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C6__A7__9S20903C15[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C6__A7__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C6__A5__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C7__A8__9S20903C15[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C7__A8__9S20903C15[7]),  7,12},
  {&(_ZTV9S20903C15[42]),  42,292},
  {&(_ZTV9S20903C15[94]),  94,292},
  {&(_ZTV9S20903C15[223]),  223,292},
  {&(_ZTV9S20903C15[122]),  122,292},
  {&(_ZTV9S20903C15[246]),  246,292},
  {&(_ZTV9S20903C15[263]),  263,292},
  {&(_ZTV9S20903C15[130]),  130,292},
  {&(_ZTV9S20903C15[142]),  142,292},
  {&(_ZTV9S20903C15[159]),  159,292},
  {&(_ZTV9S20903C15[174]),  174,292},
  {&(_ZTV9S20903C15[283]),  283,292},
  {&(_ZTV9S20903C15[186]),  186,292},
  {&(_ZTV9S20903C15[204]),  204,292},
  {&(_ZTV9S20903C15[211]),  211,292},
  {&(_ZTV9S20903C15[30]),  30,292},
  {&(_tg__ZTV8S20903C9__9S20903C15[6]),  6,32},
  {&(_tg__ZTV8S20903C58S20903C9__9S20903C15[4]),  4,20},
  {&(_tg__ZTV8S20903C68S20903C58S20903C9__9S20903C15[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C58S20903C9__9S20903C15[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C58S20903C9__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C58S20903C9__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C58S20903C9__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C58S20903C9__9S20903C15[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C58S20903C9__9S20903C15[3]),  3,12},
  {&(_tg__ZTV8S20903C68S20903C9__A2__9S20903C15[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C9__A3__9S20903C15[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C9__A3__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C9__A2__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C88S20903C9__A1__9S20903C15[3]),  3,17},
  {&(_tg__ZTV8S20903C78S20903C88S20903C9__A4__9S20903C15[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C88S20903C9__A4__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C68S20903C88S20903C9__A3__9S20903C15[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C88S20903C9__A5__9S20903C15[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C88S20903C9__A5__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C88S20903C9__A3__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C88S20903C9__A1__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C6__8S20903C88S20903C9__A1__9S20903C15[3]),  3,12},
  {&(_tg__ZTV9S20903C108S20903C9__9S20903C15[6]),  6,14},
  {&(_tg__ZTV8S20903C59S20903C108S20903C9__A1__9S20903C15[4]),  4,20},
  {&(_tg__ZTV8S20903C68S20903C59S20903C108S20903C9__A4__9S20903C15[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C59S20903C108S20903C9__A6__9S20903C15[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C59S20903C108S20903C9__A6__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C59S20903C108S20903C9__A4__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C59S20903C108S20903C9__A1__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C59S20903C108S20903C9__A1__9S20903C15[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C59S20903C108S20903C9__A1__9S20903C15[3]),  3,12},
  {&(_tg__ZTV9S20903C11__9S20903C108S20903C9__9S20903C15[11]),  11,20},
  {&(_tg__ZTV11S20903C4_nt__A1__9S20903C108S20903C9__9S20903C15[5]),  5,8},
  {&(_tg__ZTV8S20903C3__9S20903C108S20903C9__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C5__9S20903C108S20903C9__9S20903C15[4]),  4,20},
  {&(_tg__ZTV8S20903C8__9S20903C108S20903C9__9S20903C15[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__9S20903C108S20903C9__9S20903C15[3]),  3,12},
  {&(_tg__ZTV8S20903C3__8S20903C9__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C9__9S20903C15[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C9__9S20903C15[3]),  3,12},
  {&(_tg__ZTV8S20903C6__A2__8S20903C9__9S20903C15[3]),  3,12},
  {&(_tg__ZTV8S20903C8__A__8S20903C9__9S20903C15[3]),  3,17},
  {&(_tg__ZTV8S20903C68S20903C8__A3__8S20903C9__9S20903C15[3]),  3,12},
  {&(_tg__ZTV9S20903C10__8S20903C9__9S20903C15[6]),  6,14},
  {&(_tg__ZTV9S20903C11__8S20903C9__9S20903C15[11]),  11,20},
  {&(_tg__ZTV11S20903C4_nt__A1__8S20903C9__9S20903C15[5]),  5,8},
  {&(_tg__ZTV8S20903C59S20903C10__A1__8S20903C9__9S20903C15[4]),  4,20},
  {&(_tg__ZTV8S20903C8__9S20903C15[3]),  3,17},
  {&(_tg__ZTV8S20903C78S20903C8__A1__9S20903C15[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C8__A1__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C68S20903C8__A1__9S20903C15[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C8__A2__9S20903C15[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C8__A1__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C8__9S20903C15[7]),  7,12},
  {&(_tg__ZTV8S20903C6__8S20903C8__9S20903C15[3]),  3,12},
};
extern VTBL_ENTRY _ZTI9S20903C15[];
extern  VTBL_ENTRY _ZTV9S20903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20903C15[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C9D0Ev,_ZTv0_n16_N8S20903C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S20903C9D0Ev,_ZThn356_N8S20903C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C9D1Ev,_ZTv0_n16_N8S20903C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S20903C9D1Ev,_ZThn356_N8S20903C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20903C10D0Ev,_ZThn248_N9S20903C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20903C10D1Ev,_ZThn248_N9S20903C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20903C5D0Ev,_ZThn220_N8S20903C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S20903C5D0Ev,_ZThn356_N8S20903C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20903C5D1Ev,_ZThn220_N8S20903C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S20903C5D1Ev,_ZThn356_N8S20903C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C15D0Ev,_ZTv0_n16_N9S20903C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn880_N9S20903C15D0Ev,_ZThn400_N9S20903C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C15D1Ev,_ZTv0_n16_N9S20903C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn880_N9S20903C15D1Ev,_ZThn400_N9S20903C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20903C15D0Ev,_ZTv0_n28_N9S20903C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20903C15D0Ev,_ZThn44_N9S20903C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20903C15D1Ev,_ZTv0_n28_N9S20903C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20903C15D1Ev,_ZThn44_N9S20903C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20903C15 = {  "S20903C15", // class name
  bases_S20903C15, 29,
  &(vtc_S20903C15[0]), // expected_vtbl_contents
  &(vtt_S20903C15[0]), // expected_vtt_contents
  ABISELECT(1008,464), // object size
  NSPAIRA(_ZTI9S20903C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20903C15),292, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20903C15),78, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20903C1  : virtual S20903C2 , S20903C9 , S20903C13 , S20903C15 {
  virtual  ~S20903C1(); // _ZN8S20903C1D2Ev
  virtual void  v1(); // _ZN8S20903C12v1Ev
  virtual void  v2(); // _ZN8S20903C12v2Ev
  virtual void  v3(); // _ZN8S20903C12v3Ev
  virtual void  v4(); // _ZN8S20903C12v4Ev
  virtual void  v5(); // _ZN8S20903C12v5Ev
  virtual void  v6(); // _ZN8S20903C12v6Ev
  S20903C1(); // tgen
};
//SIG(1 S20903C1) C1{ VBC2{ VBC3{ v7 v8 v9 v10 v11 FD} BC4{ v12 v13 v14} VBC5{ BC6{ BC7{ VBC3 vd v15 v16 v17 v18 v19 FC3} v20 v21} BC3 VBC8{ VBC3 BC7 BC6 v22 v23 v24 v25 v26 v27 v28 Fc[8]} v29 v30 v31 v32 v33 v34 v35 Fi} vd v36 v37 v38} BC9{ BC5 BC6 BC8 BC10{ VBC11{ BC4 v39 v40 v41 v42 v43 v44 Fi[3]} VBC4 VBC3 BC12{ vd v45 v46 v47 v48 v49 FL[3]} BC5 vd v50 Fp} BC3 vd v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 FC6[3] FC6} BC13{ BC14{ v61} v62} BC15{ VBC4 VBC9 BC6 BC7 vd v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73} vd v1 v2 v3 v4 v5 v6}


 S20903C1 ::~S20903C1(){ note_dtor("S20903C1", this);}
void  S20903C1 ::v1(){vfunc_called(this, "_ZN8S20903C12v1Ev");}
void  S20903C1 ::v2(){vfunc_called(this, "_ZN8S20903C12v2Ev");}
void  S20903C1 ::v3(){vfunc_called(this, "_ZN8S20903C12v3Ev");}
void  S20903C1 ::v4(){vfunc_called(this, "_ZN8S20903C12v4Ev");}
void  S20903C1 ::v5(){vfunc_called(this, "_ZN8S20903C12v5Ev");}
void  S20903C1 ::v6(){vfunc_called(this, "_ZN8S20903C12v6Ev");}
S20903C1 ::S20903C1(){ note_ctor("S20903C1", this);} // tgen

static void Test_S20903C1()
{
  extern Class_Descriptor cd_S20903C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(118,214)];
    init_test(&cd_S20903C1, buf);
    S20903C1 *dp, &lv = *(dp=new (buf) S20903C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1872,852), "sizeof(S20903C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20903C1)");
    /*is_ambiguous_... S20903C2::S20903C3 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C2*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C5*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C8*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C8*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C5*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C8*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C8*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C8*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C10*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C5*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C8*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C8*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C8*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C10*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C15::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C6*)(S20903C15*), ABISELECT(864,388), "S20903C1");
    /*is_ambiguous_... S20903C15::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C7*)(S20903C15*), ABISELECT(864,388), "S20903C1");
    check_base_class_offset(lv, (S20903C4_nt*)(S20903C2*), ABISELECT(848,384), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C5*), ABISELECT(896,404), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C5*), ABISELECT(896,404), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C5*), ABISELECT(944,424), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C8*), ABISELECT(992,444), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C8*), ABISELECT(1040,464), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C8 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C8*), ABISELECT(1040,464), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C5 */ AMB_check_base_class_offset(lv, (S20903C8*)(S20903C5*), ABISELECT(992,444), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C8*)(S20903C5*)(S20903C9*), ABISELECT(992,444), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C8*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(992,444), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C8*)(S20903C5*)(S20903C9*), ABISELECT(992,444), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C8*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(992,444), "S20903C1");
    check_base_class_offset(lv, (S20903C5*)(S20903C2*), ABISELECT(896,404), "S20903C1");
    check_base_class_offset(lv, (S20903C2*), ABISELECT(848,384), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C5*)(S20903C9*), 0, "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C5*)(S20903C9*), 0, "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C5*)(S20903C9*), ABISELECT(48,20), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C5*)(S20903C9*), 0, "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C9*), ABISELECT(96,40), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C9*), ABISELECT(96,40), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C8*)(S20903C9*), ABISELECT(144,60), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C8*)(S20903C9*), ABISELECT(192,80), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C8*)(S20903C9*), ABISELECT(192,80), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C8*)(S20903C9*), ABISELECT(144,60), "S20903C1");
    check_base_class_offset(lv, (S20903C4_nt*)(S20903C11*), ABISELECT(1096,492), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C11*)(S20903C10*)(S20903C9*), ABISELECT(1096,492), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C11*)(S20903C10*)(S20903C9*), ABISELECT(1096,492), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C4_nt*)(S20903C10*)(S20903C9*), ABISELECT(1120,508), "S20903C1");
    /*is_ambiguous_... S20903C15::S20903C4_nt */ AMB_check_base_class_offset(lv, (S20903C4_nt*)(S20903C15*), ABISELECT(1120,508), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C4_nt*)(S20903C10*)(S20903C9*), ABISELECT(1120,508), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C12*)(S20903C10*)(S20903C9*), ABISELECT(256,108), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(288,136), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(288,136), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(336,156), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(288,136), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C10*)(S20903C9*), ABISELECT(256,108), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C9*), ABISELECT(384,180), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C9*), 0, "S20903C1");
    check_base_class_offset(lv, (S20903C14_nt*)(S20903C13*), ABISELECT(736,340), "S20903C1");
    check_base_class_offset(lv, (S20903C13*), ABISELECT(736,340), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C5*)(S20903C9*), ABISELECT(1136,512), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C5*)(S20903C9*), ABISELECT(1136,512), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C5*)(S20903C9*), ABISELECT(1184,532), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C5*)(S20903C9*), ABISELECT(1136,512), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C9*), ABISELECT(1232,552), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C9*), ABISELECT(1232,552), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C8*)(S20903C9*), ABISELECT(1280,572), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C8*)(S20903C9*), ABISELECT(1328,592), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C8*)(S20903C9*), ABISELECT(1328,592), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C8*)(S20903C9*), ABISELECT(1280,572), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C12*)(S20903C10*)(S20903C9*), ABISELECT(1392,620), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(1424,648), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(1424,648), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(1472,668), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C5*)(S20903C10*)(S20903C9*), ABISELECT(1424,648), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C10*)(S20903C9*), ABISELECT(1392,620), "S20903C1");
    /*is_ambiguous_... S20903C1::S20903C9 */ AMB_check_base_class_offset(lv, (S20903C3*)(S20903C9*), ABISELECT(1520,692), "S20903C1");
    check_base_class_offset(lv, (S20903C9*)(S20903C15*), ABISELECT(1136,512), "S20903C1");
    /*is_ambiguous_... S20903C15::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C6*)(S20903C15*), ABISELECT(752,344), "S20903C1");
    /*is_ambiguous_... S20903C15::S20903C6 */ AMB_check_base_class_offset(lv, (S20903C6*)(S20903C15*), ABISELECT(752,344), "S20903C1");
    /*is_ambiguous_... S20903C15::S20903C7 */ AMB_check_base_class_offset(lv, (S20903C7*)(S20903C15*), ABISELECT(800,364), "S20903C1");
    check_base_class_offset(lv, (S20903C15*), ABISELECT(752,344), "S20903C1");
    test_class_info(&lv, &cd_S20903C1);
    dp->~S20903C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20903C1(Test_S20903C1, "S20903C1", ABISELECT(1872,852));

#else // __cplusplus

extern void _ZN8S20903C1C1Ev();
extern void _ZN8S20903C1D2Ev();
Name_Map name_map_S20903C1[] = {
  NSPAIR(_ZN8S20903C1C1Ev),
  NSPAIR(_ZN8S20903C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C4_nt;
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C8;
extern VTBL_ENTRY _ZTI8S20903C8[];
extern  VTBL_ENTRY _ZTV8S20903C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C8[];
extern Class_Descriptor cd_S20903C5;
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
extern Class_Descriptor cd_S20903C2;
extern VTBL_ENTRY _ZTI8S20903C2[];
extern  VTBL_ENTRY _ZTV8S20903C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C2[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C5;
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C8;
extern VTBL_ENTRY _ZTI8S20903C8[];
extern  VTBL_ENTRY _ZTV8S20903C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C8[];
extern Class_Descriptor cd_S20903C4_nt;
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
extern Class_Descriptor cd_S20903C11;
extern VTBL_ENTRY _ZTI9S20903C11[];
extern  VTBL_ENTRY _ZTV9S20903C11[];
extern Class_Descriptor cd_S20903C4_nt;
extern VTBL_ENTRY _ZTI11S20903C4_nt[];
extern  VTBL_ENTRY _ZTV11S20903C4_nt[];
extern Class_Descriptor cd_S20903C12;
extern VTBL_ENTRY _ZTI9S20903C12[];
extern  VTBL_ENTRY _ZTV9S20903C12[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C5;
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
extern Class_Descriptor cd_S20903C10;
extern VTBL_ENTRY _ZTI9S20903C10[];
extern  VTBL_ENTRY _ZTV9S20903C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20903C10[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C9;
extern VTBL_ENTRY _ZTI8S20903C9[];
extern  VTBL_ENTRY _ZTV8S20903C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C9[];
extern Class_Descriptor cd_S20903C14_nt;
extern VTBL_ENTRY _ZTI12S20903C14_nt[];
extern  VTBL_ENTRY _ZTV12S20903C14_nt[];
extern Class_Descriptor cd_S20903C13;
extern VTBL_ENTRY _ZTI9S20903C13[];
extern  VTBL_ENTRY _ZTV9S20903C13[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C5;
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C8;
extern VTBL_ENTRY _ZTI8S20903C8[];
extern  VTBL_ENTRY _ZTV8S20903C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C8[];
extern Class_Descriptor cd_S20903C12;
extern VTBL_ENTRY _ZTI9S20903C12[];
extern  VTBL_ENTRY _ZTV9S20903C12[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C5;
extern VTBL_ENTRY _ZTI8S20903C5[];
extern  VTBL_ENTRY _ZTV8S20903C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C5[];
extern Class_Descriptor cd_S20903C10;
extern VTBL_ENTRY _ZTI9S20903C10[];
extern  VTBL_ENTRY _ZTV9S20903C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20903C10[];
extern Class_Descriptor cd_S20903C3;
extern VTBL_ENTRY _ZTI8S20903C3[];
extern  VTBL_ENTRY _ZTV8S20903C3[];
extern Class_Descriptor cd_S20903C9;
extern VTBL_ENTRY _ZTI8S20903C9[];
extern  VTBL_ENTRY _ZTV8S20903C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C9[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C6;
extern VTBL_ENTRY _ZTI8S20903C6[];
extern  VTBL_ENTRY _ZTV8S20903C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C6[];
extern Class_Descriptor cd_S20903C7;
extern VTBL_ENTRY _ZTI8S20903C7[];
extern  VTBL_ENTRY _ZTV8S20903C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C7[];
extern Class_Descriptor cd_S20903C15;
extern VTBL_ENTRY _ZTI9S20903C15[];
extern  VTBL_ENTRY _ZTV9S20903C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20903C15[];
static Base_Class bases_S20903C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20903C3,    ABISELECT(864,388), //bcp->offset
    198, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20903C4_nt,    ABISELECT(848,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(896,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(896,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(944,424), //bcp->offset
    250, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(992,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(1040,464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(1040,464), //bcp->offset
    289, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20903C8,    ABISELECT(992,444), //bcp->offset
    257, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20903C5,    ABISELECT(896,404), //bcp->offset
    210, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20903C2,    ABISELECT(848,384), //bcp->offset
    178, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20903C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20903C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(48,20), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20903C5,    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
    36, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(96,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(96,40), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(144,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(192,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(192,80), //bcp->offset
    77, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20903C8,    ABISELECT(144,60), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20903C4_nt,    ABISELECT(1096,492), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20903C11,    ABISELECT(1096,492), //bcp->offset
    301, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20903C4_nt,    ABISELECT(1120,508), //bcp->offset
    321, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20903C12,    ABISELECT(256,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
    43, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(288,136), //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
    44, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(288,136), //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
    45, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(336,156), //bcp->offset
    123, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S20903C5,    ABISELECT(288,136), //bcp->offset
    103, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20903C10,    ABISELECT(256,108), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(384,180), //bcp->offset
    130, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20903C9,    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
    50, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20903C14_nt,    ABISELECT(736,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20903C13,    ABISELECT(736,340), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20903C7,    ABISELECT(1136,512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(1136,512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(1184,532), //bcp->offset
    404, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20903C5,    ABISELECT(1136,512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(1232,552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(1232,552), //bcp->offset
    411, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(1280,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(1328,592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(1328,592), //bcp->offset
    440, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20903C8,    ABISELECT(1280,572), //bcp->offset
    423, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20903C12,    ABISELECT(1392,620), //bcp->offset
    -1, //bcp->virtual_function_table_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
    49, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(1424,648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(1424,648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(1472,668), //bcp->offset
    486, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20903C5,    ABISELECT(1424,648), //bcp->offset
    466, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20903C10,    ABISELECT(1392,620), //bcp->offset
    452, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20903C3,    ABISELECT(1520,692), //bcp->offset
    493, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20903C9,    ABISELECT(1136,512), //bcp->offset
    329, //bcp->virtual_function_table_offset
    49, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    55, //immediately_derived
  0, 1},
  {&cd_S20903C7,    ABISELECT(752,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S20903C6,    ABISELECT(752,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20903C7,    ABISELECT(800,364), //bcp->offset
    168, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20903C15,    ABISELECT(752,344), //bcp->offset
    141, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20903C1[];
extern void _ZN8S20903C1D1Ev();
extern void _ZN8S20903C1D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C93v51Ev();
extern void _ZN8S20903C93v52Ev();
extern void _ZN8S20903C93v53Ev();
extern void _ZN8S20903C93v54Ev();
extern void _ZN8S20903C93v55Ev();
extern void _ZN8S20903C93v56Ev();
extern void _ZN8S20903C93v57Ev();
extern void _ZN8S20903C93v58Ev();
extern void _ZN8S20903C93v59Ev();
extern void _ZN8S20903C93v60Ev();
extern void _ZN8S20903C12v1Ev();
extern void _ZN8S20903C12v2Ev();
extern void _ZN8S20903C12v3Ev();
extern void _ZN8S20903C12v4Ev();
extern void _ZN8S20903C12v5Ev();
extern void _ZN8S20903C12v6Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZThn96_N8S20903C1D1Ev,_ZThn40_N8S20903C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20903C1D0Ev,_ZThn40_N8S20903C1D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void ABISELECT(_ZThn144_N8S20903C1D1Ev,_ZThn60_N8S20903C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S20903C1D0Ev,_ZThn60_N8S20903C1D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
extern void ABISELECT(_ZThn192_N8S20903C1D1Ev,_ZThn80_N8S20903C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S20903C1D0Ev,_ZThn80_N8S20903C1D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void ABISELECT(_ZThn256_N8S20903C1D1Ev,_ZThn108_N8S20903C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S20903C1D0Ev,_ZThn108_N8S20903C1D0Ev)();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
extern void ABISELECT(_ZThn288_N8S20903C1D1Ev,_ZThn136_N8S20903C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S20903C1D0Ev,_ZThn136_N8S20903C1D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void _ZN12S20903C14_nt3v61Ev();
extern void _ZN9S20903C133v62Ev();
extern void ABISELECT(_ZThn752_N8S20903C1D1Ev,_ZThn344_N8S20903C1D1Ev)();
extern void ABISELECT(_ZThn752_N8S20903C1D0Ev,_ZThn344_N8S20903C1D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN9S20903C153v63Ev();
extern void _ZN9S20903C153v64Ev();
extern void _ZN9S20903C153v65Ev();
extern void _ZN9S20903C153v66Ev();
extern void _ZN9S20903C153v67Ev();
extern void _ZN9S20903C153v68Ev();
extern void _ZN9S20903C153v69Ev();
extern void _ZN9S20903C153v70Ev();
extern void _ZN9S20903C153v71Ev();
extern void _ZN9S20903C153v72Ev();
extern void _ZN9S20903C153v73Ev();
extern void ABISELECT(_ZThn800_N8S20903C1D1Ev,_ZThn364_N8S20903C1D1Ev)();
extern void ABISELECT(_ZThn800_N8S20903C1D0Ev,_ZThn364_N8S20903C1D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void ABISELECT(_ZTv0_n72_N8S20903C1D1Ev,_ZTv0_n36_N8S20903C1D1Ev)();
extern void ABISELECT(_ZThn848_N8S20903C1D1Ev,_ZThn384_N8S20903C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20903C1D0Ev,_ZTv0_n36_N8S20903C1D0Ev)();
extern void ABISELECT(_ZThn848_N8S20903C1D0Ev,_ZThn384_N8S20903C1D0Ev)() __attribute__((weak));
extern void _ZN8S20903C23v36Ev();
extern void _ZN8S20903C23v37Ev();
extern void _ZN8S20903C23v38Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZTv0_n40_N8S20903C1D1Ev,_ZTv0_n20_N8S20903C1D1Ev)();
extern void ABISELECT(_ZThn896_N8S20903C1D1Ev,_ZThn404_N8S20903C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20903C1D0Ev,_ZTv0_n20_N8S20903C1D0Ev)();
extern void ABISELECT(_ZThn896_N8S20903C1D0Ev,_ZThn404_N8S20903C1D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZTv0_n32_N8S20903C1D1Ev,_ZTv0_n16_N8S20903C1D1Ev)();
extern void ABISELECT(_ZThn992_N8S20903C1D1Ev,_ZThn444_N8S20903C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C1D0Ev,_ZTv0_n16_N8S20903C1D0Ev)();
extern void ABISELECT(_ZThn992_N8S20903C1D0Ev,_ZThn444_N8S20903C1D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20903C1D1Ev,_ZTvn20_n16_N8S20903C1D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C1D0Ev,_ZTvn20_n16_N8S20903C1D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void ABISELECT(_ZTv0_n56_N8S20903C1D1Ev,_ZTv0_n28_N8S20903C1D1Ev)();
extern void ABISELECT(_ZThn1136_N8S20903C1D1Ev,_ZThn512_N8S20903C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20903C1D0Ev,_ZTv0_n28_N8S20903C1D0Ev)();
extern void ABISELECT(_ZThn1136_N8S20903C1D0Ev,_ZThn512_N8S20903C1D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C93v51Ev();
extern void _ZN8S20903C93v52Ev();
extern void _ZN8S20903C93v53Ev();
extern void _ZN8S20903C93v54Ev();
extern void _ZN8S20903C93v55Ev();
extern void _ZN8S20903C93v56Ev();
extern void _ZN8S20903C93v57Ev();
extern void _ZN8S20903C93v58Ev();
extern void _ZN8S20903C93v59Ev();
extern void _ZN8S20903C93v60Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void ABISELECT(_ZTvn96_n56_N8S20903C1D1Ev,_ZTvn40_n28_N8S20903C1D1Ev)();
extern void ABISELECT(_ZTvn96_n56_N8S20903C1D0Ev,_ZTvn40_n28_N8S20903C1D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void ABISELECT(_ZTvn144_n56_N8S20903C1D1Ev,_ZTvn60_n28_N8S20903C1D1Ev)();
extern void ABISELECT(_ZTvn144_n56_N8S20903C1D0Ev,_ZTvn60_n28_N8S20903C1D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
extern void ABISELECT(_ZTvn192_n56_N8S20903C1D1Ev,_ZTvn80_n28_N8S20903C1D1Ev)();
extern void ABISELECT(_ZTvn192_n56_N8S20903C1D0Ev,_ZTvn80_n28_N8S20903C1D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void ABISELECT(_ZTvn256_n56_N8S20903C1D1Ev,_ZTvn108_n28_N8S20903C1D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S20903C1D0Ev,_ZTvn108_n28_N8S20903C1D0Ev)();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
extern void ABISELECT(_ZTvn288_n56_N8S20903C1D1Ev,_ZTvn136_n28_N8S20903C1D1Ev)();
extern void ABISELECT(_ZTvn288_n56_N8S20903C1D0Ev,_ZTvn136_n28_N8S20903C1D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY vtc_S20903C1[] = {
  ABISELECT(1136,512),
  ABISELECT(896,404),
  ABISELECT(848,384),
  ABISELECT(1120,508),
  ABISELECT(1096,492),
  ABISELECT(992,444),
  ABISELECT(864,388),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN8S20903C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v51Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v52Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v53Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v54Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v55Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v56Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v57Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v58Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v59Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v60Ev,
  (VTBL_ENTRY)&_ZN8S20903C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20903C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20903C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20903C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20903C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20903C12v6Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(768,348),
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20903C1D1Ev,_ZThn40_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20903C1D0Ev,_ZThn40_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  ABISELECT(720,328),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20903C1D1Ev,_ZThn60_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20903C1D0Ev,_ZThn60_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
  ABISELECT(672,308),
  ABISELECT(-192,-80),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S20903C1D1Ev,_ZThn80_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S20903C1D0Ev,_ZThn80_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  ABISELECT(736,336),
  ABISELECT(608,280),
  ABISELECT(864,400),
  ABISELECT(840,384),
  ABISELECT(-256,-108),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S20903C1D1Ev,_ZThn108_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S20903C1D0Ev,_ZThn108_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
  ABISELECT(704,308),
  ABISELECT(576,252),
  ABISELECT(-288,-136),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S20903C1D1Ev,_ZThn136_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S20903C1D0Ev,_ZThn136_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  ABISELECT(-336,-156),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(-384,-180),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(-736,-340),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN12S20903C14_nt3v61Ev,
  (VTBL_ENTRY)&_ZN9S20903C133v62Ev,
  ABISELECT(344,148),
  ABISELECT(240,100),
  ABISELECT(384,168),
  ABISELECT(368,164),
  ABISELECT(112,44),
  ABISELECT(-752,-344),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn752_N8S20903C1D1Ev,_ZThn344_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn752_N8S20903C1D0Ev,_ZThn344_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v66Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v67Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v68Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v69Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v70Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v71Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v72Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v73Ev,
  ABISELECT(64,24),
  ABISELECT(-800,-364),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N8S20903C1D1Ev,_ZThn364_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N8S20903C1D0Ev,_ZThn364_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  0,
  0,
  0,
  ABISELECT(-848,-384),
  0,
  0,
  0,
  ABISELECT(144,60),
  ABISELECT(48,20),
  ABISELECT(16,4),
  ABISELECT(-848,-384),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20903C1D1Ev,_ZTv0_n36_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20903C1D0Ev,_ZTv0_n36_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C23v36Ev,
  (VTBL_ENTRY)&_ZN8S20903C23v37Ev,
  (VTBL_ENTRY)&_ZN8S20903C23v38Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-864,-388),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-896,-404),
  ABISELECT(96,40),
  ABISELECT(-32,-16),
  ABISELECT(-896,-404),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20903C1D1Ev,_ZTv0_n20_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20903C1D0Ev,_ZTv0_n20_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  ABISELECT(-944,-424),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-992,-444),
  ABISELECT(-128,-56),
  ABISELECT(-992,-444),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C1D1Ev,_ZTv0_n16_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C1D0Ev,_ZTv0_n16_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
  ABISELECT(-176,-76),
  ABISELECT(-1040,-464),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C1D1Ev,_ZTvn20_n16_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C1D0Ev,_ZTvn20_n16_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1096,-492),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
  0,
  0,
  0,
  ABISELECT(-1120,-508),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1136,-512),
  ABISELECT(-16,-4),
  ABISELECT(-40,-20),
  ABISELECT(-144,-68),
  ABISELECT(-272,-124),
  ABISELECT(-1136,-512),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20903C1D1Ev,_ZTv0_n28_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20903C1D0Ev,_ZTv0_n28_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v51Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v52Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v53Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v54Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v55Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v56Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v57Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v58Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v59Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v60Ev,
  ABISELECT(-1184,-532),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(-368,-164),
  ABISELECT(-1232,-552),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n56_N8S20903C1D1Ev,_ZTvn40_n28_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n56_N8S20903C1D0Ev,_ZTvn40_n28_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  ABISELECT(-416,-184),
  ABISELECT(-1280,-572),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n56_N8S20903C1D1Ev,_ZTvn60_n28_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n56_N8S20903C1D0Ev,_ZTvn60_n28_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
  ABISELECT(-464,-204),
  ABISELECT(-1328,-592),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n56_N8S20903C1D1Ev,_ZTvn80_n28_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n56_N8S20903C1D0Ev,_ZTvn80_n28_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  ABISELECT(-400,-176),
  ABISELECT(-528,-232),
  ABISELECT(-272,-112),
  ABISELECT(-296,-128),
  ABISELECT(-1392,-620),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S20903C1D1Ev,_ZTvn108_n28_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S20903C1D0Ev,_ZTvn108_n28_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
  ABISELECT(-432,-204),
  ABISELECT(-560,-260),
  ABISELECT(-1424,-648),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn288_n56_N8S20903C1D1Ev,_ZTvn136_n28_N8S20903C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn288_n56_N8S20903C1D0Ev,_ZTvn136_n28_N8S20903C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  ABISELECT(-1472,-668),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
  ABISELECT(-1520,-692),
  (VTBL_ENTRY)&(_ZTI8S20903C1[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S20903C1[];
extern void _ZN8S20903C9D1Ev();
extern void _ZN8S20903C9D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C93v51Ev();
extern void _ZN8S20903C93v52Ev();
extern void _ZN8S20903C93v53Ev();
extern void _ZN8S20903C93v54Ev();
extern void _ZN8S20903C93v55Ev();
extern void _ZN8S20903C93v56Ev();
extern void _ZN8S20903C93v57Ev();
extern void _ZN8S20903C93v58Ev();
extern void _ZN8S20903C93v59Ev();
extern void _ZN8S20903C93v60Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C9__A__8S20903C1[] = {
  ABISELECT(1120,508),
  ABISELECT(1096,492),
  ABISELECT(992,444),
  ABISELECT(864,388),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN8S20903C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v51Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v52Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v53Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v54Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v55Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v56Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v57Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v58Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v59Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v60Ev,
};
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C58S20903C9__A1__8S20903C1[] = {
  ABISELECT(992,444),
  ABISELECT(864,388),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C58S20903C9__A2__8S20903C1[] = {
  ABISELECT(864,388),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C58S20903C9__A3__8S20903C1[] = {
  ABISELECT(864,388),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C58S20903C9__A3__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-864,-388),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C58S20903C9__A2__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-864,-388),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C58S20903C9__A1__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-864,-388),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZThn992_N8S20903C5D1Ev,_ZThn444_N8S20903C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void ABISELECT(_ZThn992_N8S20903C5D0Ev,_ZThn444_N8S20903C5D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C58S20903C9__A1__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-992,-444),
  ABISELECT(-128,-56),
  ABISELECT(-992,-444),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C58S20903C9__A1__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-1040,-464),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C9__A3__8S20903C1[] = {
  ABISELECT(768,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C9__A4__8S20903C1[] = {
  ABISELECT(768,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C9__A4__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-768,-348),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C9__A3__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-768,-348),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C8D1Ev();
extern void _ZN8S20903C8D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C88S20903C9__A1__8S20903C1[] = {
  ABISELECT(720,328),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C88S20903C9__A5__8S20903C1[] = {
  ABISELECT(720,328),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C88S20903C9__A5__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-720,-328),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C88S20903C9__A4__8S20903C1[] = {
  ABISELECT(672,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C88S20903C9__A6__8S20903C1[] = {
  ABISELECT(672,308),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C88S20903C9__A6__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-672,-308),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C88S20903C9__A4__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-672,-308),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C88S20903C9__A1__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-720,-328),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C88S20903C9__A1__8S20903C1[] = {
  ABISELECT(672,308),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN9S20903C10D1Ev();
extern void _ZN9S20903C10D0Ev();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C108S20903C9__8S20903C1[] = {
  ABISELECT(736,336),
  ABISELECT(608,280),
  ABISELECT(864,400),
  ABISELECT(840,384),
  0,
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN9S20903C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20903C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
};
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C59S20903C108S20903C9__A2__8S20903C1[] = {
  ABISELECT(704,308),
  ABISELECT(576,252),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C59S20903C108S20903C9__A5__8S20903C1[] = {
  ABISELECT(576,252),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C59S20903C108S20903C9__A7__8S20903C1[] = {
  ABISELECT(576,252),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C59S20903C108S20903C9__A7__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-576,-252),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C59S20903C108S20903C9__A5__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-576,-252),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C59S20903C108S20903C9__A2__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-576,-252),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZThn704_N8S20903C5D1Ev,_ZThn308_N8S20903C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void ABISELECT(_ZThn704_N8S20903C5D0Ev,_ZThn308_N8S20903C5D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C59S20903C108S20903C9__A2__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-308),
  ABISELECT(-128,-56),
  ABISELECT(-704,-308),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C59S20903C108S20903C9__A2__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-752,-328),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C11__9S20903C108S20903C9__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-840,-384),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20903C4_nt__A1__9S20903C108S20903C9__8S20903C1[] = {
  0,
  0,
  0,
  ABISELECT(-864,-400),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__9S20903C108S20903C9__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-608,-280),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn32_N9S20903C10D1Ev,_ZThn28_N9S20903C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S20903C10D0Ev,_ZThn28_N9S20903C10D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C5__9S20903C108S20903C9__8S20903C1[] = {
  ABISELECT(704,308),
  ABISELECT(576,252),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20903C10D1Ev,_ZThn28_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20903C10D0Ev,_ZThn28_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev)();
extern void ABISELECT(_ZThn736_N9S20903C10D1Ev,_ZThn336_N9S20903C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev)();
extern void ABISELECT(_ZThn736_N9S20903C10D0Ev,_ZThn336_N9S20903C10D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__9S20903C108S20903C9__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-736,-336),
  ABISELECT(-128,-56),
  ABISELECT(-736,-336),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N9S20903C10D1Ev,_ZTvn20_n16_N9S20903C10D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N9S20903C10D0Ev,_ZTvn20_n16_N9S20903C10D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__9S20903C108S20903C9__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-784,-356),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C10D1Ev,_ZTvn20_n16_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C10D0Ev,_ZTvn20_n16_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C9__A__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-864,-388),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C9D1Ev,_ZTv0_n16_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn992_N8S20903C9D1Ev,_ZThn444_N8S20903C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C9D0Ev,_ZTv0_n16_N8S20903C9D0Ev)();
extern void ABISELECT(_ZThn992_N8S20903C9D0Ev,_ZThn444_N8S20903C9D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C9__A__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-992,-444),
  ABISELECT(-128,-56),
  ABISELECT(-992,-444),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C9D1Ev,_ZTv0_n16_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C9D0Ev,_ZTv0_n16_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C9D1Ev,_ZTvn20_n16_N8S20903C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C9D0Ev,_ZTvn20_n16_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C9__A__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-1040,-464),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C9D1Ev,_ZTvn20_n16_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C9D0Ev,_ZTvn20_n16_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZThn96_N8S20903C9D1Ev,_ZThn40_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S20903C9D0Ev,_ZThn40_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__A2__8S20903C9__A__8S20903C1[] = {
  ABISELECT(768,348),
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20903C9D1Ev,_ZThn40_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20903C9D0Ev,_ZThn40_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZThn144_N8S20903C9D1Ev,_ZThn60_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S20903C9D0Ev,_ZThn60_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__A__8S20903C9__A__8S20903C1[] = {
  ABISELECT(720,328),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20903C9D1Ev,_ZThn60_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20903C9D0Ev,_ZThn60_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZThn192_N8S20903C9D1Ev,_ZThn80_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S20903C9D0Ev,_ZThn80_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A3__8S20903C9__A__8S20903C1[] = {
  ABISELECT(672,308),
  ABISELECT(-192,-80),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S20903C9D1Ev,_ZThn80_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S20903C9D0Ev,_ZThn80_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZThn256_N8S20903C9D1Ev,_ZThn108_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S20903C9D0Ev,_ZThn108_N8S20903C9D0Ev)();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C10__8S20903C9__A__8S20903C1[] = {
  ABISELECT(736,336),
  ABISELECT(608,280),
  ABISELECT(864,400),
  ABISELECT(840,384),
  ABISELECT(-256,-108),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S20903C9D1Ev,_ZThn108_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S20903C9D0Ev,_ZThn108_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C11__8S20903C9__A__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1096,-492),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20903C4_nt__A1__8S20903C9__A__8S20903C1[] = {
  0,
  0,
  0,
  ABISELECT(-1120,-508),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
};
extern void ABISELECT(_ZThn288_N8S20903C9D1Ev,_ZThn136_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn288_N8S20903C9D0Ev,_ZThn136_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C59S20903C10__A1__8S20903C9__A__8S20903C1[] = {
  ABISELECT(704,308),
  ABISELECT(576,252),
  ABISELECT(-288,-136),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S20903C9D1Ev,_ZThn136_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S20903C9D0Ev,_ZThn136_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN9S20903C15D1Ev();
extern void _ZN9S20903C15D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN9S20903C153v63Ev();
extern void _ZN9S20903C153v64Ev();
extern void _ZN9S20903C153v65Ev();
extern void _ZN9S20903C153v66Ev();
extern void _ZN9S20903C153v67Ev();
extern void _ZN9S20903C153v68Ev();
extern void _ZN9S20903C153v69Ev();
extern void _ZN9S20903C153v70Ev();
extern void _ZN9S20903C153v71Ev();
extern void _ZN9S20903C153v72Ev();
extern void _ZN9S20903C153v73Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C15__8S20903C1[] = {
  ABISELECT(344,148),
  ABISELECT(240,100),
  ABISELECT(384,168),
  ABISELECT(368,164),
  ABISELECT(112,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN9S20903C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20903C15D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v63Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v64Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v65Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v66Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v67Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v68Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v69Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v70Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v71Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v72Ev,
  (VTBL_ENTRY)&_ZN9S20903C153v73Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C69S20903C15__A10__8S20903C1[] = {
  ABISELECT(112,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C69S20903C15__A13__8S20903C1[] = {
  ABISELECT(112,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C69S20903C15__A13__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-44),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C69S20903C15__A10__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-44),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C79S20903C15__A14__8S20903C1[] = {
  ABISELECT(64,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C79S20903C15__A14__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-24),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20903C4_nt__9S20903C15__8S20903C1[] = {
  0,
  0,
  0,
  ABISELECT(-368,-164),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S20903C15D1Ev,_ZTv0_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZThn384_N9S20903C15D1Ev,_ZThn168_N9S20903C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20903C15D0Ev,_ZTv0_n28_N9S20903C15D0Ev)();
extern void ABISELECT(_ZThn384_N9S20903C15D0Ev,_ZThn168_N9S20903C15D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C93v51Ev();
extern void _ZN8S20903C93v52Ev();
extern void _ZN8S20903C93v53Ev();
extern void _ZN8S20903C93v54Ev();
extern void _ZN8S20903C93v55Ev();
extern void _ZN8S20903C93v56Ev();
extern void _ZN8S20903C93v57Ev();
extern void _ZN8S20903C93v58Ev();
extern void _ZN8S20903C93v59Ev();
extern void _ZN8S20903C93v60Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C9__9S20903C15__8S20903C1[] = {
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(256,108),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  ABISELECT(144,60),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-168),
  ABISELECT(-16,-4),
  ABISELECT(-40,-20),
  ABISELECT(-144,-68),
  ABISELECT(-272,-124),
  ABISELECT(-384,-168),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20903C15D1Ev,_ZTv0_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20903C15D0Ev,_ZTv0_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v51Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v52Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v53Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v54Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v55Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v56Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v57Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v58Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v59Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v60Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__9S20903C15__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-44),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C38S20903C58S20903C9__A1__9S20903C15__8S20903C1[] = {
  ABISELECT(-432,-188),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20903C15D1Ev,_ZTv0_n16_N9S20903C15D1Ev)();
extern void ABISELECT(_ZThn240_N9S20903C15D1Ev,_ZThn100_N9S20903C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20903C15D0Ev,_ZTv0_n16_N9S20903C15D0Ev)();
extern void ABISELECT(_ZThn240_N9S20903C15D0Ev,_ZThn100_N9S20903C15D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__9S20903C15__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-100),
  ABISELECT(-128,-56),
  ABISELECT(-240,-100),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C15D1Ev,_ZTv0_n16_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C15D0Ev,_ZTv0_n16_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N9S20903C15D1Ev,_ZTvn20_n16_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N9S20903C15D0Ev,_ZTvn20_n16_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__9S20903C15__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-288,-120),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C15D1Ev,_ZTvn20_n16_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C15D0Ev,_ZTvn20_n16_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZTvn96_n56_N9S20903C15D1Ev,_ZTvn40_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn96_n56_N9S20903C15D0Ev,_ZTvn40_n28_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C9__A2__9S20903C15__8S20903C1[] = {
  ABISELECT(-368,-164),
  ABISELECT(-480,-208),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n56_N9S20903C15D1Ev,_ZTvn40_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n56_N9S20903C15D0Ev,_ZTvn40_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZTvn144_n56_N9S20903C15D1Ev,_ZTvn60_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn144_n56_N9S20903C15D0Ev,_ZTvn60_n28_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C88S20903C9__A1__9S20903C15__8S20903C1[] = {
  ABISELECT(-416,-184),
  ABISELECT(-528,-228),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n56_N9S20903C15D1Ev,_ZTvn60_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n56_N9S20903C15D0Ev,_ZTvn60_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn192_n56_N9S20903C15D1Ev,_ZTvn80_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn192_n56_N9S20903C15D0Ev,_ZTvn80_n28_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C88S20903C9__A3__9S20903C15__8S20903C1[] = {
  ABISELECT(-464,-204),
  ABISELECT(-576,-248),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n56_N9S20903C15D1Ev,_ZTvn80_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn192_n56_N9S20903C15D0Ev,_ZTvn80_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZTvn256_n56_N9S20903C15D1Ev,_ZTvn108_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N9S20903C15D0Ev,_ZTvn108_n28_N9S20903C15D0Ev)();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C108S20903C9__9S20903C15__8S20903C1[] = {
  ABISELECT(-400,-176),
  ABISELECT(-528,-232),
  ABISELECT(-272,-112),
  ABISELECT(-296,-128),
  ABISELECT(-640,-276),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N9S20903C15D1Ev,_ZTvn108_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N9S20903C15D0Ev,_ZTvn108_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C11__9S20903C15__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-148),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
};
extern void ABISELECT(_ZTvn288_n56_N9S20903C15D1Ev,_ZTvn136_n28_N9S20903C15D1Ev)();
extern void ABISELECT(_ZTvn288_n56_N9S20903C15D0Ev,_ZTvn136_n28_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C59S20903C108S20903C9__A1__9S20903C15__8S20903C1[] = {
  ABISELECT(-432,-204),
  ABISELECT(-560,-260),
  ABISELECT(-672,-304),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn288_n56_N9S20903C15D1Ev,_ZTvn136_n28_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn288_n56_N9S20903C15D0Ev,_ZTvn136_n28_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C38S20903C59S20903C108S20903C9__A2__9S20903C15__8S20903C1[] = {
  ABISELECT(-720,-324),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C38S20903C9__A3__9S20903C15__8S20903C1[] = {
  ABISELECT(-768,-348),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn48_N9S20903C15D1Ev,_ZThn20_N9S20903C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S20903C15D0Ev,_ZThn20_N9S20903C15D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C7__A8__9S20903C15__8S20903C1[] = {
  ABISELECT(64,24),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20903C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20903C15D1Ev,_ZThn20_N9S20903C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20903C15D0Ev,_ZThn20_N9S20903C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN8S20903C2D1Ev();
extern void _ZN8S20903C2D0Ev();
extern void _ZN8S20903C23v36Ev();
extern void _ZN8S20903C23v37Ev();
extern void _ZN8S20903C23v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C2__8S20903C1[] = {
  ABISELECT(144,60),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S20903C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C23v36Ev,
  (VTBL_ENTRY)&_ZN8S20903C23v37Ev,
  (VTBL_ENTRY)&_ZN8S20903C23v38Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C2__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S20903C2D1Ev,_ZTv0_n20_N8S20903C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C2D1Ev,_ZThn20_N8S20903C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20903C2D0Ev,_ZTv0_n20_N8S20903C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20903C2D0Ev,_ZThn20_N8S20903C2D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C5__8S20903C2__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  ABISELECT(96,40),
  ABISELECT(-32,-16),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20903C2D1Ev,_ZTv0_n20_N8S20903C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20903C2D0Ev,_ZTv0_n20_N8S20903C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C38S20903C5__A1__8S20903C2__8S20903C1[] = {
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C2D1Ev,_ZTv0_n16_N8S20903C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S20903C2D1Ev,_ZThn60_N8S20903C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C2D0Ev,_ZTv0_n16_N8S20903C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S20903C2D0Ev,_ZThn60_N8S20903C2D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C2__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-60),
  ABISELECT(-128,-56),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C2D1Ev,_ZTv0_n16_N8S20903C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C2D0Ev,_ZTv0_n16_N8S20903C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C2D1Ev,_ZTvn20_n16_N8S20903C2D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C2D0Ev,_ZTvn20_n16_N8S20903C2D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C2__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-192,-80),
  (VTBL_ENTRY)&(_ZTI8S20903C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C2D1Ev,_ZTvn20_n16_N8S20903C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C2D0Ev,_ZTvn20_n16_N8S20903C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C5__8S20903C1[] = {
  ABISELECT(96,40),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C5__8S20903C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C5__8S20903C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C5__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C5__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C5__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S20903C5D1Ev,_ZThn40_N8S20903C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S20903C5D0Ev,_ZThn40_N8S20903C5D0Ev)() __attribute__((weak));
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C5__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  ABISELECT(-128,-56),
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C5__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C8D1Ev();
extern void _ZN8S20903C8D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C1[] = {
  ABISELECT(-128,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C8__A1__8S20903C1[] = {
  ABISELECT(-128,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C8__A1__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,56),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C1[] = {
  ABISELECT(-176,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C8__A2__8S20903C1[] = {
  ABISELECT(-176,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,76),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C8__A1__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,76),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C8__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,56),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C8__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C9D1Ev();
extern void _ZN8S20903C9D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
extern void _ZN8S20903C93v51Ev();
extern void _ZN8S20903C93v52Ev();
extern void _ZN8S20903C93v53Ev();
extern void _ZN8S20903C93v54Ev();
extern void _ZN8S20903C93v55Ev();
extern void _ZN8S20903C93v56Ev();
extern void _ZN8S20903C93v57Ev();
extern void _ZN8S20903C93v58Ev();
extern void _ZN8S20903C93v59Ev();
extern void _ZN8S20903C93v60Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C9__A1__8S20903C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-40,-20),
  ABISELECT(-144,-68),
  ABISELECT(-272,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN8S20903C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v51Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v52Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v53Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v54Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v55Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v56Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v57Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v58Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v59Ev,
  (VTBL_ENTRY)&_ZN8S20903C93v60Ev,
};
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C58S20903C9__A3__8S20903C1[] = {
  ABISELECT(-144,-68),
  ABISELECT(-272,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C58S20903C9__A6__8S20903C1[] = {
  ABISELECT(-272,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C58S20903C9__A8__8S20903C1[] = {
  ABISELECT(-272,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C58S20903C9__A8__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C58S20903C9__A6__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C58S20903C9__A3__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C58S20903C9__A3__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,68),
  ABISELECT(-128,-56),
  ABISELECT(144,68),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C58S20903C9__A3__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C9__A7__8S20903C1[] = {
  ABISELECT(-368,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C9__A9__8S20903C1[] = {
  ABISELECT(-368,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C9__A9__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(368,164),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C9__A7__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(368,164),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C8D1Ev();
extern void _ZN8S20903C8D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C88S20903C9__A2__8S20903C1[] = {
  ABISELECT(-416,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C88S20903C9__A10__8S20903C1[] = {
  ABISELECT(-416,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C88S20903C9__A10__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,184),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C88S20903C9__A8__8S20903C1[] = {
  ABISELECT(-464,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C88S20903C9__A11__8S20903C1[] = {
  ABISELECT(-464,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C88S20903C9__A11__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(464,204),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C88S20903C9__A8__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(464,204),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C88S20903C9__A2__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,184),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__8S20903C88S20903C9__A2__8S20903C1[] = {
  ABISELECT(-464,-204),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20903C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D1Ev,_ZThn20_N8S20903C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20903C8D0Ev,_ZThn20_N8S20903C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN9S20903C10D1Ev();
extern void _ZN9S20903C10D0Ev();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C108S20903C9__A1__8S20903C1[] = {
  ABISELECT(-400,-176),
  ABISELECT(-528,-232),
  ABISELECT(-272,-112),
  ABISELECT(-296,-128),
  0,
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN9S20903C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20903C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
};
extern void _ZN8S20903C5D1Ev();
extern void _ZN8S20903C5D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C59S20903C108S20903C9__A4__8S20903C1[] = {
  ABISELECT(-432,-204),
  ABISELECT(-560,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void _ZN8S20903C6D1Ev();
extern void _ZN8S20903C6D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C59S20903C108S20903C9__A9__8S20903C1[] = {
  ABISELECT(-560,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C7D1Ev();
extern void _ZN8S20903C7D0Ev();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C78S20903C68S20903C59S20903C108S20903C9__A12__8S20903C1[] = {
  ABISELECT(-560,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20903C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C78S20903C68S20903C59S20903C108S20903C9__A12__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(560,260),
  (VTBL_ENTRY)&(_ZTI8S20903C7[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C68S20903C59S20903C108S20903C9__A9__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(560,260),
  (VTBL_ENTRY)&(_ZTI8S20903C6[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C59S20903C108S20903C9__A4__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(560,260),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C59S20903C108S20903C9__A4__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(432,204),
  ABISELECT(-128,-56),
  ABISELECT(432,204),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C59S20903C108S20903C9__A4__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(384,184),
  (VTBL_ENTRY)&(_ZTI8S20903C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D1Ev,_ZTvn20_n16_N8S20903C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C5D0Ev,_ZTvn20_n16_N8S20903C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C11__9S20903C108S20903C9__A1__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(296,128),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20903C4_nt__A1__9S20903C108S20903C9__A1__8S20903C1[] = {
  0,
  0,
  0,
  ABISELECT(272,112),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__9S20903C108S20903C9__A1__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(528,232),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZThn32_N9S20903C10D1Ev,_ZThn28_N9S20903C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S20903C10D0Ev,_ZThn28_N9S20903C10D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C5__9S20903C108S20903C9__A1__8S20903C1[] = {
  ABISELECT(-432,-204),
  ABISELECT(-560,-260),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20903C10D1Ev,_ZThn28_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20903C10D0Ev,_ZThn28_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__9S20903C108S20903C9__A1__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(400,176),
  ABISELECT(-128,-56),
  ABISELECT(400,176),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N9S20903C10D1Ev,_ZTvn20_n16_N9S20903C10D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N9S20903C10D0Ev,_ZTvn20_n16_N9S20903C10D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__9S20903C108S20903C9__A1__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(352,156),
  (VTBL_ENTRY)&(_ZTI9S20903C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C10D1Ev,_ZTvn20_n16_N9S20903C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20903C10D0Ev,_ZTvn20_n16_N9S20903C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void _ZN8S20903C32v7Ev();
extern void _ZN8S20903C32v8Ev();
extern void _ZN8S20903C32v9Ev();
extern void _ZN8S20903C33v10Ev();
extern void _ZN8S20903C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C3__8S20903C9__A1__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(272,124),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN8S20903C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20903C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20903C33v11Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20903C9D1Ev,_ZTv0_n16_N8S20903C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20903C9D0Ev,_ZTv0_n16_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__8S20903C9__A1__8S20903C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,68),
  ABISELECT(-128,-56),
  ABISELECT(144,68),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C9D1Ev,_ZTv0_n16_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20903C9D0Ev,_ZTv0_n16_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20903C9D1Ev,_ZTvn20_n16_N8S20903C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20903C9D0Ev,_ZTvn20_n16_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A1__8S20903C9__A1__8S20903C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C9D1Ev,_ZTvn20_n16_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20903C9D0Ev,_ZTvn20_n16_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZThn96_N8S20903C9D1Ev,_ZThn40_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S20903C9D0Ev,_ZThn40_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C6__A2__8S20903C9__A1__8S20903C1[] = {
  ABISELECT(-368,-164),
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20903C9D1Ev,_ZThn40_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20903C9D0Ev,_ZThn40_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZThn144_N8S20903C9D1Ev,_ZThn60_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S20903C9D0Ev,_ZThn60_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C83v22Ev();
extern void _ZN8S20903C83v23Ev();
extern void _ZN8S20903C83v24Ev();
extern void _ZN8S20903C83v25Ev();
extern void _ZN8S20903C83v26Ev();
extern void _ZN8S20903C83v27Ev();
extern void _ZN8S20903C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C8__A__8S20903C9__A1__8S20903C1[] = {
  ABISELECT(-416,-184),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20903C9D1Ev,_ZThn60_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S20903C9D0Ev,_ZThn60_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v26Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20903C83v28Ev,
};
extern void ABISELECT(_ZThn192_N8S20903C9D1Ev,_ZThn80_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S20903C9D0Ev,_ZThn80_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C68S20903C8__A3__8S20903C9__A1__8S20903C1[] = {
  ABISELECT(-464,-204),
  ABISELECT(-192,-80),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S20903C9D1Ev,_ZThn80_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N8S20903C9D0Ev,_ZThn80_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
};
extern void ABISELECT(_ZThn256_N8S20903C9D1Ev,_ZThn108_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S20903C9D0Ev,_ZThn108_N8S20903C9D0Ev)();
extern void _ZN9S20903C123v45Ev();
extern void _ZN9S20903C123v46Ev();
extern void _ZN9S20903C123v47Ev();
extern void _ZN9S20903C123v48Ev();
extern void _ZN9S20903C123v49Ev();
extern void _ZN9S20903C103v50Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C10__8S20903C9__A1__8S20903C1[] = {
  ABISELECT(-400,-176),
  ABISELECT(-528,-232),
  ABISELECT(-272,-112),
  ABISELECT(-296,-128),
  ABISELECT(-256,-108),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S20903C9D1Ev,_ZThn108_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S20903C9D0Ev,_ZThn108_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20903C123v45Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v46Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v47Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v48Ev,
  (VTBL_ENTRY)&_ZN9S20903C123v49Ev,
  (VTBL_ENTRY)&_ZN9S20903C103v50Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
extern void _ZN9S20903C113v39Ev();
extern void _ZN9S20903C113v40Ev();
extern void _ZN9S20903C113v41Ev();
extern void _ZN9S20903C113v42Ev();
extern void _ZN9S20903C113v43Ev();
extern void _ZN9S20903C113v44Ev();
static  VTBL_ENTRY _tg__ZTV9S20903C11__8S20903C9__A1__8S20903C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v41Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v42Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v43Ev,
  (VTBL_ENTRY)&_ZN9S20903C113v44Ev,
};
extern void _ZN11S20903C4_nt3v12Ev();
extern void _ZN11S20903C4_nt3v13Ev();
extern void _ZN11S20903C4_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV11S20903C4_nt__A1__8S20903C9__A1__8S20903C1[] = {
  0,
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20903C4_nt3v14Ev,
};
extern void ABISELECT(_ZThn288_N8S20903C9D1Ev,_ZThn136_N8S20903C9D1Ev)();
extern void ABISELECT(_ZThn288_N8S20903C9D0Ev,_ZThn136_N8S20903C9D0Ev)();
extern void _ZN8S20903C73v15Ev();
extern void _ZN8S20903C73v16Ev();
extern void _ZN8S20903C73v17Ev();
extern void _ZN8S20903C73v18Ev();
extern void _ZN8S20903C73v19Ev();
extern void _ZN8S20903C63v20Ev();
extern void _ZN8S20903C63v21Ev();
extern void _ZN8S20903C53v29Ev();
extern void _ZN8S20903C53v30Ev();
extern void _ZN8S20903C53v31Ev();
extern void _ZN8S20903C53v32Ev();
extern void _ZN8S20903C53v33Ev();
extern void _ZN8S20903C53v34Ev();
extern void _ZN8S20903C53v35Ev();
static  VTBL_ENTRY _tg__ZTV8S20903C59S20903C10__A1__8S20903C9__A1__8S20903C1[] = {
  ABISELECT(-432,-204),
  ABISELECT(-560,-260),
  ABISELECT(-288,-136),
  (VTBL_ENTRY)&(_ZTI8S20903C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S20903C9D1Ev,_ZThn136_N8S20903C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S20903C9D0Ev,_ZThn136_N8S20903C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20903C73v15Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20903C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20903C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v33Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v34Ev,
  (VTBL_ENTRY)&_ZN8S20903C53v35Ev,
};
static  VTT_ENTRY vtt_S20903C1[] = {
  {&(_ZTV8S20903C1[9]),  9,500},
  {&(_tg__ZTV8S20903C9__A__8S20903C1[6]),  6,32},
  {&(_tg__ZTV8S20903C58S20903C9__A1__8S20903C1[4]),  4,20},
  {&(_tg__ZTV8S20903C68S20903C58S20903C9__A2__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C58S20903C9__A3__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C58S20903C9__A3__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C58S20903C9__A2__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C58S20903C9__A1__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C58S20903C9__A1__8S20903C1[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C58S20903C9__A1__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C68S20903C9__A3__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C9__A4__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C9__A4__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C9__A3__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C88S20903C9__A1__8S20903C1[3]),  3,17},
  {&(_tg__ZTV8S20903C78S20903C88S20903C9__A5__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C88S20903C9__A5__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C68S20903C88S20903C9__A4__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C88S20903C9__A6__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C88S20903C9__A6__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C88S20903C9__A4__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C88S20903C9__A1__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C6__8S20903C88S20903C9__A1__8S20903C1[3]),  3,12},
  {&(_tg__ZTV9S20903C108S20903C9__8S20903C1[6]),  6,14},
  {&(_tg__ZTV8S20903C59S20903C108S20903C9__A2__8S20903C1[4]),  4,20},
  {&(_tg__ZTV8S20903C68S20903C59S20903C108S20903C9__A5__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C59S20903C108S20903C9__A7__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C59S20903C108S20903C9__A7__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C59S20903C108S20903C9__A5__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C59S20903C108S20903C9__A2__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C59S20903C108S20903C9__A2__8S20903C1[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C59S20903C108S20903C9__A2__8S20903C1[3]),  3,12},
  {&(_tg__ZTV9S20903C11__9S20903C108S20903C9__8S20903C1[11]),  11,20},
  {&(_tg__ZTV11S20903C4_nt__A1__9S20903C108S20903C9__8S20903C1[5]),  5,8},
  {&(_tg__ZTV8S20903C3__9S20903C108S20903C9__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C5__9S20903C108S20903C9__8S20903C1[4]),  4,20},
  {&(_tg__ZTV8S20903C8__9S20903C108S20903C9__8S20903C1[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__9S20903C108S20903C9__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C3__8S20903C9__A__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C9__A__8S20903C1[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C9__A__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C6__A2__8S20903C9__A__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C8__A__8S20903C9__A__8S20903C1[3]),  3,17},
  {&(_tg__ZTV8S20903C68S20903C8__A3__8S20903C9__A__8S20903C1[3]),  3,12},
  {&(_tg__ZTV9S20903C10__8S20903C9__A__8S20903C1[6]),  6,14},
  {&(_tg__ZTV9S20903C11__8S20903C9__A__8S20903C1[11]),  11,20},
  {&(_tg__ZTV11S20903C4_nt__A1__8S20903C9__A__8S20903C1[5]),  5,8},
  {&(_tg__ZTV8S20903C59S20903C10__A1__8S20903C9__A__8S20903C1[4]),  4,20},
  {&(_tg__ZTV9S20903C15__8S20903C1[7]),  7,27},
  {&(_tg__ZTV8S20903C69S20903C15__A10__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C69S20903C15__A13__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C69S20903C15__A13__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C69S20903C15__A10__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C79S20903C15__A14__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C79S20903C15__A14__8S20903C1[7]),  7,12},
  {&(_tg__ZTV11S20903C4_nt__9S20903C15__8S20903C1[5]),  5,8},
  {&(_tg__ZTV8S20903C9__9S20903C15__8S20903C1[49]),  49,75},
  {&(_tg__ZTV8S20903C3__9S20903C15__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C38S20903C58S20903C9__A1__9S20903C15__8S20903C1[2]),  2,7},
  {&(_tg__ZTV8S20903C8__9S20903C15__8S20903C1[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__9S20903C15__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C68S20903C9__A2__9S20903C15__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C88S20903C9__A1__9S20903C15__8S20903C1[3]),  3,17},
  {&(_tg__ZTV8S20903C68S20903C88S20903C9__A3__9S20903C15__8S20903C1[3]),  3,12},
  {&(_tg__ZTV9S20903C108S20903C9__9S20903C15__8S20903C1[6]),  6,14},
  {&(_tg__ZTV9S20903C11__9S20903C15__8S20903C1[11]),  11,20},
  {&(_tg__ZTV8S20903C59S20903C108S20903C9__A1__9S20903C15__8S20903C1[4]),  4,20},
  {&(_tg__ZTV8S20903C38S20903C59S20903C108S20903C9__A2__9S20903C15__8S20903C1[2]),  2,7},
  {&(_tg__ZTV8S20903C38S20903C9__A3__9S20903C15__8S20903C1[2]),  2,7},
  {&(_tg__ZTV8S20903C7__A8__9S20903C15__8S20903C1[3]),  3,10},
  {&(_ZTV8S20903C1[190]),  190,500},
  {&(_ZTV8S20903C1[205]),  205,500},
  {&(_ZTV8S20903C1[234]),  234,500},
  {&(_ZTV8S20903C1[252]),  252,500},
  {&(_ZTV8S20903C1[275]),  275,500},
  {&(_ZTV8S20903C1[292]),  292,500},
  {&(_ZTV8S20903C1[51]),  51,500},
  {&(_ZTV8S20903C1[63]),  63,500},
  {&(_ZTV8S20903C1[80]),  80,500},
  {&(_ZTV8S20903C1[95]),  95,500},
  {&(_ZTV8S20903C1[312]),  312,500},
  {&(_ZTV8S20903C1[326]),  326,500},
  {&(_ZTV8S20903C1[107]),  107,500},
  {&(_ZTV8S20903C1[148]),  148,500},
  {&(_ZTV8S20903C1[378]),  378,500},
  {&(_ZTV8S20903C1[406]),  406,500},
  {&(_ZTV8S20903C1[414]),  414,500},
  {&(_ZTV8S20903C1[426]),  426,500},
  {&(_ZTV8S20903C1[443]),  443,500},
  {&(_ZTV8S20903C1[458]),  458,500},
  {&(_ZTV8S20903C1[470]),  470,500},
  {&(_ZTV8S20903C1[488]),  488,500},
  {&(_ZTV8S20903C1[495]),  495,500},
  {&(_ZTV8S20903C1[171]),  171,500},
  {&(_tg__ZTV8S20903C2__8S20903C1[5]),  5,13},
  {&(_tg__ZTV8S20903C3__8S20903C2__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C5__8S20903C2__8S20903C1[24]),  24,40},
  {&(_tg__ZTV8S20903C38S20903C5__A1__8S20903C2__8S20903C1[2]),  2,7},
  {&(_tg__ZTV8S20903C8__8S20903C2__8S20903C1[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C2__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C5__8S20903C1[4]),  4,20},
  {&(_tg__ZTV8S20903C68S20903C5__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C5__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C5__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C5__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C5__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C5__8S20903C1[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C5__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C8__8S20903C1[3]),  3,17},
  {&(_tg__ZTV8S20903C78S20903C8__A1__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C8__A1__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C8__A2__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C8__A2__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C8__A1__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C8__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C6__8S20903C8__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C9__A1__8S20903C1[6]),  6,32},
  {&(_tg__ZTV8S20903C58S20903C9__A3__8S20903C1[4]),  4,20},
  {&(_tg__ZTV8S20903C68S20903C58S20903C9__A6__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C58S20903C9__A8__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C58S20903C9__A8__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C58S20903C9__A6__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C58S20903C9__A3__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C58S20903C9__A3__8S20903C1[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C58S20903C9__A3__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C68S20903C9__A7__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C9__A9__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C9__A9__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C9__A7__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C88S20903C9__A2__8S20903C1[3]),  3,17},
  {&(_tg__ZTV8S20903C78S20903C88S20903C9__A10__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C88S20903C9__A10__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C68S20903C88S20903C9__A8__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C88S20903C9__A11__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C88S20903C9__A11__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C88S20903C9__A8__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C88S20903C9__A2__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C6__8S20903C88S20903C9__A2__8S20903C1[3]),  3,12},
  {&(_tg__ZTV9S20903C108S20903C9__A1__8S20903C1[6]),  6,14},
  {&(_tg__ZTV8S20903C59S20903C108S20903C9__A4__8S20903C1[4]),  4,20},
  {&(_tg__ZTV8S20903C68S20903C59S20903C108S20903C9__A9__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C78S20903C68S20903C59S20903C108S20903C9__A12__8S20903C1[3]),  3,10},
  {&(_tg__ZTV8S20903C3__8S20903C78S20903C68S20903C59S20903C108S20903C9__A12__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C68S20903C59S20903C108S20903C9__A9__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C3__8S20903C59S20903C108S20903C9__A4__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C59S20903C108S20903C9__A4__8S20903C1[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C59S20903C108S20903C9__A4__8S20903C1[3]),  3,12},
  {&(_tg__ZTV9S20903C11__9S20903C108S20903C9__A1__8S20903C1[11]),  11,20},
  {&(_tg__ZTV11S20903C4_nt__A1__9S20903C108S20903C9__A1__8S20903C1[5]),  5,8},
  {&(_tg__ZTV8S20903C3__9S20903C108S20903C9__A1__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C5__9S20903C108S20903C9__A1__8S20903C1[4]),  4,20},
  {&(_tg__ZTV8S20903C8__9S20903C108S20903C9__A1__8S20903C1[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__9S20903C108S20903C9__A1__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C3__8S20903C9__A1__8S20903C1[7]),  7,12},
  {&(_tg__ZTV8S20903C8__8S20903C9__A1__8S20903C1[18]),  18,32},
  {&(_tg__ZTV8S20903C68S20903C8__A1__8S20903C9__A1__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C6__A2__8S20903C9__A1__8S20903C1[3]),  3,12},
  {&(_tg__ZTV8S20903C8__A__8S20903C9__A1__8S20903C1[3]),  3,17},
  {&(_tg__ZTV8S20903C68S20903C8__A3__8S20903C9__A1__8S20903C1[3]),  3,12},
  {&(_tg__ZTV9S20903C10__8S20903C9__A1__8S20903C1[6]),  6,14},
  {&(_tg__ZTV9S20903C11__8S20903C9__A1__8S20903C1[11]),  11,20},
  {&(_tg__ZTV11S20903C4_nt__A1__8S20903C9__A1__8S20903C1[5]),  5,8},
  {&(_tg__ZTV8S20903C59S20903C10__A1__8S20903C9__A1__8S20903C1[4]),  4,20},
};
extern VTBL_ENTRY _ZTI8S20903C1[];
extern  VTBL_ENTRY _ZTV8S20903C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20903C1[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C2D0Ev,_ZTv0_n16_N8S20903C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20903C2D0Ev,_ZThn60_N8S20903C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C2D1Ev,_ZTv0_n16_N8S20903C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20903C2D1Ev,_ZThn60_N8S20903C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20903C2D0Ev,_ZTv0_n20_N8S20903C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20903C2D0Ev,_ZThn20_N8S20903C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20903C2D1Ev,_ZTv0_n20_N8S20903C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20903C2D1Ev,_ZThn20_N8S20903C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C15D0Ev,_ZTv0_n16_N9S20903C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20903C15D0Ev,_ZThn100_N9S20903C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C15D1Ev,_ZTv0_n16_N9S20903C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20903C15D1Ev,_ZThn100_N9S20903C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20903C15D0Ev,_ZTv0_n28_N9S20903C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20903C15D0Ev,_ZThn168_N9S20903C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20903C15D1Ev,_ZTv0_n28_N9S20903C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20903C15D1Ev,_ZThn168_N9S20903C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C9D0Ev,_ZTv0_n16_N8S20903C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20903C9D0Ev,_ZThn444_N8S20903C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C9D1Ev,_ZTv0_n16_N8S20903C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20903C9D1Ev,_ZThn444_N8S20903C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C10D0Ev,_ZTv0_n16_N9S20903C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S20903C10D0Ev,_ZThn336_N9S20903C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20903C10D1Ev,_ZTv0_n16_N9S20903C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S20903C10D1Ev,_ZThn336_N9S20903C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D0Ev,_ZTv0_n16_N8S20903C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20903C5D0Ev,_ZThn40_N8S20903C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S20903C5D0Ev,_ZThn308_N8S20903C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20903C5D0Ev,_ZThn444_N8S20903C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C5D1Ev,_ZTv0_n16_N8S20903C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20903C5D1Ev,_ZThn40_N8S20903C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S20903C5D1Ev,_ZThn308_N8S20903C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20903C5D1Ev,_ZThn444_N8S20903C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20903C1D0Ev,_ZTv0_n28_N8S20903C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1136_N8S20903C1D0Ev,_ZThn512_N8S20903C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20903C1D1Ev,_ZTv0_n28_N8S20903C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1136_N8S20903C1D1Ev,_ZThn512_N8S20903C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C1D0Ev,_ZTv0_n16_N8S20903C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20903C1D0Ev,_ZThn444_N8S20903C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20903C1D1Ev,_ZTv0_n16_N8S20903C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S20903C1D1Ev,_ZThn444_N8S20903C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20903C1D0Ev,_ZTv0_n20_N8S20903C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N8S20903C1D0Ev,_ZThn404_N8S20903C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20903C1D1Ev,_ZTv0_n20_N8S20903C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N8S20903C1D1Ev,_ZThn404_N8S20903C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20903C1D0Ev,_ZTv0_n36_N8S20903C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S20903C1D0Ev,_ZThn384_N8S20903C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20903C1D1Ev,_ZTv0_n36_N8S20903C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S20903C1D1Ev,_ZThn384_N8S20903C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20903C1 = {  "S20903C1", // class name
  bases_S20903C1, 56,
  &(vtc_S20903C1[0]), // expected_vtbl_contents
  &(vtt_S20903C1[0]), // expected_vtt_contents
  ABISELECT(1872,852), // object size
  NSPAIRA(_ZTI8S20903C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20903C1),500, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20903C1),164, //virtual table table var
  56, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C4_nt  {
  ::S2405C20_nt s2333c4f0;
  int s2333c4f1[2];
  char s2333c4f2;
  virtual  ~S2333C4_nt(); // _ZN10S2333C4_ntD1Ev
  virtual void  v5(); // _ZN10S2333C4_nt2v5Ev
  virtual void  v6(); // _ZN10S2333C4_nt2v6Ev
  virtual void  v7(); // _ZN10S2333C4_nt2v7Ev
  S2333C4_nt(); // tgen
};
//SIG(-1 S2333C4_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2333C4_nt ::~S2333C4_nt(){ note_dtor("S2333C4_nt", this);}
void  S2333C4_nt ::v5(){vfunc_called(this, "_ZN10S2333C4_nt2v5Ev");}
void  S2333C4_nt ::v6(){vfunc_called(this, "_ZN10S2333C4_nt2v6Ev");}
void  S2333C4_nt ::v7(){vfunc_called(this, "_ZN10S2333C4_nt2v7Ev");}
S2333C4_nt ::S2333C4_nt(){ note_ctor("S2333C4_nt", this);} // tgen

//skip512 S2333C4_nt

#else // __cplusplus

extern void _ZN10S2333C4_ntC1Ev();
extern void _ZN10S2333C4_ntD1Ev();
Name_Map name_map_S2333C4_nt[] = {
  NSPAIR(_ZN10S2333C4_ntC1Ev),
  NSPAIR(_ZN10S2333C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2333C4_nt[];
extern void _ZN10S2333C4_ntD1Ev();
extern void _ZN10S2333C4_ntD0Ev();
extern void _ZN10S2333C4_nt2v5Ev();
extern void _ZN10S2333C4_nt2v6Ev();
extern void _ZN10S2333C4_nt2v7Ev();
static  VTBL_ENTRY vtc_S2333C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2333C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2333C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S2333C4_nt[];
VTBL_ENTRY *P__ZTI10S2333C4_nt = _ZTI10S2333C4_nt; 
extern  VTBL_ENTRY _ZTV10S2333C4_nt[];
Class_Descriptor cd_S2333C4_nt = {  "S2333C4_nt", // class name
  0,0,//no base classes
  &(vtc_S2333C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S2333C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2333C4_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  S2333C7_nt  {
  virtual  ~S2333C7_nt(); // _ZN10S2333C7_ntD1Ev
  virtual void  v8(); // _ZN10S2333C7_nt2v8Ev
  virtual void  v9(); // _ZN10S2333C7_nt2v9Ev
  virtual void  v10(); // _ZN10S2333C7_nt3v10Ev
  S2333C7_nt(); // tgen
};
//SIG(-1 S2333C7_nt) C1{ vd v1 v2 v3}


 S2333C7_nt ::~S2333C7_nt(){ note_dtor("S2333C7_nt", this);}
void  S2333C7_nt ::v8(){vfunc_called(this, "_ZN10S2333C7_nt2v8Ev");}
void  S2333C7_nt ::v9(){vfunc_called(this, "_ZN10S2333C7_nt2v9Ev");}
void  S2333C7_nt ::v10(){vfunc_called(this, "_ZN10S2333C7_nt3v10Ev");}
S2333C7_nt ::S2333C7_nt(){ note_ctor("S2333C7_nt", this);} // tgen

//skip512 S2333C7_nt

#else // __cplusplus

extern void _ZN10S2333C7_ntC1Ev();
extern void _ZN10S2333C7_ntD1Ev();
Name_Map name_map_S2333C7_nt[] = {
  NSPAIR(_ZN10S2333C7_ntC1Ev),
  NSPAIR(_ZN10S2333C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2333C7_nt[];
extern void _ZN10S2333C7_ntD1Ev();
extern void _ZN10S2333C7_ntD0Ev();
extern void _ZN10S2333C7_nt2v8Ev();
extern void _ZN10S2333C7_nt2v9Ev();
extern void _ZN10S2333C7_nt3v10Ev();
static  VTBL_ENTRY vtc_S2333C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2333C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S2333C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2333C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2333C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2333C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2333C7_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S2333C7_nt[];
VTBL_ENTRY *P__ZTI10S2333C7_nt = _ZTI10S2333C7_nt; 
extern  VTBL_ENTRY _ZTV10S2333C7_nt[];
Class_Descriptor cd_S2333C7_nt = {  "S2333C7_nt", // class name
  0,0,//no base classes
  &(vtc_S2333C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S2333C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2333C7_nt),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C3_nt  : S2333C4_nt , S2333C7_nt {
  void *s2333c3f0;
  char s2333c3f1;
  int s2333c3f2;
  virtual  ~S2333C3_nt(); // _ZN10S2333C3_ntD1Ev
  virtual void  v11(); // _ZN10S2333C3_nt3v11Ev
  virtual void  v12(); // _ZN10S2333C3_nt3v12Ev
  virtual void  v13(); // _ZN10S2333C3_nt3v13Ev
  virtual void  v14(); // _ZN10S2333C3_nt3v14Ev
  virtual void  v15(); // _ZN10S2333C3_nt3v15Ev
  virtual void  v16(); // _ZN10S2333C3_nt3v16Ev
  virtual void  v17(); // _ZN10S2333C3_nt3v17Ev
  virtual void  v18(); // _ZN10S2333C3_nt3v18Ev
  virtual void  v19(); // _ZN10S2333C3_nt3v19Ev
  virtual void  v20(); // _ZN10S2333C3_nt3v20Ev
  S2333C3_nt(); // tgen
};
//SIG(-1 S2333C3_nt) C1{ BC2{ vd v11 v12 v13 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC5{ vd v14 v15 v16} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fc Fi}


 S2333C3_nt ::~S2333C3_nt(){ note_dtor("S2333C3_nt", this);}
void  S2333C3_nt ::v11(){vfunc_called(this, "_ZN10S2333C3_nt3v11Ev");}
void  S2333C3_nt ::v12(){vfunc_called(this, "_ZN10S2333C3_nt3v12Ev");}
void  S2333C3_nt ::v13(){vfunc_called(this, "_ZN10S2333C3_nt3v13Ev");}
void  S2333C3_nt ::v14(){vfunc_called(this, "_ZN10S2333C3_nt3v14Ev");}
void  S2333C3_nt ::v15(){vfunc_called(this, "_ZN10S2333C3_nt3v15Ev");}
void  S2333C3_nt ::v16(){vfunc_called(this, "_ZN10S2333C3_nt3v16Ev");}
void  S2333C3_nt ::v17(){vfunc_called(this, "_ZN10S2333C3_nt3v17Ev");}
void  S2333C3_nt ::v18(){vfunc_called(this, "_ZN10S2333C3_nt3v18Ev");}
void  S2333C3_nt ::v19(){vfunc_called(this, "_ZN10S2333C3_nt3v19Ev");}
void  S2333C3_nt ::v20(){vfunc_called(this, "_ZN10S2333C3_nt3v20Ev");}
S2333C3_nt ::S2333C3_nt(){ note_ctor("S2333C3_nt", this);} // tgen

//skip512 S2333C3_nt

#else // __cplusplus

extern void _ZN10S2333C3_ntC1Ev();
extern void _ZN10S2333C3_ntD1Ev();
Name_Map name_map_S2333C3_nt[] = {
  NSPAIR(_ZN10S2333C3_ntC1Ev),
  NSPAIR(_ZN10S2333C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2333C4_nt;
extern VTBL_ENTRY _ZTI10S2333C4_nt[];
extern  VTBL_ENTRY _ZTV10S2333C4_nt[];
extern Class_Descriptor cd_S2333C7_nt;
extern VTBL_ENTRY _ZTI10S2333C7_nt[];
extern  VTBL_ENTRY _ZTV10S2333C7_nt[];
static Base_Class bases_S2333C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2333C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2333C7_nt,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2333C3_nt[];
extern void _ZN10S2333C3_ntD1Ev();
extern void _ZN10S2333C3_ntD0Ev();
extern void _ZN10S2333C4_nt2v5Ev();
extern void _ZN10S2333C4_nt2v6Ev();
extern void _ZN10S2333C4_nt2v7Ev();
extern void _ZN10S2333C3_nt3v11Ev();
extern void _ZN10S2333C3_nt3v12Ev();
extern void _ZN10S2333C3_nt3v13Ev();
extern void _ZN10S2333C3_nt3v14Ev();
extern void _ZN10S2333C3_nt3v15Ev();
extern void _ZN10S2333C3_nt3v16Ev();
extern void _ZN10S2333C3_nt3v17Ev();
extern void _ZN10S2333C3_nt3v18Ev();
extern void _ZN10S2333C3_nt3v19Ev();
extern void _ZN10S2333C3_nt3v20Ev();
extern void ABISELECT(_ZThn40_N10S2333C3_ntD1Ev,_ZThn28_N10S2333C3_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2333C3_ntD0Ev,_ZThn28_N10S2333C3_ntD0Ev)();
extern void _ZN10S2333C7_nt2v8Ev();
extern void _ZN10S2333C7_nt2v9Ev();
extern void _ZN10S2333C7_nt3v10Ev();
static  VTBL_ENTRY vtc_S2333C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2333C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S2333C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v20Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI10S2333C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2333C3_ntD1Ev,_ZThn28_N10S2333C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2333C3_ntD0Ev,_ZThn28_N10S2333C3_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2333C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2333C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2333C7_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S2333C3_nt[];
VTBL_ENTRY *P__ZTI10S2333C3_nt = _ZTI10S2333C3_nt; 
extern  VTBL_ENTRY _ZTV10S2333C3_nt[];
Class_Descriptor cd_S2333C3_nt = {  "S2333C3_nt", // class name
  bases_S2333C3_nt, 2,
  &(vtc_S2333C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI10S2333C3_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S2333C3_nt),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C10  {
  virtual  ~S2333C10(); // _ZN8S2333C10D1Ev
  virtual void  v21(); // _ZN8S2333C103v21Ev
  virtual void  v22(); // _ZN8S2333C103v22Ev
  virtual void  v23(); // _ZN8S2333C103v23Ev
  S2333C10(); // tgen
};
//SIG(-1 S2333C10) C1{ vd v1 v2 v3}


 S2333C10 ::~S2333C10(){ note_dtor("S2333C10", this);}
void  S2333C10 ::v21(){vfunc_called(this, "_ZN8S2333C103v21Ev");}
void  S2333C10 ::v22(){vfunc_called(this, "_ZN8S2333C103v22Ev");}
void  S2333C10 ::v23(){vfunc_called(this, "_ZN8S2333C103v23Ev");}
S2333C10 ::S2333C10(){ note_ctor("S2333C10", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S2333C10C1Ev();
extern void _ZN8S2333C10D1Ev();
Name_Map name_map_S2333C10[] = {
  NSPAIR(_ZN8S2333C10C1Ev),
  NSPAIR(_ZN8S2333C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S2333C10[];
extern void _ZN8S2333C10D1Ev();
extern void _ZN8S2333C10D0Ev();
extern void _ZN8S2333C103v21Ev();
extern void _ZN8S2333C103v22Ev();
extern void _ZN8S2333C103v23Ev();
static  VTBL_ENTRY vtc_S2333C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S2333C10[0]),
  (VTBL_ENTRY)&_ZN8S2333C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2333C10D0Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v23Ev,
};
extern VTBL_ENTRY _ZTI8S2333C10[];
extern  VTBL_ENTRY _ZTV8S2333C10[];
Class_Descriptor cd_S2333C10 = {  "S2333C10", // class name
  0,0,//no base classes
  &(vtc_S2333C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S2333C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S2333C10),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S2333C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C13_nt  {
  ::S2333C14_nt s2333c13f0;
  void  mf2333c13(); // _ZN11S2333C13_nt9mf2333c13Ev
};
//SIG(-1 S2333C13_nt) C1{ m FC2{ FL[4]}}


void  S2333C13_nt ::mf2333c13(){}

//skip512 S2333C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C9_nt  : S2333C10 {
  ::S11969C28_nt s2333c9f0;
  ::S2333C13_nt s2333c9f1;
  char s2333c9f2;
  virtual  ~S2333C9_nt(); // _ZN10S2333C9_ntD1Ev
  virtual void  v24(); // _ZN10S2333C9_nt3v24Ev
  virtual void  v25(); // _ZN10S2333C9_nt3v25Ev
  virtual void  v26(); // _ZN10S2333C9_nt3v26Ev
  S2333C9_nt(); // tgen
};
//SIG(-1 S2333C9_nt) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FC6{ FL[4]}} Fc}


 S2333C9_nt ::~S2333C9_nt(){ note_dtor("S2333C9_nt", this);}
void  S2333C9_nt ::v24(){vfunc_called(this, "_ZN10S2333C9_nt3v24Ev");}
void  S2333C9_nt ::v25(){vfunc_called(this, "_ZN10S2333C9_nt3v25Ev");}
void  S2333C9_nt ::v26(){vfunc_called(this, "_ZN10S2333C9_nt3v26Ev");}
S2333C9_nt ::S2333C9_nt(){ note_ctor("S2333C9_nt", this);} // tgen

//skip512 S2333C9_nt

#else // __cplusplus

extern void _ZN10S2333C9_ntC1Ev();
extern void _ZN10S2333C9_ntD1Ev();
Name_Map name_map_S2333C9_nt[] = {
  NSPAIR(_ZN10S2333C9_ntC1Ev),
  NSPAIR(_ZN10S2333C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2333C10;
extern VTBL_ENTRY _ZTI8S2333C10[];
extern  VTBL_ENTRY _ZTV8S2333C10[];
static Base_Class bases_S2333C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2333C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2333C9_nt[];
extern void _ZN10S2333C9_ntD1Ev();
extern void _ZN10S2333C9_ntD0Ev();
extern void _ZN8S2333C103v21Ev();
extern void _ZN8S2333C103v22Ev();
extern void _ZN8S2333C103v23Ev();
extern void _ZN10S2333C9_nt3v24Ev();
extern void _ZN10S2333C9_nt3v25Ev();
extern void _ZN10S2333C9_nt3v26Ev();
static  VTBL_ENTRY vtc_S2333C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2333C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2333C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI10S2333C9_nt[];
VTBL_ENTRY *P__ZTI10S2333C9_nt = _ZTI10S2333C9_nt; 
extern  VTBL_ENTRY _ZTV10S2333C9_nt[];
Class_Descriptor cd_S2333C9_nt = {  "S2333C9_nt", // class name
  bases_S2333C9_nt, 1,
  &(vtc_S2333C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S2333C9_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2333C9_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C8_nt  : S2333C9_nt {
  virtual  ~S2333C8_nt(); // _ZN10S2333C8_ntD1Ev
  virtual void  v27(); // _ZN10S2333C8_nt3v27Ev
  virtual void  v28(); // _ZN10S2333C8_nt3v28Ev
  virtual void  v29(); // _ZN10S2333C8_nt3v29Ev
  virtual void  v30(); // _ZN10S2333C8_nt3v30Ev
  S2333C8_nt(); // tgen
};
//SIG(-1 S2333C8_nt) C1{ BC2{ BC3{ vd v5 v6 v7} vd v8 v9 v10 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ FL[4]}} Fc} vd v1 v2 v3 v4}


 S2333C8_nt ::~S2333C8_nt(){ note_dtor("S2333C8_nt", this);}
void  S2333C8_nt ::v27(){vfunc_called(this, "_ZN10S2333C8_nt3v27Ev");}
void  S2333C8_nt ::v28(){vfunc_called(this, "_ZN10S2333C8_nt3v28Ev");}
void  S2333C8_nt ::v29(){vfunc_called(this, "_ZN10S2333C8_nt3v29Ev");}
void  S2333C8_nt ::v30(){vfunc_called(this, "_ZN10S2333C8_nt3v30Ev");}
S2333C8_nt ::S2333C8_nt(){ note_ctor("S2333C8_nt", this);} // tgen

//skip512 S2333C8_nt

#else // __cplusplus

extern void _ZN10S2333C8_ntC1Ev();
extern void _ZN10S2333C8_ntD1Ev();
Name_Map name_map_S2333C8_nt[] = {
  NSPAIR(_ZN10S2333C8_ntC1Ev),
  NSPAIR(_ZN10S2333C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2333C10;
extern VTBL_ENTRY _ZTI8S2333C10[];
extern  VTBL_ENTRY _ZTV8S2333C10[];
extern Class_Descriptor cd_S2333C9_nt;
extern VTBL_ENTRY _ZTI10S2333C9_nt[];
extern  VTBL_ENTRY _ZTV10S2333C9_nt[];
static Base_Class bases_S2333C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2333C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2333C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S2333C8_nt[];
extern void _ZN10S2333C8_ntD1Ev();
extern void _ZN10S2333C8_ntD0Ev();
extern void _ZN8S2333C103v21Ev();
extern void _ZN8S2333C103v22Ev();
extern void _ZN8S2333C103v23Ev();
extern void _ZN10S2333C9_nt3v24Ev();
extern void _ZN10S2333C9_nt3v25Ev();
extern void _ZN10S2333C9_nt3v26Ev();
extern void _ZN10S2333C8_nt3v27Ev();
extern void _ZN10S2333C8_nt3v28Ev();
extern void _ZN10S2333C8_nt3v29Ev();
extern void _ZN10S2333C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2333C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2333C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2333C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S2333C8_nt[];
VTBL_ENTRY *P__ZTI10S2333C8_nt = _ZTI10S2333C8_nt; 
extern  VTBL_ENTRY _ZTV10S2333C8_nt[];
Class_Descriptor cd_S2333C8_nt = {  "S2333C8_nt", // class name
  bases_S2333C8_nt, 2,
  &(vtc_S2333C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S2333C8_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2333C8_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C2_nt  : S2333C3_nt , S2333C8_nt {
  int s2333c2f0[3];
  char s2333c2f1;
  ::S2405C25 s2333c2f2;
  virtual  ~S2333C2_nt(); // _ZN10S2333C2_ntD1Ev
  virtual void  v31(); // _ZN10S2333C2_nt3v31Ev
  virtual void  v32(); // _ZN10S2333C2_nt3v32Ev
  virtual void  v33(); // _ZN10S2333C2_nt3v33Ev
  virtual void  v34(); // _ZN10S2333C2_nt3v34Ev
  virtual void  v35(); // _ZN10S2333C2_nt3v35Ev
  virtual void  v36(); // _ZN10S2333C2_nt3v36Ev
  S2333C2_nt(); // tgen
};
//SIG(-1 S2333C2_nt) C1{ BC2{ BC3{ vd v7 v8 v9 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} BC6{ vd v10 v11 v12} vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp Fc Fi} BC7{ BC8{ BC9{ vd v23 v24 v25} vd v26 v27 v28 FC10{ m Fp Fi[2] FC11{ m}} FC12{ m FC13{ FL[4]}} Fc} vd v29 v30 v31 v32} vd v1 v2 v3 v4 v5 v6 Fi[3] Fc FC14{ BC15{ m Fp Fi FC16{ m} FC16}}}


 S2333C2_nt ::~S2333C2_nt(){ note_dtor("S2333C2_nt", this);}
void  S2333C2_nt ::v31(){vfunc_called(this, "_ZN10S2333C2_nt3v31Ev");}
void  S2333C2_nt ::v32(){vfunc_called(this, "_ZN10S2333C2_nt3v32Ev");}
void  S2333C2_nt ::v33(){vfunc_called(this, "_ZN10S2333C2_nt3v33Ev");}
void  S2333C2_nt ::v34(){vfunc_called(this, "_ZN10S2333C2_nt3v34Ev");}
void  S2333C2_nt ::v35(){vfunc_called(this, "_ZN10S2333C2_nt3v35Ev");}
void  S2333C2_nt ::v36(){vfunc_called(this, "_ZN10S2333C2_nt3v36Ev");}
S2333C2_nt ::S2333C2_nt(){ note_ctor("S2333C2_nt", this);} // tgen

//skip512 S2333C2_nt

#else // __cplusplus

extern void _ZN10S2333C2_ntC1Ev();
extern void _ZN10S2333C2_ntD1Ev();
Name_Map name_map_S2333C2_nt[] = {
  NSPAIR(_ZN10S2333C2_ntC1Ev),
  NSPAIR(_ZN10S2333C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2333C4_nt;
extern VTBL_ENTRY _ZTI10S2333C4_nt[];
extern  VTBL_ENTRY _ZTV10S2333C4_nt[];
extern Class_Descriptor cd_S2333C7_nt;
extern VTBL_ENTRY _ZTI10S2333C7_nt[];
extern  VTBL_ENTRY _ZTV10S2333C7_nt[];
extern Class_Descriptor cd_S2333C3_nt;
extern VTBL_ENTRY _ZTI10S2333C3_nt[];
extern  VTBL_ENTRY _ZTV10S2333C3_nt[];
extern Class_Descriptor cd_S2333C10;
extern VTBL_ENTRY _ZTI8S2333C10[];
extern  VTBL_ENTRY _ZTV8S2333C10[];
extern Class_Descriptor cd_S2333C9_nt;
extern VTBL_ENTRY _ZTI10S2333C9_nt[];
extern  VTBL_ENTRY _ZTV10S2333C9_nt[];
extern Class_Descriptor cd_S2333C8_nt;
extern VTBL_ENTRY _ZTI10S2333C8_nt[];
extern  VTBL_ENTRY _ZTV10S2333C8_nt[];
static Base_Class bases_S2333C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2333C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2333C7_nt,    ABISELECT(40,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2333C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2333C10,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2333C9_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2333C8_nt,    ABISELECT(64,44), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2333C2_nt[];
extern void _ZN10S2333C2_ntD1Ev();
extern void _ZN10S2333C2_ntD0Ev();
extern void _ZN10S2333C4_nt2v5Ev();
extern void _ZN10S2333C4_nt2v6Ev();
extern void _ZN10S2333C4_nt2v7Ev();
extern void _ZN10S2333C3_nt3v11Ev();
extern void _ZN10S2333C3_nt3v12Ev();
extern void _ZN10S2333C3_nt3v13Ev();
extern void _ZN10S2333C3_nt3v14Ev();
extern void _ZN10S2333C3_nt3v15Ev();
extern void _ZN10S2333C3_nt3v16Ev();
extern void _ZN10S2333C3_nt3v17Ev();
extern void _ZN10S2333C3_nt3v18Ev();
extern void _ZN10S2333C3_nt3v19Ev();
extern void _ZN10S2333C3_nt3v20Ev();
extern void _ZN10S2333C2_nt3v31Ev();
extern void _ZN10S2333C2_nt3v32Ev();
extern void _ZN10S2333C2_nt3v33Ev();
extern void _ZN10S2333C2_nt3v34Ev();
extern void _ZN10S2333C2_nt3v35Ev();
extern void _ZN10S2333C2_nt3v36Ev();
extern void ABISELECT(_ZThn40_N10S2333C2_ntD1Ev,_ZThn28_N10S2333C2_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2333C2_ntD0Ev,_ZThn28_N10S2333C2_ntD0Ev)();
extern void _ZN10S2333C7_nt2v8Ev();
extern void _ZN10S2333C7_nt2v9Ev();
extern void _ZN10S2333C7_nt3v10Ev();
extern void ABISELECT(_ZThn64_N10S2333C2_ntD1Ev,_ZThn44_N10S2333C2_ntD1Ev)();
extern void ABISELECT(_ZThn64_N10S2333C2_ntD0Ev,_ZThn44_N10S2333C2_ntD0Ev)();
extern void _ZN8S2333C103v21Ev();
extern void _ZN8S2333C103v22Ev();
extern void _ZN8S2333C103v23Ev();
extern void _ZN10S2333C9_nt3v24Ev();
extern void _ZN10S2333C9_nt3v25Ev();
extern void _ZN10S2333C9_nt3v26Ev();
extern void _ZN10S2333C8_nt3v27Ev();
extern void _ZN10S2333C8_nt3v28Ev();
extern void _ZN10S2333C8_nt3v29Ev();
extern void _ZN10S2333C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2333C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2333C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S2333C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v36Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI10S2333C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2333C2_ntD1Ev,_ZThn28_N10S2333C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N10S2333C2_ntD0Ev,_ZThn28_N10S2333C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2333C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2333C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2333C7_nt3v10Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI10S2333C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N10S2333C2_ntD1Ev,_ZThn44_N10S2333C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N10S2333C2_ntD0Ev,_ZThn44_N10S2333C2_ntD0Ev),
  (VTBL_ENTRY)&_ZN8S2333C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S2333C2_nt[];
VTBL_ENTRY *P__ZTI10S2333C2_nt = _ZTI10S2333C2_nt; 
extern  VTBL_ENTRY _ZTV10S2333C2_nt[];
Class_Descriptor cd_S2333C2_nt = {  "S2333C2_nt", // class name
  bases_S2333C2_nt, 6,
  &(vtc_S2333C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,128), // object size
  NSPAIRA(_ZTI10S2333C2_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S2333C2_nt),44, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C19_nt  {
  void *s2333c19f0;
  virtual  ~S2333C19_nt(); // _ZN11S2333C19_ntD1Ev
  virtual void  v37(); // _ZN11S2333C19_nt3v37Ev
  virtual void  v38(); // _ZN11S2333C19_nt3v38Ev
  virtual void  v39(); // _ZN11S2333C19_nt3v39Ev
  virtual void  v40(); // _ZN11S2333C19_nt3v40Ev
  S2333C19_nt(); // tgen
};
//SIG(-1 S2333C19_nt) C1{ vd v1 v2 v3 v4 Fp}


 S2333C19_nt ::~S2333C19_nt(){ note_dtor("S2333C19_nt", this);}
void  S2333C19_nt ::v37(){vfunc_called(this, "_ZN11S2333C19_nt3v37Ev");}
void  S2333C19_nt ::v38(){vfunc_called(this, "_ZN11S2333C19_nt3v38Ev");}
void  S2333C19_nt ::v39(){vfunc_called(this, "_ZN11S2333C19_nt3v39Ev");}
void  S2333C19_nt ::v40(){vfunc_called(this, "_ZN11S2333C19_nt3v40Ev");}
S2333C19_nt ::S2333C19_nt(){ note_ctor("S2333C19_nt", this);} // tgen

//skip512 S2333C19_nt

#else // __cplusplus

extern void _ZN11S2333C19_ntC1Ev();
extern void _ZN11S2333C19_ntD1Ev();
Name_Map name_map_S2333C19_nt[] = {
  NSPAIR(_ZN11S2333C19_ntC1Ev),
  NSPAIR(_ZN11S2333C19_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S2333C19_nt[];
extern void _ZN11S2333C19_ntD1Ev();
extern void _ZN11S2333C19_ntD0Ev();
extern void _ZN11S2333C19_nt3v37Ev();
extern void _ZN11S2333C19_nt3v38Ev();
extern void _ZN11S2333C19_nt3v39Ev();
extern void _ZN11S2333C19_nt3v40Ev();
static  VTBL_ENTRY vtc_S2333C19_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2333C19_nt[0]),
  (VTBL_ENTRY)&_ZN11S2333C19_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2333C19_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2333C19_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S2333C19_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S2333C19_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S2333C19_nt3v40Ev,
};
extern VTBL_ENTRY _ZTI11S2333C19_nt[];
VTBL_ENTRY *P__ZTI11S2333C19_nt = _ZTI11S2333C19_nt; 
extern  VTBL_ENTRY _ZTV11S2333C19_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C22_nt  {
  ::S2405C26 s2333c22f0;
  void  mf2333c22(); // _ZN11S2333C22_nt9mf2333c22Ev
};
//SIG(-1 S2333C22_nt) C1{ m FC2{ m Fp Fi FC3{ m} FC3}}


void  S2333C22_nt ::mf2333c22(){}

//skip512 S2333C22_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C21_nt  {
  ::S2333C22_nt s2333c21f0;
  void *s2333c21f1[3];
  char s2333c21f2;
  virtual  ~S2333C21_nt(); // _ZN11S2333C21_ntD1Ev
  virtual void  v42(); // _ZN11S2333C21_nt3v42Ev
  S2333C21_nt(); // tgen
};
//SIG(-1 S2333C21_nt) C1{ vd v1 FC2{ m FC3{ m Fp Fi FC4{ m} FC4}} Fp[3] Fc}


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

//skip512 S2333C21_nt

#else // __cplusplus

extern void _ZN11S2333C21_ntC1Ev();
extern void _ZN11S2333C21_ntD1Ev();
Name_Map name_map_S2333C21_nt[] = {
  NSPAIR(_ZN11S2333C21_ntC1Ev),
  NSPAIR(_ZN11S2333C21_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S2333C21_nt[];
extern void _ZN11S2333C21_ntD1Ev();
extern void _ZN11S2333C21_ntD0Ev();
extern void _ZN11S2333C21_nt3v42Ev();
static  VTBL_ENTRY vtc_S2333C21_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2333C21_nt[0]),
  (VTBL_ENTRY)&_ZN11S2333C21_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2333C21_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2333C21_nt3v42Ev,
};
extern VTBL_ENTRY _ZTI11S2333C21_nt[];
VTBL_ENTRY *P__ZTI11S2333C21_nt = _ZTI11S2333C21_nt; 
extern  VTBL_ENTRY _ZTV11S2333C21_nt[];
Class_Descriptor cd_S2333C21_nt = {  "S2333C21_nt", // class name
  0,0,//no base classes
  &(vtc_S2333C21_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI11S2333C21_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S2333C21_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C20_nt  : S2333C21_nt {
  void *s2333c20f0;
  virtual void  v41(); // _ZN11S2333C20_nt3v41Ev
  ~S2333C20_nt(); // tgen
  S2333C20_nt(); // tgen
};
//SIG(-1 S2333C20_nt) C1{ BC2{ vd v2 FC3{ m FC4{ m Fp Fi FC5{ m} FC5}} Fp[3] Fc} v1 Fp}


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

//skip512 S2333C20_nt

#else // __cplusplus

extern void _ZN11S2333C20_ntC1Ev();
extern void _ZN11S2333C20_ntD1Ev();
Name_Map name_map_S2333C20_nt[] = {
  NSPAIR(_ZN11S2333C20_ntC1Ev),
  NSPAIR(_ZN11S2333C20_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2333C21_nt;
extern VTBL_ENTRY _ZTI11S2333C21_nt[];
extern  VTBL_ENTRY _ZTV11S2333C21_nt[];
static Base_Class bases_S2333C20_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2333C21_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S2333C20_nt[];
extern void _ZN11S2333C20_ntD1Ev();
extern void _ZN11S2333C20_ntD0Ev();
extern void _ZN11S2333C21_nt3v42Ev();
extern void _ZN11S2333C20_nt3v41Ev();
static  VTBL_ENTRY vtc_S2333C20_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S2333C20_nt[0]),
  (VTBL_ENTRY)&_ZN11S2333C20_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2333C20_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S2333C21_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S2333C20_nt3v41Ev,
};
extern VTBL_ENTRY _ZTI11S2333C20_nt[];
VTBL_ENTRY *P__ZTI11S2333C20_nt = _ZTI11S2333C20_nt; 
extern  VTBL_ENTRY _ZTV11S2333C20_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C27_nt  {
  int s2333c27f0[2];
};
//SIG(-1 S2333C27_nt) C1{ Fi[2]}



//skip512 S2333C27_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C28_nt  {
  int s2333c28f0[3];
  char s2333c28f1[256];
};
//SIG(1 S2333C28_nt) C1{ Fi[3] Fc[256]}



//skip512 S2333C28_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C26_nt  {
  int s2333c26f0[2];
  ::S2333C27_nt s2333c26f1[10];
  ::S2333C28_nt s2333c26f2[10];
};
//SIG(-1 S2333C26_nt) C1{ Fi[2] FC2{ Fi[2]}[10] FC3{ Fi[3] Fc[256]}[10]}



//skip512 S2333C26_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2333C1  : S2333C2_nt {
  ::S2333C19_nt s2333c1f0;
  ::S2333C20_nt s2333c1f1;
  int s2333c1f2[4];
  ::S2333C26_nt s2333c1f3;
  void *s2333c1f4;
  virtual  ~S2333C1(); // _ZN7S2333C1D1Ev
  virtual void  v1(); // _ZN7S2333C12v1Ev
  virtual void  v2(); // _ZN7S2333C12v2Ev
  virtual void  v3(); // _ZN7S2333C12v3Ev
  virtual void  v4(); // _ZN7S2333C12v4Ev
  S2333C1(); // tgen
};
//SIG(1 S2333C1) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} BC7{ vd v8 v9 v10} vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fp Fc Fi} BC8{ BC9{ BC10{ vd v21 v22 v23} vd v24 v25 v26 FC11{ m Fp Fi[2] FC12{ m}} FC13{ m FC14{ FL[4]}} Fc} vd v27 v28 v29 v30} vd v31 v32 v33 v34 v35 v36 Fi[3] Fc FC15{ BC16{ m Fp Fi FC17{ m} FC17}}} vd v1 v2 v3 v4 FC18{ vd v37 v38 v39 v40 Fp} FC19{ BC20{ vd v42 FC21{ m FC16} Fp[3] Fc} v41 Fp} Fi[4] FC22{ Fi[2] FC23{ Fi[2]}[10] FC24{ Fi[3] Fc[256]}[10]} Fp}


 S2333C1 ::~S2333C1(){ note_dtor("S2333C1", this);}
void  S2333C1 ::v1(){vfunc_called(this, "_ZN7S2333C12v1Ev");}
void  S2333C1 ::v2(){vfunc_called(this, "_ZN7S2333C12v2Ev");}
void  S2333C1 ::v3(){vfunc_called(this, "_ZN7S2333C12v3Ev");}
void  S2333C1 ::v4(){vfunc_called(this, "_ZN7S2333C12v4Ev");}
S2333C1 ::S2333C1(){ note_ctor("S2333C1", this);} // tgen

static void Test_S2333C1()
{
  extern Class_Descriptor cd_S2333C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(381,741)];
    init_test(&cd_S2333C1, buf);
    S2333C1 *dp, &lv = *(dp=new (buf) S2333C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3040,2960), "sizeof(S2333C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2333C1)");
    check_base_class_offset(lv, (S2333C4_nt*)(S2333C3_nt*)(S2333C2_nt*), 0, "S2333C1");
    check_base_class_offset(lv, (S2333C7_nt*)(S2333C3_nt*)(S2333C2_nt*), ABISELECT(40,28), "S2333C1");
    check_base_class_offset(lv, (S2333C3_nt*)(S2333C2_nt*), 0, "S2333C1");
    check_base_class_offset(lv, (S2333C10*)(S2333C9_nt*)(S2333C8_nt*)(S2333C2_nt*), ABISELECT(64,44), "S2333C1");
    check_base_class_offset(lv, (S2333C9_nt*)(S2333C8_nt*)(S2333C2_nt*), ABISELECT(64,44), "S2333C1");
    check_base_class_offset(lv, (S2333C8_nt*)(S2333C2_nt*), ABISELECT(64,44), "S2333C1");
    check_base_class_offset(lv, (S2333C2_nt*), 0, "S2333C1");
    check_field_offset(lv, s2333c1f0, ABISELECT(168,128), "S2333C1.s2333c1f0");
    check_field_offset(lv, s2333c1f1, ABISELECT(184,136), "S2333C1.s2333c1f1");
    check_field_offset(lv, s2333c1f2, ABISELECT(248,172), "S2333C1.s2333c1f2");
    check_field_offset(lv, s2333c1f3, ABISELECT(264,188), "S2333C1.s2333c1f3");
    check_field_offset(lv, s2333c1f4, ABISELECT(3032,2956), "S2333C1.s2333c1f4");
    test_class_info(&lv, &cd_S2333C1);
    dp->~S2333C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2333C1(Test_S2333C1, "S2333C1", ABISELECT(3040,2960));

#else // __cplusplus

extern void _ZN7S2333C1C1Ev();
extern void _ZN7S2333C1D1Ev();
Name_Map name_map_S2333C1[] = {
  NSPAIR(_ZN7S2333C1C1Ev),
  NSPAIR(_ZN7S2333C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2333C4_nt;
extern VTBL_ENTRY _ZTI10S2333C4_nt[];
extern  VTBL_ENTRY _ZTV10S2333C4_nt[];
extern Class_Descriptor cd_S2333C7_nt;
extern VTBL_ENTRY _ZTI10S2333C7_nt[];
extern  VTBL_ENTRY _ZTV10S2333C7_nt[];
extern Class_Descriptor cd_S2333C3_nt;
extern VTBL_ENTRY _ZTI10S2333C3_nt[];
extern  VTBL_ENTRY _ZTV10S2333C3_nt[];
extern Class_Descriptor cd_S2333C10;
extern VTBL_ENTRY _ZTI8S2333C10[];
extern  VTBL_ENTRY _ZTV8S2333C10[];
extern Class_Descriptor cd_S2333C9_nt;
extern VTBL_ENTRY _ZTI10S2333C9_nt[];
extern  VTBL_ENTRY _ZTV10S2333C9_nt[];
extern Class_Descriptor cd_S2333C8_nt;
extern VTBL_ENTRY _ZTI10S2333C8_nt[];
extern  VTBL_ENTRY _ZTV10S2333C8_nt[];
extern Class_Descriptor cd_S2333C2_nt;
extern VTBL_ENTRY _ZTI10S2333C2_nt[];
extern  VTBL_ENTRY _ZTV10S2333C2_nt[];
static Base_Class bases_S2333C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2333C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2333C7_nt,    ABISELECT(40,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2333C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2333C10,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2333C9_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2333C8_nt,    ABISELECT(64,44), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2333C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S2333C1[];
extern void _ZN7S2333C1D1Ev();
extern void _ZN7S2333C1D0Ev();
extern void _ZN10S2333C4_nt2v5Ev();
extern void _ZN10S2333C4_nt2v6Ev();
extern void _ZN10S2333C4_nt2v7Ev();
extern void _ZN10S2333C3_nt3v11Ev();
extern void _ZN10S2333C3_nt3v12Ev();
extern void _ZN10S2333C3_nt3v13Ev();
extern void _ZN10S2333C3_nt3v14Ev();
extern void _ZN10S2333C3_nt3v15Ev();
extern void _ZN10S2333C3_nt3v16Ev();
extern void _ZN10S2333C3_nt3v17Ev();
extern void _ZN10S2333C3_nt3v18Ev();
extern void _ZN10S2333C3_nt3v19Ev();
extern void _ZN10S2333C3_nt3v20Ev();
extern void _ZN10S2333C2_nt3v31Ev();
extern void _ZN10S2333C2_nt3v32Ev();
extern void _ZN10S2333C2_nt3v33Ev();
extern void _ZN10S2333C2_nt3v34Ev();
extern void _ZN10S2333C2_nt3v35Ev();
extern void _ZN10S2333C2_nt3v36Ev();
extern void _ZN7S2333C12v1Ev();
extern void _ZN7S2333C12v2Ev();
extern void _ZN7S2333C12v3Ev();
extern void _ZN7S2333C12v4Ev();
extern void ABISELECT(_ZThn40_N7S2333C1D1Ev,_ZThn28_N7S2333C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S2333C1D0Ev,_ZThn28_N7S2333C1D0Ev)();
extern void _ZN10S2333C7_nt2v8Ev();
extern void _ZN10S2333C7_nt2v9Ev();
extern void _ZN10S2333C7_nt3v10Ev();
extern void ABISELECT(_ZThn64_N7S2333C1D1Ev,_ZThn44_N7S2333C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S2333C1D0Ev,_ZThn44_N7S2333C1D0Ev)();
extern void _ZN8S2333C103v21Ev();
extern void _ZN8S2333C103v22Ev();
extern void _ZN8S2333C103v23Ev();
extern void _ZN10S2333C9_nt3v24Ev();
extern void _ZN10S2333C9_nt3v25Ev();
extern void _ZN10S2333C9_nt3v26Ev();
extern void _ZN10S2333C8_nt3v27Ev();
extern void _ZN10S2333C8_nt3v28Ev();
extern void _ZN10S2333C8_nt3v29Ev();
extern void _ZN10S2333C8_nt3v30Ev();
static  VTBL_ENTRY vtc_S2333C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2333C1[0]),
  (VTBL_ENTRY)&_ZN7S2333C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2333C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S2333C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S2333C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S2333C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN7S2333C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2333C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2333C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2333C12v4Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S2333C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2333C1D1Ev,_ZThn28_N7S2333C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2333C1D0Ev,_ZThn28_N7S2333C1D0Ev),
  (VTBL_ENTRY)&_ZN10S2333C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S2333C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S2333C7_nt3v10Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S2333C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S2333C1D1Ev,_ZThn44_N7S2333C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S2333C1D0Ev,_ZThn44_N7S2333C1D0Ev),
  (VTBL_ENTRY)&_ZN8S2333C103v21Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v22Ev,
  (VTBL_ENTRY)&_ZN8S2333C103v23Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2333C9_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2333C8_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI7S2333C1[];
extern  VTBL_ENTRY _ZTV7S2333C1[];
Class_Descriptor cd_S2333C1 = {  "S2333C1", // class name
  bases_S2333C1, 7,
  &(vtc_S2333C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3040,2960), // object size
  NSPAIRA(_ZTI7S2333C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2333C1),48, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  7, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21115C6  : virtual S3572C5 , virtual S3572C4 {
  unsigned char s21115c6f0:1;
  void *s21115c6f1[3];
  ~S21115C6(); // tgen
  S21115C6(); // tgen
};
//SIG(-1 S21115C6) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} Fc:1 Fp[3]}


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

static void Test_S21115C6()
{
  extern Class_Descriptor cd_S21115C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S21115C6, buf);
    S21115C6 *dp, &lv = *(dp=new (buf) S21115C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S21115C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21115C6)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(40,20), "S21115C6");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(80,44), "S21115C6");
    set_bf_and_test(lv, s21115c6f0, ABISELECT(8,4), 0, 1, 1, "S21115C6");
    check_field_offset(lv, s21115c6f1, ABISELECT(16,8), "S21115C6.s21115c6f1");
    test_class_info(&lv, &cd_S21115C6);
    dp->~S21115C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21115C6(Test_S21115C6, "S21115C6", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN8S21115C6C1Ev();
extern void _ZN8S21115C6D1Ev();
Name_Map name_map_S21115C6[] = {
  NSPAIR(_ZN8S21115C6C1Ev),
  NSPAIR(_ZN8S21115C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
static Base_Class bases_S21115C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(80,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21115C6[];
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S21115C6D1Ev,_ZThn44_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S21115C6D0Ev,_ZThn44_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21115C6[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21115C6[];
static  VTT_ENTRY vtt_S21115C6[] = {
  {&(_ZTV8S21115C6[4]),  4,11},
  {&(_ZTV8S21115C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21115C6D0Ev,_ZThn44_N8S21115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21115C6D1Ev,_ZThn44_N8S21115C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21115C6 = {  "S21115C6", // class name
  bases_S21115C6, 2,
  &(vtc_S21115C6[0]), // expected_vtbl_contents
  &(vtt_S21115C6[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI8S21115C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21115C6),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21115C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21115C4  : virtual S3572C5 , virtual S21115C6 {
  short s21115c4f0;
  int s21115c4f1[2];
  char s21115c4f2;
  __tsi64 s21115c4f3;
  int s21115c4f4;
  ::S3572C6_nt s21115c4f5;
  void *s21115c4f6;
  char s21115c4f7;
  short s21115c4f8;
  ::S3572C4 s21115c4f9;
  int s21115c4f10[2];
  __tsi64 s21115c4f11;
  virtual  ~S21115C4(); // _ZN8S21115C4D2Ev
  S21115C4(); // tgen
};
//SIG(-1 S21115C4) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ VBC2 VBC4{ vd m FC2 FC5{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL}


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

static void Test_S21115C4()
{
  extern Class_Descriptor cd_S21115C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,43)];
    init_test(&cd_S21115C4, buf);
    S21115C4 *dp, &lv = *(dp=new (buf) S21115C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,168), "sizeof(S21115C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21115C4)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(128,92), "S21115C4");
    check_base_class_offset(lv, (S3572C5*)(S21115C6*), ABISELECT(128,92), "S21115C4");
    check_base_class_offset(lv, (S3572C4*)(S21115C6*), ABISELECT(208,136), "S21115C4");
    check_base_class_offset(lv, (S21115C6*), ABISELECT(168,116), "S21115C4");
    check_field_offset(lv, s21115c4f0, ABISELECT(8,4), "S21115C4.s21115c4f0");
    check_field_offset(lv, s21115c4f1, ABISELECT(12,8), "S21115C4.s21115c4f1");
    check_field_offset(lv, s21115c4f2, ABISELECT(20,16), "S21115C4.s21115c4f2");
    check_field_offset(lv, s21115c4f3, ABISELECT(24,20), "S21115C4.s21115c4f3");
    check_field_offset(lv, s21115c4f4, ABISELECT(32,28), "S21115C4.s21115c4f4");
    check_field_offset(lv, s21115c4f5, ABISELECT(36,32), "S21115C4.s21115c4f5");
    check_field_offset(lv, s21115c4f6, ABISELECT(40,36), "S21115C4.s21115c4f6");
    check_field_offset(lv, s21115c4f7, ABISELECT(48,40), "S21115C4.s21115c4f7");
    check_field_offset(lv, s21115c4f8, ABISELECT(50,42), "S21115C4.s21115c4f8");
    check_field_offset(lv, s21115c4f9, ABISELECT(56,44), "S21115C4.s21115c4f9");
    check_field_offset(lv, s21115c4f10, ABISELECT(112,76), "S21115C4.s21115c4f10");
    check_field_offset(lv, s21115c4f11, ABISELECT(120,84), "S21115C4.s21115c4f11");
    test_class_info(&lv, &cd_S21115C4);
    dp->~S21115C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21115C4(Test_S21115C4, "S21115C4", ABISELECT(264,168));

#else // __cplusplus

extern void _ZN8S21115C4C1Ev();
extern void _ZN8S21115C4D2Ev();
Name_Map name_map_S21115C4[] = {
  NSPAIR(_ZN8S21115C4C1Ev),
  NSPAIR(_ZN8S21115C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
static Base_Class bases_S21115C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(208,136), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21115C6,    ABISELECT(168,116), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21115C4[];
extern void _ZN8S21115C4D1Ev();
extern void _ZN8S21115C4D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S21115C4D1Ev,_ZThn116_N8S21115C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev)();
extern void ABISELECT(_ZThn168_N8S21115C4D0Ev,_ZThn116_N8S21115C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S21115C4D1Ev,_ZThn136_N8S21115C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S21115C4D0Ev,_ZThn136_N8S21115C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21115C4[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&_ZN8S21115C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C4D0Ev,
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21115C4[];
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C6__8S21115C4[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21115C6D1Ev,_ZThn20_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21115C6D0Ev,_ZThn20_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C6__8S21115C4[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
static  VTT_ENTRY vtt_S21115C4[] = {
  {&(_ZTV8S21115C4[5]),  5,19},
  {&(_ZTV8S21115C4[12]),  12,19},
  {&(_ZTV8S21115C4[17]),  17,19},
  {&(_tg__ZTV8S21115C6__8S21115C4[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C6__8S21115C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21115C4[];
extern  VTBL_ENTRY _ZTV8S21115C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C4[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21115C6D0Ev,_ZThn20_N8S21115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21115C6D1Ev,_ZThn20_N8S21115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C4D0Ev,_ZThn136_N8S21115C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C4D1Ev,_ZThn136_N8S21115C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21115C4D0Ev,_ZThn116_N8S21115C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21115C4D1Ev,_ZThn116_N8S21115C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21115C4 = {  "S21115C4", // class name
  bases_S21115C4, 3,
  &(vtc_S21115C4[0]), // expected_vtbl_contents
  &(vtt_S21115C4[0]), // expected_vtt_contents
  ABISELECT(264,168), // object size
  NSPAIRA(_ZTI8S21115C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21115C4),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21115C4),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21115C10  : virtual S3572C5 , virtual S3572C4 , S21115C6 {
  char s21115c10f0;
  int s21115c10f1[3];
  void *s21115c10f2;
  short s21115c10f3:16;
  int s21115c10f4;
  void *s21115c10f5[2];
  int s21115c10f6;
  ::S3572C5 s21115c10f7[9];
  int s21115c10f8;
  virtual  ~S21115C10(); // _ZN9S21115C10D2Ev
  S21115C10(); // tgen
};
//SIG(-1 S21115C10) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC2[9] Fi}


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

static void Test_S21115C10()
{
  extern Class_Descriptor cd_S21115C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(71,85)];
    init_test(&cd_S21115C10, buf);
    S21115C10 *dp, &lv = *(dp=new (buf) S21115C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,336), "sizeof(S21115C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21115C10)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(464,280), "S21115C10");
    check_base_class_offset(lv, (S3572C5*)(S21115C6*), ABISELECT(464,280), "S21115C10");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(504,304), "S21115C10");
    check_base_class_offset(lv, (S3572C4*)(S21115C6*), ABISELECT(504,304), "S21115C10");
    check_base_class_offset(lv, (S21115C6*), 0, "S21115C10");
    check_field_offset(lv, s21115c10f0, ABISELECT(40,20), "S21115C10.s21115c10f0");
    check_field_offset(lv, s21115c10f1, ABISELECT(44,24), "S21115C10.s21115c10f1");
    check_field_offset(lv, s21115c10f2, ABISELECT(56,36), "S21115C10.s21115c10f2");
    set_bf_and_test(lv, s21115c10f3, ABISELECT(64,40), 0, 16, 1, "S21115C10");
    set_bf_and_test(lv, s21115c10f3, ABISELECT(64,40), 0, 16, hide_sll(1LL<<15), "S21115C10");
    check_field_offset(lv, s21115c10f4, ABISELECT(68,44), "S21115C10.s21115c10f4");
    check_field_offset(lv, s21115c10f5, ABISELECT(72,48), "S21115C10.s21115c10f5");
    check_field_offset(lv, s21115c10f6, ABISELECT(88,56), "S21115C10.s21115c10f6");
    check_field_offset(lv, s21115c10f7, ABISELECT(96,60), "S21115C10.s21115c10f7");
    check_field_offset(lv, s21115c10f8, ABISELECT(456,276), "S21115C10.s21115c10f8");
    test_class_info(&lv, &cd_S21115C10);
    dp->~S21115C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21115C10(Test_S21115C10, "S21115C10", ABISELECT(560,336));

#else // __cplusplus

extern void _ZN9S21115C10C1Ev();
extern void _ZN9S21115C10D2Ev();
Name_Map name_map_S21115C10[] = {
  NSPAIR(_ZN9S21115C10C1Ev),
  NSPAIR(_ZN9S21115C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
static Base_Class bases_S21115C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(464,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(504,304), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21115C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21115C10[];
extern void _ZN9S21115C10D1Ev();
extern void _ZN9S21115C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21115C10D1Ev,_ZTv0_n12_N9S21115C10D1Ev)();
extern void ABISELECT(_ZThn504_N9S21115C10D1Ev,_ZThn304_N9S21115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21115C10D0Ev,_ZTv0_n12_N9S21115C10D0Ev)();
extern void ABISELECT(_ZThn504_N9S21115C10D0Ev,_ZThn304_N9S21115C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21115C10[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C10[0]),
  (VTBL_ENTRY)&_ZN9S21115C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C10D0Ev,
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI9S21115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C10D1Ev,_ZTv0_n12_N9S21115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C10D0Ev,_ZTv0_n12_N9S21115C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S21115C10[];
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C6__9S21115C10[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn504_N8S21115C6D1Ev,_ZThn304_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn504_N8S21115C6D0Ev,_ZThn304_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C6__9S21115C10[] = {
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
static  VTT_ENTRY vtt_S21115C10[] = {
  {&(_ZTV9S21115C10[4]),  4,11},
  {&(_tg__ZTV8S21115C6__9S21115C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C6__9S21115C10[3]),  3,5},
  {&(_ZTV9S21115C10[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S21115C10[];
extern  VTBL_ENTRY _ZTV9S21115C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C10[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S21115C6D0Ev,_ZThn304_N8S21115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S21115C6D1Ev,_ZThn304_N8S21115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C10D0Ev,_ZTv0_n12_N9S21115C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S21115C10D0Ev,_ZThn304_N9S21115C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C10D1Ev,_ZTv0_n12_N9S21115C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S21115C10D1Ev,_ZThn304_N9S21115C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21115C10 = {  "S21115C10", // class name
  bases_S21115C10, 3,
  &(vtc_S21115C10[0]), // expected_vtbl_contents
  &(vtt_S21115C10[0]), // expected_vtt_contents
  ABISELECT(560,336), // object size
  NSPAIRA(_ZTI9S21115C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21115C10),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21115C10),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21115C11  : virtual S3572C5 , S3572C4 , S21115C6 {
  char s21115c11f0;
  void *s21115c11f1[7];
  long double s21115c11f2;
  void *s21115c11f3[4];
  int s21115c11f4;
  char s21115c11f5;
  void *s21115c11f6;
  virtual  ~S21115C11(); // _ZN9S21115C11D2Ev
  virtual void  v3(); // _ZN9S21115C112v3Ev
  S21115C11(); // tgen
};
//SIG(-1 S21115C11) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} BC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}


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

static void Test_S21115C11()
{
  extern Class_Descriptor cd_S21115C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,46)];
    init_test(&cd_S21115C11, buf);
    S21115C11 *dp, &lv = *(dp=new (buf) S21115C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,180), "sizeof(S21115C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21115C11)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(224,124), "S21115C11");
    check_base_class_offset(lv, (S3572C5*)(S21115C6*), ABISELECT(224,124), "S21115C11");
    /*is_ambiguous_... S21115C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S21115C11");
    check_base_class_offset(lv, (S3572C4*)(S21115C6*), ABISELECT(264,148), "S21115C11");
    check_base_class_offset(lv, (S21115C6*), ABISELECT(56,32), "S21115C11");
    check_field_offset(lv, s21115c11f0, ABISELECT(96,52), "S21115C11.s21115c11f0");
    check_field_offset(lv, s21115c11f1, ABISELECT(104,56), "S21115C11.s21115c11f1");
    check_field_offset(lv, s21115c11f2, ABISELECT(160,84), "S21115C11.s21115c11f2");
    check_field_offset(lv, s21115c11f3, ABISELECT(176,96), "S21115C11.s21115c11f3");
    check_field_offset(lv, s21115c11f4, ABISELECT(208,112), "S21115C11.s21115c11f4");
    check_field_offset(lv, s21115c11f5, ABISELECT(212,116), "S21115C11.s21115c11f5");
    check_field_offset(lv, s21115c11f6, ABISELECT(216,120), "S21115C11.s21115c11f6");
    test_class_info(&lv, &cd_S21115C11);
    dp->~S21115C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21115C11(Test_S21115C11, "S21115C11", ABISELECT(320,180));

#else // __cplusplus

extern void _ZN9S21115C11C1Ev();
extern void _ZN9S21115C11D2Ev();
Name_Map name_map_S21115C11[] = {
  NSPAIR(_ZN9S21115C11C1Ev),
  NSPAIR(_ZN9S21115C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
static Base_Class bases_S21115C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(224,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
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3572C4,    ABISELECT(264,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21115C6,    ABISELECT(56,32), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21115C11[];
extern void _ZN9S21115C11D1Ev();
extern void _ZN9S21115C11D0Ev();
extern void _ZN9S21115C112v3Ev();
extern void ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21115C11D1Ev,_ZThn148_N9S21115C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev)();
extern void ABISELECT(_ZThn264_N9S21115C11D0Ev,_ZThn148_N9S21115C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21115C11[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&_ZN9S21115C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev),
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S21115C11[];
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C6__9S21115C11[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn208_N8S21115C6D1Ev,_ZThn116_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn208_N8S21115C6D0Ev,_ZThn116_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C6__9S21115C11[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
static  VTT_ENTRY vtt_S21115C11[] = {
  {&(_ZTV9S21115C11[4]),  4,18},
  {&(_tg__ZTV8S21115C6__9S21115C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C6__9S21115C11[3]),  3,5},
  {&(_ZTV9S21115C11[11]),  11,18},
  {&(_ZTV9S21115C11[16]),  16,18},
};
extern VTBL_ENTRY _ZTI9S21115C11[];
extern  VTBL_ENTRY _ZTV9S21115C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C11[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C6D0Ev,_ZThn116_N8S21115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C6D1Ev,_ZThn116_N8S21115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21115C11D0Ev,_ZThn148_N9S21115C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21115C11D1Ev,_ZThn148_N9S21115C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21115C11 = {  "S21115C11", // class name
  bases_S21115C11, 4,
  &(vtc_S21115C11[0]), // expected_vtbl_contents
  &(vtt_S21115C11[0]), // expected_vtt_contents
  ABISELECT(320,180), // object size
  NSPAIRA(_ZTI9S21115C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21115C11),18, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21115C11),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21115C9  : virtual S3572C4 , S21115C6 , virtual S21115C10 {
  ::S21115C11 s21115c9f0;
  virtual  ~S21115C9(); // _ZN8S21115C9D2Ev
  S21115C9(); // tgen
};
//SIG(-1 S21115C9) C1{ VBC2{ vd m FC3{ m Fp Fs Fi Fp Fl[2]} FC4{}} BC5{ VBC3 VBC2 Fc:1 Fp[3]} VBC6{ VBC3 VBC2 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC7{ VBC3 BC2 BC5 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}}


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

static void Test_S21115C9()
{
  extern Class_Descriptor cd_S21115C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,135)];
    init_test(&cd_S21115C9, buf);
    S21115C9 *dp, &lv = *(dp=new (buf) S21115C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,536), "sizeof(S21115C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21115C9)");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(368,200), "S21115C9");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C6*), ABISELECT(368,200), "S21115C9");
    check_base_class_offset(lv, (S3572C4*)(S21115C10*), ABISELECT(368,200), "S21115C9");
    check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C10*), ABISELECT(368,200), "S21115C9");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C6*), ABISELECT(424,232), "S21115C9");
    check_base_class_offset(lv, (S3572C5*)(S21115C10*), ABISELECT(424,232), "S21115C9");
    check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C10*), ABISELECT(424,232), "S21115C9");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S21115C6*), 0, "S21115C9");
    check_base_class_offset(lv, (S21115C6*)(S21115C10*), ABISELECT(464,256), "S21115C9");
    check_base_class_offset(lv, (S21115C10*), ABISELECT(464,256), "S21115C9");
    check_field_offset(lv, s21115c9f0, ABISELECT(48,20), "S21115C9.s21115c9f0");
    test_class_info(&lv, &cd_S21115C9);
    dp->~S21115C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21115C9(Test_S21115C9, "S21115C9", ABISELECT(928,536));

#else // __cplusplus

extern void _ZN8S21115C9C1Ev();
extern void _ZN8S21115C9D2Ev();
Name_Map name_map_S21115C9[] = {
  NSPAIR(_ZN8S21115C9C1Ev),
  NSPAIR(_ZN8S21115C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C10;
extern VTBL_ENTRY _ZTI9S21115C10[];
extern  VTBL_ENTRY _ZTV9S21115C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C10[];
static Base_Class bases_S21115C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(368,200), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C5,    ABISELECT(424,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21115C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21115C6,    ABISELECT(464,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21115C10,    ABISELECT(464,256), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21115C9[];
extern void _ZN8S21115C9D1Ev();
extern void _ZN8S21115C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev)();
extern void ABISELECT(_ZThn368_N8S21115C9D1Ev,_ZThn200_N8S21115C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev)();
extern void ABISELECT(_ZThn368_N8S21115C9D0Ev,_ZThn200_N8S21115C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev)();
extern void ABISELECT(_ZThn464_N8S21115C9D1Ev,_ZThn256_N8S21115C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev)();
extern void ABISELECT(_ZThn464_N8S21115C9D0Ev,_ZThn256_N8S21115C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21115C9[] = {
  ABISELECT(464,256),
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&_ZN8S21115C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C9D0Ev,
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev),
  ABISELECT(-464,-256),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21115C9[];
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C6__8S21115C9[] = {
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn368_N8S21115C6D1Ev,_ZThn200_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn368_N8S21115C6D0Ev,_ZThn200_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C6__8S21115C9[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void _ZN9S21115C10D1Ev();
extern void _ZN9S21115C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C10__8S21115C9[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C10[0]),
  (VTBL_ENTRY)&_ZN9S21115C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C10D0Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C10__A1__8S21115C9[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C69S21115C10__A1__8S21115C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21115C10D1Ev,_ZTv0_n12_N9S21115C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21115C10D0Ev,_ZTv0_n12_N9S21115C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S21115C10__8S21115C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S21115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C10D1Ev,_ZTv0_n12_N9S21115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C10D0Ev,_ZTv0_n12_N9S21115C10D0Ev),
};
static  VTT_ENTRY vtt_S21115C9[] = {
  {&(_ZTV8S21115C9[5]),  5,19},
  {&(_tg__ZTV8S21115C6__8S21115C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C6__8S21115C9[3]),  3,5},
  {&(_ZTV8S21115C9[10]),  10,19},
  {&(_ZTV8S21115C9[17]),  17,19},
  {&(_tg__ZTV9S21115C10__8S21115C9[4]),  4,6},
  {&(_tg__ZTV8S21115C69S21115C10__A1__8S21115C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C69S21115C10__A1__8S21115C9[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S21115C10__8S21115C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21115C9[];
extern  VTBL_ENTRY _ZTV8S21115C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C9[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21115C6D0Ev,_ZThn200_N8S21115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21115C6D1Ev,_ZThn200_N8S21115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S21115C9D0Ev,_ZThn256_N8S21115C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S21115C9D1Ev,_ZThn256_N8S21115C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21115C9D0Ev,_ZThn200_N8S21115C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21115C9D1Ev,_ZThn200_N8S21115C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21115C9 = {  "S21115C9", // class name
  bases_S21115C9, 5,
  &(vtc_S21115C9[0]), // expected_vtbl_contents
  &(vtt_S21115C9[0]), // expected_vtt_contents
  ABISELECT(928,536), // object size
  NSPAIRA(_ZTI8S21115C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21115C9),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21115C9),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21115C3  : virtual S21115C4 , S3572C4 , S21115C9 {
  int s21115c3f0[6];
  void *s21115c3f1[8];
  virtual  ~S21115C3(); // _ZN8S21115C3D2Ev
  S21115C3(); // tgen
};
//SIG(-1 S21115C3) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ VBC3 VBC5{ vd m FC3 FC6{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} BC5 BC7{ VBC5 BC4 VBC8{ VBC3 VBC5 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC9{ VBC3 BC5 BC4 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]}


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

static void Test_S21115C3()
{
  extern Class_Descriptor cd_S21115C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(79,185)];
    init_test(&cd_S21115C3, buf);
    S21115C3 *dp, &lv = *(dp=new (buf) S21115C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1248,736), "sizeof(S21115C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21115C3)");
    check_base_class_offset(lv, (S3572C5*)(S21115C4*), ABISELECT(648,380), "S21115C3");
    /*is_ambiguous_... S21115C3::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C6*), ABISELECT(648,380), "S21115C3");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C9*), ABISELECT(648,380), "S21115C3");
    check_base_class_offset(lv, (S3572C5*)(S21115C10*), ABISELECT(648,380), "S21115C3");
    check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C10*), ABISELECT(648,380), "S21115C3");
    /*is_ambiguous_... S21115C3::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C6*), ABISELECT(728,424), "S21115C3");
    check_base_class_offset(lv, (S3572C4*)(S21115C9*), ABISELECT(728,424), "S21115C3");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C9*), ABISELECT(728,424), "S21115C3");
    check_base_class_offset(lv, (S3572C4*)(S21115C10*), ABISELECT(728,424), "S21115C3");
    check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C10*), ABISELECT(728,424), "S21115C3");
    check_base_class_offset(lv, (S21115C6*)(S21115C4*), ABISELECT(688,404), "S21115C3");
    check_base_class_offset(lv, (S21115C4*), ABISELECT(520,288), "S21115C3");
    /*is_ambiguous_... S21115C3::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S21115C3");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S21115C6*)(S21115C9*), ABISELECT(64,32), "S21115C3");
    check_base_class_offset(lv, (S21115C6*)(S21115C10*), ABISELECT(784,456), "S21115C3");
    check_base_class_offset(lv, (S21115C10*)(S21115C9*), ABISELECT(784,456), "S21115C3");
    check_base_class_offset(lv, (S21115C9*), ABISELECT(64,32), "S21115C3");
    check_field_offset(lv, s21115c3f0, ABISELECT(432,232), "S21115C3.s21115c3f0");
    check_field_offset(lv, s21115c3f1, ABISELECT(456,256), "S21115C3.s21115c3f1");
    test_class_info(&lv, &cd_S21115C3);
    dp->~S21115C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21115C3(Test_S21115C3, "S21115C3", ABISELECT(1248,736));

#else // __cplusplus

extern void _ZN8S21115C3C1Ev();
extern void _ZN8S21115C3D2Ev();
Name_Map name_map_S21115C3[] = {
  NSPAIR(_ZN8S21115C3C1Ev),
  NSPAIR(_ZN8S21115C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C4;
extern VTBL_ENTRY _ZTI8S21115C4[];
extern  VTBL_ENTRY _ZTV8S21115C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C10;
extern VTBL_ENTRY _ZTI9S21115C10[];
extern  VTBL_ENTRY _ZTV9S21115C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C10[];
extern Class_Descriptor cd_S21115C9;
extern VTBL_ENTRY _ZTI8S21115C9[];
extern  VTBL_ENTRY _ZTV8S21115C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C9[];
static Base_Class bases_S21115C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(648,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(728,424), //bcp->offset
    31, //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
    2, //immediately_derived
  0, 1},
  {&cd_S21115C6,    ABISELECT(688,404), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21115C4,    ABISELECT(520,288), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21115C6,    ABISELECT(64,32), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21115C6,    ABISELECT(784,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21115C10,    ABISELECT(784,456), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21115C9,    ABISELECT(64,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21115C3[];
extern void _ZN8S21115C3D1Ev();
extern void _ZN8S21115C3D0Ev();
extern void ABISELECT(_ZThn64_N8S21115C3D1Ev,_ZThn32_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21115C3D0Ev,_ZThn32_N8S21115C3D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21115C3D1Ev,_ZTv0_n24_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn520_N8S21115C3D1Ev,_ZThn288_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21115C3D0Ev,_ZTv0_n24_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn520_N8S21115C3D0Ev,_ZThn288_N8S21115C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn688_N8S21115C3D1Ev,_ZThn404_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn688_N8S21115C3D0Ev,_ZThn404_N8S21115C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C3D1Ev,_ZTv0_n12_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn728_N8S21115C3D1Ev,_ZThn424_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C3D0Ev,_ZTv0_n12_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn728_N8S21115C3D0Ev,_ZThn424_N8S21115C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn784_N8S21115C3D1Ev,_ZThn456_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn784_N8S21115C3D0Ev,_ZThn456_N8S21115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21115C3[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&_ZN8S21115C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C3D0Ev,
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21115C3D1Ev,_ZThn32_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21115C3D0Ev,_ZThn32_N8S21115C3D0Ev),
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C3D1Ev,_ZTv0_n24_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C3D0Ev,_ZTv0_n24_N8S21115C3D0Ev),
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev),
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C3D1Ev,_ZTv0_n12_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C3D0Ev,_ZTv0_n12_N8S21115C3D0Ev),
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21115C3[];
extern void _ZN8S21115C9D1Ev();
extern void _ZN8S21115C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C9__8S21115C3[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&_ZN8S21115C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C9D0Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C68S21115C9__A1__8S21115C3[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn664_N8S21115C6D1Ev,_ZThn392_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn664_N8S21115C6D0Ev,_ZThn392_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C68S21115C9__A1__8S21115C3[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev)();
extern void ABISELECT(_ZThn664_N8S21115C9D1Ev,_ZThn392_N8S21115C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev)();
extern void ABISELECT(_ZThn664_N8S21115C9D0Ev,_ZThn392_N8S21115C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C9__8S21115C3[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev)();
extern void ABISELECT(_ZThn720_N8S21115C9D1Ev,_ZThn424_N8S21115C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev)();
extern void ABISELECT(_ZThn720_N8S21115C9D0Ev,_ZThn424_N8S21115C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21115C10__8S21115C9__8S21115C3[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev),
};
extern void _ZN8S21115C4D1Ev();
extern void _ZN8S21115C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C4__8S21115C3[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&_ZN8S21115C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C4D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S21115C4D1Ev,_ZThn116_N8S21115C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev)();
extern void ABISELECT(_ZThn168_N8S21115C4D0Ev,_ZThn116_N8S21115C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21115C6__8S21115C4__8S21115C3[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S21115C4D1Ev,_ZThn136_N8S21115C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S21115C4D0Ev,_ZThn136_N8S21115C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C4__8S21115C3[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev),
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C6__8S21115C3[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21115C6D1Ev,_ZThn20_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21115C6D0Ev,_ZThn20_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C6__8S21115C3[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void _ZN9S21115C10D1Ev();
extern void _ZN9S21115C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C10__8S21115C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C10[0]),
  (VTBL_ENTRY)&_ZN9S21115C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C10D0Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C10__A2__8S21115C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C69S21115C10__A2__8S21115C3[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21115C10D1Ev,_ZTv0_n12_N9S21115C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21115C10D0Ev,_ZTv0_n12_N9S21115C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S21115C10__8S21115C3[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C10D1Ev,_ZTv0_n12_N9S21115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C10D0Ev,_ZTv0_n12_N9S21115C10D0Ev),
};
static  VTT_ENTRY vtt_S21115C3[] = {
  {&(_ZTV8S21115C3[7]),  7,43},
  {&(_tg__ZTV8S21115C9__8S21115C3[5]),  5,7},
  {&(_tg__ZTV8S21115C68S21115C9__A1__8S21115C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C68S21115C9__A1__8S21115C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S21115C9__8S21115C3[3]),  3,5},
  {&(_tg__ZTV9S21115C10__8S21115C9__8S21115C3[5]),  5,7},
  {&(_ZTV8S21115C3[22]),  22,43},
  {&(_ZTV8S21115C3[29]),  29,43},
  {&(_ZTV8S21115C3[34]),  34,43},
  {&(_ZTV8S21115C3[14]),  14,43},
  {&(_ZTV8S21115C3[41]),  41,43},
  {&(_tg__ZTV8S21115C4__8S21115C3[5]),  5,7},
  {&(_tg__ZTV8S21115C6__8S21115C4__8S21115C3[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21115C4__8S21115C3[3]),  3,5},
  {&(_tg__ZTV8S21115C6__8S21115C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C6__8S21115C3[3]),  3,5},
  {&(_tg__ZTV9S21115C10__8S21115C3[4]),  4,6},
  {&(_tg__ZTV8S21115C69S21115C10__A2__8S21115C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C69S21115C10__A2__8S21115C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S21115C10__8S21115C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21115C3[];
extern  VTBL_ENTRY _ZTV8S21115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C3[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C4D0Ev,_ZThn136_N8S21115C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C4D1Ev,_ZThn136_N8S21115C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21115C4D0Ev,_ZThn116_N8S21115C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21115C4D1Ev,_ZThn116_N8S21115C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21115C9D0Ev,_ZThn424_N8S21115C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21115C9D1Ev,_ZThn424_N8S21115C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C9D0Ev,_ZThn392_N8S21115C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C9D1Ev,_ZThn392_N8S21115C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21115C6D0Ev,_ZThn20_N8S21115C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C6D0Ev,_ZThn392_N8S21115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21115C6D1Ev,_ZThn20_N8S21115C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C6D1Ev,_ZThn392_N8S21115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C3D0Ev,_ZTv0_n12_N8S21115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21115C3D0Ev,_ZThn424_N8S21115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C3D1Ev,_ZTv0_n12_N8S21115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21115C3D1Ev,_ZThn424_N8S21115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21115C3D0Ev,_ZThn456_N8S21115C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21115C3D0Ev,_ZThn404_N8S21115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21115C3D1Ev,_ZThn456_N8S21115C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21115C3D1Ev,_ZThn404_N8S21115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C3D0Ev,_ZTv0_n24_N8S21115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21115C3D0Ev,_ZThn288_N8S21115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C3D1Ev,_ZTv0_n24_N8S21115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21115C3D1Ev,_ZThn288_N8S21115C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21115C3 = {  "S21115C3", // class name
  bases_S21115C3, 9,
  &(vtc_S21115C3[0]), // expected_vtbl_contents
  &(vtt_S21115C3[0]), // expected_vtt_contents
  ABISELECT(1248,736), // object size
  NSPAIRA(_ZTI8S21115C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21115C3),43, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21115C3),20, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21115C12  : virtual S21115C11 {
  int s21115c12f0;
  void *s21115c12f1;
  int s21115c12f2:2;
  long double s21115c12f3;
  void *s21115c12f4;
  virtual  ~S21115C12(); // _ZN9S21115C12D2Ev
  virtual void  v4(); // _ZN9S21115C122v4Ev
  S21115C12(); // tgen
};
//SIG(-1 S21115C12) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} BC4{ vd m FC3 FC5{}} BC6{ VBC3 VBC4 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v1 Fi Fp Fi:2 FD Fp}


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

static void Test_S21115C12()
{
  extern Class_Descriptor cd_S21115C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,54)];
    init_test(&cd_S21115C12, buf);
    S21115C12 *dp, &lv = *(dp=new (buf) S21115C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,212), "sizeof(S21115C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21115C12)");
    check_base_class_offset(lv, (S3572C5*)(S21115C11*), ABISELECT(288,156), "S21115C12");
    check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C11*), ABISELECT(288,156), "S21115C12");
    /*is_ambiguous_... S21115C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C11*), ABISELECT(64,32), "S21115C12");
    check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C11*), ABISELECT(328,180), "S21115C12");
    check_base_class_offset(lv, (S21115C6*)(S21115C11*), ABISELECT(120,64), "S21115C12");
    check_base_class_offset(lv, (S21115C11*), ABISELECT(64,32), "S21115C12");
    check_field_offset(lv, s21115c12f0, ABISELECT(8,4), "S21115C12.s21115c12f0");
    check_field_offset(lv, s21115c12f1, ABISELECT(16,8), "S21115C12.s21115c12f1");
    set_bf_and_test(lv, s21115c12f2, ABISELECT(24,12), 0, 2, 1, "S21115C12");
    set_bf_and_test(lv, s21115c12f2, ABISELECT(24,12), 0, 2, hide_sll(1LL<<1), "S21115C12");
    check_field_offset(lv, s21115c12f3, ABISELECT(32,16), "S21115C12.s21115c12f3");
    check_field_offset(lv, s21115c12f4, ABISELECT(48,28), "S21115C12.s21115c12f4");
    test_class_info(&lv, &cd_S21115C12);
    dp->~S21115C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21115C12(Test_S21115C12, "S21115C12", ABISELECT(384,212));

#else // __cplusplus

extern void _ZN9S21115C12C1Ev();
extern void _ZN9S21115C12D2Ev();
Name_Map name_map_S21115C12[] = {
  NSPAIR(_ZN9S21115C12C1Ev),
  NSPAIR(_ZN9S21115C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C11;
extern VTBL_ENTRY _ZTI9S21115C11[];
extern  VTBL_ENTRY _ZTV9S21115C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C11[];
static Base_Class bases_S21115C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(288,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_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(328,180), //bcp->offset
    23, //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_S21115C6,    ABISELECT(120,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21115C11,    ABISELECT(64,32), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21115C12[];
extern void _ZN9S21115C12D1Ev();
extern void _ZN9S21115C12D0Ev();
extern void _ZN9S21115C122v4Ev();
extern void ABISELECT(_ZTv0_n40_N9S21115C12D1Ev,_ZTv0_n20_N9S21115C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S21115C12D1Ev,_ZThn32_N9S21115C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21115C12D0Ev,_ZTv0_n20_N9S21115C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S21115C12D0Ev,_ZThn32_N9S21115C12D0Ev)() __attribute__((weak));
extern void _ZN9S21115C112v3Ev();
extern void ABISELECT(_ZTvn56_n40_N9S21115C12D1Ev,_ZTvn32_n20_N9S21115C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S21115C12D0Ev,_ZTvn32_n20_N9S21115C12D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21115C12D1Ev,_ZTv0_n12_N9S21115C12D1Ev)();
extern void ABISELECT(_ZThn328_N9S21115C12D1Ev,_ZThn180_N9S21115C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21115C12D0Ev,_ZTv0_n12_N9S21115C12D0Ev)();
extern void ABISELECT(_ZThn328_N9S21115C12D0Ev,_ZThn180_N9S21115C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21115C12[] = {
  ABISELECT(328,180),
  ABISELECT(288,156),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&_ZN9S21115C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21115C122v4Ev,
  0,
  ABISELECT(-64,-32),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21115C12D1Ev,_ZTv0_n20_N9S21115C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21115C12D0Ev,_ZTv0_n20_N9S21115C12D0Ev),
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21115C12D1Ev,_ZTvn32_n20_N9S21115C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21115C12D0Ev,_ZTvn32_n20_N9S21115C12D0Ev),
  ABISELECT(-328,-180),
  ABISELECT(-328,-180),
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C12D1Ev,_ZTv0_n12_N9S21115C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C12D0Ev,_ZTv0_n12_N9S21115C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S21115C12[];
extern void _ZN9S21115C11D1Ev();
extern void _ZN9S21115C11D0Ev();
extern void _ZN9S21115C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C11__9S21115C12[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&_ZN9S21115C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C11__9S21115C12[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn208_N8S21115C6D1Ev,_ZThn116_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn208_N8S21115C6D0Ev,_ZThn116_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C69S21115C11__9S21115C12[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C6__9S21115C11__9S21115C12[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21115C11D1Ev,_ZThn148_N9S21115C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev)();
extern void ABISELECT(_ZThn264_N9S21115C11D0Ev,_ZThn148_N9S21115C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21115C11__9S21115C12[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev),
};
static  VTT_ENTRY vtt_S21115C12[] = {
  {&(_ZTV9S21115C12[5]),  5,28},
  {&(_ZTV9S21115C12[14]),  14,28},
  {&(_ZTV9S21115C12[21]),  21,28},
  {&(_ZTV9S21115C12[26]),  26,28},
  {&(_tg__ZTV9S21115C11__9S21115C12[4]),  4,7},
  {&(_tg__ZTV8S21115C69S21115C11__9S21115C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C69S21115C11__9S21115C12[3]),  3,5},
  {&(_tg__ZTV8S21115C6__9S21115C11__9S21115C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21115C11__9S21115C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21115C12[];
extern  VTBL_ENTRY _ZTV9S21115C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C12[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21115C11D0Ev,_ZThn148_N9S21115C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21115C11D1Ev,_ZThn148_N9S21115C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C6D0Ev,_ZThn116_N8S21115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C6D1Ev,_ZThn116_N8S21115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C12D0Ev,_ZTv0_n12_N9S21115C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S21115C12D0Ev,_ZThn180_N9S21115C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C12D1Ev,_ZTv0_n12_N9S21115C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S21115C12D1Ev,_ZThn180_N9S21115C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21115C12D0Ev,_ZTv0_n20_N9S21115C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21115C12D0Ev,_ZThn32_N9S21115C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21115C12D1Ev,_ZTv0_n20_N9S21115C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21115C12D1Ev,_ZThn32_N9S21115C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21115C12 = {  "S21115C12", // class name
  bases_S21115C12, 5,
  &(vtc_S21115C12[0]), // expected_vtbl_contents
  &(vtt_S21115C12[0]), // expected_vtt_contents
  ABISELECT(384,212), // object size
  NSPAIRA(_ZTI9S21115C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21115C12),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21115C12),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21115C2  : virtual S21115C3 , S21115C12 , S21115C11 {
  int s21115c2f0;
  long s21115c2f1;
  int s21115c2f2:6;
  ::S20681C13 s21115c2f3;
  long s21115c2f4;
  int s21115c2f5;
  void *s21115c2f6;
  ::S3572C2 s21115c2f7;
  virtual  ~S21115C2(); // _ZN8S21115C2D2Ev
  virtual void  v5(); // _ZN8S21115C22v5Ev
  S21115C2(); // tgen
};
//SIG(-1 S21115C2) C1{ VBC2{ VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ VBC4 VBC6{ vd m FC4 FC7{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} BC6 BC8{ VBC6 BC5 VBC9{ VBC4 VBC6 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC10{ VBC4 BC6 BC5 vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC11{ VBC10 vd v3 Fi Fp Fi:2 FD Fp} BC10 vd v1 Fi Fl Fi:6 FC12{ BC13{ VBC4 VBC6 Fc:1 Fp[3]} VBC14{ VBC4 BC6 BC13 vd v4 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC15{ BC16{ VBC6 BC17{ VBC4 VBC6 Fc:1 Fp[3]} VBC18{ VBC4 VBC6 BC17 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC19{ VBC4 BC6 BC17 vd v5 Fc Fp[7] FD Fp[4] Fi Fc Fp}} VBC20{ VBC4 VBC17 vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} VBC19 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}}


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

static void Test_S21115C2()
{
  extern Class_Descriptor cd_S21115C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(230,533)];
    init_test(&cd_S21115C2, buf);
    S21115C2 *dp, &lv = *(dp=new (buf) S21115C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3664,2128), "sizeof(S21115C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21115C2)");
    check_base_class_offset(lv, (S3572C5*)(S21115C4*), ABISELECT(2840,1648), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C6*), ABISELECT(2840,1648), "S21115C2");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C9*)(S21115C3*), ABISELECT(2840,1648), "S21115C2");
    check_base_class_offset(lv, (S3572C5*)(S21115C10*), ABISELECT(2840,1648), "S21115C2");
    check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C10*), ABISELECT(2840,1648), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C11*), ABISELECT(2840,1648), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C11*), ABISELECT(2840,1648), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C11*), ABISELECT(2840,1648), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C11*), ABISELECT(2840,1648), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C6*), ABISELECT(2920,1692), "S21115C2");
    check_base_class_offset(lv, (S3572C4*)(S21115C9*)(S21115C3*), ABISELECT(2920,1692), "S21115C2");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C9*)(S21115C3*), ABISELECT(2920,1692), "S21115C2");
    check_base_class_offset(lv, (S3572C4*)(S21115C10*), ABISELECT(2920,1692), "S21115C2");
    check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C10*), ABISELECT(2920,1692), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C11*), ABISELECT(2920,1692), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C11*), ABISELECT(2920,1692), "S21115C2");
    check_base_class_offset(lv, (S21115C6*)(S21115C4*), ABISELECT(2880,1672), "S21115C2");
    check_base_class_offset(lv, (S21115C4*)(S21115C3*), ABISELECT(2712,1556), "S21115C2");
    /*is_ambiguous_... S21115C3::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C3*), ABISELECT(2192,1268), "S21115C2");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S21115C6*)(S21115C9*)(S21115C3*), ABISELECT(2256,1300), "S21115C2");
    check_base_class_offset(lv, (S21115C6*)(S21115C10*), ABISELECT(2976,1724), "S21115C2");
    check_base_class_offset(lv, (S21115C10*)(S21115C9*)(S21115C3*), ABISELECT(2976,1724), "S21115C2");
    check_base_class_offset(lv, (S21115C9*)(S21115C3*), ABISELECT(2256,1300), "S21115C2");
    check_base_class_offset(lv, (S21115C3*), ABISELECT(2192,1268), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C11*), ABISELECT(3440,2004), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S21115C6*)(S21115C11*), ABISELECT(3496,2036), "S21115C2");
    check_base_class_offset(lv, (S21115C11*)(S21115C12*), ABISELECT(3440,2004), "S21115C2");
    check_base_class_offset(lv, (S21115C12*), 0, "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C11*), ABISELECT(64,32), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S21115C6*)(S21115C11*), ABISELECT(120,64), "S21115C2");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S21115C11*), ABISELECT(64,32), "S21115C2");
    check_field_offset(lv, s21115c2f0, ABISELECT(288,156), "S21115C2.s21115c2f0");
    check_field_offset(lv, s21115c2f1, ABISELECT(296,160), "S21115C2.s21115c2f1");
    set_bf_and_test(lv, s21115c2f2, ABISELECT(304,164), 0, 6, 1, "S21115C2");
    set_bf_and_test(lv, s21115c2f2, ABISELECT(304,164), 0, 6, hide_sll(1LL<<5), "S21115C2");
    check_field_offset(lv, s21115c2f3, ABISELECT(320,168), "S21115C2.s21115c2f3");
    check_field_offset(lv, s21115c2f4, ABISELECT(704,376), "S21115C2.s21115c2f4");
    check_field_offset(lv, s21115c2f5, ABISELECT(712,380), "S21115C2.s21115c2f5");
    check_field_offset(lv, s21115c2f6, ABISELECT(720,384), "S21115C2.s21115c2f6");
    check_field_offset(lv, s21115c2f7, ABISELECT(736,388), "S21115C2.s21115c2f7");
    test_class_info(&lv, &cd_S21115C2);
    dp->~S21115C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21115C2(Test_S21115C2, "S21115C2", ABISELECT(3664,2128));

#else // __cplusplus

extern void _ZN8S21115C2C1Ev();
extern void _ZN8S21115C2D2Ev();
Name_Map name_map_S21115C2[] = {
  NSPAIR(_ZN8S21115C2C1Ev),
  NSPAIR(_ZN8S21115C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C4;
extern VTBL_ENTRY _ZTI8S21115C4[];
extern  VTBL_ENTRY _ZTV8S21115C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C10;
extern VTBL_ENTRY _ZTI9S21115C10[];
extern  VTBL_ENTRY _ZTV9S21115C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C10[];
extern Class_Descriptor cd_S21115C9;
extern VTBL_ENTRY _ZTI8S21115C9[];
extern  VTBL_ENTRY _ZTV8S21115C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C9[];
extern Class_Descriptor cd_S21115C3;
extern VTBL_ENTRY _ZTI8S21115C3[];
extern  VTBL_ENTRY _ZTV8S21115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C3[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C11;
extern VTBL_ENTRY _ZTI9S21115C11[];
extern  VTBL_ENTRY _ZTV9S21115C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C11[];
extern Class_Descriptor cd_S21115C12;
extern VTBL_ENTRY _ZTI9S21115C12[];
extern  VTBL_ENTRY _ZTV9S21115C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C12[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C11;
extern VTBL_ENTRY _ZTI9S21115C11[];
extern  VTBL_ENTRY _ZTV9S21115C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C11[];
static Base_Class bases_S21115C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(2840,1648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2920,1692), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21115C6,    ABISELECT(2880,1672), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21115C4,    ABISELECT(2712,1556), //bcp->offset
    43, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2192,1268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21115C6,    ABISELECT(2256,1300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21115C6,    ABISELECT(2976,1724), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21115C10,    ABISELECT(2976,1724), //bcp->offset
    63, //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
    8, //immediately_derived
  0, 1},
  {&cd_S21115C9,    ABISELECT(2256,1300), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21115C3,    ABISELECT(2192,1268), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(3440,2004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21115C6,    ABISELECT(3496,2036), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21115C11,    ABISELECT(3440,2004), //bcp->offset
    70, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21115C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21115C6,    ABISELECT(120,64), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21115C11,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21115C2[];
extern void _ZN8S21115C2D1Ev();
extern void _ZN8S21115C2D0Ev();
extern void _ZN9S21115C122v4Ev();
extern void _ZN8S21115C22v5Ev();
extern void ABISELECT(_ZThn64_N8S21115C2D1Ev,_ZThn32_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21115C2D0Ev,_ZThn32_N8S21115C2D0Ev)();
extern void _ZN9S21115C112v3Ev();
extern void ABISELECT(_ZThn120_N8S21115C2D1Ev,_ZThn64_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21115C2D0Ev,_ZThn64_N8S21115C2D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S21115C2D1Ev,_ZTv0_n32_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn2192_N8S21115C2D1Ev,_ZThn1268_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21115C2D0Ev,_ZTv0_n32_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn2192_N8S21115C2D0Ev,_ZThn1268_N8S21115C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S21115C2D1Ev,_ZTvn32_n32_N8S21115C2D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S21115C2D0Ev,_ZTvn32_n32_N8S21115C2D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21115C2D1Ev,_ZTv0_n24_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn2712_N8S21115C2D1Ev,_ZThn1556_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21115C2D0Ev,_ZTv0_n24_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn2712_N8S21115C2D0Ev,_ZThn1556_N8S21115C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn2880_N8S21115C2D1Ev,_ZThn1672_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn2880_N8S21115C2D0Ev,_ZThn1672_N8S21115C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C2D1Ev,_ZTv0_n12_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn2920_N8S21115C2D1Ev,_ZThn1692_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C2D0Ev,_ZTv0_n12_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn2920_N8S21115C2D0Ev,_ZThn1692_N8S21115C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn2976_N8S21115C2D1Ev,_ZThn1724_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn2976_N8S21115C2D0Ev,_ZThn1724_N8S21115C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn3440_N8S21115C2D1Ev,_ZThn2004_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn3440_N8S21115C2D0Ev,_ZThn2004_N8S21115C2D0Ev)() __attribute__((weak));
extern void _ZN9S21115C112v3Ev();
extern void ABISELECT(_ZTvn56_n40_N8S21115C2D1Ev,_ZTvn32_n20_N8S21115C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S21115C2D0Ev,_ZTvn32_n20_N8S21115C2D0Ev)();
static  VTBL_ENTRY vtc_S21115C2[] = {
  ABISELECT(2976,1724),
  ABISELECT(2880,1672),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(2920,1692),
  ABISELECT(2840,1648),
  ABISELECT(3440,2004),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&_ZN8S21115C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C2D0Ev,
  (VTBL_ENTRY)&_ZN9S21115C122v4Ev,
  (VTBL_ENTRY)&_ZN8S21115C22v5Ev,
  ABISELECT(2856,1660),
  ABISELECT(2776,1616),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21115C2D1Ev,_ZThn32_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21115C2D0Ev,_ZThn32_N8S21115C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S21115C2D1Ev,_ZThn64_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S21115C2D0Ev,_ZThn64_N8S21115C2D0Ev),
  ABISELECT(-2192,-1268),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-2192,-1268),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21115C2D1Ev,_ZTv0_n32_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21115C2D0Ev,_ZTv0_n32_N8S21115C2D0Ev),
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-2256,-1300),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21115C2D1Ev,_ZTvn32_n32_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21115C2D0Ev,_ZTvn32_n32_N8S21115C2D0Ev),
  ABISELECT(-2712,-1556),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-2712,-1556),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C2D1Ev,_ZTv0_n24_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C2D0Ev,_ZTv0_n24_N8S21115C2D0Ev),
  ABISELECT(-2880,-1672),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-2880,-1672),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev),
  ABISELECT(-2920,-1692),
  ABISELECT(-2920,-1692),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C2D1Ev,_ZTv0_n12_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C2D0Ev,_ZTv0_n12_N8S21115C2D0Ev),
  ABISELECT(-2976,-1724),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-2976,-1724),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev),
  0,
  ABISELECT(-3440,-2004),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2004),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2036),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21115C2D1Ev,_ZTvn32_n20_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21115C2D0Ev,_ZTvn32_n20_N8S21115C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21115C2[];
extern void _ZN9S21115C12D1Ev();
extern void _ZN9S21115C12D0Ev();
extern void _ZN9S21115C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C12__8S21115C2[] = {
  ABISELECT(2920,1692),
  ABISELECT(2840,1648),
  ABISELECT(3440,2004),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&_ZN9S21115C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21115C122v4Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S21115C12D1Ev,_ZTv0_n20_N9S21115C12D1Ev)();
extern void ABISELECT(_ZThn3440_N9S21115C12D1Ev,_ZThn2004_N9S21115C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21115C12D0Ev,_ZTv0_n20_N9S21115C12D0Ev)();
extern void ABISELECT(_ZThn3440_N9S21115C12D0Ev,_ZThn2004_N9S21115C12D0Ev)() __attribute__((weak));
extern void _ZN9S21115C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C11__9S21115C12__8S21115C2[] = {
  0,
  ABISELECT(-3440,-2004),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2004),
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21115C12D1Ev,_ZTv0_n20_N9S21115C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21115C12D0Ev,_ZTv0_n20_N9S21115C12D0Ev),
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S21115C12D1Ev,_ZTvn32_n20_N9S21115C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S21115C12D0Ev,_ZTvn32_n20_N9S21115C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C11__9S21115C12__8S21115C2[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2036),
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21115C12D1Ev,_ZTvn32_n20_N9S21115C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21115C12D0Ev,_ZTvn32_n20_N9S21115C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21115C12D1Ev,_ZTv0_n12_N9S21115C12D1Ev)();
extern void ABISELECT(_ZThn2920_N9S21115C12D1Ev,_ZThn1692_N9S21115C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21115C12D0Ev,_ZTv0_n12_N9S21115C12D0Ev)();
extern void ABISELECT(_ZThn2920_N9S21115C12D0Ev,_ZThn1692_N9S21115C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21115C12__8S21115C2[] = {
  ABISELECT(-2920,-1692),
  ABISELECT(-2920,-1692),
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C12D1Ev,_ZTv0_n12_N9S21115C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C12D0Ev,_ZTv0_n12_N9S21115C12D0Ev),
};
extern void _ZN9S21115C11D1Ev();
extern void _ZN9S21115C11D0Ev();
extern void _ZN9S21115C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C11__A__8S21115C2[] = {
  ABISELECT(2856,1660),
  ABISELECT(2776,1616),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&_ZN9S21115C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C11__A4__8S21115C2[] = {
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn2800_N8S21115C6D1Ev,_ZThn1628_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn2800_N8S21115C6D0Ev,_ZThn1628_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C69S21115C11__A4__8S21115C2[] = {
  ABISELECT(-2800,-1628),
  ABISELECT(-2800,-1628),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C6__9S21115C11__A__8S21115C2[] = {
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev)();
extern void ABISELECT(_ZThn2856_N9S21115C11D1Ev,_ZThn1660_N9S21115C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev)();
extern void ABISELECT(_ZThn2856_N9S21115C11D0Ev,_ZThn1660_N9S21115C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21115C11__A__8S21115C2[] = {
  ABISELECT(-2856,-1660),
  ABISELECT(-2856,-1660),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev),
};
extern void _ZN8S21115C3D1Ev();
extern void _ZN8S21115C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C3__8S21115C2[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&_ZN8S21115C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C3D0Ev,
};
extern void _ZN8S21115C9D1Ev();
extern void _ZN8S21115C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C98S21115C3__8S21115C2[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&_ZN8S21115C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C9D0Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C68S21115C98S21115C3__A1__8S21115C2[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn664_N8S21115C6D1Ev,_ZThn392_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn664_N8S21115C6D0Ev,_ZThn392_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C68S21115C98S21115C3__A1__8S21115C2[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev)();
extern void ABISELECT(_ZThn664_N8S21115C9D1Ev,_ZThn392_N8S21115C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev)();
extern void ABISELECT(_ZThn664_N8S21115C9D0Ev,_ZThn392_N8S21115C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C98S21115C3__8S21115C2[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev)();
extern void ABISELECT(_ZThn720_N8S21115C9D1Ev,_ZThn424_N8S21115C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev)();
extern void ABISELECT(_ZThn720_N8S21115C9D0Ev,_ZThn424_N8S21115C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21115C10__8S21115C98S21115C3__8S21115C2[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21115C3D1Ev,_ZTv0_n24_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn520_N8S21115C3D1Ev,_ZThn288_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21115C3D0Ev,_ZTv0_n24_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn520_N8S21115C3D0Ev,_ZThn288_N8S21115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21115C4__8S21115C3__8S21115C2[] = {
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C3D1Ev,_ZTv0_n24_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C3D0Ev,_ZTv0_n24_N8S21115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn688_N8S21115C3D1Ev,_ZThn404_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn688_N8S21115C3D0Ev,_ZThn404_N8S21115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21115C6__8S21115C3__8S21115C2[] = {
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21115C3D1Ev,_ZTv0_n12_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn728_N8S21115C3D1Ev,_ZThn424_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C3D0Ev,_ZTv0_n12_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn728_N8S21115C3D0Ev,_ZThn424_N8S21115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C3__8S21115C2[] = {
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C3D1Ev,_ZTv0_n12_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C3D0Ev,_ZTv0_n12_N8S21115C3D0Ev),
};
extern void ABISELECT(_ZThn64_N8S21115C3D1Ev,_ZThn32_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21115C3D0Ev,_ZThn32_N8S21115C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C9__8S21115C3__8S21115C2[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21115C3D1Ev,_ZThn32_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21115C3D0Ev,_ZThn32_N8S21115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn784_N8S21115C3D1Ev,_ZThn456_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn784_N8S21115C3D0Ev,_ZThn456_N8S21115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21115C10__8S21115C3__8S21115C2[] = {
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev),
};
extern void _ZN8S21115C4D1Ev();
extern void _ZN8S21115C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C4__8S21115C2[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&_ZN8S21115C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C4D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S21115C4D1Ev,_ZThn116_N8S21115C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev)();
extern void ABISELECT(_ZThn168_N8S21115C4D0Ev,_ZThn116_N8S21115C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21115C6__8S21115C4__8S21115C2[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S21115C4D1Ev,_ZThn136_N8S21115C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S21115C4D0Ev,_ZThn136_N8S21115C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C4__8S21115C2[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev),
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C6__8S21115C2[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21115C6D1Ev,_ZThn20_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21115C6D0Ev,_ZThn20_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C6__8S21115C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void _ZN9S21115C10D1Ev();
extern void _ZN9S21115C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C10__8S21115C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C10[0]),
  (VTBL_ENTRY)&_ZN9S21115C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C10D0Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C10__A2__8S21115C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C69S21115C10__A2__8S21115C2[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21115C10D1Ev,_ZTv0_n12_N9S21115C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21115C10D0Ev,_ZTv0_n12_N9S21115C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S21115C10__8S21115C2[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C10D1Ev,_ZTv0_n12_N9S21115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C10D0Ev,_ZTv0_n12_N9S21115C10D0Ev),
};
extern void _ZN9S21115C11D1Ev();
extern void _ZN9S21115C11D0Ev();
extern void _ZN9S21115C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C11__8S21115C2[] = {
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&_ZN9S21115C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C11__A3__8S21115C2[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C69S21115C11__A3__8S21115C2[] = {
  ABISELECT(576,344),
  ABISELECT(576,344),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C6__9S21115C11__8S21115C2[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21115C11__8S21115C2[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev),
};
static  VTT_ENTRY vtt_S21115C2[] = {
  {&(_ZTV8S21115C2[9]),  9,85},
  {&(_tg__ZTV9S21115C12__8S21115C2[5]),  5,8},
  {&(_tg__ZTV9S21115C11__9S21115C12__8S21115C2[6]),  6,9},
  {&(_tg__ZTV8S21115C69S21115C11__9S21115C12__8S21115C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21115C12__8S21115C2[3]),  3,5},
  {&(_tg__ZTV9S21115C11__A__8S21115C2[4]),  4,7},
  {&(_tg__ZTV8S21115C69S21115C11__A4__8S21115C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C69S21115C11__A4__8S21115C2[3]),  3,5},
  {&(_tg__ZTV8S21115C6__9S21115C11__A__8S21115C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21115C11__A__8S21115C2[3]),  3,5},
  {&(_ZTV8S21115C2[34]),  34,85},
  {&(_ZTV8S21115C2[49]),  49,85},
  {&(_ZTV8S21115C2[56]),  56,85},
  {&(_ZTV8S21115C2[61]),  61,85},
  {&(_ZTV8S21115C2[41]),  41,85},
  {&(_ZTV8S21115C2[68]),  68,85},
  {&(_ZTV8S21115C2[76]),  76,85},
  {&(_ZTV8S21115C2[83]),  83,85},
  {&(_ZTV8S21115C2[17]),  17,85},
  {&(_ZTV8S21115C2[24]),  24,85},
  {&(_tg__ZTV8S21115C3__8S21115C2[7]),  7,9},
  {&(_tg__ZTV8S21115C98S21115C3__8S21115C2[5]),  5,7},
  {&(_tg__ZTV8S21115C68S21115C98S21115C3__A1__8S21115C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C68S21115C98S21115C3__A1__8S21115C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S21115C98S21115C3__8S21115C2[3]),  3,5},
  {&(_tg__ZTV9S21115C10__8S21115C98S21115C3__8S21115C2[5]),  5,7},
  {&(_tg__ZTV8S21115C4__8S21115C3__8S21115C2[6]),  6,8},
  {&(_tg__ZTV8S21115C6__8S21115C3__8S21115C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21115C3__8S21115C2[3]),  3,5},
  {&(_tg__ZTV8S21115C9__8S21115C3__8S21115C2[5]),  5,7},
  {&(_tg__ZTV9S21115C10__8S21115C3__8S21115C2[5]),  5,7},
  {&(_tg__ZTV8S21115C4__8S21115C2[5]),  5,7},
  {&(_tg__ZTV8S21115C6__8S21115C4__8S21115C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21115C4__8S21115C2[3]),  3,5},
  {&(_tg__ZTV8S21115C6__8S21115C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C6__8S21115C2[3]),  3,5},
  {&(_tg__ZTV9S21115C10__8S21115C2[4]),  4,6},
  {&(_tg__ZTV8S21115C69S21115C10__A2__8S21115C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C69S21115C10__A2__8S21115C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S21115C10__8S21115C2[3]),  3,5},
  {&(_tg__ZTV9S21115C11__8S21115C2[4]),  4,7},
  {&(_tg__ZTV8S21115C69S21115C11__A3__8S21115C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C69S21115C11__A3__8S21115C2[3]),  3,5},
  {&(_tg__ZTV8S21115C6__9S21115C11__8S21115C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21115C11__8S21115C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21115C2[];
extern  VTBL_ENTRY _ZTV8S21115C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C2[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C4D0Ev,_ZThn136_N8S21115C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C4D1Ev,_ZThn136_N8S21115C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21115C4D0Ev,_ZThn116_N8S21115C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21115C4D1Ev,_ZThn116_N8S21115C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C3D0Ev,_ZTv0_n12_N8S21115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21115C3D0Ev,_ZThn424_N8S21115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C3D1Ev,_ZTv0_n12_N8S21115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21115C3D1Ev,_ZThn424_N8S21115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21115C3D0Ev,_ZThn456_N8S21115C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21115C3D0Ev,_ZThn404_N8S21115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21115C3D1Ev,_ZThn456_N8S21115C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21115C3D1Ev,_ZThn404_N8S21115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C3D0Ev,_ZTv0_n24_N8S21115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21115C3D0Ev,_ZThn288_N8S21115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C3D1Ev,_ZTv0_n24_N8S21115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21115C3D1Ev,_ZThn288_N8S21115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21115C9D0Ev,_ZThn424_N8S21115C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21115C9D1Ev,_ZThn424_N8S21115C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C9D0Ev,_ZThn392_N8S21115C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C9D1Ev,_ZThn392_N8S21115C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S21115C11D0Ev,_ZThn1660_N9S21115C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S21115C11D1Ev,_ZThn1660_N9S21115C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21115C6D0Ev,_ZThn20_N8S21115C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C6D0Ev,_ZThn392_N8S21115C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S21115C6D0Ev,_ZThn1628_N8S21115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21115C6D1Ev,_ZThn20_N8S21115C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C6D1Ev,_ZThn392_N8S21115C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S21115C6D1Ev,_ZThn1628_N8S21115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C12D0Ev,_ZTv0_n12_N9S21115C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S21115C12D0Ev,_ZThn1692_N9S21115C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C12D1Ev,_ZTv0_n12_N9S21115C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S21115C12D1Ev,_ZThn1692_N9S21115C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21115C12D0Ev,_ZTv0_n20_N9S21115C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S21115C12D0Ev,_ZThn2004_N9S21115C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21115C12D1Ev,_ZTv0_n20_N9S21115C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S21115C12D1Ev,_ZThn2004_N9S21115C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C2D0Ev,_ZTv0_n12_N8S21115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S21115C2D0Ev,_ZThn1692_N8S21115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C2D1Ev,_ZTv0_n12_N8S21115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S21115C2D1Ev,_ZThn1692_N8S21115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S21115C2D0Ev,_ZThn2004_N8S21115C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S21115C2D0Ev,_ZThn1724_N8S21115C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S21115C2D0Ev,_ZThn1672_N8S21115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S21115C2D1Ev,_ZThn2004_N8S21115C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S21115C2D1Ev,_ZThn1724_N8S21115C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S21115C2D1Ev,_ZThn1672_N8S21115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C2D0Ev,_ZTv0_n24_N8S21115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S21115C2D0Ev,_ZThn1556_N8S21115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C2D1Ev,_ZTv0_n24_N8S21115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S21115C2D1Ev,_ZThn1556_N8S21115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21115C2D0Ev,_ZTv0_n32_N8S21115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S21115C2D0Ev,_ZThn1268_N8S21115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21115C2D1Ev,_ZTv0_n32_N8S21115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S21115C2D1Ev,_ZThn1268_N8S21115C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21115C2 = {  "S21115C2", // class name
  bases_S21115C2, 17,
  &(vtc_S21115C2[0]), // expected_vtbl_contents
  &(vtt_S21115C2[0]), // expected_vtt_contents
  ABISELECT(3664,2128), // object size
  NSPAIRA(_ZTI8S21115C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21115C2),85, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21115C2),45, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21115C1  : virtual S21115C2 {
  long double s21115c1f0;
  int s21115c1f1[3];
  __tsi64 s21115c1f2;
  char s21115c1f3;
  int s21115c1f4:32;
  int s21115c1f5[3];
  virtual  ~S21115C1(); // _ZN8S21115C1D2Ev
  virtual void  v1(); // _ZN8S21115C12v1Ev
  virtual void  v2(); // _ZN8S21115C12v2Ev
  S21115C1(); // tgen
};
//SIG(1 S21115C1) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m Fp Fs Fi Fp Fl[2]} VBC6{ VBC5 VBC7{ vd m FC5 FC8{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} BC7 BC9{ VBC7 BC6 VBC10{ VBC5 VBC7 BC6 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd FC11{ VBC5 BC7 BC6 vd v3 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC12{ VBC11 vd v4 Fi Fp Fi:2 FD Fp} BC11 vd v5 Fi Fl Fi:6 FC13{ BC14{ VBC5 VBC7 Fc:1 Fp[3]} VBC15{ VBC5 BC7 BC14 vd v6 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC16{ BC17{ VBC7 BC18{ VBC5 VBC7 Fc:1 Fp[3]} VBC19{ VBC5 VBC7 BC18 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd FC20{ VBC5 BC7 BC18 vd v7 Fc Fp[7] FD Fp[4] Fi Fc Fp}} VBC21{ VBC5 VBC18 vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} VBC20 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} vd v1 v2 FD Fi[3] FL Fc Fi:32 Fi[3]}


 S21115C1 ::~S21115C1(){ note_dtor("S21115C1", this);}
void  S21115C1 ::v1(){vfunc_called(this, "_ZN8S21115C12v1Ev");}
void  S21115C1 ::v2(){vfunc_called(this, "_ZN8S21115C12v2Ev");}
S21115C1 ::S21115C1(){ note_ctor("S21115C1", this);} // tgen

static void Test_S21115C1()
{
  extern Class_Descriptor cd_S21115C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(235,547)];
    init_test(&cd_S21115C1, buf);
    S21115C1 *dp, &lv = *(dp=new (buf) S21115C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3744,2184), "sizeof(S21115C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21115C1)");
    check_base_class_offset(lv, (S3572C5*)(S21115C4*), ABISELECT(2920,1704), "S21115C1");
    /*is_ambiguous_... S21115C1::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C6*), ABISELECT(2920,1704), "S21115C1");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C9*)(S21115C3*), ABISELECT(2920,1704), "S21115C1");
    check_base_class_offset(lv, (S3572C5*)(S21115C10*), ABISELECT(2920,1704), "S21115C1");
    check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C10*), ABISELECT(2920,1704), "S21115C1");
    /*is_ambiguous_... S21115C1::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C11*), ABISELECT(2920,1704), "S21115C1");
    /*is_ambiguous_... S21115C1::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C11*), ABISELECT(2920,1704), "S21115C1");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C11*)(S21115C2*), ABISELECT(2920,1704), "S21115C1");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21115C6*)(S21115C11*)(S21115C2*), ABISELECT(2920,1704), "S21115C1");
    /*is_ambiguous_... S21115C1::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C6*), ABISELECT(3000,1748), "S21115C1");
    check_base_class_offset(lv, (S3572C4*)(S21115C9*)(S21115C3*), ABISELECT(3000,1748), "S21115C1");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C9*)(S21115C3*), ABISELECT(3000,1748), "S21115C1");
    check_base_class_offset(lv, (S3572C4*)(S21115C10*), ABISELECT(3000,1748), "S21115C1");
    check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C10*), ABISELECT(3000,1748), "S21115C1");
    /*is_ambiguous_... S21115C1::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C11*), ABISELECT(3000,1748), "S21115C1");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C6*)(S21115C11*)(S21115C2*), ABISELECT(3000,1748), "S21115C1");
    check_base_class_offset(lv, (S21115C6*)(S21115C4*), ABISELECT(2960,1728), "S21115C1");
    check_base_class_offset(lv, (S21115C4*)(S21115C3*), ABISELECT(2792,1612), "S21115C1");
    /*is_ambiguous_... S21115C3::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C3*), ABISELECT(2272,1324), "S21115C1");
    /*is_ambiguous_... S21115C9::S21115C6 */ AMB_check_base_class_offset(lv, (S21115C6*)(S21115C9*)(S21115C3*), ABISELECT(2336,1356), "S21115C1");
    check_base_class_offset(lv, (S21115C6*)(S21115C10*), ABISELECT(3056,1780), "S21115C1");
    check_base_class_offset(lv, (S21115C10*)(S21115C9*)(S21115C3*), ABISELECT(3056,1780), "S21115C1");
    check_base_class_offset(lv, (S21115C9*)(S21115C3*), ABISELECT(2336,1356), "S21115C1");
    check_base_class_offset(lv, (S21115C3*)(S21115C2*), ABISELECT(2272,1324), "S21115C1");
    /*is_ambiguous_... S21115C1::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C11*), ABISELECT(3520,2060), "S21115C1");
    /*is_ambiguous_... S21115C1::S21115C11 */ AMB_check_base_class_offset(lv, (S21115C6*)(S21115C11*), ABISELECT(3576,2092), "S21115C1");
    check_base_class_offset(lv, (S21115C11*)(S21115C12*)(S21115C2*), ABISELECT(3520,2060), "S21115C1");
    check_base_class_offset(lv, (S21115C12*)(S21115C2*), ABISELECT(80,56), "S21115C1");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21115C11*)(S21115C2*), ABISELECT(144,88), "S21115C1");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S21115C6*)(S21115C11*)(S21115C2*), ABISELECT(200,120), "S21115C1");
    /*is_ambiguous_... S21115C2::S21115C11 */ AMB_check_base_class_offset(lv, (S21115C11*)(S21115C2*), ABISELECT(144,88), "S21115C1");
    check_base_class_offset(lv, (S21115C2*), ABISELECT(80,56), "S21115C1");
    check_field_offset(lv, s21115c1f0, ABISELECT(16,4), "S21115C1.s21115c1f0");
    check_field_offset(lv, s21115c1f1, ABISELECT(32,16), "S21115C1.s21115c1f1");
    check_field_offset(lv, s21115c1f2, ABISELECT(48,28), "S21115C1.s21115c1f2");
    check_field_offset(lv, s21115c1f3, ABISELECT(56,36), "S21115C1.s21115c1f3");
    set_bf_and_test(lv, s21115c1f4, ABISELECT(60,40), 0, 32, 1, "S21115C1");
    set_bf_and_test(lv, s21115c1f4, ABISELECT(60,40), 0, 32, hide_sll(1LL<<31), "S21115C1");
    check_field_offset(lv, s21115c1f5, ABISELECT(64,44), "S21115C1.s21115c1f5");
    test_class_info(&lv, &cd_S21115C1);
    dp->~S21115C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21115C1(Test_S21115C1, "S21115C1", ABISELECT(3744,2184));

#else // __cplusplus

extern void _ZN8S21115C1C1Ev();
extern void _ZN8S21115C1D2Ev();
Name_Map name_map_S21115C1[] = {
  NSPAIR(_ZN8S21115C1C1Ev),
  NSPAIR(_ZN8S21115C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C4;
extern VTBL_ENTRY _ZTI8S21115C4[];
extern  VTBL_ENTRY _ZTV8S21115C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C10;
extern VTBL_ENTRY _ZTI9S21115C10[];
extern  VTBL_ENTRY _ZTV9S21115C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C10[];
extern Class_Descriptor cd_S21115C9;
extern VTBL_ENTRY _ZTI8S21115C9[];
extern  VTBL_ENTRY _ZTV8S21115C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C9[];
extern Class_Descriptor cd_S21115C3;
extern VTBL_ENTRY _ZTI8S21115C3[];
extern  VTBL_ENTRY _ZTV8S21115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C3[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C11;
extern VTBL_ENTRY _ZTI9S21115C11[];
extern  VTBL_ENTRY _ZTV9S21115C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C11[];
extern Class_Descriptor cd_S21115C12;
extern VTBL_ENTRY _ZTI9S21115C12[];
extern  VTBL_ENTRY _ZTV9S21115C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C12[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21115C6;
extern VTBL_ENTRY _ZTI8S21115C6[];
extern  VTBL_ENTRY _ZTV8S21115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C6[];
extern Class_Descriptor cd_S21115C11;
extern VTBL_ENTRY _ZTI9S21115C11[];
extern  VTBL_ENTRY _ZTV9S21115C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21115C11[];
extern Class_Descriptor cd_S21115C2;
extern VTBL_ENTRY _ZTI8S21115C2[];
extern  VTBL_ENTRY _ZTV8S21115C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C2[];
static Base_Class bases_S21115C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(2920,1704), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3000,1748), //bcp->offset
    76, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21115C6,    ABISELECT(2960,1728), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21115C4,    ABISELECT(2792,1612), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2272,1324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21115C6,    ABISELECT(2336,1356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21115C6,    ABISELECT(3056,1780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21115C10,    ABISELECT(3056,1780), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21115C9,    ABISELECT(2336,1356), //bcp->offset
    54, //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
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21115C3,    ABISELECT(2272,1324), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3520,2060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21115C6,    ABISELECT(3576,2092), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21115C11,    ABISELECT(3520,2060), //bcp->offset
    88, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21115C12,    ABISELECT(80,56), //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
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21115C6,    ABISELECT(200,120), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21115C11,    ABISELECT(144,88), //bcp->offset
    31, //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
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21115C2,    ABISELECT(80,56), //bcp->offset
    14, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21115C1[];
extern void _ZN8S21115C1D1Ev();
extern void _ZN8S21115C1D0Ev();
extern void _ZN8S21115C12v1Ev();
extern void _ZN8S21115C12v2Ev();
extern void ABISELECT(_ZTv0_n80_N8S21115C1D1Ev,_ZTv0_n40_N8S21115C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S21115C1D1Ev,_ZThn56_N8S21115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21115C1D0Ev,_ZTv0_n40_N8S21115C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S21115C1D0Ev,_ZThn56_N8S21115C1D0Ev)() __attribute__((weak));
extern void _ZN9S21115C122v4Ev();
extern void _ZN8S21115C22v5Ev();
extern void ABISELECT(_ZTvn64_n80_N8S21115C1D1Ev,_ZTvn32_n40_N8S21115C1D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S21115C1D0Ev,_ZTvn32_n40_N8S21115C1D0Ev)();
extern void _ZN9S21115C112v3Ev();
extern void ABISELECT(_ZTvn120_n80_N8S21115C1D1Ev,_ZTvn64_n40_N8S21115C1D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S21115C1D0Ev,_ZTvn64_n40_N8S21115C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S21115C1D1Ev,_ZTv0_n32_N8S21115C1D1Ev)();
extern void ABISELECT(_ZThn2272_N8S21115C1D1Ev,_ZThn1324_N8S21115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21115C1D0Ev,_ZTv0_n32_N8S21115C1D0Ev)();
extern void ABISELECT(_ZThn2272_N8S21115C1D0Ev,_ZThn1324_N8S21115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S21115C1D1Ev,_ZTvn32_n32_N8S21115C1D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S21115C1D0Ev,_ZTvn32_n32_N8S21115C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21115C1D1Ev,_ZTv0_n24_N8S21115C1D1Ev)();
extern void ABISELECT(_ZThn2792_N8S21115C1D1Ev,_ZThn1612_N8S21115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21115C1D0Ev,_ZTv0_n24_N8S21115C1D0Ev)();
extern void ABISELECT(_ZThn2792_N8S21115C1D0Ev,_ZThn1612_N8S21115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C1D1Ev,_ZTv0_n20_N8S21115C1D1Ev)();
extern void ABISELECT(_ZThn2960_N8S21115C1D1Ev,_ZThn1728_N8S21115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C1D0Ev,_ZTv0_n20_N8S21115C1D0Ev)();
extern void ABISELECT(_ZThn2960_N8S21115C1D0Ev,_ZThn1728_N8S21115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C1D1Ev,_ZTv0_n12_N8S21115C1D1Ev)();
extern void ABISELECT(_ZThn3000_N8S21115C1D1Ev,_ZThn1748_N8S21115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C1D0Ev,_ZTv0_n12_N8S21115C1D0Ev)();
extern void ABISELECT(_ZThn3000_N8S21115C1D0Ev,_ZThn1748_N8S21115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C1D1Ev,_ZTv0_n20_N8S21115C1D1Ev)();
extern void ABISELECT(_ZThn3056_N8S21115C1D1Ev,_ZThn1780_N8S21115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C1D0Ev,_ZTv0_n20_N8S21115C1D0Ev)();
extern void ABISELECT(_ZThn3056_N8S21115C1D0Ev,_ZThn1780_N8S21115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C1D1Ev,_ZTv0_n20_N8S21115C1D1Ev)();
extern void ABISELECT(_ZThn3520_N8S21115C1D1Ev,_ZThn2060_N8S21115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C1D0Ev,_ZTv0_n20_N8S21115C1D0Ev)();
extern void ABISELECT(_ZThn3520_N8S21115C1D0Ev,_ZThn2060_N8S21115C1D0Ev)() __attribute__((weak));
extern void _ZN9S21115C112v3Ev();
extern void ABISELECT(_ZTvn56_n40_N8S21115C1D1Ev,_ZTvn32_n20_N8S21115C1D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S21115C1D0Ev,_ZTvn32_n20_N8S21115C1D0Ev)();
static  VTBL_ENTRY vtc_S21115C1[] = {
  ABISELECT(3520,2060),
  ABISELECT(3056,1780),
  ABISELECT(3000,1748),
  ABISELECT(2960,1728),
  ABISELECT(2920,1704),
  ABISELECT(2792,1612),
  ABISELECT(2272,1324),
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&_ZN8S21115C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21115C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21115C12v2Ev,
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-80,-56),
  ABISELECT(2976,1724),
  ABISELECT(2880,1672),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(2920,1692),
  ABISELECT(2840,1648),
  ABISELECT(3440,2004),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21115C1D1Ev,_ZTv0_n40_N8S21115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21115C1D0Ev,_ZTv0_n40_N8S21115C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21115C122v4Ev,
  (VTBL_ENTRY)&_ZN8S21115C22v5Ev,
  ABISELECT(2856,1660),
  ABISELECT(2776,1616),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S21115C1D1Ev,_ZTvn32_n40_N8S21115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S21115C1D0Ev,_ZTvn32_n40_N8S21115C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S21115C1D1Ev,_ZTvn64_n40_N8S21115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S21115C1D0Ev,_ZTvn64_n40_N8S21115C1D0Ev),
  ABISELECT(-2272,-1324),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-2272,-1324),
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21115C1D1Ev,_ZTv0_n32_N8S21115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21115C1D0Ev,_ZTv0_n32_N8S21115C1D0Ev),
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-2336,-1356),
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21115C1D1Ev,_ZTvn32_n32_N8S21115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21115C1D0Ev,_ZTvn32_n32_N8S21115C1D0Ev),
  ABISELECT(-2792,-1612),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-2792,-1612),
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C1D1Ev,_ZTv0_n24_N8S21115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C1D0Ev,_ZTv0_n24_N8S21115C1D0Ev),
  ABISELECT(-2960,-1728),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-2960,-1728),
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C1D1Ev,_ZTv0_n20_N8S21115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C1D0Ev,_ZTv0_n20_N8S21115C1D0Ev),
  ABISELECT(-3000,-1748),
  ABISELECT(-3000,-1748),
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C1D1Ev,_ZTv0_n12_N8S21115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C1D0Ev,_ZTv0_n12_N8S21115C1D0Ev),
  ABISELECT(-3056,-1780),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-3056,-1780),
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C1D1Ev,_ZTv0_n20_N8S21115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C1D0Ev,_ZTv0_n20_N8S21115C1D0Ev),
  0,
  ABISELECT(-3520,-2060),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3520,-2060),
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C1D1Ev,_ZTv0_n20_N8S21115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C1D0Ev,_ZTv0_n20_N8S21115C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3576,-2092),
  (VTBL_ENTRY)&(_ZTI8S21115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21115C1D1Ev,_ZTvn32_n20_N8S21115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21115C1D0Ev,_ZTvn32_n20_N8S21115C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21115C1[];
extern void _ZN8S21115C2D1Ev();
extern void _ZN8S21115C2D0Ev();
extern void _ZN9S21115C122v4Ev();
extern void _ZN8S21115C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C2__8S21115C1[] = {
  ABISELECT(2976,1724),
  ABISELECT(2880,1672),
  ABISELECT(2712,1556),
  ABISELECT(2192,1268),
  ABISELECT(2920,1692),
  ABISELECT(2840,1648),
  ABISELECT(3440,2004),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&_ZN8S21115C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C2D0Ev,
  (VTBL_ENTRY)&_ZN9S21115C122v4Ev,
  (VTBL_ENTRY)&_ZN8S21115C22v5Ev,
};
extern void _ZN9S21115C12D1Ev();
extern void _ZN9S21115C12D0Ev();
extern void _ZN9S21115C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C128S21115C2__8S21115C1[] = {
  ABISELECT(2920,1692),
  ABISELECT(2840,1648),
  ABISELECT(3440,2004),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&_ZN9S21115C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21115C122v4Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S21115C12D1Ev,_ZTv0_n20_N9S21115C12D1Ev)();
extern void ABISELECT(_ZThn3440_N9S21115C12D1Ev,_ZThn2004_N9S21115C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21115C12D0Ev,_ZTv0_n20_N9S21115C12D0Ev)();
extern void ABISELECT(_ZThn3440_N9S21115C12D0Ev,_ZThn2004_N9S21115C12D0Ev)() __attribute__((weak));
extern void _ZN9S21115C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C11__9S21115C128S21115C2__8S21115C1[] = {
  0,
  ABISELECT(-3440,-2004),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2004),
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21115C12D1Ev,_ZTv0_n20_N9S21115C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21115C12D0Ev,_ZTv0_n20_N9S21115C12D0Ev),
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S21115C12D1Ev,_ZTvn32_n20_N9S21115C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S21115C12D0Ev,_ZTvn32_n20_N9S21115C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C11__9S21115C128S21115C2__8S21115C1[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2036),
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21115C12D1Ev,_ZTvn32_n20_N9S21115C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21115C12D0Ev,_ZTvn32_n20_N9S21115C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21115C12D1Ev,_ZTv0_n12_N9S21115C12D1Ev)();
extern void ABISELECT(_ZThn2920_N9S21115C12D1Ev,_ZThn1692_N9S21115C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21115C12D0Ev,_ZTv0_n12_N9S21115C12D0Ev)();
extern void ABISELECT(_ZThn2920_N9S21115C12D0Ev,_ZThn1692_N9S21115C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21115C128S21115C2__8S21115C1[] = {
  ABISELECT(-2920,-1692),
  ABISELECT(-2920,-1692),
  (VTBL_ENTRY)&(_ZTI9S21115C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C12D1Ev,_ZTv0_n12_N9S21115C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C12D0Ev,_ZTv0_n12_N9S21115C12D0Ev),
};
extern void _ZN9S21115C11D1Ev();
extern void _ZN9S21115C11D0Ev();
extern void _ZN9S21115C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C118S21115C2__A1__8S21115C1[] = {
  ABISELECT(2856,1660),
  ABISELECT(2776,1616),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&_ZN9S21115C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C118S21115C2__A4__8S21115C1[] = {
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn2800_N8S21115C6D1Ev,_ZThn1628_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn2800_N8S21115C6D0Ev,_ZThn1628_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C69S21115C118S21115C2__A4__8S21115C1[] = {
  ABISELECT(-2800,-1628),
  ABISELECT(-2800,-1628),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C6__9S21115C118S21115C2__A1__8S21115C1[] = {
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev)();
extern void ABISELECT(_ZThn2856_N9S21115C11D1Ev,_ZThn1660_N9S21115C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev)();
extern void ABISELECT(_ZThn2856_N9S21115C11D0Ev,_ZThn1660_N9S21115C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21115C118S21115C2__A1__8S21115C1[] = {
  ABISELECT(-2856,-1660),
  ABISELECT(-2856,-1660),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S21115C2D1Ev,_ZTv0_n32_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn2192_N8S21115C2D1Ev,_ZThn1268_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21115C2D0Ev,_ZTv0_n32_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn2192_N8S21115C2D0Ev,_ZThn1268_N8S21115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21115C3__8S21115C2__8S21115C1[] = {
  ABISELECT(-2192,-1268),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-2192,-1268),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21115C2D1Ev,_ZTv0_n32_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21115C2D0Ev,_ZTv0_n32_N8S21115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21115C2D1Ev,_ZTv0_n24_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn2712_N8S21115C2D1Ev,_ZThn1556_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21115C2D0Ev,_ZTv0_n24_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn2712_N8S21115C2D0Ev,_ZThn1556_N8S21115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21115C4__8S21115C2__8S21115C1[] = {
  ABISELECT(-2712,-1556),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-2712,-1556),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C2D1Ev,_ZTv0_n24_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C2D0Ev,_ZTv0_n24_N8S21115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn2880_N8S21115C2D1Ev,_ZThn1672_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn2880_N8S21115C2D0Ev,_ZThn1672_N8S21115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21115C6__8S21115C2__8S21115C1[] = {
  ABISELECT(-2880,-1672),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-2880,-1672),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21115C2D1Ev,_ZTv0_n12_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn2920_N8S21115C2D1Ev,_ZThn1692_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C2D0Ev,_ZTv0_n12_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn2920_N8S21115C2D0Ev,_ZThn1692_N8S21115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C2__8S21115C1[] = {
  ABISELECT(-2920,-1692),
  ABISELECT(-2920,-1692),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C2D1Ev,_ZTv0_n12_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C2D0Ev,_ZTv0_n12_N8S21115C2D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S21115C2D1Ev,_ZTvn32_n32_N8S21115C2D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S21115C2D0Ev,_ZTvn32_n32_N8S21115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C98S21115C3__8S21115C2__8S21115C1[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-2256,-1300),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21115C2D1Ev,_ZTvn32_n32_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21115C2D0Ev,_ZTvn32_n32_N8S21115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn2976_N8S21115C2D1Ev,_ZThn1724_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn2976_N8S21115C2D0Ev,_ZThn1724_N8S21115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21115C10__8S21115C2__8S21115C1[] = {
  ABISELECT(-2976,-1724),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-2976,-1724),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn3440_N8S21115C2D1Ev,_ZThn2004_N8S21115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev)();
extern void ABISELECT(_ZThn3440_N8S21115C2D0Ev,_ZThn2004_N8S21115C2D0Ev)() __attribute__((weak));
extern void _ZN9S21115C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C11__8S21115C2__8S21115C1[] = {
  0,
  ABISELECT(-3440,-2004),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2004),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S21115C2D1Ev,_ZTvn32_n20_N8S21115C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S21115C2D0Ev,_ZTvn32_n20_N8S21115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C11__A3__8S21115C2__8S21115C1[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2036),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21115C2D1Ev,_ZTvn32_n20_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21115C2D0Ev,_ZTvn32_n20_N8S21115C2D0Ev),
};
extern void ABISELECT(_ZThn64_N8S21115C2D1Ev,_ZThn32_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21115C2D0Ev,_ZThn32_N8S21115C2D0Ev)();
extern void _ZN9S21115C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C11__A__8S21115C2__8S21115C1[] = {
  ABISELECT(2856,1660),
  ABISELECT(2776,1616),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21115C2D1Ev,_ZThn32_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21115C2D0Ev,_ZThn32_N8S21115C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
};
extern void ABISELECT(_ZThn120_N8S21115C2D1Ev,_ZThn64_N8S21115C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21115C2D0Ev,_ZThn64_N8S21115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C11__A4__8S21115C2__8S21115C1[] = {
  ABISELECT(2800,1628),
  ABISELECT(2720,1584),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S21115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S21115C2D1Ev,_ZThn64_N8S21115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S21115C2D0Ev,_ZThn64_N8S21115C2D0Ev),
};
extern void _ZN8S21115C3D1Ev();
extern void _ZN8S21115C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C3__8S21115C1[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&_ZN8S21115C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C3D0Ev,
};
extern void _ZN8S21115C9D1Ev();
extern void _ZN8S21115C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C98S21115C3__8S21115C1[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&_ZN8S21115C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C9D0Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C68S21115C98S21115C3__A1__8S21115C1[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn664_N8S21115C6D1Ev,_ZThn392_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn664_N8S21115C6D0Ev,_ZThn392_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C68S21115C98S21115C3__A1__8S21115C1[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev)();
extern void ABISELECT(_ZThn664_N8S21115C9D1Ev,_ZThn392_N8S21115C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev)();
extern void ABISELECT(_ZThn664_N8S21115C9D0Ev,_ZThn392_N8S21115C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C98S21115C3__8S21115C1[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev)();
extern void ABISELECT(_ZThn720_N8S21115C9D1Ev,_ZThn424_N8S21115C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev)();
extern void ABISELECT(_ZThn720_N8S21115C9D0Ev,_ZThn424_N8S21115C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21115C10__8S21115C98S21115C3__8S21115C1[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI8S21115C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21115C3D1Ev,_ZTv0_n24_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn520_N8S21115C3D1Ev,_ZThn288_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21115C3D0Ev,_ZTv0_n24_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn520_N8S21115C3D0Ev,_ZThn288_N8S21115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21115C4__8S21115C3__8S21115C1[] = {
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C3D1Ev,_ZTv0_n24_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21115C3D0Ev,_ZTv0_n24_N8S21115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn688_N8S21115C3D1Ev,_ZThn404_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn688_N8S21115C3D0Ev,_ZThn404_N8S21115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21115C6__8S21115C3__8S21115C1[] = {
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21115C3D1Ev,_ZTv0_n12_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn728_N8S21115C3D1Ev,_ZThn424_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C3D0Ev,_ZTv0_n12_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn728_N8S21115C3D0Ev,_ZThn424_N8S21115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C3__8S21115C1[] = {
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C3D1Ev,_ZTv0_n12_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C3D0Ev,_ZTv0_n12_N8S21115C3D0Ev),
};
extern void ABISELECT(_ZThn64_N8S21115C3D1Ev,_ZThn32_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21115C3D0Ev,_ZThn32_N8S21115C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C9__8S21115C3__8S21115C1[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21115C3D1Ev,_ZThn32_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21115C3D0Ev,_ZThn32_N8S21115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev)();
extern void ABISELECT(_ZThn784_N8S21115C3D1Ev,_ZThn456_N8S21115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev)();
extern void ABISELECT(_ZThn784_N8S21115C3D0Ev,_ZThn456_N8S21115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21115C10__8S21115C3__8S21115C1[] = {
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S21115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev),
};
extern void _ZN8S21115C4D1Ev();
extern void _ZN8S21115C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C4__8S21115C1[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&_ZN8S21115C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C4D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S21115C4D1Ev,_ZThn116_N8S21115C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev)();
extern void ABISELECT(_ZThn168_N8S21115C4D0Ev,_ZThn116_N8S21115C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21115C6__8S21115C4__8S21115C1[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S21115C4D1Ev,_ZThn136_N8S21115C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S21115C4D0Ev,_ZThn136_N8S21115C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C4__8S21115C1[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21115C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev),
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C6__8S21115C1[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21115C6D1Ev,_ZThn20_N8S21115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21115C6D0Ev,_ZThn20_N8S21115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C6__8S21115C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void _ZN9S21115C10D1Ev();
extern void _ZN9S21115C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C10__8S21115C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C10[0]),
  (VTBL_ENTRY)&_ZN9S21115C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C10D0Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C10__A2__8S21115C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C69S21115C10__A2__8S21115C1[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21115C10D1Ev,_ZTv0_n12_N9S21115C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21115C10D0Ev,_ZTv0_n12_N9S21115C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S21115C10__8S21115C1[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C10D1Ev,_ZTv0_n12_N9S21115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C10D0Ev,_ZTv0_n12_N9S21115C10D0Ev),
};
extern void _ZN9S21115C11D1Ev();
extern void _ZN9S21115C11D0Ev();
extern void _ZN9S21115C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21115C11__8S21115C1[] = {
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&_ZN9S21115C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21115C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21115C112v3Ev,
};
extern void _ZN8S21115C6D1Ev();
extern void _ZN8S21115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21115C69S21115C11__A3__8S21115C1[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  0,
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&_ZN8S21115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21115C69S21115C11__A3__8S21115C1[] = {
  ABISELECT(576,344),
  ABISELECT(576,344),
  (VTBL_ENTRY)&(_ZTI8S21115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev),
};
extern void ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21115C6__9S21115C11__8S21115C1[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D1Ev,_ZThn32_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21115C11D0Ev,_ZThn32_N9S21115C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21115C11__8S21115C1[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI9S21115C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev),
};
static  VTT_ENTRY vtt_S21115C1[] = {
  {&(_ZTV8S21115C1[10]),  10,103},
  {&(_ZTV8S21115C1[27]),  27,103},
  {&(_ZTV8S21115C1[52]),  52,103},
  {&(_ZTV8S21115C1[67]),  67,103},
  {&(_ZTV8S21115C1[74]),  74,103},
  {&(_ZTV8S21115C1[79]),  79,103},
  {&(_ZTV8S21115C1[59]),  59,103},
  {&(_ZTV8S21115C1[86]),  86,103},
  {&(_ZTV8S21115C1[94]),  94,103},
  {&(_ZTV8S21115C1[101]),  101,103},
  {&(_ZTV8S21115C1[35]),  35,103},
  {&(_ZTV8S21115C1[42]),  42,103},
  {&(_tg__ZTV8S21115C2__8S21115C1[9]),  9,13},
  {&(_tg__ZTV9S21115C128S21115C2__8S21115C1[5]),  5,8},
  {&(_tg__ZTV9S21115C11__9S21115C128S21115C2__8S21115C1[6]),  6,9},
  {&(_tg__ZTV8S21115C69S21115C11__9S21115C128S21115C2__8S21115C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21115C128S21115C2__8S21115C1[3]),  3,5},
  {&(_tg__ZTV9S21115C118S21115C2__A1__8S21115C1[4]),  4,7},
  {&(_tg__ZTV8S21115C69S21115C118S21115C2__A4__8S21115C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C69S21115C118S21115C2__A4__8S21115C1[3]),  3,5},
  {&(_tg__ZTV8S21115C6__9S21115C118S21115C2__A1__8S21115C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21115C118S21115C2__A1__8S21115C1[3]),  3,5},
  {&(_tg__ZTV8S21115C3__8S21115C2__8S21115C1[8]),  8,10},
  {&(_tg__ZTV8S21115C4__8S21115C2__8S21115C1[6]),  6,8},
  {&(_tg__ZTV8S21115C6__8S21115C2__8S21115C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21115C2__8S21115C1[3]),  3,5},
  {&(_tg__ZTV8S21115C98S21115C3__8S21115C2__8S21115C1[5]),  5,7},
  {&(_tg__ZTV9S21115C10__8S21115C2__8S21115C1[5]),  5,7},
  {&(_tg__ZTV9S21115C11__8S21115C2__8S21115C1[6]),  6,9},
  {&(_tg__ZTV8S21115C69S21115C11__A3__8S21115C2__8S21115C1[4]),  4,6},
  {&(_tg__ZTV9S21115C11__A__8S21115C2__8S21115C1[4]),  4,7},
  {&(_tg__ZTV8S21115C69S21115C11__A4__8S21115C2__8S21115C1[4]),  4,6},
  {&(_tg__ZTV8S21115C3__8S21115C1[7]),  7,9},
  {&(_tg__ZTV8S21115C98S21115C3__8S21115C1[5]),  5,7},
  {&(_tg__ZTV8S21115C68S21115C98S21115C3__A1__8S21115C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C68S21115C98S21115C3__A1__8S21115C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S21115C98S21115C3__8S21115C1[3]),  3,5},
  {&(_tg__ZTV9S21115C10__8S21115C98S21115C3__8S21115C1[5]),  5,7},
  {&(_tg__ZTV8S21115C4__8S21115C3__8S21115C1[6]),  6,8},
  {&(_tg__ZTV8S21115C6__8S21115C3__8S21115C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21115C3__8S21115C1[3]),  3,5},
  {&(_tg__ZTV8S21115C9__8S21115C3__8S21115C1[5]),  5,7},
  {&(_tg__ZTV9S21115C10__8S21115C3__8S21115C1[5]),  5,7},
  {&(_tg__ZTV8S21115C4__8S21115C1[5]),  5,7},
  {&(_tg__ZTV8S21115C6__8S21115C4__8S21115C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21115C4__8S21115C1[3]),  3,5},
  {&(_tg__ZTV8S21115C6__8S21115C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C6__8S21115C1[3]),  3,5},
  {&(_tg__ZTV9S21115C10__8S21115C1[4]),  4,6},
  {&(_tg__ZTV8S21115C69S21115C10__A2__8S21115C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C69S21115C10__A2__8S21115C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S21115C10__8S21115C1[3]),  3,5},
  {&(_tg__ZTV9S21115C11__8S21115C1[4]),  4,7},
  {&(_tg__ZTV8S21115C69S21115C11__A3__8S21115C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21115C69S21115C11__A3__8S21115C1[3]),  3,5},
  {&(_tg__ZTV8S21115C6__9S21115C11__8S21115C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21115C11__8S21115C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21115C1[];
extern  VTBL_ENTRY _ZTV8S21115C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21115C1[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C4D0Ev,_ZTv0_n12_N8S21115C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C4D0Ev,_ZThn136_N8S21115C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C4D1Ev,_ZTv0_n12_N8S21115C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21115C4D1Ev,_ZThn136_N8S21115C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C4D0Ev,_ZTv0_n20_N8S21115C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21115C4D0Ev,_ZThn116_N8S21115C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C4D1Ev,_ZTv0_n20_N8S21115C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21115C4D1Ev,_ZThn116_N8S21115C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C3D0Ev,_ZTv0_n12_N8S21115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21115C3D0Ev,_ZThn424_N8S21115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C3D1Ev,_ZTv0_n12_N8S21115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21115C3D1Ev,_ZThn424_N8S21115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C3D0Ev,_ZTv0_n20_N8S21115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21115C3D0Ev,_ZThn456_N8S21115C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21115C3D0Ev,_ZThn404_N8S21115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C3D1Ev,_ZTv0_n20_N8S21115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21115C3D1Ev,_ZThn456_N8S21115C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21115C3D1Ev,_ZThn404_N8S21115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C3D0Ev,_ZTv0_n24_N8S21115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21115C3D0Ev,_ZThn288_N8S21115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C3D1Ev,_ZTv0_n24_N8S21115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21115C3D1Ev,_ZThn288_N8S21115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C9D0Ev,_ZTv0_n20_N8S21115C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21115C9D0Ev,_ZThn424_N8S21115C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C9D1Ev,_ZTv0_n20_N8S21115C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21115C9D1Ev,_ZThn424_N8S21115C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C9D0Ev,_ZTv0_n12_N8S21115C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C9D0Ev,_ZThn392_N8S21115C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C9D1Ev,_ZTv0_n12_N8S21115C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C9D1Ev,_ZThn392_N8S21115C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C2D0Ev,_ZTv0_n12_N8S21115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S21115C2D0Ev,_ZThn1692_N8S21115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C2D1Ev,_ZTv0_n12_N8S21115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S21115C2D1Ev,_ZThn1692_N8S21115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C2D0Ev,_ZTv0_n20_N8S21115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S21115C2D0Ev,_ZThn2004_N8S21115C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S21115C2D0Ev,_ZThn1724_N8S21115C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S21115C2D0Ev,_ZThn1672_N8S21115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C2D1Ev,_ZTv0_n20_N8S21115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S21115C2D1Ev,_ZThn2004_N8S21115C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S21115C2D1Ev,_ZThn1724_N8S21115C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S21115C2D1Ev,_ZThn1672_N8S21115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C2D0Ev,_ZTv0_n24_N8S21115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S21115C2D0Ev,_ZThn1556_N8S21115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C2D1Ev,_ZTv0_n24_N8S21115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S21115C2D1Ev,_ZThn1556_N8S21115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21115C2D0Ev,_ZTv0_n32_N8S21115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S21115C2D0Ev,_ZThn1268_N8S21115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21115C2D1Ev,_ZTv0_n32_N8S21115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S21115C2D1Ev,_ZThn1268_N8S21115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C11D0Ev,_ZTv0_n12_N9S21115C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S21115C11D0Ev,_ZThn1660_N9S21115C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C11D1Ev,_ZTv0_n12_N9S21115C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S21115C11D1Ev,_ZThn1660_N9S21115C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D0Ev,_ZTv0_n12_N8S21115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21115C6D0Ev,_ZThn20_N8S21115C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C6D0Ev,_ZThn392_N8S21115C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S21115C6D0Ev,_ZThn1628_N8S21115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C6D1Ev,_ZTv0_n12_N8S21115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21115C6D1Ev,_ZThn20_N8S21115C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21115C6D1Ev,_ZThn392_N8S21115C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S21115C6D1Ev,_ZThn1628_N8S21115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C12D0Ev,_ZTv0_n12_N9S21115C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S21115C12D0Ev,_ZThn1692_N9S21115C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21115C12D1Ev,_ZTv0_n12_N9S21115C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S21115C12D1Ev,_ZThn1692_N9S21115C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21115C12D0Ev,_ZTv0_n20_N9S21115C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S21115C12D0Ev,_ZThn2004_N9S21115C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21115C12D1Ev,_ZTv0_n20_N9S21115C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S21115C12D1Ev,_ZThn2004_N9S21115C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C1D0Ev,_ZTv0_n12_N8S21115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3000_N8S21115C1D0Ev,_ZThn1748_N8S21115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21115C1D1Ev,_ZTv0_n12_N8S21115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3000_N8S21115C1D1Ev,_ZThn1748_N8S21115C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C1D0Ev,_ZTv0_n20_N8S21115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3520_N8S21115C1D0Ev,_ZThn2060_N8S21115C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3056_N8S21115C1D0Ev,_ZThn1780_N8S21115C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S21115C1D0Ev,_ZThn1728_N8S21115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21115C1D1Ev,_ZTv0_n20_N8S21115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3520_N8S21115C1D1Ev,_ZThn2060_N8S21115C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3056_N8S21115C1D1Ev,_ZThn1780_N8S21115C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S21115C1D1Ev,_ZThn1728_N8S21115C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C1D0Ev,_ZTv0_n24_N8S21115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2792_N8S21115C1D0Ev,_ZThn1612_N8S21115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21115C1D1Ev,_ZTv0_n24_N8S21115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2792_N8S21115C1D1Ev,_ZThn1612_N8S21115C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21115C1D0Ev,_ZTv0_n32_N8S21115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N8S21115C1D0Ev,_ZThn1324_N8S21115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21115C1D1Ev,_ZTv0_n32_N8S21115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N8S21115C1D1Ev,_ZThn1324_N8S21115C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21115C1D0Ev,_ZTv0_n40_N8S21115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21115C1D0Ev,_ZThn56_N8S21115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21115C1D1Ev,_ZTv0_n40_N8S21115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21115C1D1Ev,_ZThn56_N8S21115C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21115C1 = {  "S21115C1", // class name
  bases_S21115C1, 18,
  &(vtc_S21115C1[0]), // expected_vtbl_contents
  &(vtt_S21115C1[0]), // expected_vtt_contents
  ABISELECT(3744,2184), // object size
  NSPAIRA(_ZTI8S21115C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21115C1),103, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21115C1),57, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21116C6  : virtual S3572C5 , virtual S3572C4 {
  unsigned char s21116c6f0:1;
  void *s21116c6f1[3];
  ~S21116C6(); // tgen
  S21116C6(); // tgen
};
//SIG(-1 S21116C6) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} Fc:1 Fp[3]}


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

static void Test_S21116C6()
{
  extern Class_Descriptor cd_S21116C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S21116C6, buf);
    S21116C6 *dp, &lv = *(dp=new (buf) S21116C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S21116C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21116C6)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(40,20), "S21116C6");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(80,44), "S21116C6");
    set_bf_and_test(lv, s21116c6f0, ABISELECT(8,4), 0, 1, 1, "S21116C6");
    check_field_offset(lv, s21116c6f1, ABISELECT(16,8), "S21116C6.s21116c6f1");
    test_class_info(&lv, &cd_S21116C6);
    dp->~S21116C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21116C6(Test_S21116C6, "S21116C6", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN8S21116C6C1Ev();
extern void _ZN8S21116C6D1Ev();
Name_Map name_map_S21116C6[] = {
  NSPAIR(_ZN8S21116C6C1Ev),
  NSPAIR(_ZN8S21116C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
static Base_Class bases_S21116C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(80,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21116C6[];
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S21116C6D1Ev,_ZThn44_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S21116C6D0Ev,_ZThn44_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21116C6[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21116C6[];
static  VTT_ENTRY vtt_S21116C6[] = {
  {&(_ZTV8S21116C6[4]),  4,11},
  {&(_ZTV8S21116C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21116C6D0Ev,_ZThn44_N8S21116C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21116C6D1Ev,_ZThn44_N8S21116C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21116C6 = {  "S21116C6", // class name
  bases_S21116C6, 2,
  &(vtc_S21116C6[0]), // expected_vtbl_contents
  &(vtt_S21116C6[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI8S21116C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21116C6),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21116C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21116C4  : virtual S3572C5 , virtual S21116C6 {
  short s21116c4f0;
  int s21116c4f1[2];
  char s21116c4f2;
  __tsi64 s21116c4f3;
  int s21116c4f4;
  ::S3572C6_nt s21116c4f5;
  void *s21116c4f6;
  char s21116c4f7;
  short s21116c4f8;
  ::S3572C4 s21116c4f9;
  int s21116c4f10[2];
  __tsi64 s21116c4f11;
  virtual  ~S21116C4(); // _ZN8S21116C4D2Ev
  S21116C4(); // tgen
};
//SIG(-1 S21116C4) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ VBC2 VBC4{ vd m FC2 FC5{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL}


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

static void Test_S21116C4()
{
  extern Class_Descriptor cd_S21116C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,43)];
    init_test(&cd_S21116C4, buf);
    S21116C4 *dp, &lv = *(dp=new (buf) S21116C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,168), "sizeof(S21116C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21116C4)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(128,92), "S21116C4");
    check_base_class_offset(lv, (S3572C5*)(S21116C6*), ABISELECT(128,92), "S21116C4");
    check_base_class_offset(lv, (S3572C4*)(S21116C6*), ABISELECT(208,136), "S21116C4");
    check_base_class_offset(lv, (S21116C6*), ABISELECT(168,116), "S21116C4");
    check_field_offset(lv, s21116c4f0, ABISELECT(8,4), "S21116C4.s21116c4f0");
    check_field_offset(lv, s21116c4f1, ABISELECT(12,8), "S21116C4.s21116c4f1");
    check_field_offset(lv, s21116c4f2, ABISELECT(20,16), "S21116C4.s21116c4f2");
    check_field_offset(lv, s21116c4f3, ABISELECT(24,20), "S21116C4.s21116c4f3");
    check_field_offset(lv, s21116c4f4, ABISELECT(32,28), "S21116C4.s21116c4f4");
    check_field_offset(lv, s21116c4f5, ABISELECT(36,32), "S21116C4.s21116c4f5");
    check_field_offset(lv, s21116c4f6, ABISELECT(40,36), "S21116C4.s21116c4f6");
    check_field_offset(lv, s21116c4f7, ABISELECT(48,40), "S21116C4.s21116c4f7");
    check_field_offset(lv, s21116c4f8, ABISELECT(50,42), "S21116C4.s21116c4f8");
    check_field_offset(lv, s21116c4f9, ABISELECT(56,44), "S21116C4.s21116c4f9");
    check_field_offset(lv, s21116c4f10, ABISELECT(112,76), "S21116C4.s21116c4f10");
    check_field_offset(lv, s21116c4f11, ABISELECT(120,84), "S21116C4.s21116c4f11");
    test_class_info(&lv, &cd_S21116C4);
    dp->~S21116C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21116C4(Test_S21116C4, "S21116C4", ABISELECT(264,168));

#else // __cplusplus

extern void _ZN8S21116C4C1Ev();
extern void _ZN8S21116C4D2Ev();
Name_Map name_map_S21116C4[] = {
  NSPAIR(_ZN8S21116C4C1Ev),
  NSPAIR(_ZN8S21116C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
static Base_Class bases_S21116C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(208,136), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21116C6,    ABISELECT(168,116), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21116C4[];
extern void _ZN8S21116C4D1Ev();
extern void _ZN8S21116C4D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S21116C4D1Ev,_ZThn116_N8S21116C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev)();
extern void ABISELECT(_ZThn168_N8S21116C4D0Ev,_ZThn116_N8S21116C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S21116C4D1Ev,_ZThn136_N8S21116C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S21116C4D0Ev,_ZThn136_N8S21116C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21116C4[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&_ZN8S21116C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C4D0Ev,
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21116C4[];
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C6__8S21116C4[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21116C6D1Ev,_ZThn20_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21116C6D0Ev,_ZThn20_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C6__8S21116C4[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
static  VTT_ENTRY vtt_S21116C4[] = {
  {&(_ZTV8S21116C4[5]),  5,19},
  {&(_ZTV8S21116C4[12]),  12,19},
  {&(_ZTV8S21116C4[17]),  17,19},
  {&(_tg__ZTV8S21116C6__8S21116C4[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C6__8S21116C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21116C4[];
extern  VTBL_ENTRY _ZTV8S21116C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C4[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21116C6D0Ev,_ZThn20_N8S21116C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21116C6D1Ev,_ZThn20_N8S21116C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C4D0Ev,_ZThn136_N8S21116C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C4D1Ev,_ZThn136_N8S21116C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21116C4D0Ev,_ZThn116_N8S21116C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21116C4D1Ev,_ZThn116_N8S21116C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21116C4 = {  "S21116C4", // class name
  bases_S21116C4, 3,
  &(vtc_S21116C4[0]), // expected_vtbl_contents
  &(vtt_S21116C4[0]), // expected_vtt_contents
  ABISELECT(264,168), // object size
  NSPAIRA(_ZTI8S21116C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21116C4),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21116C4),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21116C10  : virtual S3572C5 , virtual S3572C4 , S21116C6 {
  char s21116c10f0;
  int s21116c10f1[3];
  void *s21116c10f2;
  short s21116c10f3:16;
  int s21116c10f4;
  void *s21116c10f5[2];
  int s21116c10f6;
  ::S3572C5 s21116c10f7[9];
  int s21116c10f8;
  virtual  ~S21116C10(); // _ZN9S21116C10D2Ev
  S21116C10(); // tgen
};
//SIG(-1 S21116C10) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC2[9] Fi}


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

static void Test_S21116C10()
{
  extern Class_Descriptor cd_S21116C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(71,85)];
    init_test(&cd_S21116C10, buf);
    S21116C10 *dp, &lv = *(dp=new (buf) S21116C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,336), "sizeof(S21116C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21116C10)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(464,280), "S21116C10");
    check_base_class_offset(lv, (S3572C5*)(S21116C6*), ABISELECT(464,280), "S21116C10");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(504,304), "S21116C10");
    check_base_class_offset(lv, (S3572C4*)(S21116C6*), ABISELECT(504,304), "S21116C10");
    check_base_class_offset(lv, (S21116C6*), 0, "S21116C10");
    check_field_offset(lv, s21116c10f0, ABISELECT(40,20), "S21116C10.s21116c10f0");
    check_field_offset(lv, s21116c10f1, ABISELECT(44,24), "S21116C10.s21116c10f1");
    check_field_offset(lv, s21116c10f2, ABISELECT(56,36), "S21116C10.s21116c10f2");
    set_bf_and_test(lv, s21116c10f3, ABISELECT(64,40), 0, 16, 1, "S21116C10");
    set_bf_and_test(lv, s21116c10f3, ABISELECT(64,40), 0, 16, hide_sll(1LL<<15), "S21116C10");
    check_field_offset(lv, s21116c10f4, ABISELECT(68,44), "S21116C10.s21116c10f4");
    check_field_offset(lv, s21116c10f5, ABISELECT(72,48), "S21116C10.s21116c10f5");
    check_field_offset(lv, s21116c10f6, ABISELECT(88,56), "S21116C10.s21116c10f6");
    check_field_offset(lv, s21116c10f7, ABISELECT(96,60), "S21116C10.s21116c10f7");
    check_field_offset(lv, s21116c10f8, ABISELECT(456,276), "S21116C10.s21116c10f8");
    test_class_info(&lv, &cd_S21116C10);
    dp->~S21116C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21116C10(Test_S21116C10, "S21116C10", ABISELECT(560,336));

#else // __cplusplus

extern void _ZN9S21116C10C1Ev();
extern void _ZN9S21116C10D2Ev();
Name_Map name_map_S21116C10[] = {
  NSPAIR(_ZN9S21116C10C1Ev),
  NSPAIR(_ZN9S21116C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
static Base_Class bases_S21116C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(464,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(504,304), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21116C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21116C10[];
extern void _ZN9S21116C10D1Ev();
extern void _ZN9S21116C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21116C10D1Ev,_ZTv0_n12_N9S21116C10D1Ev)();
extern void ABISELECT(_ZThn504_N9S21116C10D1Ev,_ZThn304_N9S21116C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21116C10D0Ev,_ZTv0_n12_N9S21116C10D0Ev)();
extern void ABISELECT(_ZThn504_N9S21116C10D0Ev,_ZThn304_N9S21116C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21116C10[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C10[0]),
  (VTBL_ENTRY)&_ZN9S21116C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C10D0Ev,
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI9S21116C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C10D1Ev,_ZTv0_n12_N9S21116C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C10D0Ev,_ZTv0_n12_N9S21116C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S21116C10[];
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C6__9S21116C10[] = {
  ABISELECT(504,304),
  ABISELECT(464,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn504_N8S21116C6D1Ev,_ZThn304_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn504_N8S21116C6D0Ev,_ZThn304_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C6__9S21116C10[] = {
  ABISELECT(-504,-304),
  ABISELECT(-504,-304),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
static  VTT_ENTRY vtt_S21116C10[] = {
  {&(_ZTV9S21116C10[4]),  4,11},
  {&(_tg__ZTV8S21116C6__9S21116C10[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C6__9S21116C10[3]),  3,5},
  {&(_ZTV9S21116C10[9]),  9,11},
};
extern VTBL_ENTRY _ZTI9S21116C10[];
extern  VTBL_ENTRY _ZTV9S21116C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C10[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S21116C6D0Ev,_ZThn304_N8S21116C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S21116C6D1Ev,_ZThn304_N8S21116C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C10D0Ev,_ZTv0_n12_N9S21116C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S21116C10D0Ev,_ZThn304_N9S21116C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C10D1Ev,_ZTv0_n12_N9S21116C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S21116C10D1Ev,_ZThn304_N9S21116C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21116C10 = {  "S21116C10", // class name
  bases_S21116C10, 3,
  &(vtc_S21116C10[0]), // expected_vtbl_contents
  &(vtt_S21116C10[0]), // expected_vtt_contents
  ABISELECT(560,336), // object size
  NSPAIRA(_ZTI9S21116C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21116C10),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21116C10),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21116C11  : virtual S3572C5 , S3572C4 , S21116C6 {
  char s21116c11f0;
  void *s21116c11f1[7];
  long double s21116c11f2;
  void *s21116c11f3[4];
  int s21116c11f4;
  char s21116c11f5;
  void *s21116c11f6;
  virtual  ~S21116C11(); // _ZN9S21116C11D2Ev
  virtual void  v3(); // _ZN9S21116C112v3Ev
  S21116C11(); // tgen
};
//SIG(-1 S21116C11) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} BC3{ vd m FC2 FC4{}} BC5{ VBC2 VBC3 Fc:1 Fp[3]} vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}


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

static void Test_S21116C11()
{
  extern Class_Descriptor cd_S21116C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,46)];
    init_test(&cd_S21116C11, buf);
    S21116C11 *dp, &lv = *(dp=new (buf) S21116C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,180), "sizeof(S21116C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21116C11)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(224,124), "S21116C11");
    check_base_class_offset(lv, (S3572C5*)(S21116C6*), ABISELECT(224,124), "S21116C11");
    /*is_ambiguous_... S21116C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S21116C11");
    check_base_class_offset(lv, (S3572C4*)(S21116C6*), ABISELECT(264,148), "S21116C11");
    check_base_class_offset(lv, (S21116C6*), ABISELECT(56,32), "S21116C11");
    check_field_offset(lv, s21116c11f0, ABISELECT(96,52), "S21116C11.s21116c11f0");
    check_field_offset(lv, s21116c11f1, ABISELECT(104,56), "S21116C11.s21116c11f1");
    check_field_offset(lv, s21116c11f2, ABISELECT(160,84), "S21116C11.s21116c11f2");
    check_field_offset(lv, s21116c11f3, ABISELECT(176,96), "S21116C11.s21116c11f3");
    check_field_offset(lv, s21116c11f4, ABISELECT(208,112), "S21116C11.s21116c11f4");
    check_field_offset(lv, s21116c11f5, ABISELECT(212,116), "S21116C11.s21116c11f5");
    check_field_offset(lv, s21116c11f6, ABISELECT(216,120), "S21116C11.s21116c11f6");
    test_class_info(&lv, &cd_S21116C11);
    dp->~S21116C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21116C11(Test_S21116C11, "S21116C11", ABISELECT(320,180));

#else // __cplusplus

extern void _ZN9S21116C11C1Ev();
extern void _ZN9S21116C11D2Ev();
Name_Map name_map_S21116C11[] = {
  NSPAIR(_ZN9S21116C11C1Ev),
  NSPAIR(_ZN9S21116C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
static Base_Class bases_S21116C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(224,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
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3572C4,    ABISELECT(264,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21116C6,    ABISELECT(56,32), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21116C11[];
extern void _ZN9S21116C11D1Ev();
extern void _ZN9S21116C11D0Ev();
extern void _ZN9S21116C112v3Ev();
extern void ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21116C11D1Ev,_ZThn148_N9S21116C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev)();
extern void ABISELECT(_ZThn264_N9S21116C11D0Ev,_ZThn148_N9S21116C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21116C11[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&_ZN9S21116C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev),
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S21116C11[];
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C6__9S21116C11[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn208_N8S21116C6D1Ev,_ZThn116_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn208_N8S21116C6D0Ev,_ZThn116_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C6__9S21116C11[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
static  VTT_ENTRY vtt_S21116C11[] = {
  {&(_ZTV9S21116C11[4]),  4,18},
  {&(_tg__ZTV8S21116C6__9S21116C11[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C6__9S21116C11[3]),  3,5},
  {&(_ZTV9S21116C11[11]),  11,18},
  {&(_ZTV9S21116C11[16]),  16,18},
};
extern VTBL_ENTRY _ZTI9S21116C11[];
extern  VTBL_ENTRY _ZTV9S21116C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C11[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C6D0Ev,_ZThn116_N8S21116C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C6D1Ev,_ZThn116_N8S21116C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21116C11D0Ev,_ZThn148_N9S21116C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21116C11D1Ev,_ZThn148_N9S21116C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21116C11 = {  "S21116C11", // class name
  bases_S21116C11, 4,
  &(vtc_S21116C11[0]), // expected_vtbl_contents
  &(vtt_S21116C11[0]), // expected_vtt_contents
  ABISELECT(320,180), // object size
  NSPAIRA(_ZTI9S21116C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21116C11),18, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21116C11),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21116C9  : virtual S3572C4 , S21116C6 , virtual S21116C10 {
  ::S21116C11 s21116c9f0;
  virtual  ~S21116C9(); // _ZN8S21116C9D2Ev
  S21116C9(); // tgen
};
//SIG(-1 S21116C9) C1{ VBC2{ vd m FC3{ m Fp Fs Fi Fp Fl[2]} FC4{}} BC5{ VBC3 VBC2 Fc:1 Fp[3]} VBC6{ VBC3 VBC2 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC7{ VBC3 BC2 BC5 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}}


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

static void Test_S21116C9()
{
  extern Class_Descriptor cd_S21116C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,135)];
    init_test(&cd_S21116C9, buf);
    S21116C9 *dp, &lv = *(dp=new (buf) S21116C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,536), "sizeof(S21116C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21116C9)");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(368,200), "S21116C9");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C6*), ABISELECT(368,200), "S21116C9");
    check_base_class_offset(lv, (S3572C4*)(S21116C10*), ABISELECT(368,200), "S21116C9");
    check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C10*), ABISELECT(368,200), "S21116C9");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C6*), ABISELECT(424,232), "S21116C9");
    check_base_class_offset(lv, (S3572C5*)(S21116C10*), ABISELECT(424,232), "S21116C9");
    check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C10*), ABISELECT(424,232), "S21116C9");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S21116C6*), 0, "S21116C9");
    check_base_class_offset(lv, (S21116C6*)(S21116C10*), ABISELECT(464,256), "S21116C9");
    check_base_class_offset(lv, (S21116C10*), ABISELECT(464,256), "S21116C9");
    check_field_offset(lv, s21116c9f0, ABISELECT(48,20), "S21116C9.s21116c9f0");
    test_class_info(&lv, &cd_S21116C9);
    dp->~S21116C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21116C9(Test_S21116C9, "S21116C9", ABISELECT(928,536));

#else // __cplusplus

extern void _ZN8S21116C9C1Ev();
extern void _ZN8S21116C9D2Ev();
Name_Map name_map_S21116C9[] = {
  NSPAIR(_ZN8S21116C9C1Ev),
  NSPAIR(_ZN8S21116C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C10;
extern VTBL_ENTRY _ZTI9S21116C10[];
extern  VTBL_ENTRY _ZTV9S21116C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C10[];
static Base_Class bases_S21116C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(368,200), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C5,    ABISELECT(424,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21116C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21116C6,    ABISELECT(464,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21116C10,    ABISELECT(464,256), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21116C9[];
extern void _ZN8S21116C9D1Ev();
extern void _ZN8S21116C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev)();
extern void ABISELECT(_ZThn368_N8S21116C9D1Ev,_ZThn200_N8S21116C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev)();
extern void ABISELECT(_ZThn368_N8S21116C9D0Ev,_ZThn200_N8S21116C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev)();
extern void ABISELECT(_ZThn464_N8S21116C9D1Ev,_ZThn256_N8S21116C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev)();
extern void ABISELECT(_ZThn464_N8S21116C9D0Ev,_ZThn256_N8S21116C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21116C9[] = {
  ABISELECT(464,256),
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&_ZN8S21116C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C9D0Ev,
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev),
  ABISELECT(-464,-256),
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21116C9[];
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C6__8S21116C9[] = {
  ABISELECT(368,200),
  ABISELECT(424,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn368_N8S21116C6D1Ev,_ZThn200_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn368_N8S21116C6D0Ev,_ZThn200_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C6__8S21116C9[] = {
  ABISELECT(-368,-200),
  ABISELECT(-368,-200),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void _ZN9S21116C10D1Ev();
extern void _ZN9S21116C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C10__8S21116C9[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C10[0]),
  (VTBL_ENTRY)&_ZN9S21116C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C10D0Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C10__A1__8S21116C9[] = {
  ABISELECT(-96,-56),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C69S21116C10__A1__8S21116C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21116C10D1Ev,_ZTv0_n12_N9S21116C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21116C10D0Ev,_ZTv0_n12_N9S21116C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S21116C10__8S21116C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S21116C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C10D1Ev,_ZTv0_n12_N9S21116C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C10D0Ev,_ZTv0_n12_N9S21116C10D0Ev),
};
static  VTT_ENTRY vtt_S21116C9[] = {
  {&(_ZTV8S21116C9[5]),  5,19},
  {&(_tg__ZTV8S21116C6__8S21116C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C6__8S21116C9[3]),  3,5},
  {&(_ZTV8S21116C9[10]),  10,19},
  {&(_ZTV8S21116C9[17]),  17,19},
  {&(_tg__ZTV9S21116C10__8S21116C9[4]),  4,6},
  {&(_tg__ZTV8S21116C69S21116C10__A1__8S21116C9[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C69S21116C10__A1__8S21116C9[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S21116C10__8S21116C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21116C9[];
extern  VTBL_ENTRY _ZTV8S21116C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C9[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21116C6D0Ev,_ZThn200_N8S21116C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21116C6D1Ev,_ZThn200_N8S21116C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S21116C9D0Ev,_ZThn256_N8S21116C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S21116C9D1Ev,_ZThn256_N8S21116C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21116C9D0Ev,_ZThn200_N8S21116C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21116C9D1Ev,_ZThn200_N8S21116C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21116C9 = {  "S21116C9", // class name
  bases_S21116C9, 5,
  &(vtc_S21116C9[0]), // expected_vtbl_contents
  &(vtt_S21116C9[0]), // expected_vtt_contents
  ABISELECT(928,536), // object size
  NSPAIRA(_ZTI8S21116C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21116C9),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21116C9),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21116C3  : virtual S21116C4 , S3572C4 , S21116C9 {
  int s21116c3f0[6];
  void *s21116c3f1[8];
  virtual  ~S21116C3(); // _ZN8S21116C3D2Ev
  S21116C3(); // tgen
};
//SIG(-1 S21116C3) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} VBC4{ VBC3 VBC5{ vd m FC3 FC6{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC6 Fp Fc Fs FC5 Fi[2] FL} BC5 BC7{ VBC5 BC4 VBC8{ VBC3 VBC5 BC4 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC3[9] Fi} vd FC9{ VBC3 BC5 BC4 vd v1 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]}


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

static void Test_S21116C3()
{
  extern Class_Descriptor cd_S21116C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(79,185)];
    init_test(&cd_S21116C3, buf);
    S21116C3 *dp, &lv = *(dp=new (buf) S21116C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1248,736), "sizeof(S21116C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21116C3)");
    check_base_class_offset(lv, (S3572C5*)(S21116C4*), ABISELECT(648,380), "S21116C3");
    /*is_ambiguous_... S21116C3::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C6*), ABISELECT(648,380), "S21116C3");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C9*), ABISELECT(648,380), "S21116C3");
    check_base_class_offset(lv, (S3572C5*)(S21116C10*), ABISELECT(648,380), "S21116C3");
    check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C10*), ABISELECT(648,380), "S21116C3");
    /*is_ambiguous_... S21116C3::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C6*), ABISELECT(728,424), "S21116C3");
    check_base_class_offset(lv, (S3572C4*)(S21116C9*), ABISELECT(728,424), "S21116C3");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C9*), ABISELECT(728,424), "S21116C3");
    check_base_class_offset(lv, (S3572C4*)(S21116C10*), ABISELECT(728,424), "S21116C3");
    check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C10*), ABISELECT(728,424), "S21116C3");
    check_base_class_offset(lv, (S21116C6*)(S21116C4*), ABISELECT(688,404), "S21116C3");
    check_base_class_offset(lv, (S21116C4*), ABISELECT(520,288), "S21116C3");
    /*is_ambiguous_... S21116C3::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*), 0, "S21116C3");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S21116C6*)(S21116C9*), ABISELECT(64,32), "S21116C3");
    check_base_class_offset(lv, (S21116C6*)(S21116C10*), ABISELECT(784,456), "S21116C3");
    check_base_class_offset(lv, (S21116C10*)(S21116C9*), ABISELECT(784,456), "S21116C3");
    check_base_class_offset(lv, (S21116C9*), ABISELECT(64,32), "S21116C3");
    check_field_offset(lv, s21116c3f0, ABISELECT(432,232), "S21116C3.s21116c3f0");
    check_field_offset(lv, s21116c3f1, ABISELECT(456,256), "S21116C3.s21116c3f1");
    test_class_info(&lv, &cd_S21116C3);
    dp->~S21116C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21116C3(Test_S21116C3, "S21116C3", ABISELECT(1248,736));

#else // __cplusplus

extern void _ZN8S21116C3C1Ev();
extern void _ZN8S21116C3D2Ev();
Name_Map name_map_S21116C3[] = {
  NSPAIR(_ZN8S21116C3C1Ev),
  NSPAIR(_ZN8S21116C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C4;
extern VTBL_ENTRY _ZTI8S21116C4[];
extern  VTBL_ENTRY _ZTV8S21116C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C10;
extern VTBL_ENTRY _ZTI9S21116C10[];
extern  VTBL_ENTRY _ZTV9S21116C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C10[];
extern Class_Descriptor cd_S21116C9;
extern VTBL_ENTRY _ZTI8S21116C9[];
extern  VTBL_ENTRY _ZTV8S21116C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C9[];
static Base_Class bases_S21116C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(648,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(728,424), //bcp->offset
    31, //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
    2, //immediately_derived
  0, 1},
  {&cd_S21116C6,    ABISELECT(688,404), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21116C4,    ABISELECT(520,288), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21116C6,    ABISELECT(64,32), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21116C6,    ABISELECT(784,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21116C10,    ABISELECT(784,456), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21116C9,    ABISELECT(64,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21116C3[];
extern void _ZN8S21116C3D1Ev();
extern void _ZN8S21116C3D0Ev();
extern void ABISELECT(_ZThn64_N8S21116C3D1Ev,_ZThn32_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21116C3D0Ev,_ZThn32_N8S21116C3D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21116C3D1Ev,_ZTv0_n24_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn520_N8S21116C3D1Ev,_ZThn288_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21116C3D0Ev,_ZTv0_n24_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn520_N8S21116C3D0Ev,_ZThn288_N8S21116C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn688_N8S21116C3D1Ev,_ZThn404_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn688_N8S21116C3D0Ev,_ZThn404_N8S21116C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C3D1Ev,_ZTv0_n12_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn728_N8S21116C3D1Ev,_ZThn424_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C3D0Ev,_ZTv0_n12_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn728_N8S21116C3D0Ev,_ZThn424_N8S21116C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn784_N8S21116C3D1Ev,_ZThn456_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn784_N8S21116C3D0Ev,_ZThn456_N8S21116C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21116C3[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&_ZN8S21116C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C3D0Ev,
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21116C3D1Ev,_ZThn32_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21116C3D0Ev,_ZThn32_N8S21116C3D0Ev),
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C3D1Ev,_ZTv0_n24_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C3D0Ev,_ZTv0_n24_N8S21116C3D0Ev),
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev),
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C3D1Ev,_ZTv0_n12_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C3D0Ev,_ZTv0_n12_N8S21116C3D0Ev),
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21116C3[];
extern void _ZN8S21116C9D1Ev();
extern void _ZN8S21116C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C9__8S21116C3[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&_ZN8S21116C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C9D0Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C68S21116C9__A1__8S21116C3[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn664_N8S21116C6D1Ev,_ZThn392_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn664_N8S21116C6D0Ev,_ZThn392_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C68S21116C9__A1__8S21116C3[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev)();
extern void ABISELECT(_ZThn664_N8S21116C9D1Ev,_ZThn392_N8S21116C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev)();
extern void ABISELECT(_ZThn664_N8S21116C9D0Ev,_ZThn392_N8S21116C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C9__8S21116C3[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev)();
extern void ABISELECT(_ZThn720_N8S21116C9D1Ev,_ZThn424_N8S21116C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev)();
extern void ABISELECT(_ZThn720_N8S21116C9D0Ev,_ZThn424_N8S21116C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21116C10__8S21116C9__8S21116C3[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev),
};
extern void _ZN8S21116C4D1Ev();
extern void _ZN8S21116C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C4__8S21116C3[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&_ZN8S21116C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C4D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S21116C4D1Ev,_ZThn116_N8S21116C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev)();
extern void ABISELECT(_ZThn168_N8S21116C4D0Ev,_ZThn116_N8S21116C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21116C6__8S21116C4__8S21116C3[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S21116C4D1Ev,_ZThn136_N8S21116C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S21116C4D0Ev,_ZThn136_N8S21116C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C4__8S21116C3[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev),
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C6__8S21116C3[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21116C6D1Ev,_ZThn20_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21116C6D0Ev,_ZThn20_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C6__8S21116C3[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void _ZN9S21116C10D1Ev();
extern void _ZN9S21116C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C10__8S21116C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C10[0]),
  (VTBL_ENTRY)&_ZN9S21116C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C10D0Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C10__A2__8S21116C3[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C69S21116C10__A2__8S21116C3[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21116C10D1Ev,_ZTv0_n12_N9S21116C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21116C10D0Ev,_ZTv0_n12_N9S21116C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S21116C10__8S21116C3[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21116C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C10D1Ev,_ZTv0_n12_N9S21116C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C10D0Ev,_ZTv0_n12_N9S21116C10D0Ev),
};
static  VTT_ENTRY vtt_S21116C3[] = {
  {&(_ZTV8S21116C3[7]),  7,43},
  {&(_tg__ZTV8S21116C9__8S21116C3[5]),  5,7},
  {&(_tg__ZTV8S21116C68S21116C9__A1__8S21116C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C68S21116C9__A1__8S21116C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S21116C9__8S21116C3[3]),  3,5},
  {&(_tg__ZTV9S21116C10__8S21116C9__8S21116C3[5]),  5,7},
  {&(_ZTV8S21116C3[22]),  22,43},
  {&(_ZTV8S21116C3[29]),  29,43},
  {&(_ZTV8S21116C3[34]),  34,43},
  {&(_ZTV8S21116C3[14]),  14,43},
  {&(_ZTV8S21116C3[41]),  41,43},
  {&(_tg__ZTV8S21116C4__8S21116C3[5]),  5,7},
  {&(_tg__ZTV8S21116C6__8S21116C4__8S21116C3[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21116C4__8S21116C3[3]),  3,5},
  {&(_tg__ZTV8S21116C6__8S21116C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C6__8S21116C3[3]),  3,5},
  {&(_tg__ZTV9S21116C10__8S21116C3[4]),  4,6},
  {&(_tg__ZTV8S21116C69S21116C10__A2__8S21116C3[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C69S21116C10__A2__8S21116C3[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S21116C10__8S21116C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21116C3[];
extern  VTBL_ENTRY _ZTV8S21116C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C3[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C4D0Ev,_ZThn136_N8S21116C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C4D1Ev,_ZThn136_N8S21116C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21116C4D0Ev,_ZThn116_N8S21116C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21116C4D1Ev,_ZThn116_N8S21116C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21116C9D0Ev,_ZThn424_N8S21116C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21116C9D1Ev,_ZThn424_N8S21116C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C9D0Ev,_ZThn392_N8S21116C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C9D1Ev,_ZThn392_N8S21116C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21116C6D0Ev,_ZThn20_N8S21116C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C6D0Ev,_ZThn392_N8S21116C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21116C6D1Ev,_ZThn20_N8S21116C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C6D1Ev,_ZThn392_N8S21116C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C3D0Ev,_ZTv0_n12_N8S21116C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21116C3D0Ev,_ZThn424_N8S21116C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C3D1Ev,_ZTv0_n12_N8S21116C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21116C3D1Ev,_ZThn424_N8S21116C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21116C3D0Ev,_ZThn456_N8S21116C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21116C3D0Ev,_ZThn404_N8S21116C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21116C3D1Ev,_ZThn456_N8S21116C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21116C3D1Ev,_ZThn404_N8S21116C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C3D0Ev,_ZTv0_n24_N8S21116C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21116C3D0Ev,_ZThn288_N8S21116C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C3D1Ev,_ZTv0_n24_N8S21116C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21116C3D1Ev,_ZThn288_N8S21116C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21116C3 = {  "S21116C3", // class name
  bases_S21116C3, 9,
  &(vtc_S21116C3[0]), // expected_vtbl_contents
  &(vtt_S21116C3[0]), // expected_vtt_contents
  ABISELECT(1248,736), // object size
  NSPAIRA(_ZTI8S21116C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21116C3),43, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21116C3),20, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21116C12  : virtual S21116C11 {
  int s21116c12f0;
  void *s21116c12f1;
  int s21116c12f2:2;
  long double s21116c12f3;
  void *s21116c12f4;
  virtual  ~S21116C12(); // _ZN9S21116C12D2Ev
  virtual void  v4(); // _ZN9S21116C122v4Ev
  S21116C12(); // tgen
};
//SIG(-1 S21116C12) C1{ VBC2{ VBC3{ m Fp Fs Fi Fp Fl[2]} BC4{ vd m FC3 FC5{}} BC6{ VBC3 VBC4 Fc:1 Fp[3]} vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd v1 Fi Fp Fi:2 FD Fp}


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

static void Test_S21116C12()
{
  extern Class_Descriptor cd_S21116C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,54)];
    init_test(&cd_S21116C12, buf);
    S21116C12 *dp, &lv = *(dp=new (buf) S21116C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,212), "sizeof(S21116C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21116C12)");
    check_base_class_offset(lv, (S3572C5*)(S21116C11*), ABISELECT(288,156), "S21116C12");
    check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C11*), ABISELECT(288,156), "S21116C12");
    /*is_ambiguous_... S21116C11::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C11*), ABISELECT(64,32), "S21116C12");
    check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C11*), ABISELECT(328,180), "S21116C12");
    check_base_class_offset(lv, (S21116C6*)(S21116C11*), ABISELECT(120,64), "S21116C12");
    check_base_class_offset(lv, (S21116C11*), ABISELECT(64,32), "S21116C12");
    check_field_offset(lv, s21116c12f0, ABISELECT(8,4), "S21116C12.s21116c12f0");
    check_field_offset(lv, s21116c12f1, ABISELECT(16,8), "S21116C12.s21116c12f1");
    set_bf_and_test(lv, s21116c12f2, ABISELECT(24,12), 0, 2, 1, "S21116C12");
    set_bf_and_test(lv, s21116c12f2, ABISELECT(24,12), 0, 2, hide_sll(1LL<<1), "S21116C12");
    check_field_offset(lv, s21116c12f3, ABISELECT(32,16), "S21116C12.s21116c12f3");
    check_field_offset(lv, s21116c12f4, ABISELECT(48,28), "S21116C12.s21116c12f4");
    test_class_info(&lv, &cd_S21116C12);
    dp->~S21116C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21116C12(Test_S21116C12, "S21116C12", ABISELECT(384,212));

#else // __cplusplus

extern void _ZN9S21116C12C1Ev();
extern void _ZN9S21116C12D2Ev();
Name_Map name_map_S21116C12[] = {
  NSPAIR(_ZN9S21116C12C1Ev),
  NSPAIR(_ZN9S21116C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C11;
extern VTBL_ENTRY _ZTI9S21116C11[];
extern  VTBL_ENTRY _ZTV9S21116C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C11[];
static Base_Class bases_S21116C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(288,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_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(328,180), //bcp->offset
    23, //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_S21116C6,    ABISELECT(120,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21116C11,    ABISELECT(64,32), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21116C12[];
extern void _ZN9S21116C12D1Ev();
extern void _ZN9S21116C12D0Ev();
extern void _ZN9S21116C122v4Ev();
extern void ABISELECT(_ZTv0_n40_N9S21116C12D1Ev,_ZTv0_n20_N9S21116C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S21116C12D1Ev,_ZThn32_N9S21116C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21116C12D0Ev,_ZTv0_n20_N9S21116C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S21116C12D0Ev,_ZThn32_N9S21116C12D0Ev)() __attribute__((weak));
extern void _ZN9S21116C112v3Ev();
extern void ABISELECT(_ZTvn56_n40_N9S21116C12D1Ev,_ZTvn32_n20_N9S21116C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S21116C12D0Ev,_ZTvn32_n20_N9S21116C12D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21116C12D1Ev,_ZTv0_n12_N9S21116C12D1Ev)();
extern void ABISELECT(_ZThn328_N9S21116C12D1Ev,_ZThn180_N9S21116C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21116C12D0Ev,_ZTv0_n12_N9S21116C12D0Ev)();
extern void ABISELECT(_ZThn328_N9S21116C12D0Ev,_ZThn180_N9S21116C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21116C12[] = {
  ABISELECT(328,180),
  ABISELECT(288,156),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&_ZN9S21116C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21116C122v4Ev,
  0,
  ABISELECT(-64,-32),
  ABISELECT(264,148),
  ABISELECT(224,124),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21116C12D1Ev,_ZTv0_n20_N9S21116C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21116C12D0Ev,_ZTv0_n20_N9S21116C12D0Ev),
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21116C12D1Ev,_ZTvn32_n20_N9S21116C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21116C12D0Ev,_ZTvn32_n20_N9S21116C12D0Ev),
  ABISELECT(-328,-180),
  ABISELECT(-328,-180),
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C12D1Ev,_ZTv0_n12_N9S21116C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C12D0Ev,_ZTv0_n12_N9S21116C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S21116C12[];
extern void _ZN9S21116C11D1Ev();
extern void _ZN9S21116C11D0Ev();
extern void _ZN9S21116C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C11__9S21116C12[] = {
  ABISELECT(264,148),
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&_ZN9S21116C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C11__9S21116C12[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn208_N8S21116C6D1Ev,_ZThn116_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn208_N8S21116C6D0Ev,_ZThn116_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C69S21116C11__9S21116C12[] = {
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C6__9S21116C11__9S21116C12[] = {
  ABISELECT(208,116),
  ABISELECT(168,92),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev)();
extern void ABISELECT(_ZThn264_N9S21116C11D1Ev,_ZThn148_N9S21116C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev)();
extern void ABISELECT(_ZThn264_N9S21116C11D0Ev,_ZThn148_N9S21116C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21116C11__9S21116C12[] = {
  ABISELECT(-264,-148),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev),
};
static  VTT_ENTRY vtt_S21116C12[] = {
  {&(_ZTV9S21116C12[5]),  5,28},
  {&(_ZTV9S21116C12[14]),  14,28},
  {&(_ZTV9S21116C12[21]),  21,28},
  {&(_ZTV9S21116C12[26]),  26,28},
  {&(_tg__ZTV9S21116C11__9S21116C12[4]),  4,7},
  {&(_tg__ZTV8S21116C69S21116C11__9S21116C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C69S21116C11__9S21116C12[3]),  3,5},
  {&(_tg__ZTV8S21116C6__9S21116C11__9S21116C12[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21116C11__9S21116C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21116C12[];
extern  VTBL_ENTRY _ZTV9S21116C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C12[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21116C11D0Ev,_ZThn148_N9S21116C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21116C11D1Ev,_ZThn148_N9S21116C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C6D0Ev,_ZThn116_N8S21116C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C6D1Ev,_ZThn116_N8S21116C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C12D0Ev,_ZTv0_n12_N9S21116C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S21116C12D0Ev,_ZThn180_N9S21116C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C12D1Ev,_ZTv0_n12_N9S21116C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S21116C12D1Ev,_ZThn180_N9S21116C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21116C12D0Ev,_ZTv0_n20_N9S21116C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21116C12D0Ev,_ZThn32_N9S21116C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21116C12D1Ev,_ZTv0_n20_N9S21116C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21116C12D1Ev,_ZThn32_N9S21116C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21116C12 = {  "S21116C12", // class name
  bases_S21116C12, 5,
  &(vtc_S21116C12[0]), // expected_vtbl_contents
  &(vtt_S21116C12[0]), // expected_vtt_contents
  ABISELECT(384,212), // object size
  NSPAIRA(_ZTI9S21116C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21116C12),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21116C12),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21116C2  : virtual S21116C3 , S21116C12 , S21116C11 {
  int s21116c2f0;
  __tsi64 s21116c2f1;
  int s21116c2f2:6;
  ::S20681C13 s21116c2f3;
  long s21116c2f4;
  int s21116c2f5;
  void *s21116c2f6;
  ::S3572C2 s21116c2f7;
  virtual  ~S21116C2(); // _ZN8S21116C2D2Ev
  virtual void  v5(); // _ZN8S21116C22v5Ev
  S21116C2(); // tgen
};
//SIG(-1 S21116C2) C1{ VBC2{ VBC3{ VBC4{ m Fp Fs Fi Fp Fl[2]} VBC5{ VBC4 VBC6{ vd m FC4 FC7{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} BC6 BC8{ VBC6 BC5 VBC9{ VBC4 VBC6 BC5 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC10{ VBC4 BC6 BC5 vd v2 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC11{ VBC10 vd v3 Fi Fp Fi:2 FD Fp} BC10 vd v1 Fi FL Fi:6 FC12{ BC13{ VBC4 VBC6 Fc:1 Fp[3]} VBC14{ VBC4 BC6 BC13 vd v4 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC15{ BC16{ VBC6 BC17{ VBC4 VBC6 Fc:1 Fp[3]} VBC18{ VBC4 VBC6 BC17 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC4[9] Fi} vd FC19{ VBC4 BC6 BC17 vd v5 Fc Fp[7] FD Fp[4] Fi Fc Fp}} VBC20{ VBC4 VBC17 vd Fs Fi[2] Fc FL Fi FC7 Fp Fc Fs FC6 Fi[2] FL} VBC19 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}}


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

static void Test_S21116C2()
{
  extern Class_Descriptor cd_S21116C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(230,534)];
    init_test(&cd_S21116C2, buf);
    S21116C2 *dp, &lv = *(dp=new (buf) S21116C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3664,2132), "sizeof(S21116C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21116C2)");
    check_base_class_offset(lv, (S3572C5*)(S21116C4*), ABISELECT(2840,1652), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C6*), ABISELECT(2840,1652), "S21116C2");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C9*)(S21116C3*), ABISELECT(2840,1652), "S21116C2");
    check_base_class_offset(lv, (S3572C5*)(S21116C10*), ABISELECT(2840,1652), "S21116C2");
    check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C10*), ABISELECT(2840,1652), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C11*), ABISELECT(2840,1652), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C11*), ABISELECT(2840,1652), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C11*), ABISELECT(2840,1652), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C11*), ABISELECT(2840,1652), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C6*), ABISELECT(2920,1696), "S21116C2");
    check_base_class_offset(lv, (S3572C4*)(S21116C9*)(S21116C3*), ABISELECT(2920,1696), "S21116C2");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C9*)(S21116C3*), ABISELECT(2920,1696), "S21116C2");
    check_base_class_offset(lv, (S3572C4*)(S21116C10*), ABISELECT(2920,1696), "S21116C2");
    check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C10*), ABISELECT(2920,1696), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C11*), ABISELECT(2920,1696), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C11*), ABISELECT(2920,1696), "S21116C2");
    check_base_class_offset(lv, (S21116C6*)(S21116C4*), ABISELECT(2880,1676), "S21116C2");
    check_base_class_offset(lv, (S21116C4*)(S21116C3*), ABISELECT(2712,1560), "S21116C2");
    /*is_ambiguous_... S21116C3::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C3*), ABISELECT(2192,1272), "S21116C2");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S21116C6*)(S21116C9*)(S21116C3*), ABISELECT(2256,1304), "S21116C2");
    check_base_class_offset(lv, (S21116C6*)(S21116C10*), ABISELECT(2976,1728), "S21116C2");
    check_base_class_offset(lv, (S21116C10*)(S21116C9*)(S21116C3*), ABISELECT(2976,1728), "S21116C2");
    check_base_class_offset(lv, (S21116C9*)(S21116C3*), ABISELECT(2256,1304), "S21116C2");
    check_base_class_offset(lv, (S21116C3*), ABISELECT(2192,1272), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C11*), ABISELECT(3440,2008), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S21116C6*)(S21116C11*), ABISELECT(3496,2040), "S21116C2");
    check_base_class_offset(lv, (S21116C11*)(S21116C12*), ABISELECT(3440,2008), "S21116C2");
    check_base_class_offset(lv, (S21116C12*), 0, "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C11*), ABISELECT(64,32), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S21116C6*)(S21116C11*), ABISELECT(120,64), "S21116C2");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S21116C11*), ABISELECT(64,32), "S21116C2");
    check_field_offset(lv, s21116c2f0, ABISELECT(288,156), "S21116C2.s21116c2f0");
    check_field_offset(lv, s21116c2f1, ABISELECT(296,160), "S21116C2.s21116c2f1");
    set_bf_and_test(lv, s21116c2f2, ABISELECT(304,168), 0, 6, 1, "S21116C2");
    set_bf_and_test(lv, s21116c2f2, ABISELECT(304,168), 0, 6, hide_sll(1LL<<5), "S21116C2");
    check_field_offset(lv, s21116c2f3, ABISELECT(320,172), "S21116C2.s21116c2f3");
    check_field_offset(lv, s21116c2f4, ABISELECT(704,380), "S21116C2.s21116c2f4");
    check_field_offset(lv, s21116c2f5, ABISELECT(712,384), "S21116C2.s21116c2f5");
    check_field_offset(lv, s21116c2f6, ABISELECT(720,388), "S21116C2.s21116c2f6");
    check_field_offset(lv, s21116c2f7, ABISELECT(736,392), "S21116C2.s21116c2f7");
    test_class_info(&lv, &cd_S21116C2);
    dp->~S21116C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21116C2(Test_S21116C2, "S21116C2", ABISELECT(3664,2132));

#else // __cplusplus

extern void _ZN8S21116C2C1Ev();
extern void _ZN8S21116C2D2Ev();
Name_Map name_map_S21116C2[] = {
  NSPAIR(_ZN8S21116C2C1Ev),
  NSPAIR(_ZN8S21116C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C4;
extern VTBL_ENTRY _ZTI8S21116C4[];
extern  VTBL_ENTRY _ZTV8S21116C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C10;
extern VTBL_ENTRY _ZTI9S21116C10[];
extern  VTBL_ENTRY _ZTV9S21116C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C10[];
extern Class_Descriptor cd_S21116C9;
extern VTBL_ENTRY _ZTI8S21116C9[];
extern  VTBL_ENTRY _ZTV8S21116C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C9[];
extern Class_Descriptor cd_S21116C3;
extern VTBL_ENTRY _ZTI8S21116C3[];
extern  VTBL_ENTRY _ZTV8S21116C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C3[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C11;
extern VTBL_ENTRY _ZTI9S21116C11[];
extern  VTBL_ENTRY _ZTV9S21116C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C11[];
extern Class_Descriptor cd_S21116C12;
extern VTBL_ENTRY _ZTI9S21116C12[];
extern  VTBL_ENTRY _ZTV9S21116C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C12[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C11;
extern VTBL_ENTRY _ZTI9S21116C11[];
extern  VTBL_ENTRY _ZTV9S21116C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C11[];
static Base_Class bases_S21116C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(2840,1652), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2920,1696), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21116C6,    ABISELECT(2880,1676), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21116C4,    ABISELECT(2712,1560), //bcp->offset
    43, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2192,1272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21116C6,    ABISELECT(2256,1304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21116C6,    ABISELECT(2976,1728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21116C10,    ABISELECT(2976,1728), //bcp->offset
    63, //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
    8, //immediately_derived
  0, 1},
  {&cd_S21116C9,    ABISELECT(2256,1304), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21116C3,    ABISELECT(2192,1272), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(3440,2008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21116C6,    ABISELECT(3496,2040), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21116C11,    ABISELECT(3440,2008), //bcp->offset
    70, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21116C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3572C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21116C6,    ABISELECT(120,64), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21116C11,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21116C2[];
extern void _ZN8S21116C2D1Ev();
extern void _ZN8S21116C2D0Ev();
extern void _ZN9S21116C122v4Ev();
extern void _ZN8S21116C22v5Ev();
extern void ABISELECT(_ZThn64_N8S21116C2D1Ev,_ZThn32_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21116C2D0Ev,_ZThn32_N8S21116C2D0Ev)();
extern void _ZN9S21116C112v3Ev();
extern void ABISELECT(_ZThn120_N8S21116C2D1Ev,_ZThn64_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21116C2D0Ev,_ZThn64_N8S21116C2D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S21116C2D1Ev,_ZTv0_n32_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn2192_N8S21116C2D1Ev,_ZThn1272_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21116C2D0Ev,_ZTv0_n32_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn2192_N8S21116C2D0Ev,_ZThn1272_N8S21116C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S21116C2D1Ev,_ZTvn32_n32_N8S21116C2D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S21116C2D0Ev,_ZTvn32_n32_N8S21116C2D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21116C2D1Ev,_ZTv0_n24_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn2712_N8S21116C2D1Ev,_ZThn1560_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21116C2D0Ev,_ZTv0_n24_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn2712_N8S21116C2D0Ev,_ZThn1560_N8S21116C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn2880_N8S21116C2D1Ev,_ZThn1676_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn2880_N8S21116C2D0Ev,_ZThn1676_N8S21116C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C2D1Ev,_ZTv0_n12_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn2920_N8S21116C2D1Ev,_ZThn1696_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C2D0Ev,_ZTv0_n12_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn2920_N8S21116C2D0Ev,_ZThn1696_N8S21116C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn2976_N8S21116C2D1Ev,_ZThn1728_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn2976_N8S21116C2D0Ev,_ZThn1728_N8S21116C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn3440_N8S21116C2D1Ev,_ZThn2008_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn3440_N8S21116C2D0Ev,_ZThn2008_N8S21116C2D0Ev)() __attribute__((weak));
extern void _ZN9S21116C112v3Ev();
extern void ABISELECT(_ZTvn56_n40_N8S21116C2D1Ev,_ZTvn32_n20_N8S21116C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S21116C2D0Ev,_ZTvn32_n20_N8S21116C2D0Ev)();
static  VTBL_ENTRY vtc_S21116C2[] = {
  ABISELECT(2976,1728),
  ABISELECT(2880,1676),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(2920,1696),
  ABISELECT(2840,1652),
  ABISELECT(3440,2008),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&_ZN8S21116C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C2D0Ev,
  (VTBL_ENTRY)&_ZN9S21116C122v4Ev,
  (VTBL_ENTRY)&_ZN8S21116C22v5Ev,
  ABISELECT(2856,1664),
  ABISELECT(2776,1620),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21116C2D1Ev,_ZThn32_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21116C2D0Ev,_ZThn32_N8S21116C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S21116C2D1Ev,_ZThn64_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S21116C2D0Ev,_ZThn64_N8S21116C2D0Ev),
  ABISELECT(-2192,-1272),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21116C2D1Ev,_ZTv0_n32_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21116C2D0Ev,_ZTv0_n32_N8S21116C2D0Ev),
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-2256,-1304),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21116C2D1Ev,_ZTvn32_n32_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21116C2D0Ev,_ZTvn32_n32_N8S21116C2D0Ev),
  ABISELECT(-2712,-1560),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-2712,-1560),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C2D1Ev,_ZTv0_n24_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C2D0Ev,_ZTv0_n24_N8S21116C2D0Ev),
  ABISELECT(-2880,-1676),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-2880,-1676),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev),
  ABISELECT(-2920,-1696),
  ABISELECT(-2920,-1696),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C2D1Ev,_ZTv0_n12_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C2D0Ev,_ZTv0_n12_N8S21116C2D0Ev),
  ABISELECT(-2976,-1728),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-2976,-1728),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev),
  0,
  ABISELECT(-3440,-2008),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2008),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2040),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21116C2D1Ev,_ZTvn32_n20_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21116C2D0Ev,_ZTvn32_n20_N8S21116C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21116C2[];
extern void _ZN9S21116C12D1Ev();
extern void _ZN9S21116C12D0Ev();
extern void _ZN9S21116C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C12__8S21116C2[] = {
  ABISELECT(2920,1696),
  ABISELECT(2840,1652),
  ABISELECT(3440,2008),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&_ZN9S21116C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21116C122v4Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S21116C12D1Ev,_ZTv0_n20_N9S21116C12D1Ev)();
extern void ABISELECT(_ZThn3440_N9S21116C12D1Ev,_ZThn2008_N9S21116C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21116C12D0Ev,_ZTv0_n20_N9S21116C12D0Ev)();
extern void ABISELECT(_ZThn3440_N9S21116C12D0Ev,_ZThn2008_N9S21116C12D0Ev)() __attribute__((weak));
extern void _ZN9S21116C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C11__9S21116C12__8S21116C2[] = {
  0,
  ABISELECT(-3440,-2008),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2008),
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21116C12D1Ev,_ZTv0_n20_N9S21116C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21116C12D0Ev,_ZTv0_n20_N9S21116C12D0Ev),
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S21116C12D1Ev,_ZTvn32_n20_N9S21116C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S21116C12D0Ev,_ZTvn32_n20_N9S21116C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C11__9S21116C12__8S21116C2[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2040),
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21116C12D1Ev,_ZTvn32_n20_N9S21116C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21116C12D0Ev,_ZTvn32_n20_N9S21116C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21116C12D1Ev,_ZTv0_n12_N9S21116C12D1Ev)();
extern void ABISELECT(_ZThn2920_N9S21116C12D1Ev,_ZThn1696_N9S21116C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21116C12D0Ev,_ZTv0_n12_N9S21116C12D0Ev)();
extern void ABISELECT(_ZThn2920_N9S21116C12D0Ev,_ZThn1696_N9S21116C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21116C12__8S21116C2[] = {
  ABISELECT(-2920,-1696),
  ABISELECT(-2920,-1696),
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C12D1Ev,_ZTv0_n12_N9S21116C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C12D0Ev,_ZTv0_n12_N9S21116C12D0Ev),
};
extern void _ZN9S21116C11D1Ev();
extern void _ZN9S21116C11D0Ev();
extern void _ZN9S21116C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C11__A__8S21116C2[] = {
  ABISELECT(2856,1664),
  ABISELECT(2776,1620),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&_ZN9S21116C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C11__A4__8S21116C2[] = {
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn2800_N8S21116C6D1Ev,_ZThn1632_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn2800_N8S21116C6D0Ev,_ZThn1632_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C69S21116C11__A4__8S21116C2[] = {
  ABISELECT(-2800,-1632),
  ABISELECT(-2800,-1632),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C6__9S21116C11__A__8S21116C2[] = {
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev)();
extern void ABISELECT(_ZThn2856_N9S21116C11D1Ev,_ZThn1664_N9S21116C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev)();
extern void ABISELECT(_ZThn2856_N9S21116C11D0Ev,_ZThn1664_N9S21116C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21116C11__A__8S21116C2[] = {
  ABISELECT(-2856,-1664),
  ABISELECT(-2856,-1664),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev),
};
extern void _ZN8S21116C3D1Ev();
extern void _ZN8S21116C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C3__8S21116C2[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&_ZN8S21116C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C3D0Ev,
};
extern void _ZN8S21116C9D1Ev();
extern void _ZN8S21116C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C98S21116C3__8S21116C2[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&_ZN8S21116C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C9D0Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C68S21116C98S21116C3__A1__8S21116C2[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn664_N8S21116C6D1Ev,_ZThn392_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn664_N8S21116C6D0Ev,_ZThn392_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C68S21116C98S21116C3__A1__8S21116C2[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev)();
extern void ABISELECT(_ZThn664_N8S21116C9D1Ev,_ZThn392_N8S21116C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev)();
extern void ABISELECT(_ZThn664_N8S21116C9D0Ev,_ZThn392_N8S21116C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C98S21116C3__8S21116C2[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev)();
extern void ABISELECT(_ZThn720_N8S21116C9D1Ev,_ZThn424_N8S21116C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev)();
extern void ABISELECT(_ZThn720_N8S21116C9D0Ev,_ZThn424_N8S21116C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21116C10__8S21116C98S21116C3__8S21116C2[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21116C3D1Ev,_ZTv0_n24_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn520_N8S21116C3D1Ev,_ZThn288_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21116C3D0Ev,_ZTv0_n24_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn520_N8S21116C3D0Ev,_ZThn288_N8S21116C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21116C4__8S21116C3__8S21116C2[] = {
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C3D1Ev,_ZTv0_n24_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C3D0Ev,_ZTv0_n24_N8S21116C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn688_N8S21116C3D1Ev,_ZThn404_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn688_N8S21116C3D0Ev,_ZThn404_N8S21116C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21116C6__8S21116C3__8S21116C2[] = {
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21116C3D1Ev,_ZTv0_n12_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn728_N8S21116C3D1Ev,_ZThn424_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C3D0Ev,_ZTv0_n12_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn728_N8S21116C3D0Ev,_ZThn424_N8S21116C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C3__8S21116C2[] = {
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C3D1Ev,_ZTv0_n12_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C3D0Ev,_ZTv0_n12_N8S21116C3D0Ev),
};
extern void ABISELECT(_ZThn64_N8S21116C3D1Ev,_ZThn32_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21116C3D0Ev,_ZThn32_N8S21116C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C9__8S21116C3__8S21116C2[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21116C3D1Ev,_ZThn32_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21116C3D0Ev,_ZThn32_N8S21116C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn784_N8S21116C3D1Ev,_ZThn456_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn784_N8S21116C3D0Ev,_ZThn456_N8S21116C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21116C10__8S21116C3__8S21116C2[] = {
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev),
};
extern void _ZN8S21116C4D1Ev();
extern void _ZN8S21116C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C4__8S21116C2[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&_ZN8S21116C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C4D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S21116C4D1Ev,_ZThn116_N8S21116C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev)();
extern void ABISELECT(_ZThn168_N8S21116C4D0Ev,_ZThn116_N8S21116C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21116C6__8S21116C4__8S21116C2[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S21116C4D1Ev,_ZThn136_N8S21116C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S21116C4D0Ev,_ZThn136_N8S21116C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C4__8S21116C2[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev),
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C6__8S21116C2[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21116C6D1Ev,_ZThn20_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21116C6D0Ev,_ZThn20_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C6__8S21116C2[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void _ZN9S21116C10D1Ev();
extern void _ZN9S21116C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C10__8S21116C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C10[0]),
  (VTBL_ENTRY)&_ZN9S21116C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C10D0Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C10__A2__8S21116C2[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C69S21116C10__A2__8S21116C2[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21116C10D1Ev,_ZTv0_n12_N9S21116C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21116C10D0Ev,_ZTv0_n12_N9S21116C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S21116C10__8S21116C2[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21116C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C10D1Ev,_ZTv0_n12_N9S21116C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C10D0Ev,_ZTv0_n12_N9S21116C10D0Ev),
};
extern void _ZN9S21116C11D1Ev();
extern void _ZN9S21116C11D0Ev();
extern void _ZN9S21116C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C11__8S21116C2[] = {
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&_ZN9S21116C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C11__A3__8S21116C2[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C69S21116C11__A3__8S21116C2[] = {
  ABISELECT(576,344),
  ABISELECT(576,344),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C6__9S21116C11__8S21116C2[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21116C11__8S21116C2[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev),
};
static  VTT_ENTRY vtt_S21116C2[] = {
  {&(_ZTV8S21116C2[9]),  9,85},
  {&(_tg__ZTV9S21116C12__8S21116C2[5]),  5,8},
  {&(_tg__ZTV9S21116C11__9S21116C12__8S21116C2[6]),  6,9},
  {&(_tg__ZTV8S21116C69S21116C11__9S21116C12__8S21116C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21116C12__8S21116C2[3]),  3,5},
  {&(_tg__ZTV9S21116C11__A__8S21116C2[4]),  4,7},
  {&(_tg__ZTV8S21116C69S21116C11__A4__8S21116C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C69S21116C11__A4__8S21116C2[3]),  3,5},
  {&(_tg__ZTV8S21116C6__9S21116C11__A__8S21116C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21116C11__A__8S21116C2[3]),  3,5},
  {&(_ZTV8S21116C2[34]),  34,85},
  {&(_ZTV8S21116C2[49]),  49,85},
  {&(_ZTV8S21116C2[56]),  56,85},
  {&(_ZTV8S21116C2[61]),  61,85},
  {&(_ZTV8S21116C2[41]),  41,85},
  {&(_ZTV8S21116C2[68]),  68,85},
  {&(_ZTV8S21116C2[76]),  76,85},
  {&(_ZTV8S21116C2[83]),  83,85},
  {&(_ZTV8S21116C2[17]),  17,85},
  {&(_ZTV8S21116C2[24]),  24,85},
  {&(_tg__ZTV8S21116C3__8S21116C2[7]),  7,9},
  {&(_tg__ZTV8S21116C98S21116C3__8S21116C2[5]),  5,7},
  {&(_tg__ZTV8S21116C68S21116C98S21116C3__A1__8S21116C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C68S21116C98S21116C3__A1__8S21116C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S21116C98S21116C3__8S21116C2[3]),  3,5},
  {&(_tg__ZTV9S21116C10__8S21116C98S21116C3__8S21116C2[5]),  5,7},
  {&(_tg__ZTV8S21116C4__8S21116C3__8S21116C2[6]),  6,8},
  {&(_tg__ZTV8S21116C6__8S21116C3__8S21116C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21116C3__8S21116C2[3]),  3,5},
  {&(_tg__ZTV8S21116C9__8S21116C3__8S21116C2[5]),  5,7},
  {&(_tg__ZTV9S21116C10__8S21116C3__8S21116C2[5]),  5,7},
  {&(_tg__ZTV8S21116C4__8S21116C2[5]),  5,7},
  {&(_tg__ZTV8S21116C6__8S21116C4__8S21116C2[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21116C4__8S21116C2[3]),  3,5},
  {&(_tg__ZTV8S21116C6__8S21116C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C6__8S21116C2[3]),  3,5},
  {&(_tg__ZTV9S21116C10__8S21116C2[4]),  4,6},
  {&(_tg__ZTV8S21116C69S21116C10__A2__8S21116C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C69S21116C10__A2__8S21116C2[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S21116C10__8S21116C2[3]),  3,5},
  {&(_tg__ZTV9S21116C11__8S21116C2[4]),  4,7},
  {&(_tg__ZTV8S21116C69S21116C11__A3__8S21116C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C69S21116C11__A3__8S21116C2[3]),  3,5},
  {&(_tg__ZTV8S21116C6__9S21116C11__8S21116C2[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21116C11__8S21116C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21116C2[];
extern  VTBL_ENTRY _ZTV8S21116C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C2[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C4D0Ev,_ZThn136_N8S21116C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C4D1Ev,_ZThn136_N8S21116C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21116C4D0Ev,_ZThn116_N8S21116C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21116C4D1Ev,_ZThn116_N8S21116C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C3D0Ev,_ZTv0_n12_N8S21116C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21116C3D0Ev,_ZThn424_N8S21116C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C3D1Ev,_ZTv0_n12_N8S21116C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21116C3D1Ev,_ZThn424_N8S21116C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21116C3D0Ev,_ZThn456_N8S21116C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21116C3D0Ev,_ZThn404_N8S21116C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21116C3D1Ev,_ZThn456_N8S21116C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21116C3D1Ev,_ZThn404_N8S21116C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C3D0Ev,_ZTv0_n24_N8S21116C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21116C3D0Ev,_ZThn288_N8S21116C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C3D1Ev,_ZTv0_n24_N8S21116C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21116C3D1Ev,_ZThn288_N8S21116C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21116C9D0Ev,_ZThn424_N8S21116C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21116C9D1Ev,_ZThn424_N8S21116C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C9D0Ev,_ZThn392_N8S21116C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C9D1Ev,_ZThn392_N8S21116C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S21116C11D0Ev,_ZThn1664_N9S21116C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S21116C11D1Ev,_ZThn1664_N9S21116C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21116C6D0Ev,_ZThn20_N8S21116C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C6D0Ev,_ZThn392_N8S21116C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S21116C6D0Ev,_ZThn1632_N8S21116C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21116C6D1Ev,_ZThn20_N8S21116C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C6D1Ev,_ZThn392_N8S21116C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S21116C6D1Ev,_ZThn1632_N8S21116C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C12D0Ev,_ZTv0_n12_N9S21116C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S21116C12D0Ev,_ZThn1696_N9S21116C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C12D1Ev,_ZTv0_n12_N9S21116C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S21116C12D1Ev,_ZThn1696_N9S21116C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21116C12D0Ev,_ZTv0_n20_N9S21116C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S21116C12D0Ev,_ZThn2008_N9S21116C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21116C12D1Ev,_ZTv0_n20_N9S21116C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S21116C12D1Ev,_ZThn2008_N9S21116C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C2D0Ev,_ZTv0_n12_N8S21116C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S21116C2D0Ev,_ZThn1696_N8S21116C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C2D1Ev,_ZTv0_n12_N8S21116C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S21116C2D1Ev,_ZThn1696_N8S21116C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S21116C2D0Ev,_ZThn2008_N8S21116C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S21116C2D0Ev,_ZThn1728_N8S21116C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S21116C2D0Ev,_ZThn1676_N8S21116C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S21116C2D1Ev,_ZThn2008_N8S21116C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S21116C2D1Ev,_ZThn1728_N8S21116C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S21116C2D1Ev,_ZThn1676_N8S21116C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C2D0Ev,_ZTv0_n24_N8S21116C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S21116C2D0Ev,_ZThn1560_N8S21116C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C2D1Ev,_ZTv0_n24_N8S21116C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S21116C2D1Ev,_ZThn1560_N8S21116C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21116C2D0Ev,_ZTv0_n32_N8S21116C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S21116C2D0Ev,_ZThn1272_N8S21116C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21116C2D1Ev,_ZTv0_n32_N8S21116C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S21116C2D1Ev,_ZThn1272_N8S21116C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21116C2 = {  "S21116C2", // class name
  bases_S21116C2, 17,
  &(vtc_S21116C2[0]), // expected_vtbl_contents
  &(vtt_S21116C2[0]), // expected_vtt_contents
  ABISELECT(3664,2132), // object size
  NSPAIRA(_ZTI8S21116C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21116C2),85, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21116C2),45, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21116C1  : virtual S21116C2 {
  long double s21116c1f0;
  int s21116c1f1[3];
  __tsi64 s21116c1f2;
  char s21116c1f3;
  int s21116c1f4:32;
  int s21116c1f5[3];
  virtual  ~S21116C1(); // _ZN8S21116C1D2Ev
  virtual void  v1(); // _ZN8S21116C12v1Ev
  virtual void  v2(); // _ZN8S21116C12v2Ev
  S21116C1(); // tgen
};
//SIG(1 S21116C1) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m Fp Fs Fi Fp Fl[2]} VBC6{ VBC5 VBC7{ vd m FC5 FC8{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} BC7 BC9{ VBC7 BC6 VBC10{ VBC5 VBC7 BC6 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd FC11{ VBC5 BC7 BC6 vd v3 Fc Fp[7] FD Fp[4] Fi Fc Fp}} vd Fi[6] Fp[8]} BC12{ VBC11 vd v4 Fi Fp Fi:2 FD Fp} BC11 vd v5 Fi FL Fi:6 FC13{ BC14{ VBC5 VBC7 Fc:1 Fp[3]} VBC15{ VBC5 BC7 BC14 vd v6 Fc Fp[7] FD Fp[4] Fi Fc Fp} vd Fi Fp} Fl Fi Fp FC16{ BC17{ VBC7 BC18{ VBC5 VBC7 Fc:1 Fp[3]} VBC19{ VBC5 VBC7 BC18 vd Fc Fi[3] Fp Fs:16 Fi Fp[2] Fi FC5[9] Fi} vd FC20{ VBC5 BC7 BC18 vd v7 Fc Fp[7] FD Fp[4] Fi Fc Fp}} VBC21{ VBC5 VBC18 vd Fs Fi[2] Fc FL Fi FC8 Fp Fc Fs FC7 Fi[2] FL} VBC20 vd Fi FL[3] Fi[9] Fp Fi FL Fi[2] FL Fi Fp[2]}} vd v1 v2 FD Fi[3] FL Fc Fi:32 Fi[3]}


 S21116C1 ::~S21116C1(){ note_dtor("S21116C1", this);}
void  S21116C1 ::v1(){vfunc_called(this, "_ZN8S21116C12v1Ev");}
void  S21116C1 ::v2(){vfunc_called(this, "_ZN8S21116C12v2Ev");}
S21116C1 ::S21116C1(){ note_ctor("S21116C1", this);} // tgen

static void Test_S21116C1()
{
  extern Class_Descriptor cd_S21116C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(235,548)];
    init_test(&cd_S21116C1, buf);
    S21116C1 *dp, &lv = *(dp=new (buf) S21116C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3744,2188), "sizeof(S21116C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21116C1)");
    check_base_class_offset(lv, (S3572C5*)(S21116C4*), ABISELECT(2920,1708), "S21116C1");
    /*is_ambiguous_... S21116C1::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C6*), ABISELECT(2920,1708), "S21116C1");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C9*)(S21116C3*), ABISELECT(2920,1708), "S21116C1");
    check_base_class_offset(lv, (S3572C5*)(S21116C10*), ABISELECT(2920,1708), "S21116C1");
    check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C10*), ABISELECT(2920,1708), "S21116C1");
    /*is_ambiguous_... S21116C1::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C11*), ABISELECT(2920,1708), "S21116C1");
    /*is_ambiguous_... S21116C1::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C11*), ABISELECT(2920,1708), "S21116C1");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C11*)(S21116C2*), ABISELECT(2920,1708), "S21116C1");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C5*)(S21116C6*)(S21116C11*)(S21116C2*), ABISELECT(2920,1708), "S21116C1");
    /*is_ambiguous_... S21116C1::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C6*), ABISELECT(3000,1752), "S21116C1");
    check_base_class_offset(lv, (S3572C4*)(S21116C9*)(S21116C3*), ABISELECT(3000,1752), "S21116C1");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C9*)(S21116C3*), ABISELECT(3000,1752), "S21116C1");
    check_base_class_offset(lv, (S3572C4*)(S21116C10*), ABISELECT(3000,1752), "S21116C1");
    check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C10*), ABISELECT(3000,1752), "S21116C1");
    /*is_ambiguous_... S21116C1::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C11*), ABISELECT(3000,1752), "S21116C1");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C6*)(S21116C11*)(S21116C2*), ABISELECT(3000,1752), "S21116C1");
    check_base_class_offset(lv, (S21116C6*)(S21116C4*), ABISELECT(2960,1732), "S21116C1");
    check_base_class_offset(lv, (S21116C4*)(S21116C3*), ABISELECT(2792,1616), "S21116C1");
    /*is_ambiguous_... S21116C3::S3572C4 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C3*), ABISELECT(2272,1328), "S21116C1");
    /*is_ambiguous_... S21116C9::S21116C6 */ AMB_check_base_class_offset(lv, (S21116C6*)(S21116C9*)(S21116C3*), ABISELECT(2336,1360), "S21116C1");
    check_base_class_offset(lv, (S21116C6*)(S21116C10*), ABISELECT(3056,1784), "S21116C1");
    check_base_class_offset(lv, (S21116C10*)(S21116C9*)(S21116C3*), ABISELECT(3056,1784), "S21116C1");
    check_base_class_offset(lv, (S21116C9*)(S21116C3*), ABISELECT(2336,1360), "S21116C1");
    check_base_class_offset(lv, (S21116C3*)(S21116C2*), ABISELECT(2272,1328), "S21116C1");
    /*is_ambiguous_... S21116C1::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C11*), ABISELECT(3520,2064), "S21116C1");
    /*is_ambiguous_... S21116C1::S21116C11 */ AMB_check_base_class_offset(lv, (S21116C6*)(S21116C11*), ABISELECT(3576,2096), "S21116C1");
    check_base_class_offset(lv, (S21116C11*)(S21116C12*)(S21116C2*), ABISELECT(3520,2064), "S21116C1");
    check_base_class_offset(lv, (S21116C12*)(S21116C2*), ABISELECT(80,56), "S21116C1");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S3572C4*)(S21116C11*)(S21116C2*), ABISELECT(144,88), "S21116C1");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S21116C6*)(S21116C11*)(S21116C2*), ABISELECT(200,120), "S21116C1");
    /*is_ambiguous_... S21116C2::S21116C11 */ AMB_check_base_class_offset(lv, (S21116C11*)(S21116C2*), ABISELECT(144,88), "S21116C1");
    check_base_class_offset(lv, (S21116C2*), ABISELECT(80,56), "S21116C1");
    check_field_offset(lv, s21116c1f0, ABISELECT(16,4), "S21116C1.s21116c1f0");
    check_field_offset(lv, s21116c1f1, ABISELECT(32,16), "S21116C1.s21116c1f1");
    check_field_offset(lv, s21116c1f2, ABISELECT(48,28), "S21116C1.s21116c1f2");
    check_field_offset(lv, s21116c1f3, ABISELECT(56,36), "S21116C1.s21116c1f3");
    set_bf_and_test(lv, s21116c1f4, ABISELECT(60,40), 0, 32, 1, "S21116C1");
    set_bf_and_test(lv, s21116c1f4, ABISELECT(60,40), 0, 32, hide_sll(1LL<<31), "S21116C1");
    check_field_offset(lv, s21116c1f5, ABISELECT(64,44), "S21116C1.s21116c1f5");
    test_class_info(&lv, &cd_S21116C1);
    dp->~S21116C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21116C1(Test_S21116C1, "S21116C1", ABISELECT(3744,2188));

#else // __cplusplus

extern void _ZN8S21116C1C1Ev();
extern void _ZN8S21116C1D2Ev();
Name_Map name_map_S21116C1[] = {
  NSPAIR(_ZN8S21116C1C1Ev),
  NSPAIR(_ZN8S21116C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C4;
extern VTBL_ENTRY _ZTI8S21116C4[];
extern  VTBL_ENTRY _ZTV8S21116C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C4[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C10;
extern VTBL_ENTRY _ZTI9S21116C10[];
extern  VTBL_ENTRY _ZTV9S21116C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C10[];
extern Class_Descriptor cd_S21116C9;
extern VTBL_ENTRY _ZTI8S21116C9[];
extern  VTBL_ENTRY _ZTV8S21116C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C9[];
extern Class_Descriptor cd_S21116C3;
extern VTBL_ENTRY _ZTI8S21116C3[];
extern  VTBL_ENTRY _ZTV8S21116C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C3[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C11;
extern VTBL_ENTRY _ZTI9S21116C11[];
extern  VTBL_ENTRY _ZTV9S21116C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C11[];
extern Class_Descriptor cd_S21116C12;
extern VTBL_ENTRY _ZTI9S21116C12[];
extern  VTBL_ENTRY _ZTV9S21116C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C12[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21116C6;
extern VTBL_ENTRY _ZTI8S21116C6[];
extern  VTBL_ENTRY _ZTV8S21116C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C6[];
extern Class_Descriptor cd_S21116C11;
extern VTBL_ENTRY _ZTI9S21116C11[];
extern  VTBL_ENTRY _ZTV9S21116C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21116C11[];
extern Class_Descriptor cd_S21116C2;
extern VTBL_ENTRY _ZTI8S21116C2[];
extern  VTBL_ENTRY _ZTV8S21116C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C2[];
static Base_Class bases_S21116C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(2920,1708), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3000,1752), //bcp->offset
    76, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21116C6,    ABISELECT(2960,1732), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21116C4,    ABISELECT(2792,1616), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(2272,1328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21116C6,    ABISELECT(2336,1360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21116C6,    ABISELECT(3056,1784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21116C10,    ABISELECT(3056,1784), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21116C9,    ABISELECT(2336,1360), //bcp->offset
    54, //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
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21116C3,    ABISELECT(2272,1328), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3572C4,    ABISELECT(3520,2064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21116C6,    ABISELECT(3576,2096), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21116C11,    ABISELECT(3520,2064), //bcp->offset
    88, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21116C12,    ABISELECT(80,56), //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
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3572C4,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21116C6,    ABISELECT(200,120), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21116C11,    ABISELECT(144,88), //bcp->offset
    31, //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
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21116C2,    ABISELECT(80,56), //bcp->offset
    14, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21116C1[];
extern void _ZN8S21116C1D1Ev();
extern void _ZN8S21116C1D0Ev();
extern void _ZN8S21116C12v1Ev();
extern void _ZN8S21116C12v2Ev();
extern void ABISELECT(_ZTv0_n80_N8S21116C1D1Ev,_ZTv0_n40_N8S21116C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S21116C1D1Ev,_ZThn56_N8S21116C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21116C1D0Ev,_ZTv0_n40_N8S21116C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S21116C1D0Ev,_ZThn56_N8S21116C1D0Ev)() __attribute__((weak));
extern void _ZN9S21116C122v4Ev();
extern void _ZN8S21116C22v5Ev();
extern void ABISELECT(_ZTvn64_n80_N8S21116C1D1Ev,_ZTvn32_n40_N8S21116C1D1Ev)();
extern void ABISELECT(_ZTvn64_n80_N8S21116C1D0Ev,_ZTvn32_n40_N8S21116C1D0Ev)();
extern void _ZN9S21116C112v3Ev();
extern void ABISELECT(_ZTvn120_n80_N8S21116C1D1Ev,_ZTvn64_n40_N8S21116C1D1Ev)();
extern void ABISELECT(_ZTvn120_n80_N8S21116C1D0Ev,_ZTvn64_n40_N8S21116C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S21116C1D1Ev,_ZTv0_n32_N8S21116C1D1Ev)();
extern void ABISELECT(_ZThn2272_N8S21116C1D1Ev,_ZThn1328_N8S21116C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21116C1D0Ev,_ZTv0_n32_N8S21116C1D0Ev)();
extern void ABISELECT(_ZThn2272_N8S21116C1D0Ev,_ZThn1328_N8S21116C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn64_n64_N8S21116C1D1Ev,_ZTvn32_n32_N8S21116C1D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S21116C1D0Ev,_ZTvn32_n32_N8S21116C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21116C1D1Ev,_ZTv0_n24_N8S21116C1D1Ev)();
extern void ABISELECT(_ZThn2792_N8S21116C1D1Ev,_ZThn1616_N8S21116C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21116C1D0Ev,_ZTv0_n24_N8S21116C1D0Ev)();
extern void ABISELECT(_ZThn2792_N8S21116C1D0Ev,_ZThn1616_N8S21116C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C1D1Ev,_ZTv0_n20_N8S21116C1D1Ev)();
extern void ABISELECT(_ZThn2960_N8S21116C1D1Ev,_ZThn1732_N8S21116C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C1D0Ev,_ZTv0_n20_N8S21116C1D0Ev)();
extern void ABISELECT(_ZThn2960_N8S21116C1D0Ev,_ZThn1732_N8S21116C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C1D1Ev,_ZTv0_n12_N8S21116C1D1Ev)();
extern void ABISELECT(_ZThn3000_N8S21116C1D1Ev,_ZThn1752_N8S21116C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C1D0Ev,_ZTv0_n12_N8S21116C1D0Ev)();
extern void ABISELECT(_ZThn3000_N8S21116C1D0Ev,_ZThn1752_N8S21116C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C1D1Ev,_ZTv0_n20_N8S21116C1D1Ev)();
extern void ABISELECT(_ZThn3056_N8S21116C1D1Ev,_ZThn1784_N8S21116C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C1D0Ev,_ZTv0_n20_N8S21116C1D0Ev)();
extern void ABISELECT(_ZThn3056_N8S21116C1D0Ev,_ZThn1784_N8S21116C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C1D1Ev,_ZTv0_n20_N8S21116C1D1Ev)();
extern void ABISELECT(_ZThn3520_N8S21116C1D1Ev,_ZThn2064_N8S21116C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C1D0Ev,_ZTv0_n20_N8S21116C1D0Ev)();
extern void ABISELECT(_ZThn3520_N8S21116C1D0Ev,_ZThn2064_N8S21116C1D0Ev)() __attribute__((weak));
extern void _ZN9S21116C112v3Ev();
extern void ABISELECT(_ZTvn56_n40_N8S21116C1D1Ev,_ZTvn32_n20_N8S21116C1D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S21116C1D0Ev,_ZTvn32_n20_N8S21116C1D0Ev)();
static  VTBL_ENTRY vtc_S21116C1[] = {
  ABISELECT(3520,2064),
  ABISELECT(3056,1784),
  ABISELECT(3000,1752),
  ABISELECT(2960,1732),
  ABISELECT(2920,1708),
  ABISELECT(2792,1616),
  ABISELECT(2272,1328),
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&_ZN8S21116C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21116C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21116C12v2Ev,
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(-80,-56),
  ABISELECT(2976,1728),
  ABISELECT(2880,1676),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(2920,1696),
  ABISELECT(2840,1652),
  ABISELECT(3440,2008),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21116C1D1Ev,_ZTv0_n40_N8S21116C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21116C1D0Ev,_ZTv0_n40_N8S21116C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21116C122v4Ev,
  (VTBL_ENTRY)&_ZN8S21116C22v5Ev,
  ABISELECT(2856,1664),
  ABISELECT(2776,1620),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S21116C1D1Ev,_ZTvn32_n40_N8S21116C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n80_N8S21116C1D0Ev,_ZTvn32_n40_N8S21116C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S21116C1D1Ev,_ZTvn64_n40_N8S21116C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n80_N8S21116C1D0Ev,_ZTvn64_n40_N8S21116C1D0Ev),
  ABISELECT(-2272,-1328),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-2272,-1328),
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21116C1D1Ev,_ZTv0_n32_N8S21116C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21116C1D0Ev,_ZTv0_n32_N8S21116C1D0Ev),
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-2336,-1360),
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21116C1D1Ev,_ZTvn32_n32_N8S21116C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21116C1D0Ev,_ZTvn32_n32_N8S21116C1D0Ev),
  ABISELECT(-2792,-1616),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-2792,-1616),
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C1D1Ev,_ZTv0_n24_N8S21116C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C1D0Ev,_ZTv0_n24_N8S21116C1D0Ev),
  ABISELECT(-2960,-1732),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-2960,-1732),
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C1D1Ev,_ZTv0_n20_N8S21116C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C1D0Ev,_ZTv0_n20_N8S21116C1D0Ev),
  ABISELECT(-3000,-1752),
  ABISELECT(-3000,-1752),
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C1D1Ev,_ZTv0_n12_N8S21116C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C1D0Ev,_ZTv0_n12_N8S21116C1D0Ev),
  ABISELECT(-3056,-1784),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-3056,-1784),
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C1D1Ev,_ZTv0_n20_N8S21116C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C1D0Ev,_ZTv0_n20_N8S21116C1D0Ev),
  0,
  ABISELECT(-3520,-2064),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3520,-2064),
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C1D1Ev,_ZTv0_n20_N8S21116C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C1D0Ev,_ZTv0_n20_N8S21116C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3576,-2096),
  (VTBL_ENTRY)&(_ZTI8S21116C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21116C1D1Ev,_ZTvn32_n20_N8S21116C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21116C1D0Ev,_ZTvn32_n20_N8S21116C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21116C1[];
extern void _ZN8S21116C2D1Ev();
extern void _ZN8S21116C2D0Ev();
extern void _ZN9S21116C122v4Ev();
extern void _ZN8S21116C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C2__8S21116C1[] = {
  ABISELECT(2976,1728),
  ABISELECT(2880,1676),
  ABISELECT(2712,1560),
  ABISELECT(2192,1272),
  ABISELECT(2920,1696),
  ABISELECT(2840,1652),
  ABISELECT(3440,2008),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&_ZN8S21116C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C2D0Ev,
  (VTBL_ENTRY)&_ZN9S21116C122v4Ev,
  (VTBL_ENTRY)&_ZN8S21116C22v5Ev,
};
extern void _ZN9S21116C12D1Ev();
extern void _ZN9S21116C12D0Ev();
extern void _ZN9S21116C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C128S21116C2__8S21116C1[] = {
  ABISELECT(2920,1696),
  ABISELECT(2840,1652),
  ABISELECT(3440,2008),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&_ZN9S21116C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C12D0Ev,
  (VTBL_ENTRY)&_ZN9S21116C122v4Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S21116C12D1Ev,_ZTv0_n20_N9S21116C12D1Ev)();
extern void ABISELECT(_ZThn3440_N9S21116C12D1Ev,_ZThn2008_N9S21116C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21116C12D0Ev,_ZTv0_n20_N9S21116C12D0Ev)();
extern void ABISELECT(_ZThn3440_N9S21116C12D0Ev,_ZThn2008_N9S21116C12D0Ev)() __attribute__((weak));
extern void _ZN9S21116C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C11__9S21116C128S21116C2__8S21116C1[] = {
  0,
  ABISELECT(-3440,-2008),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2008),
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21116C12D1Ev,_ZTv0_n20_N9S21116C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21116C12D0Ev,_ZTv0_n20_N9S21116C12D0Ev),
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
};
extern void ABISELECT(_ZTvn56_n40_N9S21116C12D1Ev,_ZTvn32_n20_N9S21116C12D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N9S21116C12D0Ev,_ZTvn32_n20_N9S21116C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C11__9S21116C128S21116C2__8S21116C1[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2040),
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21116C12D1Ev,_ZTvn32_n20_N9S21116C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N9S21116C12D0Ev,_ZTvn32_n20_N9S21116C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21116C12D1Ev,_ZTv0_n12_N9S21116C12D1Ev)();
extern void ABISELECT(_ZThn2920_N9S21116C12D1Ev,_ZThn1696_N9S21116C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21116C12D0Ev,_ZTv0_n12_N9S21116C12D0Ev)();
extern void ABISELECT(_ZThn2920_N9S21116C12D0Ev,_ZThn1696_N9S21116C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21116C128S21116C2__8S21116C1[] = {
  ABISELECT(-2920,-1696),
  ABISELECT(-2920,-1696),
  (VTBL_ENTRY)&(_ZTI9S21116C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C12D1Ev,_ZTv0_n12_N9S21116C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C12D0Ev,_ZTv0_n12_N9S21116C12D0Ev),
};
extern void _ZN9S21116C11D1Ev();
extern void _ZN9S21116C11D0Ev();
extern void _ZN9S21116C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C118S21116C2__A1__8S21116C1[] = {
  ABISELECT(2856,1664),
  ABISELECT(2776,1620),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&_ZN9S21116C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C118S21116C2__A4__8S21116C1[] = {
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn2800_N8S21116C6D1Ev,_ZThn1632_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn2800_N8S21116C6D0Ev,_ZThn1632_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C69S21116C118S21116C2__A4__8S21116C1[] = {
  ABISELECT(-2800,-1632),
  ABISELECT(-2800,-1632),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C6__9S21116C118S21116C2__A1__8S21116C1[] = {
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev)();
extern void ABISELECT(_ZThn2856_N9S21116C11D1Ev,_ZThn1664_N9S21116C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev)();
extern void ABISELECT(_ZThn2856_N9S21116C11D0Ev,_ZThn1664_N9S21116C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21116C118S21116C2__A1__8S21116C1[] = {
  ABISELECT(-2856,-1664),
  ABISELECT(-2856,-1664),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S21116C2D1Ev,_ZTv0_n32_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn2192_N8S21116C2D1Ev,_ZThn1272_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21116C2D0Ev,_ZTv0_n32_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn2192_N8S21116C2D0Ev,_ZThn1272_N8S21116C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21116C3__8S21116C2__8S21116C1[] = {
  ABISELECT(-2192,-1272),
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21116C2D1Ev,_ZTv0_n32_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21116C2D0Ev,_ZTv0_n32_N8S21116C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21116C2D1Ev,_ZTv0_n24_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn2712_N8S21116C2D1Ev,_ZThn1560_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21116C2D0Ev,_ZTv0_n24_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn2712_N8S21116C2D0Ev,_ZThn1560_N8S21116C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21116C4__8S21116C2__8S21116C1[] = {
  ABISELECT(-2712,-1560),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-2712,-1560),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C2D1Ev,_ZTv0_n24_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C2D0Ev,_ZTv0_n24_N8S21116C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn2880_N8S21116C2D1Ev,_ZThn1676_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn2880_N8S21116C2D0Ev,_ZThn1676_N8S21116C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21116C6__8S21116C2__8S21116C1[] = {
  ABISELECT(-2880,-1676),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-2880,-1676),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21116C2D1Ev,_ZTv0_n12_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn2920_N8S21116C2D1Ev,_ZThn1696_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C2D0Ev,_ZTv0_n12_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn2920_N8S21116C2D0Ev,_ZThn1696_N8S21116C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C2__8S21116C1[] = {
  ABISELECT(-2920,-1696),
  ABISELECT(-2920,-1696),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C2D1Ev,_ZTv0_n12_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C2D0Ev,_ZTv0_n12_N8S21116C2D0Ev),
};
extern void ABISELECT(_ZTvn64_n64_N8S21116C2D1Ev,_ZTvn32_n32_N8S21116C2D1Ev)();
extern void ABISELECT(_ZTvn64_n64_N8S21116C2D0Ev,_ZTvn32_n32_N8S21116C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C98S21116C3__8S21116C2__8S21116C1[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-2256,-1304),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21116C2D1Ev,_ZTvn32_n32_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n64_N8S21116C2D0Ev,_ZTvn32_n32_N8S21116C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn2976_N8S21116C2D1Ev,_ZThn1728_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn2976_N8S21116C2D0Ev,_ZThn1728_N8S21116C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21116C10__8S21116C2__8S21116C1[] = {
  ABISELECT(-2976,-1728),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-2976,-1728),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn3440_N8S21116C2D1Ev,_ZThn2008_N8S21116C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev)();
extern void ABISELECT(_ZThn3440_N8S21116C2D0Ev,_ZThn2008_N8S21116C2D0Ev)() __attribute__((weak));
extern void _ZN9S21116C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C11__8S21116C2__8S21116C1[] = {
  0,
  ABISELECT(-3440,-2008),
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  ABISELECT(-3440,-2008),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
};
extern void ABISELECT(_ZTvn56_n40_N8S21116C2D1Ev,_ZTvn32_n20_N8S21116C2D1Ev)();
extern void ABISELECT(_ZTvn56_n40_N8S21116C2D0Ev,_ZTvn32_n20_N8S21116C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C11__A3__8S21116C2__8S21116C1[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-3496,-2040),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21116C2D1Ev,_ZTvn32_n20_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n40_N8S21116C2D0Ev,_ZTvn32_n20_N8S21116C2D0Ev),
};
extern void ABISELECT(_ZThn64_N8S21116C2D1Ev,_ZThn32_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21116C2D0Ev,_ZThn32_N8S21116C2D0Ev)();
extern void _ZN9S21116C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C11__A__8S21116C2__8S21116C1[] = {
  ABISELECT(2856,1664),
  ABISELECT(2776,1620),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21116C2D1Ev,_ZThn32_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21116C2D0Ev,_ZThn32_N8S21116C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
};
extern void ABISELECT(_ZThn120_N8S21116C2D1Ev,_ZThn64_N8S21116C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21116C2D0Ev,_ZThn64_N8S21116C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C11__A4__8S21116C2__8S21116C1[] = {
  ABISELECT(2800,1632),
  ABISELECT(2720,1588),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S21116C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S21116C2D1Ev,_ZThn64_N8S21116C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S21116C2D0Ev,_ZThn64_N8S21116C2D0Ev),
};
extern void _ZN8S21116C3D1Ev();
extern void _ZN8S21116C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C3__8S21116C1[] = {
  ABISELECT(784,456),
  ABISELECT(728,424),
  ABISELECT(688,404),
  ABISELECT(648,380),
  ABISELECT(520,288),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&_ZN8S21116C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C3D0Ev,
};
extern void _ZN8S21116C9D1Ev();
extern void _ZN8S21116C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C98S21116C3__8S21116C1[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&_ZN8S21116C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C9D0Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C68S21116C98S21116C3__A1__8S21116C1[] = {
  ABISELECT(664,392),
  ABISELECT(584,348),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn664_N8S21116C6D1Ev,_ZThn392_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn664_N8S21116C6D0Ev,_ZThn392_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C68S21116C98S21116C3__A1__8S21116C1[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev)();
extern void ABISELECT(_ZThn664_N8S21116C9D1Ev,_ZThn392_N8S21116C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev)();
extern void ABISELECT(_ZThn664_N8S21116C9D0Ev,_ZThn392_N8S21116C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C98S21116C3__8S21116C1[] = {
  ABISELECT(-664,-392),
  ABISELECT(-664,-392),
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev)();
extern void ABISELECT(_ZThn720_N8S21116C9D1Ev,_ZThn424_N8S21116C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev)();
extern void ABISELECT(_ZThn720_N8S21116C9D0Ev,_ZThn424_N8S21116C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21116C10__8S21116C98S21116C3__8S21116C1[] = {
  ABISELECT(-720,-424),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI8S21116C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21116C3D1Ev,_ZTv0_n24_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn520_N8S21116C3D1Ev,_ZThn288_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21116C3D0Ev,_ZTv0_n24_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn520_N8S21116C3D0Ev,_ZThn288_N8S21116C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21116C4__8S21116C3__8S21116C1[] = {
  ABISELECT(-520,-288),
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-520,-288),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C3D1Ev,_ZTv0_n24_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21116C3D0Ev,_ZTv0_n24_N8S21116C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn688_N8S21116C3D1Ev,_ZThn404_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn688_N8S21116C3D0Ev,_ZThn404_N8S21116C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21116C6__8S21116C3__8S21116C1[] = {
  ABISELECT(-688,-404),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21116C3D1Ev,_ZTv0_n12_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn728_N8S21116C3D1Ev,_ZThn424_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C3D0Ev,_ZTv0_n12_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn728_N8S21116C3D0Ev,_ZThn424_N8S21116C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C3__8S21116C1[] = {
  ABISELECT(-728,-424),
  ABISELECT(-728,-424),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C3D1Ev,_ZTv0_n12_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C3D0Ev,_ZTv0_n12_N8S21116C3D0Ev),
};
extern void ABISELECT(_ZThn64_N8S21116C3D1Ev,_ZThn32_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21116C3D0Ev,_ZThn32_N8S21116C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C9__8S21116C3__8S21116C1[] = {
  ABISELECT(720,424),
  ABISELECT(664,392),
  ABISELECT(584,348),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21116C3D1Ev,_ZThn32_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21116C3D0Ev,_ZThn32_N8S21116C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev)();
extern void ABISELECT(_ZThn784_N8S21116C3D1Ev,_ZThn456_N8S21116C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev)();
extern void ABISELECT(_ZThn784_N8S21116C3D0Ev,_ZThn456_N8S21116C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21116C10__8S21116C3__8S21116C1[] = {
  ABISELECT(-784,-456),
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S21116C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev),
};
extern void _ZN8S21116C4D1Ev();
extern void _ZN8S21116C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C4__8S21116C1[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&_ZN8S21116C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C4D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S21116C4D1Ev,_ZThn116_N8S21116C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev)();
extern void ABISELECT(_ZThn168_N8S21116C4D0Ev,_ZThn116_N8S21116C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21116C6__8S21116C4__8S21116C1[] = {
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S21116C4D1Ev,_ZThn136_N8S21116C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev)();
extern void ABISELECT(_ZThn208_N8S21116C4D0Ev,_ZThn136_N8S21116C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C4__8S21116C1[] = {
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21116C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev),
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C6__8S21116C1[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21116C6D1Ev,_ZThn20_N8S21116C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21116C6D0Ev,_ZThn20_N8S21116C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C6__8S21116C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void _ZN9S21116C10D1Ev();
extern void _ZN9S21116C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C10__8S21116C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C10[0]),
  (VTBL_ENTRY)&_ZN9S21116C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C10D0Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C10__A2__8S21116C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C69S21116C10__A2__8S21116C1[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21116C10D1Ev,_ZTv0_n12_N9S21116C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21116C10D0Ev,_ZTv0_n12_N9S21116C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__9S21116C10__8S21116C1[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21116C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C10D1Ev,_ZTv0_n12_N9S21116C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C10D0Ev,_ZTv0_n12_N9S21116C10D0Ev),
};
extern void _ZN9S21116C11D1Ev();
extern void _ZN9S21116C11D0Ev();
extern void _ZN9S21116C112v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21116C11__8S21116C1[] = {
  ABISELECT(-520,-312),
  ABISELECT(-600,-356),
  0,
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&_ZN9S21116C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21116C11D0Ev,
  (VTBL_ENTRY)&_ZN9S21116C112v3Ev,
};
extern void _ZN8S21116C6D1Ev();
extern void _ZN8S21116C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21116C69S21116C11__A3__8S21116C1[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  0,
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&_ZN8S21116C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21116C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21116C69S21116C11__A3__8S21116C1[] = {
  ABISELECT(576,344),
  ABISELECT(576,344),
  (VTBL_ENTRY)&(_ZTI8S21116C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev),
};
extern void ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21116C6__9S21116C11__8S21116C1[] = {
  ABISELECT(-576,-344),
  ABISELECT(-656,-388),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D1Ev,_ZThn32_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21116C11D0Ev,_ZThn32_N9S21116C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__A1__9S21116C11__8S21116C1[] = {
  ABISELECT(520,312),
  ABISELECT(520,312),
  (VTBL_ENTRY)&(_ZTI9S21116C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev),
};
static  VTT_ENTRY vtt_S21116C1[] = {
  {&(_ZTV8S21116C1[10]),  10,103},
  {&(_ZTV8S21116C1[27]),  27,103},
  {&(_ZTV8S21116C1[52]),  52,103},
  {&(_ZTV8S21116C1[67]),  67,103},
  {&(_ZTV8S21116C1[74]),  74,103},
  {&(_ZTV8S21116C1[79]),  79,103},
  {&(_ZTV8S21116C1[59]),  59,103},
  {&(_ZTV8S21116C1[86]),  86,103},
  {&(_ZTV8S21116C1[94]),  94,103},
  {&(_ZTV8S21116C1[101]),  101,103},
  {&(_ZTV8S21116C1[35]),  35,103},
  {&(_ZTV8S21116C1[42]),  42,103},
  {&(_tg__ZTV8S21116C2__8S21116C1[9]),  9,13},
  {&(_tg__ZTV9S21116C128S21116C2__8S21116C1[5]),  5,8},
  {&(_tg__ZTV9S21116C11__9S21116C128S21116C2__8S21116C1[6]),  6,9},
  {&(_tg__ZTV8S21116C69S21116C11__9S21116C128S21116C2__8S21116C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21116C128S21116C2__8S21116C1[3]),  3,5},
  {&(_tg__ZTV9S21116C118S21116C2__A1__8S21116C1[4]),  4,7},
  {&(_tg__ZTV8S21116C69S21116C118S21116C2__A4__8S21116C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C69S21116C118S21116C2__A4__8S21116C1[3]),  3,5},
  {&(_tg__ZTV8S21116C6__9S21116C118S21116C2__A1__8S21116C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21116C118S21116C2__A1__8S21116C1[3]),  3,5},
  {&(_tg__ZTV8S21116C3__8S21116C2__8S21116C1[8]),  8,10},
  {&(_tg__ZTV8S21116C4__8S21116C2__8S21116C1[6]),  6,8},
  {&(_tg__ZTV8S21116C6__8S21116C2__8S21116C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21116C2__8S21116C1[3]),  3,5},
  {&(_tg__ZTV8S21116C98S21116C3__8S21116C2__8S21116C1[5]),  5,7},
  {&(_tg__ZTV9S21116C10__8S21116C2__8S21116C1[5]),  5,7},
  {&(_tg__ZTV9S21116C11__8S21116C2__8S21116C1[6]),  6,9},
  {&(_tg__ZTV8S21116C69S21116C11__A3__8S21116C2__8S21116C1[4]),  4,6},
  {&(_tg__ZTV9S21116C11__A__8S21116C2__8S21116C1[4]),  4,7},
  {&(_tg__ZTV8S21116C69S21116C11__A4__8S21116C2__8S21116C1[4]),  4,6},
  {&(_tg__ZTV8S21116C3__8S21116C1[7]),  7,9},
  {&(_tg__ZTV8S21116C98S21116C3__8S21116C1[5]),  5,7},
  {&(_tg__ZTV8S21116C68S21116C98S21116C3__A1__8S21116C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C68S21116C98S21116C3__A1__8S21116C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__8S21116C98S21116C3__8S21116C1[3]),  3,5},
  {&(_tg__ZTV9S21116C10__8S21116C98S21116C3__8S21116C1[5]),  5,7},
  {&(_tg__ZTV8S21116C4__8S21116C3__8S21116C1[6]),  6,8},
  {&(_tg__ZTV8S21116C6__8S21116C3__8S21116C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21116C3__8S21116C1[3]),  3,5},
  {&(_tg__ZTV8S21116C9__8S21116C3__8S21116C1[5]),  5,7},
  {&(_tg__ZTV9S21116C10__8S21116C3__8S21116C1[5]),  5,7},
  {&(_tg__ZTV8S21116C4__8S21116C1[5]),  5,7},
  {&(_tg__ZTV8S21116C6__8S21116C4__8S21116C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21116C4__8S21116C1[3]),  3,5},
  {&(_tg__ZTV8S21116C6__8S21116C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C6__8S21116C1[3]),  3,5},
  {&(_tg__ZTV9S21116C10__8S21116C1[4]),  4,6},
  {&(_tg__ZTV8S21116C69S21116C10__A2__8S21116C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C69S21116C10__A2__8S21116C1[3]),  3,5},
  {&(_tg__ZTV7S3572C4__9S21116C10__8S21116C1[3]),  3,5},
  {&(_tg__ZTV9S21116C11__8S21116C1[4]),  4,7},
  {&(_tg__ZTV8S21116C69S21116C11__A3__8S21116C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21116C69S21116C11__A3__8S21116C1[3]),  3,5},
  {&(_tg__ZTV8S21116C6__9S21116C11__8S21116C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__A1__9S21116C11__8S21116C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21116C1[];
extern  VTBL_ENTRY _ZTV8S21116C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21116C1[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C4D0Ev,_ZTv0_n12_N8S21116C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C4D0Ev,_ZThn136_N8S21116C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C4D1Ev,_ZTv0_n12_N8S21116C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21116C4D1Ev,_ZThn136_N8S21116C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C4D0Ev,_ZTv0_n20_N8S21116C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21116C4D0Ev,_ZThn116_N8S21116C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C4D1Ev,_ZTv0_n20_N8S21116C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21116C4D1Ev,_ZThn116_N8S21116C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C3D0Ev,_ZTv0_n12_N8S21116C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21116C3D0Ev,_ZThn424_N8S21116C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C3D1Ev,_ZTv0_n12_N8S21116C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn728_N8S21116C3D1Ev,_ZThn424_N8S21116C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C3D0Ev,_ZTv0_n20_N8S21116C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21116C3D0Ev,_ZThn456_N8S21116C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21116C3D0Ev,_ZThn404_N8S21116C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C3D1Ev,_ZTv0_n20_N8S21116C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S21116C3D1Ev,_ZThn456_N8S21116C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S21116C3D1Ev,_ZThn404_N8S21116C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C3D0Ev,_ZTv0_n24_N8S21116C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21116C3D0Ev,_ZThn288_N8S21116C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C3D1Ev,_ZTv0_n24_N8S21116C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21116C3D1Ev,_ZThn288_N8S21116C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C9D0Ev,_ZTv0_n20_N8S21116C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21116C9D0Ev,_ZThn424_N8S21116C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C9D1Ev,_ZTv0_n20_N8S21116C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S21116C9D1Ev,_ZThn424_N8S21116C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C9D0Ev,_ZTv0_n12_N8S21116C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C9D0Ev,_ZThn392_N8S21116C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C9D1Ev,_ZTv0_n12_N8S21116C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C9D1Ev,_ZThn392_N8S21116C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C2D0Ev,_ZTv0_n12_N8S21116C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S21116C2D0Ev,_ZThn1696_N8S21116C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C2D1Ev,_ZTv0_n12_N8S21116C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S21116C2D1Ev,_ZThn1696_N8S21116C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C2D0Ev,_ZTv0_n20_N8S21116C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S21116C2D0Ev,_ZThn2008_N8S21116C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S21116C2D0Ev,_ZThn1728_N8S21116C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S21116C2D0Ev,_ZThn1676_N8S21116C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C2D1Ev,_ZTv0_n20_N8S21116C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N8S21116C2D1Ev,_ZThn2008_N8S21116C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2976_N8S21116C2D1Ev,_ZThn1728_N8S21116C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2880_N8S21116C2D1Ev,_ZThn1676_N8S21116C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C2D0Ev,_ZTv0_n24_N8S21116C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S21116C2D0Ev,_ZThn1560_N8S21116C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C2D1Ev,_ZTv0_n24_N8S21116C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2712_N8S21116C2D1Ev,_ZThn1560_N8S21116C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21116C2D0Ev,_ZTv0_n32_N8S21116C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S21116C2D0Ev,_ZThn1272_N8S21116C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21116C2D1Ev,_ZTv0_n32_N8S21116C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N8S21116C2D1Ev,_ZThn1272_N8S21116C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C11D0Ev,_ZTv0_n12_N9S21116C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S21116C11D0Ev,_ZThn1664_N9S21116C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C11D1Ev,_ZTv0_n12_N9S21116C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N9S21116C11D1Ev,_ZThn1664_N9S21116C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D0Ev,_ZTv0_n12_N8S21116C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21116C6D0Ev,_ZThn20_N8S21116C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C6D0Ev,_ZThn392_N8S21116C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S21116C6D0Ev,_ZThn1632_N8S21116C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C6D1Ev,_ZTv0_n12_N8S21116C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21116C6D1Ev,_ZThn20_N8S21116C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S21116C6D1Ev,_ZThn392_N8S21116C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2800_N8S21116C6D1Ev,_ZThn1632_N8S21116C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C12D0Ev,_ZTv0_n12_N9S21116C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S21116C12D0Ev,_ZThn1696_N9S21116C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21116C12D1Ev,_ZTv0_n12_N9S21116C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N9S21116C12D1Ev,_ZThn1696_N9S21116C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21116C12D0Ev,_ZTv0_n20_N9S21116C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S21116C12D0Ev,_ZThn2008_N9S21116C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21116C12D1Ev,_ZTv0_n20_N9S21116C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3440_N9S21116C12D1Ev,_ZThn2008_N9S21116C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C1D0Ev,_ZTv0_n12_N8S21116C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3000_N8S21116C1D0Ev,_ZThn1752_N8S21116C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21116C1D1Ev,_ZTv0_n12_N8S21116C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3000_N8S21116C1D1Ev,_ZThn1752_N8S21116C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C1D0Ev,_ZTv0_n20_N8S21116C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3520_N8S21116C1D0Ev,_ZThn2064_N8S21116C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3056_N8S21116C1D0Ev,_ZThn1784_N8S21116C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S21116C1D0Ev,_ZThn1732_N8S21116C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21116C1D1Ev,_ZTv0_n20_N8S21116C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3520_N8S21116C1D1Ev,_ZThn2064_N8S21116C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3056_N8S21116C1D1Ev,_ZThn1784_N8S21116C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2960_N8S21116C1D1Ev,_ZThn1732_N8S21116C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C1D0Ev,_ZTv0_n24_N8S21116C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2792_N8S21116C1D0Ev,_ZThn1616_N8S21116C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21116C1D1Ev,_ZTv0_n24_N8S21116C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2792_N8S21116C1D1Ev,_ZThn1616_N8S21116C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21116C1D0Ev,_ZTv0_n32_N8S21116C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N8S21116C1D0Ev,_ZThn1328_N8S21116C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21116C1D1Ev,_ZTv0_n32_N8S21116C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2272_N8S21116C1D1Ev,_ZThn1328_N8S21116C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21116C1D0Ev,_ZTv0_n40_N8S21116C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21116C1D0Ev,_ZThn56_N8S21116C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21116C1D1Ev,_ZTv0_n40_N8S21116C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21116C1D1Ev,_ZThn56_N8S21116C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21116C1 = {  "S21116C1", // class name
  bases_S21116C1, 18,
  &(vtc_S21116C1[0]), // expected_vtbl_contents
  &(vtt_S21116C1[0]), // expected_vtt_contents
  ABISELECT(3744,2188), // object size
  NSPAIRA(_ZTI8S21116C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21116C1),103, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21116C1),57, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3243C3  {
  int s3243c3f0;
  __tsi64 s3243c3f1;
  void *s3243c3f2[4];
  int s3243c3f3[2];
  void *s3243c3f4;
  ::S1604C5_nt s3243c3f5;
  void *s3243c3f6[2];
  virtual  ~S3243C3(); // _ZN7S3243C3D1Ev
  virtual void  v4(); // _ZN7S3243C32v4Ev
  virtual void  v5(); // _ZN7S3243C32v5Ev
  virtual void  v6(); // _ZN7S3243C32v6Ev
  virtual void  v7(); // _ZN7S3243C32v7Ev
  virtual void  v8(); // _ZN7S3243C32v8Ev
  virtual void  v9(); // _ZN7S3243C32v9Ev
  virtual void  v10(); // _ZN7S3243C33v10Ev
  virtual void  v11(); // _ZN7S3243C33v11Ev
  virtual void  v12(); // _ZN7S3243C33v12Ev
  virtual void  v13(); // _ZN7S3243C33v13Ev
  virtual void  v14(); // _ZN7S3243C33v14Ev
  virtual void  v15(); // _ZN7S3243C33v15Ev
  virtual void  v16(); // _ZN7S3243C33v16Ev
  virtual void  v17(); // _ZN7S3243C33v17Ev
  virtual void  v18(); // _ZN7S3243C33v18Ev
  virtual void  v19(); // _ZN7S3243C33v19Ev
  virtual void  v20(); // _ZN7S3243C33v20Ev
  virtual void  v21(); // _ZN7S3243C33v21Ev
  virtual void  v22(); // _ZN7S3243C33v22Ev
  virtual void  v23(); // _ZN7S3243C33v23Ev
  virtual void  v24(); // _ZN7S3243C33v24Ev
  virtual void  v25(); // _ZN7S3243C33v25Ev
  virtual void  v26(); // _ZN7S3243C33v26Ev
  virtual void  v27(); // _ZN7S3243C33v27Ev
  virtual void  v28(); // _ZN7S3243C33v28Ev
  virtual void  v29(); // _ZN7S3243C33v29Ev
  virtual void  v30(); // _ZN7S3243C33v30Ev
  virtual void  v31(); // _ZN7S3243C33v31Ev
  virtual void  v32(); // _ZN7S3243C33v32Ev
  virtual void  v33(); // _ZN7S3243C33v33Ev
  virtual void  v34(); // _ZN7S3243C33v34Ev
  virtual void  v35(); // _ZN7S3243C33v35Ev
  virtual void  v36(); // _ZN7S3243C33v36Ev
  virtual void  v37(); // _ZN7S3243C33v37Ev
  virtual void  v38(); // _ZN7S3243C33v38Ev
  virtual void  v39(); // _ZN7S3243C33v39Ev
  virtual void  v40(); // _ZN7S3243C33v40Ev
  virtual void  v41(); // _ZN7S3243C33v41Ev
  virtual void  v42(); // _ZN7S3243C33v42Ev
  virtual void  v43(); // _ZN7S3243C33v43Ev
  virtual void  v44(); // _ZN7S3243C33v44Ev
  virtual void  v45(); // _ZN7S3243C33v45Ev
  virtual void  v46(); // _ZN7S3243C33v46Ev
  virtual void  v47(); // _ZN7S3243C33v47Ev
  virtual void  v48(); // _ZN7S3243C33v48Ev
  virtual void  v49(); // _ZN7S3243C33v49Ev
  virtual void  v50(); // _ZN7S3243C33v50Ev
  virtual void  v51(); // _ZN7S3243C33v51Ev
  virtual void  v52(); // _ZN7S3243C33v52Ev
  virtual void  v53(); // _ZN7S3243C33v53Ev
  virtual void  v54(); // _ZN7S3243C33v54Ev
  virtual void  v55(); // _ZN7S3243C33v55Ev
  virtual void  v56(); // _ZN7S3243C33v56Ev
  virtual void  v57(); // _ZN7S3243C33v57Ev
  virtual void  v58(); // _ZN7S3243C33v58Ev
  virtual void  v59(); // _ZN7S3243C33v59Ev
  virtual void  v60(); // _ZN7S3243C33v60Ev
  virtual void  v61(); // _ZN7S3243C33v61Ev
  virtual void  v62(); // _ZN7S3243C33v62Ev
  virtual void  v63(); // _ZN7S3243C33v63Ev
  virtual void  v64(); // _ZN7S3243C33v64Ev
  virtual void  v65(); // _ZN7S3243C33v65Ev
  virtual void  v66(); // _ZN7S3243C33v66Ev
  virtual void  v67(); // _ZN7S3243C33v67Ev
  S3243C3(); // tgen
};
//SIG(-1 S3243C3) 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]}


 S3243C3 ::~S3243C3(){ note_dtor("S3243C3", this);}
void  S3243C3 ::v4(){vfunc_called(this, "_ZN7S3243C32v4Ev");}
void  S3243C3 ::v5(){vfunc_called(this, "_ZN7S3243C32v5Ev");}
void  S3243C3 ::v6(){vfunc_called(this, "_ZN7S3243C32v6Ev");}
void  S3243C3 ::v7(){vfunc_called(this, "_ZN7S3243C32v7Ev");}
void  S3243C3 ::v8(){vfunc_called(this, "_ZN7S3243C32v8Ev");}
void  S3243C3 ::v9(){vfunc_called(this, "_ZN7S3243C32v9Ev");}
void  S3243C3 ::v10(){vfunc_called(this, "_ZN7S3243C33v10Ev");}
void  S3243C3 ::v11(){vfunc_called(this, "_ZN7S3243C33v11Ev");}
void  S3243C3 ::v12(){vfunc_called(this, "_ZN7S3243C33v12Ev");}
void  S3243C3 ::v13(){vfunc_called(this, "_ZN7S3243C33v13Ev");}
void  S3243C3 ::v14(){vfunc_called(this, "_ZN7S3243C33v14Ev");}
void  S3243C3 ::v15(){vfunc_called(this, "_ZN7S3243C33v15Ev");}
void  S3243C3 ::v16(){vfunc_called(this, "_ZN7S3243C33v16Ev");}
void  S3243C3 ::v17(){vfunc_called(this, "_ZN7S3243C33v17Ev");}
void  S3243C3 ::v18(){vfunc_called(this, "_ZN7S3243C33v18Ev");}
void  S3243C3 ::v19(){vfunc_called(this, "_ZN7S3243C33v19Ev");}
void  S3243C3 ::v20(){vfunc_called(this, "_ZN7S3243C33v20Ev");}
void  S3243C3 ::v21(){vfunc_called(this, "_ZN7S3243C33v21Ev");}
void  S3243C3 ::v22(){vfunc_called(this, "_ZN7S3243C33v22Ev");}
void  S3243C3 ::v23(){vfunc_called(this, "_ZN7S3243C33v23Ev");}
void  S3243C3 ::v24(){vfunc_called(this, "_ZN7S3243C33v24Ev");}
void  S3243C3 ::v25(){vfunc_called(this, "_ZN7S3243C33v25Ev");}
void  S3243C3 ::v26(){vfunc_called(this, "_ZN7S3243C33v26Ev");}
void  S3243C3 ::v27(){vfunc_called(this, "_ZN7S3243C33v27Ev");}
void  S3243C3 ::v28(){vfunc_called(this, "_ZN7S3243C33v28Ev");}
void  S3243C3 ::v29(){vfunc_called(this, "_ZN7S3243C33v29Ev");}
void  S3243C3 ::v30(){vfunc_called(this, "_ZN7S3243C33v30Ev");}
void  S3243C3 ::v31(){vfunc_called(this, "_ZN7S3243C33v31Ev");}
void  S3243C3 ::v32(){vfunc_called(this, "_ZN7S3243C33v32Ev");}
void  S3243C3 ::v33(){vfunc_called(this, "_ZN7S3243C33v33Ev");}
void  S3243C3 ::v34(){vfunc_called(this, "_ZN7S3243C33v34Ev");}
void  S3243C3 ::v35(){vfunc_called(this, "_ZN7S3243C33v35Ev");}
void  S3243C3 ::v36(){vfunc_called(this, "_ZN7S3243C33v36Ev");}
void  S3243C3 ::v37(){vfunc_called(this, "_ZN7S3243C33v37Ev");}
void  S3243C3 ::v38(){vfunc_called(this, "_ZN7S3243C33v38Ev");}
void  S3243C3 ::v39(){vfunc_called(this, "_ZN7S3243C33v39Ev");}
void  S3243C3 ::v40(){vfunc_called(this, "_ZN7S3243C33v40Ev");}
void  S3243C3 ::v41(){vfunc_called(this, "_ZN7S3243C33v41Ev");}
void  S3243C3 ::v42(){vfunc_called(this, "_ZN7S3243C33v42Ev");}
void  S3243C3 ::v43(){vfunc_called(this, "_ZN7S3243C33v43Ev");}
void  S3243C3 ::v44(){vfunc_called(this, "_ZN7S3243C33v44Ev");}
void  S3243C3 ::v45(){vfunc_called(this, "_ZN7S3243C33v45Ev");}
void  S3243C3 ::v46(){vfunc_called(this, "_ZN7S3243C33v46Ev");}
void  S3243C3 ::v47(){vfunc_called(this, "_ZN7S3243C33v47Ev");}
void  S3243C3 ::v48(){vfunc_called(this, "_ZN7S3243C33v48Ev");}
void  S3243C3 ::v49(){vfunc_called(this, "_ZN7S3243C33v49Ev");}
void  S3243C3 ::v50(){vfunc_called(this, "_ZN7S3243C33v50Ev");}
void  S3243C3 ::v51(){vfunc_called(this, "_ZN7S3243C33v51Ev");}
void  S3243C3 ::v52(){vfunc_called(this, "_ZN7S3243C33v52Ev");}
void  S3243C3 ::v53(){vfunc_called(this, "_ZN7S3243C33v53Ev");}
void  S3243C3 ::v54(){vfunc_called(this, "_ZN7S3243C33v54Ev");}
void  S3243C3 ::v55(){vfunc_called(this, "_ZN7S3243C33v55Ev");}
void  S3243C3 ::v56(){vfunc_called(this, "_ZN7S3243C33v56Ev");}
void  S3243C3 ::v57(){vfunc_called(this, "_ZN7S3243C33v57Ev");}
void  S3243C3 ::v58(){vfunc_called(this, "_ZN7S3243C33v58Ev");}
void  S3243C3 ::v59(){vfunc_called(this, "_ZN7S3243C33v59Ev");}
void  S3243C3 ::v60(){vfunc_called(this, "_ZN7S3243C33v60Ev");}
void  S3243C3 ::v61(){vfunc_called(this, "_ZN7S3243C33v61Ev");}
void  S3243C3 ::v62(){vfunc_called(this, "_ZN7S3243C33v62Ev");}
void  S3243C3 ::v63(){vfunc_called(this, "_ZN7S3243C33v63Ev");}
void  S3243C3 ::v64(){vfunc_called(this, "_ZN7S3243C33v64Ev");}
void  S3243C3 ::v65(){vfunc_called(this, "_ZN7S3243C33v65Ev");}
void  S3243C3 ::v66(){vfunc_called(this, "_ZN7S3243C33v66Ev");}
void  S3243C3 ::v67(){vfunc_called(this, "_ZN7S3243C33v67Ev");}
S3243C3 ::S3243C3(){ note_ctor("S3243C3", this);} // tgen

static void Test_S3243C3()
{
  extern Class_Descriptor cd_S3243C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3243C3, buf);
    S3243C3 *dp, &lv = *(dp=new (buf) S3243C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3243C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3243C3)");
    check_field_offset(lv, s3243c3f0, ABISELECT(8,4), "S3243C3.s3243c3f0");
    check_field_offset(lv, s3243c3f1, ABISELECT(16,8), "S3243C3.s3243c3f1");
    check_field_offset(lv, s3243c3f2, ABISELECT(24,16), "S3243C3.s3243c3f2");
    check_field_offset(lv, s3243c3f3, ABISELECT(56,32), "S3243C3.s3243c3f3");
    check_field_offset(lv, s3243c3f4, ABISELECT(64,40), "S3243C3.s3243c3f4");
    check_field_offset(lv, s3243c3f5, ABISELECT(72,44), "S3243C3.s3243c3f5");
    check_field_offset(lv, s3243c3f6, ABISELECT(80,52), "S3243C3.s3243c3f6");
    test_class_info(&lv, &cd_S3243C3);
    dp->~S3243C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3243C3(Test_S3243C3, "S3243C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3243C3C1Ev();
extern void _ZN7S3243C3D1Ev();
Name_Map name_map_S3243C3[] = {
  NSPAIR(_ZN7S3243C3C1Ev),
  NSPAIR(_ZN7S3243C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3243C3[];
extern void _ZN7S3243C3D1Ev();
extern void _ZN7S3243C3D0Ev();
extern void _ZN7S3243C32v4Ev();
extern void _ZN7S3243C32v5Ev();
extern void _ZN7S3243C32v6Ev();
extern void _ZN7S3243C32v7Ev();
extern void _ZN7S3243C32v8Ev();
extern void _ZN7S3243C32v9Ev();
extern void _ZN7S3243C33v10Ev();
extern void _ZN7S3243C33v11Ev();
extern void _ZN7S3243C33v12Ev();
extern void _ZN7S3243C33v13Ev();
extern void _ZN7S3243C33v14Ev();
extern void _ZN7S3243C33v15Ev();
extern void _ZN7S3243C33v16Ev();
extern void _ZN7S3243C33v17Ev();
extern void _ZN7S3243C33v18Ev();
extern void _ZN7S3243C33v19Ev();
extern void _ZN7S3243C33v20Ev();
extern void _ZN7S3243C33v21Ev();
extern void _ZN7S3243C33v22Ev();
extern void _ZN7S3243C33v23Ev();
extern void _ZN7S3243C33v24Ev();
extern void _ZN7S3243C33v25Ev();
extern void _ZN7S3243C33v26Ev();
extern void _ZN7S3243C33v27Ev();
extern void _ZN7S3243C33v28Ev();
extern void _ZN7S3243C33v29Ev();
extern void _ZN7S3243C33v30Ev();
extern void _ZN7S3243C33v31Ev();
extern void _ZN7S3243C33v32Ev();
extern void _ZN7S3243C33v33Ev();
extern void _ZN7S3243C33v34Ev();
extern void _ZN7S3243C33v35Ev();
extern void _ZN7S3243C33v36Ev();
extern void _ZN7S3243C33v37Ev();
extern void _ZN7S3243C33v38Ev();
extern void _ZN7S3243C33v39Ev();
extern void _ZN7S3243C33v40Ev();
extern void _ZN7S3243C33v41Ev();
extern void _ZN7S3243C33v42Ev();
extern void _ZN7S3243C33v43Ev();
extern void _ZN7S3243C33v44Ev();
extern void _ZN7S3243C33v45Ev();
extern void _ZN7S3243C33v46Ev();
extern void _ZN7S3243C33v47Ev();
extern void _ZN7S3243C33v48Ev();
extern void _ZN7S3243C33v49Ev();
extern void _ZN7S3243C33v50Ev();
extern void _ZN7S3243C33v51Ev();
extern void _ZN7S3243C33v52Ev();
extern void _ZN7S3243C33v53Ev();
extern void _ZN7S3243C33v54Ev();
extern void _ZN7S3243C33v55Ev();
extern void _ZN7S3243C33v56Ev();
extern void _ZN7S3243C33v57Ev();
extern void _ZN7S3243C33v58Ev();
extern void _ZN7S3243C33v59Ev();
extern void _ZN7S3243C33v60Ev();
extern void _ZN7S3243C33v61Ev();
extern void _ZN7S3243C33v62Ev();
extern void _ZN7S3243C33v63Ev();
extern void _ZN7S3243C33v64Ev();
extern void _ZN7S3243C33v65Ev();
extern void _ZN7S3243C33v66Ev();
extern void _ZN7S3243C33v67Ev();
static  VTBL_ENTRY vtc_S3243C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3243C3[0]),
  (VTBL_ENTRY)&_ZN7S3243C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3243C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v67Ev,
};
extern VTBL_ENTRY _ZTI7S3243C3[];
extern  VTBL_ENTRY _ZTV7S3243C3[];
Class_Descriptor cd_S3243C3 = {  "S3243C3", // class name
  0,0,//no base classes
  &(vtc_S3243C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3243C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3243C3),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  S3243C7  : S1604C11_nt {
};
//SIG(-1 S3243C7) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3243C7()
{
  extern Class_Descriptor cd_S3243C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3243C7, buf);
    S3243C7 &lv = *(new (buf) S3243C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3243C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3243C7)");
    check_base_class_offset(lv, (S1604C11_nt*), 0, "S3243C7");
    test_class_info(&lv, &cd_S3243C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3243C7(Test_S3243C7, "S3243C7", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3243C6()
{
  extern Class_Descriptor cd_S3243C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3243C6, buf);
    S3243C6 &lv = *(new (buf) S3243C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3243C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3243C6)");
    check_base_class_offset(lv, (S1604C11_nt*)(S3243C7*), 0, "S3243C6");
    check_base_class_offset(lv, (S3243C7*), 0, "S3243C6");
    test_class_info(&lv, &cd_S3243C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3243C6(Test_S3243C6, "S3243C6", ABISELECT(16,12));

#else // __cplusplus

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



//skip512 S3243C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S1604C11_nt;
extern Class_Descriptor cd_S3243C7;
extern Class_Descriptor cd_S3243C6;
static Base_Class bases_S3243C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1604C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3243C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3243C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3243C2_nt  : S3243C3 {
  int s3243c2f0[2];
  unsigned int s3243c2f1:1;
  unsigned int s3243c2f2:1;
  void *s3243c2f3;
  ::S3243C5_nt s3243c2f4;
  virtual  ~S3243C2_nt(); // _ZN10S3243C2_ntD1Ev
  virtual void  v68(); // _ZN10S3243C2_nt3v68Ev
  virtual void  v69(); // _ZN10S3243C2_nt3v69Ev
  virtual void  v70(); // _ZN10S3243C2_nt3v70Ev
  virtual void  v71(); // _ZN10S3243C2_nt3v71Ev
  virtual void  v72(); // _ZN10S3243C2_nt3v72Ev
  virtual void  v73(); // _ZN10S3243C2_nt3v73Ev
  virtual void  v74(); // _ZN10S3243C2_nt3v74Ev
  virtual void  v75(); // _ZN10S3243C2_nt3v75Ev
  virtual void  v76(); // _ZN10S3243C2_nt3v76Ev
  virtual void  v77(); // _ZN10S3243C2_nt3v77Ev
  virtual void  v78(); // _ZN10S3243C2_nt3v78Ev
  virtual void  v79(); // _ZN10S3243C2_nt3v79Ev
  virtual void  v80(); // _ZN10S3243C2_nt3v80Ev
  S3243C2_nt(); // tgen
};
//SIG(-1 S3243C2_nt) C1{ BC2{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fi[2] Fi:1 Fi:1 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}}}


 S3243C2_nt ::~S3243C2_nt(){ note_dtor("S3243C2_nt", this);}
void  S3243C2_nt ::v68(){vfunc_called(this, "_ZN10S3243C2_nt3v68Ev");}
void  S3243C2_nt ::v69(){vfunc_called(this, "_ZN10S3243C2_nt3v69Ev");}
void  S3243C2_nt ::v70(){vfunc_called(this, "_ZN10S3243C2_nt3v70Ev");}
void  S3243C2_nt ::v71(){vfunc_called(this, "_ZN10S3243C2_nt3v71Ev");}
void  S3243C2_nt ::v72(){vfunc_called(this, "_ZN10S3243C2_nt3v72Ev");}
void  S3243C2_nt ::v73(){vfunc_called(this, "_ZN10S3243C2_nt3v73Ev");}
void  S3243C2_nt ::v74(){vfunc_called(this, "_ZN10S3243C2_nt3v74Ev");}
void  S3243C2_nt ::v75(){vfunc_called(this, "_ZN10S3243C2_nt3v75Ev");}
void  S3243C2_nt ::v76(){vfunc_called(this, "_ZN10S3243C2_nt3v76Ev");}
void  S3243C2_nt ::v77(){vfunc_called(this, "_ZN10S3243C2_nt3v77Ev");}
void  S3243C2_nt ::v78(){vfunc_called(this, "_ZN10S3243C2_nt3v78Ev");}
void  S3243C2_nt ::v79(){vfunc_called(this, "_ZN10S3243C2_nt3v79Ev");}
void  S3243C2_nt ::v80(){vfunc_called(this, "_ZN10S3243C2_nt3v80Ev");}
S3243C2_nt ::S3243C2_nt(){ note_ctor("S3243C2_nt", this);} // tgen

//skip512 S3243C2_nt

#else // __cplusplus

extern void _ZN10S3243C2_ntC1Ev();
extern void _ZN10S3243C2_ntD1Ev();
Name_Map name_map_S3243C2_nt[] = {
  NSPAIR(_ZN10S3243C2_ntC1Ev),
  NSPAIR(_ZN10S3243C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3243C3;
extern VTBL_ENTRY _ZTI7S3243C3[];
extern  VTBL_ENTRY _ZTV7S3243C3[];
static Base_Class bases_S3243C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3243C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3243C2_nt[];
extern void _ZN10S3243C2_ntD1Ev();
extern void _ZN10S3243C2_ntD0Ev();
extern void _ZN7S3243C32v4Ev();
extern void _ZN7S3243C32v5Ev();
extern void _ZN7S3243C32v6Ev();
extern void _ZN7S3243C32v7Ev();
extern void _ZN7S3243C32v8Ev();
extern void _ZN7S3243C32v9Ev();
extern void _ZN7S3243C33v10Ev();
extern void _ZN7S3243C33v11Ev();
extern void _ZN7S3243C33v12Ev();
extern void _ZN7S3243C33v13Ev();
extern void _ZN7S3243C33v14Ev();
extern void _ZN7S3243C33v15Ev();
extern void _ZN7S3243C33v16Ev();
extern void _ZN7S3243C33v17Ev();
extern void _ZN7S3243C33v18Ev();
extern void _ZN7S3243C33v19Ev();
extern void _ZN7S3243C33v20Ev();
extern void _ZN7S3243C33v21Ev();
extern void _ZN7S3243C33v22Ev();
extern void _ZN7S3243C33v23Ev();
extern void _ZN7S3243C33v24Ev();
extern void _ZN7S3243C33v25Ev();
extern void _ZN7S3243C33v26Ev();
extern void _ZN7S3243C33v27Ev();
extern void _ZN7S3243C33v28Ev();
extern void _ZN7S3243C33v29Ev();
extern void _ZN7S3243C33v30Ev();
extern void _ZN7S3243C33v31Ev();
extern void _ZN7S3243C33v32Ev();
extern void _ZN7S3243C33v33Ev();
extern void _ZN7S3243C33v34Ev();
extern void _ZN7S3243C33v35Ev();
extern void _ZN7S3243C33v36Ev();
extern void _ZN7S3243C33v37Ev();
extern void _ZN7S3243C33v38Ev();
extern void _ZN7S3243C33v39Ev();
extern void _ZN7S3243C33v40Ev();
extern void _ZN7S3243C33v41Ev();
extern void _ZN7S3243C33v42Ev();
extern void _ZN7S3243C33v43Ev();
extern void _ZN7S3243C33v44Ev();
extern void _ZN7S3243C33v45Ev();
extern void _ZN7S3243C33v46Ev();
extern void _ZN7S3243C33v47Ev();
extern void _ZN7S3243C33v48Ev();
extern void _ZN7S3243C33v49Ev();
extern void _ZN7S3243C33v50Ev();
extern void _ZN7S3243C33v51Ev();
extern void _ZN7S3243C33v52Ev();
extern void _ZN7S3243C33v53Ev();
extern void _ZN7S3243C33v54Ev();
extern void _ZN7S3243C33v55Ev();
extern void _ZN7S3243C33v56Ev();
extern void _ZN7S3243C33v57Ev();
extern void _ZN7S3243C33v58Ev();
extern void _ZN7S3243C33v59Ev();
extern void _ZN7S3243C33v60Ev();
extern void _ZN7S3243C33v61Ev();
extern void _ZN7S3243C33v62Ev();
extern void _ZN7S3243C33v63Ev();
extern void _ZN7S3243C33v64Ev();
extern void _ZN7S3243C33v65Ev();
extern void _ZN7S3243C33v66Ev();
extern void _ZN7S3243C33v67Ev();
extern void _ZN10S3243C2_nt3v68Ev();
extern void _ZN10S3243C2_nt3v69Ev();
extern void _ZN10S3243C2_nt3v70Ev();
extern void _ZN10S3243C2_nt3v71Ev();
extern void _ZN10S3243C2_nt3v72Ev();
extern void _ZN10S3243C2_nt3v73Ev();
extern void _ZN10S3243C2_nt3v74Ev();
extern void _ZN10S3243C2_nt3v75Ev();
extern void _ZN10S3243C2_nt3v76Ev();
extern void _ZN10S3243C2_nt3v77Ev();
extern void _ZN10S3243C2_nt3v78Ev();
extern void _ZN10S3243C2_nt3v79Ev();
extern void _ZN10S3243C2_nt3v80Ev();
static  VTBL_ENTRY vtc_S3243C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3243C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3243C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v67Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v80Ev,
};
extern VTBL_ENTRY _ZTI10S3243C2_nt[];
VTBL_ENTRY *P__ZTI10S3243C2_nt = _ZTI10S3243C2_nt; 
extern  VTBL_ENTRY _ZTV10S3243C2_nt[];
Class_Descriptor cd_S3243C2_nt = {  "S3243C2_nt", // class name
  bases_S3243C2_nt, 1,
  &(vtc_S3243C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI10S3243C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3243C2_nt),81, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3243C1  : S3243C2_nt {
  int s3243c1f0[4];
  ::S3243C5_nt s3243c1f1;
  virtual  ~S3243C1(); // _ZN7S3243C1D1Ev
  virtual void  v1(); // _ZN7S3243C12v1Ev
  virtual void  v2(); // _ZN7S3243C12v2Ev
  virtual void  v3(); // _ZN7S3243C12v3Ev
  S3243C1(); // tgen
};
//SIG(1 S3243C1) 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 Fi[2] Fi:1 Fi:1 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}}} vd v1 v2 v3 Fi[4] FC5}


 S3243C1 ::~S3243C1(){ note_dtor("S3243C1", this);}
void  S3243C1 ::v1(){vfunc_called(this, "_ZN7S3243C12v1Ev");}
void  S3243C1 ::v2(){vfunc_called(this, "_ZN7S3243C12v2Ev");}
void  S3243C1 ::v3(){vfunc_called(this, "_ZN7S3243C12v3Ev");}
S3243C1 ::S3243C1(){ note_ctor("S3243C1", this);} // tgen

static void Test_S3243C1()
{
  extern Class_Descriptor cd_S3243C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,30)];
    init_test(&cd_S3243C1, buf);
    S3243C1 *dp, &lv = *(dp=new (buf) S3243C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,116), "sizeof(S3243C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3243C1)");
    check_base_class_offset(lv, (S3243C3*)(S3243C2_nt*), 0, "S3243C1");
    check_base_class_offset(lv, (S3243C2_nt*), 0, "S3243C1");
    check_field_offset(lv, s3243c1f0, ABISELECT(136,88), "S3243C1.s3243c1f0");
    check_field_offset(lv, s3243c1f1, ABISELECT(152,104), "S3243C1.s3243c1f1");
    test_class_info(&lv, &cd_S3243C1);
    dp->~S3243C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3243C1(Test_S3243C1, "S3243C1", ABISELECT(168,116));

#else // __cplusplus

extern void _ZN7S3243C1C1Ev();
extern void _ZN7S3243C1D1Ev();
Name_Map name_map_S3243C1[] = {
  NSPAIR(_ZN7S3243C1C1Ev),
  NSPAIR(_ZN7S3243C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3243C3;
extern VTBL_ENTRY _ZTI7S3243C3[];
extern  VTBL_ENTRY _ZTV7S3243C3[];
extern Class_Descriptor cd_S3243C2_nt;
extern VTBL_ENTRY _ZTI10S3243C2_nt[];
extern  VTBL_ENTRY _ZTV10S3243C2_nt[];
static Base_Class bases_S3243C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3243C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3243C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3243C1[];
extern void _ZN7S3243C1D1Ev();
extern void _ZN7S3243C1D0Ev();
extern void _ZN7S3243C32v4Ev();
extern void _ZN7S3243C32v5Ev();
extern void _ZN7S3243C32v6Ev();
extern void _ZN7S3243C32v7Ev();
extern void _ZN7S3243C32v8Ev();
extern void _ZN7S3243C32v9Ev();
extern void _ZN7S3243C33v10Ev();
extern void _ZN7S3243C33v11Ev();
extern void _ZN7S3243C33v12Ev();
extern void _ZN7S3243C33v13Ev();
extern void _ZN7S3243C33v14Ev();
extern void _ZN7S3243C33v15Ev();
extern void _ZN7S3243C33v16Ev();
extern void _ZN7S3243C33v17Ev();
extern void _ZN7S3243C33v18Ev();
extern void _ZN7S3243C33v19Ev();
extern void _ZN7S3243C33v20Ev();
extern void _ZN7S3243C33v21Ev();
extern void _ZN7S3243C33v22Ev();
extern void _ZN7S3243C33v23Ev();
extern void _ZN7S3243C33v24Ev();
extern void _ZN7S3243C33v25Ev();
extern void _ZN7S3243C33v26Ev();
extern void _ZN7S3243C33v27Ev();
extern void _ZN7S3243C33v28Ev();
extern void _ZN7S3243C33v29Ev();
extern void _ZN7S3243C33v30Ev();
extern void _ZN7S3243C33v31Ev();
extern void _ZN7S3243C33v32Ev();
extern void _ZN7S3243C33v33Ev();
extern void _ZN7S3243C33v34Ev();
extern void _ZN7S3243C33v35Ev();
extern void _ZN7S3243C33v36Ev();
extern void _ZN7S3243C33v37Ev();
extern void _ZN7S3243C33v38Ev();
extern void _ZN7S3243C33v39Ev();
extern void _ZN7S3243C33v40Ev();
extern void _ZN7S3243C33v41Ev();
extern void _ZN7S3243C33v42Ev();
extern void _ZN7S3243C33v43Ev();
extern void _ZN7S3243C33v44Ev();
extern void _ZN7S3243C33v45Ev();
extern void _ZN7S3243C33v46Ev();
extern void _ZN7S3243C33v47Ev();
extern void _ZN7S3243C33v48Ev();
extern void _ZN7S3243C33v49Ev();
extern void _ZN7S3243C33v50Ev();
extern void _ZN7S3243C33v51Ev();
extern void _ZN7S3243C33v52Ev();
extern void _ZN7S3243C33v53Ev();
extern void _ZN7S3243C33v54Ev();
extern void _ZN7S3243C33v55Ev();
extern void _ZN7S3243C33v56Ev();
extern void _ZN7S3243C33v57Ev();
extern void _ZN7S3243C33v58Ev();
extern void _ZN7S3243C33v59Ev();
extern void _ZN7S3243C33v60Ev();
extern void _ZN7S3243C33v61Ev();
extern void _ZN7S3243C33v62Ev();
extern void _ZN7S3243C33v63Ev();
extern void _ZN7S3243C33v64Ev();
extern void _ZN7S3243C33v65Ev();
extern void _ZN7S3243C33v66Ev();
extern void _ZN7S3243C33v67Ev();
extern void _ZN10S3243C2_nt3v68Ev();
extern void _ZN10S3243C2_nt3v69Ev();
extern void _ZN10S3243C2_nt3v70Ev();
extern void _ZN10S3243C2_nt3v71Ev();
extern void _ZN10S3243C2_nt3v72Ev();
extern void _ZN10S3243C2_nt3v73Ev();
extern void _ZN10S3243C2_nt3v74Ev();
extern void _ZN10S3243C2_nt3v75Ev();
extern void _ZN10S3243C2_nt3v76Ev();
extern void _ZN10S3243C2_nt3v77Ev();
extern void _ZN10S3243C2_nt3v78Ev();
extern void _ZN10S3243C2_nt3v79Ev();
extern void _ZN10S3243C2_nt3v80Ev();
extern void _ZN7S3243C12v1Ev();
extern void _ZN7S3243C12v2Ev();
extern void _ZN7S3243C12v3Ev();
static  VTBL_ENTRY vtc_S3243C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3243C1[0]),
  (VTBL_ENTRY)&_ZN7S3243C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3243C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3243C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3243C33v67Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3243C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN7S3243C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3243C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3243C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S3243C1[];
extern  VTBL_ENTRY _ZTV7S3243C1[];
Class_Descriptor cd_S3243C1 = {  "S3243C1", // class name
  bases_S3243C1, 2,
  &(vtc_S3243C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,116), // object size
  NSPAIRA(_ZTI7S3243C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3243C1),84, //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  S11608C3_nt  {
  void *s11608c3f0;
  int s11608c3f1;
};
//SIG(-1 S11608C3_nt) C1{ Fp Fi}



//skip512 S11608C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C2  {
  int s11608c2f0[3];
  ::S11608C3_nt s11608c2f1;
};
//SIG(-1 S11608C2) C1{ Fi[3] FC2{ Fp Fi}}



static void Test_S11608C2()
{
  {
    init_simple_test("S11608C2");
    S11608C2 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S11608C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C2)");
    check_field_offset(lv, s11608c2f0, 0, "S11608C2.s11608c2f0");
    check_field_offset(lv, s11608c2f1, ABISELECT(16,12), "S11608C2.s11608c2f1");
  }
}
static Arrange_To_Call_Me vS11608C2(Test_S11608C2, "S11608C2", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C6_nt  {
  int s11608c6f0;
};
//SIG(-1 S11608C6_nt) C1{ Fi}



//skip512 S11608C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C7  {
  int s11608c7f0;
  int s11608c7f1;
  int s11608c7f2;
  void *s11608c7f3;
  int s11608c7f4;
};
//SIG(-1 S11608C7) C1{ Fi[3] Fp Fi}



static void Test_S11608C7()
{
  {
    init_simple_test("S11608C7");
    S11608C7 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S11608C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C7)");
    check_field_offset(lv, s11608c7f0, 0, "S11608C7.s11608c7f0");
    check_field_offset(lv, s11608c7f1, 4, "S11608C7.s11608c7f1");
    check_field_offset(lv, s11608c7f2, 8, "S11608C7.s11608c7f2");
    check_field_offset(lv, s11608c7f3, ABISELECT(16,12), "S11608C7.s11608c7f3");
    check_field_offset(lv, s11608c7f4, ABISELECT(24,16), "S11608C7.s11608c7f4");
  }
}
static Arrange_To_Call_Me vS11608C7(Test_S11608C7, "S11608C7", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C8  {
  __tsi64 s11608c8f0;
  __tsi64 s11608c8f1;
  __tsi64 s11608c8f2;
  __tsi64 s11608c8f3;
  __tsi64 s11608c8f4;
  __tsi64 s11608c8f5;
};
//SIG(-1 S11608C8) C1{ FL[6]}



static void Test_S11608C8()
{
  {
    init_simple_test("S11608C8");
    S11608C8 lv;
    check2(sizeof(lv), 48, "sizeof(S11608C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C8)");
    check_field_offset(lv, s11608c8f0, 0, "S11608C8.s11608c8f0");
    check_field_offset(lv, s11608c8f1, 8, "S11608C8.s11608c8f1");
    check_field_offset(lv, s11608c8f2, 16, "S11608C8.s11608c8f2");
    check_field_offset(lv, s11608c8f3, 24, "S11608C8.s11608c8f3");
    check_field_offset(lv, s11608c8f4, 32, "S11608C8.s11608c8f4");
    check_field_offset(lv, s11608c8f5, 40, "S11608C8.s11608c8f5");
  }
}
static Arrange_To_Call_Me vS11608C8(Test_S11608C8, "S11608C8", 48);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C5  {
  int s11608c5f0;
  ::S11608C6_nt s11608c5f1;
  int s11608c5f2;
  ::S11608C7 s11608c5f3;
  ::S11608C8 s11608c5f4;
  int s11608c5f5;
  int s11608c5f6;
  int s11608c5f7;
};
//SIG(-1 S11608C5) C1{ Fi FC2{ Fi} Fi FC3{ Fi[3] Fp Fi} FC4{ FL[6]} Fi[3]}



static void Test_S11608C5()
{
  {
    init_simple_test("S11608C5");
    S11608C5 lv;
    check2(sizeof(lv), ABISELECT(112,92), "sizeof(S11608C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C5)");
    check_field_offset(lv, s11608c5f0, 0, "S11608C5.s11608c5f0");
    check_field_offset(lv, s11608c5f1, 4, "S11608C5.s11608c5f1");
    check_field_offset(lv, s11608c5f2, 8, "S11608C5.s11608c5f2");
    check_field_offset(lv, s11608c5f3, ABISELECT(16,12), "S11608C5.s11608c5f3");
    check_field_offset(lv, s11608c5f4, ABISELECT(48,32), "S11608C5.s11608c5f4");
    check_field_offset(lv, s11608c5f5, ABISELECT(96,80), "S11608C5.s11608c5f5");
    check_field_offset(lv, s11608c5f6, ABISELECT(100,84), "S11608C5.s11608c5f6");
    check_field_offset(lv, s11608c5f7, ABISELECT(104,88), "S11608C5.s11608c5f7");
  }
}
static Arrange_To_Call_Me vS11608C5(Test_S11608C5, "S11608C5", ABISELECT(112,92));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C10  {
  __tsi64 s11608c10f0;
  __tsi64 s11608c10f1;
  __tsi64 s11608c10f2;
  __tsi64 s11608c10f3;
  short s11608c10f4;
  short s11608c10f5;
  short s11608c10f6;
  short s11608c10f7;
};
//SIG(-1 S11608C10) C1{ FL[4] Fs[4]}



static void Test_S11608C10()
{
  {
    init_simple_test("S11608C10");
    S11608C10 lv;
    check2(sizeof(lv), 40, "sizeof(S11608C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C10)");
    check_field_offset(lv, s11608c10f0, 0, "S11608C10.s11608c10f0");
    check_field_offset(lv, s11608c10f1, 8, "S11608C10.s11608c10f1");
    check_field_offset(lv, s11608c10f2, 16, "S11608C10.s11608c10f2");
    check_field_offset(lv, s11608c10f3, 24, "S11608C10.s11608c10f3");
    check_field_offset(lv, s11608c10f4, 32, "S11608C10.s11608c10f4");
    check_field_offset(lv, s11608c10f5, 34, "S11608C10.s11608c10f5");
    check_field_offset(lv, s11608c10f6, 36, "S11608C10.s11608c10f6");
    check_field_offset(lv, s11608c10f7, 38, "S11608C10.s11608c10f7");
  }
}
static Arrange_To_Call_Me vS11608C10(Test_S11608C10, "S11608C10", 40);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C9  {
  ::S11608C5 s11608c9f0;
  ::S11608C10 s11608c9f1;
};
//SIG(1 S11608C9) C1{ FC2{ Fi FC3{ Fi} Fi FC4{ Fi[3] Fp Fi} FC5{ FL[6]} Fi[3]} FC6{ FL[4] Fs[4]}}



static void Test_S11608C9()
{
  {
    init_simple_test("S11608C9");
    S11608C9 lv;
    check2(sizeof(lv), ABISELECT(152,132), "sizeof(S11608C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C9)");
    check_field_offset(lv, s11608c9f0, 0, "S11608C9.s11608c9f0");
    check_field_offset(lv, s11608c9f1, ABISELECT(112,92), "S11608C9.s11608c9f1");
  }
}
static Arrange_To_Call_Me vS11608C9(Test_S11608C9, "S11608C9", ABISELECT(152,132));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C11  {
  ::S11608C5 s11608c11f0;
  void *s11608c11f1;
};
//SIG(1 S11608C11) C1{ FC2{ Fi FC3{ Fi} Fi FC4{ Fi[3] Fp Fi} FC5{ FL[6]} Fi[3]} Fp}



static void Test_S11608C11()
{
  {
    init_simple_test("S11608C11");
    S11608C11 lv;
    check2(sizeof(lv), ABISELECT(120,96), "sizeof(S11608C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C11)");
    check_field_offset(lv, s11608c11f0, 0, "S11608C11.s11608c11f0");
    check_field_offset(lv, s11608c11f1, ABISELECT(112,92), "S11608C11.s11608c11f1");
  }
}
static Arrange_To_Call_Me vS11608C11(Test_S11608C11, "S11608C11", ABISELECT(120,96));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C14  {
  __tsi64 s11608c14f0;
  ::S11608C10 s11608c14f1;
};
//SIG(1 S11608C14) C1{ FL FC2{ FL[4] Fs[4]}}



static void Test_S11608C14()
{
  {
    init_simple_test("S11608C14");
    S11608C14 lv;
    check2(sizeof(lv), 48, "sizeof(S11608C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C14)");
    check_field_offset(lv, s11608c14f0, 0, "S11608C14.s11608c14f0");
    check_field_offset(lv, s11608c14f1, 8, "S11608C14.s11608c14f1");
  }
}
static Arrange_To_Call_Me vS11608C14(Test_S11608C14, "S11608C14", 48);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C13  {
  ::S11608C5 s11608c13f0;
  int s11608c13f1;
  int s11608c13f2;
  void *s11608c13f3;
  ::S11608C14 s11608c13f4[2];
};
//SIG(-1 S11608C13) C1{ FC2{ Fi FC3{ Fi} Fi FC4{ Fi[3] Fp Fi} FC5{ FL[6]} Fi[3]} Fi[2] Fp FC6{ FL FC7{ FL[4] Fs[4]}}[2]}



static void Test_S11608C13()
{
  {
    init_simple_test("S11608C13");
    S11608C13 lv;
    check2(sizeof(lv), ABISELECT(224,200), "sizeof(S11608C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C13)");
    check_field_offset(lv, s11608c13f0, 0, "S11608C13.s11608c13f0");
    check_field_offset(lv, s11608c13f1, ABISELECT(112,92), "S11608C13.s11608c13f1");
    check_field_offset(lv, s11608c13f2, ABISELECT(116,96), "S11608C13.s11608c13f2");
    check_field_offset(lv, s11608c13f3, ABISELECT(120,100), "S11608C13.s11608c13f3");
    check_field_offset(lv, s11608c13f4, ABISELECT(128,104), "S11608C13.s11608c13f4");
  }
}
static Arrange_To_Call_Me vS11608C13(Test_S11608C13, "S11608C13", ABISELECT(224,200));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C17_nt  {
  int s11608c17f0;
  int s11608c17f1;
};
//SIG(-1 S11608C17_nt) C1{ Fi[2]}



//skip512 S11608C17_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C16  {
  ::S11608C13 s11608c16f0;
  ::S11608C17_nt s11608c16f1;
  ::S11608C17_nt s11608c16f2;
};
//SIG(1 S11608C16) C1{ FC2{ FC3{ Fi FC4{ Fi} Fi FC5{ Fi[3] Fp Fi} FC6{ FL[6]} Fi[3]} Fi[2] Fp FC7{ FL FC8{ FL[4] Fs[4]}}[2]} FC9{ Fi[2]} FC9}



static void Test_S11608C16()
{
  {
    init_simple_test("S11608C16");
    S11608C16 lv;
    check2(sizeof(lv), ABISELECT(240,216), "sizeof(S11608C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C16)");
    check_field_offset(lv, s11608c16f0, 0, "S11608C16.s11608c16f0");
    check_field_offset(lv, s11608c16f1, ABISELECT(224,200), "S11608C16.s11608c16f1");
    check_field_offset(lv, s11608c16f2, ABISELECT(232,208), "S11608C16.s11608c16f2");
  }
}
static Arrange_To_Call_Me vS11608C16(Test_S11608C16, "S11608C16", ABISELECT(240,216));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C18  {
  ::S11608C13 s11608c18f0;
  ::S11608C17_nt s11608c18f1;
  int s11608c18f2;
  ::S11608C17_nt s11608c18f3;
  int s11608c18f4;
};
//SIG(1 S11608C18) C1{ FC2{ FC3{ Fi FC4{ Fi} Fi FC5{ Fi[3] Fp Fi} FC6{ FL[6]} Fi[3]} Fi[2] Fp FC7{ FL FC8{ FL[4] Fs[4]}}[2]} FC9{ Fi[2]} Fi FC9 Fi}



static void Test_S11608C18()
{
  {
    init_simple_test("S11608C18");
    S11608C18 lv;
    check2(sizeof(lv), ABISELECT(248,224), "sizeof(S11608C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C18)");
    check_field_offset(lv, s11608c18f0, 0, "S11608C18.s11608c18f0");
    check_field_offset(lv, s11608c18f1, ABISELECT(224,200), "S11608C18.s11608c18f1");
    check_field_offset(lv, s11608c18f2, ABISELECT(232,208), "S11608C18.s11608c18f2");
    check_field_offset(lv, s11608c18f3, ABISELECT(236,212), "S11608C18.s11608c18f3");
    check_field_offset(lv, s11608c18f4, ABISELECT(244,220), "S11608C18.s11608c18f4");
  }
}
static Arrange_To_Call_Me vS11608C18(Test_S11608C18, "S11608C18", ABISELECT(248,224));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S11608C12  {
  ::S11608C13 s11608c12f0;
  ::S11608C16 s11608c12f1;
  ::S11608C18 s11608c12f2;
};
//SIG(1 S11608C12) U1{ FC2{ FC3{ Fi FC4{ Fi} Fi FC5{ Fi Fi Fi Fp Fi} FC6{ FL FL FL FL FL FL} Fi Fi Fi} Fi Fi Fp FC7{ FL FC8{ FL FL FL FL Fs Fs Fs Fs}}[2]} FC9{ FC2 FC10{ Fi Fi} FC10} FC11{ FC2 FC10 Fi FC10 Fi}}

#endif // __cplusplus
#ifdef __cplusplus

union  S11608C4  {
  int s11608c4f0;
  ::S11608C5 s11608c4f1;
  ::S11608C9 s11608c4f2;
  ::S11608C11 s11608c4f3;
  ::S11608C12 s11608c4f4;
};
//SIG(1 S11608C4) U1{ Fi FC2{ Fi FC3{ Fi} Fi FC4{ Fi Fi Fi Fp Fi} FC5{ FL FL FL FL FL FL} Fi Fi Fi} FC6{ FC2 FC7{ FL FL FL FL Fs Fs Fs Fs}} FC8{ FC2 Fp} FU9{ FC10{ FC2 Fi Fi Fp FC11{ FL FC7}[2]} FC12{ FC10 FC13{ Fi Fi} FC13} FC14{ FC10 FC13 Fi FC13 Fi}}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S11608C20  {
  ::S11608C17_nt s11608c20f0;
  ::S11608C17_nt s11608c20f1;
};
//SIG(-1 S11608C20) C1{ FC2{ Fi[2]} FC2}



static void Test_S11608C20()
{
  {
    init_simple_test("S11608C20");
    S11608C20 lv;
    check2(sizeof(lv), 16, "sizeof(S11608C20)");
    check2(__alignof__(lv), 4, "__alignof__(S11608C20)");
    check_field_offset(lv, s11608c20f0, 0, "S11608C20.s11608c20f0");
    check_field_offset(lv, s11608c20f1, 8, "S11608C20.s11608c20f1");
  }
}
static Arrange_To_Call_Me vS11608C20(Test_S11608C20, "S11608C20", 16);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C23_nt  {
  void *s11608c23f0;
  void *s11608c23f1;
};
//SIG(-1 S11608C23_nt) C1{ Fp[2]}



//skip512 S11608C23_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C22  {
  ::S11608C23_nt s11608c22f0;
  int s11608c22f1;
  int s11608c22f2;
  int s11608c22f3;
  int s11608c22f4;
  void *s11608c22f5;
  void *s11608c22f6;
};
//SIG(-1 S11608C22) C1{ FC2{ Fp[2]} Fi[4] Fp[2]}



static void Test_S11608C22()
{
  {
    init_simple_test("S11608C22");
    S11608C22 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S11608C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C22)");
    check_field_offset(lv, s11608c22f0, 0, "S11608C22.s11608c22f0");
    check_field_offset(lv, s11608c22f1, ABISELECT(16,8), "S11608C22.s11608c22f1");
    check_field_offset(lv, s11608c22f2, ABISELECT(20,12), "S11608C22.s11608c22f2");
    check_field_offset(lv, s11608c22f3, ABISELECT(24,16), "S11608C22.s11608c22f3");
    check_field_offset(lv, s11608c22f4, ABISELECT(28,20), "S11608C22.s11608c22f4");
    check_field_offset(lv, s11608c22f5, ABISELECT(32,24), "S11608C22.s11608c22f5");
    check_field_offset(lv, s11608c22f6, ABISELECT(40,28), "S11608C22.s11608c22f6");
  }
}
static Arrange_To_Call_Me vS11608C22(Test_S11608C22, "S11608C22", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C21  {
  ::S11608C22 s11608c21f0;
  char s11608c21f1[28];
  ::S11608C17_nt s11608c21f2[56];
};
//SIG(-1 S11608C21) C1{ FC2{ FC3{ Fp[2]} Fi[4] Fp[2]} Fc[28] FC4{ Fi[2]}[56]}



static void Test_S11608C21()
{
  {
    init_simple_test("S11608C21");
    S11608C21 lv;
    check2(sizeof(lv), ABISELECT(528,508), "sizeof(S11608C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C21)");
    check_field_offset(lv, s11608c21f0, 0, "S11608C21.s11608c21f0");
    check_field_offset(lv, s11608c21f1, ABISELECT(48,32), "S11608C21.s11608c21f1");
    check_field_offset(lv, s11608c21f2, ABISELECT(76,60), "S11608C21.s11608c21f2");
  }
}
static Arrange_To_Call_Me vS11608C21(Test_S11608C21, "S11608C21", ABISELECT(528,508));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C19  {
  ::S11608C17_nt s11608c19f0;
  ::S11608C17_nt s11608c19f1;
  unsigned int s11608c19f2:1;
  unsigned int s11608c19f3:1;
  unsigned int s11608c19f4:1;
  unsigned int s11608c19f5:1;
  unsigned int s11608c19f6:1;
  unsigned int s11608c19f7:1;
  ::S11608C20 s11608c19f8;
  ::S11608C21 s11608c19f9;
};
//SIG(-1 S11608C19) C1{ FC2{ Fi[2]} FC2 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC3{ FC2 FC2} FC4{ FC5{ FC6{ Fp[2]} Fi[4] Fp[2]} Fc[28] FC2[56]}}



static void Test_S11608C19()
{
  {
    init_simple_test("S11608C19");
    static S11608C19 lv;
    check2(sizeof(lv), ABISELECT(568,544), "sizeof(S11608C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C19)");
    check_field_offset(lv, s11608c19f0, 0, "S11608C19.s11608c19f0");
    check_field_offset(lv, s11608c19f1, 8, "S11608C19.s11608c19f1");
    set_bf_and_test(lv, s11608c19f2, 16, 0, 1, 1, "S11608C19");
    set_bf_and_test(lv, s11608c19f3, 16, 1, 1, 1, "S11608C19");
    set_bf_and_test(lv, s11608c19f4, 16, 2, 1, 1, "S11608C19");
    set_bf_and_test(lv, s11608c19f5, 16, 3, 1, 1, "S11608C19");
    set_bf_and_test(lv, s11608c19f6, 16, 4, 1, 1, "S11608C19");
    set_bf_and_test(lv, s11608c19f7, 16, 5, 1, 1, "S11608C19");
    check_field_offset(lv, s11608c19f8, 20, "S11608C19.s11608c19f8");
    check_field_offset(lv, s11608c19f9, ABISELECT(40,36), "S11608C19.s11608c19f9");
  }
}
static Arrange_To_Call_Me vS11608C19(Test_S11608C19, "S11608C19", ABISELECT(568,544));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C24  {
  __tsi64 s11608c24f0;
  int s11608c24f1;
  int s11608c24f2;
  __tsi64 s11608c24f3;
  void *s11608c24f4;
  int s11608c24f5;
  __tsi64 s11608c24f6;
};
//SIG(-1 S11608C24) C1{ FL Fi[2] FL Fp Fi FL}



static void Test_S11608C24()
{
  {
    init_simple_test("S11608C24");
    S11608C24 lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S11608C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C24)");
    check_field_offset(lv, s11608c24f0, 0, "S11608C24.s11608c24f0");
    check_field_offset(lv, s11608c24f1, 8, "S11608C24.s11608c24f1");
    check_field_offset(lv, s11608c24f2, 12, "S11608C24.s11608c24f2");
    check_field_offset(lv, s11608c24f3, 16, "S11608C24.s11608c24f3");
    check_field_offset(lv, s11608c24f4, 24, "S11608C24.s11608c24f4");
    check_field_offset(lv, s11608c24f5, ABISELECT(32,28), "S11608C24.s11608c24f5");
    check_field_offset(lv, s11608c24f6, ABISELECT(40,32), "S11608C24.s11608c24f6");
  }
}
static Arrange_To_Call_Me vS11608C24(Test_S11608C24, "S11608C24", ABISELECT(48,40));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11608C1  {
  ::S11608C2 s11608c1f0;
  ::S11608C4 s11608c1f1;
  ::S11608C19 s11608c1f2;
  ::S11608C24 s11608c1f3;
  ::S11608C8 s11608c1f4;
  ::S11608C8 s11608c1f5;
  __tsi64 s11608c1f6;
  int s11608c1f7;
};
//SIG(1 S11608C1) C1{ FC2{ Fi[3] FC3{ Fp Fi}} FU4{ Fi FC5{ Fi FC6{ Fi} Fi FC7{ Fi Fi Fi Fp Fi} FC8{ FL FL FL FL FL FL} Fi Fi Fi} FC9{ FC5 FC10{ FL FL FL FL Fs Fs Fs Fs}} FC11{ FC5 Fp} FU12{ FC13{ FC5 Fi Fi Fp FC14{ FL FC10}[2]} FC15{ FC13 FC16{ Fi Fi} FC16} FC17{ FC13 FC16 Fi FC16 Fi}}} FC18{ FC16 FC16 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC19{ FC16 FC16} FC20{ FC21{ FC22{ Fp Fp} Fi Fi Fi Fi Fp Fp} Fc[28] FC16[56]}} FC23{ FL Fi Fi FL Fp Fi FL} FC8 FC8 FL Fi}



static void Test_S11608C1()
{
  {
    init_simple_test("S11608C1");
    static S11608C1 lv;
    check2(sizeof(lv), ABISELECT(1008,936), "sizeof(S11608C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11608C1)");
    check_field_offset(lv, s11608c1f0, 0, "S11608C1.s11608c1f0");
    check_field_offset(lv, s11608c1f1, ABISELECT(32,20), "S11608C1.s11608c1f1");
    check_field_offset(lv, s11608c1f2, ABISELECT(280,244), "S11608C1.s11608c1f2");
    check_field_offset(lv, s11608c1f3, ABISELECT(848,788), "S11608C1.s11608c1f3");
    check_field_offset(lv, s11608c1f4, ABISELECT(896,828), "S11608C1.s11608c1f4");
    check_field_offset(lv, s11608c1f5, ABISELECT(944,876), "S11608C1.s11608c1f5");
    check_field_offset(lv, s11608c1f6, ABISELECT(992,924), "S11608C1.s11608c1f6");
    check_field_offset(lv, s11608c1f7, ABISELECT(1000,932), "S11608C1.s11608c1f7");
  }
}
static Arrange_To_Call_Me vS11608C1(Test_S11608C1, "S11608C1", ABISELECT(1008,936));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11606C21  {
  ::S11608C22 s11606c21f0;
  char s11606c21f1[27];
  ::S11608C17_nt s11606c21f2[54];
};
//SIG(-1 S11606C21) C1{ FC2{ FC3{ Fp[2]} Fi[4] Fp[2]} Fc[27] FC4{ Fi[2]}[54]}



static void Test_S11606C21()
{
  {
    init_simple_test("S11606C21");
    S11606C21 lv;
    check2(sizeof(lv), ABISELECT(512,492), "sizeof(S11606C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11606C21)");
    check_field_offset(lv, s11606c21f0, 0, "S11606C21.s11606c21f0");
    check_field_offset(lv, s11606c21f1, ABISELECT(48,32), "S11606C21.s11606c21f1");
    check_field_offset(lv, s11606c21f2, ABISELECT(76,60), "S11606C21.s11606c21f2");
  }
}
static Arrange_To_Call_Me vS11606C21(Test_S11606C21, "S11606C21", ABISELECT(512,492));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11606C19  {
  ::S11608C17_nt s11606c19f0;
  ::S11608C17_nt s11606c19f1;
  unsigned int s11606c19f2:1;
  unsigned int s11606c19f3:1;
  unsigned int s11606c19f4:1;
  unsigned int s11606c19f5:1;
  unsigned int s11606c19f6:1;
  unsigned int s11606c19f7:1;
  ::S11608C20 s11606c19f8;
  ::S11606C21 s11606c19f9;
};
//SIG(-1 S11606C19) C1{ FC2{ Fi[2]} FC2 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC3{ FC2 FC2} FC4{ FC5{ FC6{ Fp[2]} Fi[4] Fp[2]} Fc[27] FC2[54]}}



static void Test_S11606C19()
{
  {
    init_simple_test("S11606C19");
    static S11606C19 lv;
    check2(sizeof(lv), ABISELECT(552,528), "sizeof(S11606C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11606C19)");
    check_field_offset(lv, s11606c19f0, 0, "S11606C19.s11606c19f0");
    check_field_offset(lv, s11606c19f1, 8, "S11606C19.s11606c19f1");
    set_bf_and_test(lv, s11606c19f2, 16, 0, 1, 1, "S11606C19");
    set_bf_and_test(lv, s11606c19f3, 16, 1, 1, 1, "S11606C19");
    set_bf_and_test(lv, s11606c19f4, 16, 2, 1, 1, "S11606C19");
    set_bf_and_test(lv, s11606c19f5, 16, 3, 1, 1, "S11606C19");
    set_bf_and_test(lv, s11606c19f6, 16, 4, 1, 1, "S11606C19");
    set_bf_and_test(lv, s11606c19f7, 16, 5, 1, 1, "S11606C19");
    check_field_offset(lv, s11606c19f8, 20, "S11606C19.s11606c19f8");
    check_field_offset(lv, s11606c19f9, ABISELECT(40,36), "S11606C19.s11606c19f9");
  }
}
static Arrange_To_Call_Me vS11606C19(Test_S11606C19, "S11606C19", ABISELECT(552,528));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11606C1  {
  ::S11608C2 s11606c1f0;
  ::S11608C4 s11606c1f1;
  ::S11606C19 s11606c1f2;
  ::S11608C24 s11606c1f3;
  ::S11608C8 s11606c1f4;
  ::S11608C8 s11606c1f5;
  __tsi64 s11606c1f6;
  int s11606c1f7;
};
//SIG(1 S11606C1) C1{ FC2{ Fi[3] FC3{ Fp Fi}} FU4{ Fi FC5{ Fi FC6{ Fi} Fi FC7{ Fi Fi Fi Fp Fi} FC8{ FL FL FL FL FL FL} Fi Fi Fi} FC9{ FC5 FC10{ FL FL FL FL Fs Fs Fs Fs}} FC11{ FC5 Fp} FU12{ FC13{ FC5 Fi Fi Fp FC14{ FL FC10}[2]} FC15{ FC13 FC16{ Fi Fi} FC16} FC17{ FC13 FC16 Fi FC16 Fi}}} FC18{ FC16 FC16 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC19{ FC16 FC16} FC20{ FC21{ FC22{ Fp Fp} Fi Fi Fi Fi Fp Fp} Fc[27] FC16[54]}} FC23{ FL Fi Fi FL Fp Fi FL} FC8 FC8 FL Fi}



static void Test_S11606C1()
{
  {
    init_simple_test("S11606C1");
    static S11606C1 lv;
    check2(sizeof(lv), ABISELECT(992,920), "sizeof(S11606C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11606C1)");
    check_field_offset(lv, s11606c1f0, 0, "S11606C1.s11606c1f0");
    check_field_offset(lv, s11606c1f1, ABISELECT(32,20), "S11606C1.s11606c1f1");
    check_field_offset(lv, s11606c1f2, ABISELECT(280,244), "S11606C1.s11606c1f2");
    check_field_offset(lv, s11606c1f3, ABISELECT(832,772), "S11606C1.s11606c1f3");
    check_field_offset(lv, s11606c1f4, ABISELECT(880,812), "S11606C1.s11606c1f4");
    check_field_offset(lv, s11606c1f5, ABISELECT(928,860), "S11606C1.s11606c1f5");
    check_field_offset(lv, s11606c1f6, ABISELECT(976,908), "S11606C1.s11606c1f6");
    check_field_offset(lv, s11606c1f7, ABISELECT(984,916), "S11606C1.s11606c1f7");
  }
}
static Arrange_To_Call_Me vS11606C1(Test_S11606C1, "S11606C1", ABISELECT(992,920));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3339C6  {
  virtual void  v10(); // _ZN7S3339C63v10Ev
  virtual void  v11(); // _ZN7S3339C63v11Ev
  virtual void  v12(); // _ZN7S3339C63v12Ev
  virtual void  v13(); // _ZN7S3339C63v13Ev
  ~S3339C6(); // tgen
  S3339C6(); // tgen
};
//SIG(-1 S3339C6) C1{ v1 v2 v3 v4}


void  S3339C6 ::v10(){vfunc_called(this, "_ZN7S3339C63v10Ev");}
void  S3339C6 ::v11(){vfunc_called(this, "_ZN7S3339C63v11Ev");}
void  S3339C6 ::v12(){vfunc_called(this, "_ZN7S3339C63v12Ev");}
void  S3339C6 ::v13(){vfunc_called(this, "_ZN7S3339C63v13Ev");}
S3339C6 ::~S3339C6(){ note_dtor("S3339C6", this);} // tgen
S3339C6 ::S3339C6(){ note_ctor("S3339C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3339C6C1Ev();
extern void _ZN7S3339C6D1Ev();
Name_Map name_map_S3339C6[] = {
  NSPAIR(_ZN7S3339C6C1Ev),
  NSPAIR(_ZN7S3339C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3339C6[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY vtc_S3339C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C6[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
Class_Descriptor cd_S3339C6 = {  "S3339C6", // class name
  0,0,//no base classes
  &(vtc_S3339C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3339C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3339C6),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  S3339C5  : S3339C6 {
  ::S3339C6 s3339c5f0;
  virtual void  v14(); // _ZN7S3339C53v14Ev
  virtual void  v15(); // _ZN7S3339C53v15Ev
  ~S3339C5(); // tgen
  S3339C5(); // tgen
};
//SIG(-1 S3339C5) C1{ BC2{ v3 v4 v5 v6} v1 v2 FC2}


void  S3339C5 ::v14(){vfunc_called(this, "_ZN7S3339C53v14Ev");}
void  S3339C5 ::v15(){vfunc_called(this, "_ZN7S3339C53v15Ev");}
S3339C5 ::~S3339C5(){ note_dtor("S3339C5", this);} // tgen
S3339C5 ::S3339C5(){ note_ctor("S3339C5", this);} // tgen

static void Test_S3339C5()
{
  extern Class_Descriptor cd_S3339C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3339C5, buf);
    S3339C5 *dp, &lv = *(dp=new (buf) S3339C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3339C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3339C5)");
    check_base_class_offset(lv, (S3339C6*), 0, "S3339C5");
    check_field_offset(lv, s3339c5f0, ABISELECT(8,4), "S3339C5.s3339c5f0");
    test_class_info(&lv, &cd_S3339C5);
    dp->~S3339C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C5(Test_S3339C5, "S3339C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3339C5C1Ev();
extern void _ZN7S3339C5D1Ev();
Name_Map name_map_S3339C5[] = {
  NSPAIR(_ZN7S3339C5C1Ev),
  NSPAIR(_ZN7S3339C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
static Base_Class bases_S3339C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3339C5[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY vtc_S3339C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C5[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
Class_Descriptor cd_S3339C5 = {  "S3339C5", // class name
  bases_S3339C5, 1,
  &(vtc_S3339C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3339C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3339C5),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  S3339C4  : S3339C5 , S3339C6 {
  int s3339c4f0;
  virtual  ~S3339C4(); // _ZN7S3339C4D1Ev
  virtual void  v19(); // _ZN7S3339C43v19Ev
  virtual void  v20(); // _ZN7S3339C43v20Ev
  virtual void  v21(); // _ZN7S3339C43v21Ev
  virtual void  v22(); // _ZN7S3339C43v22Ev
  virtual void  v23(); // _ZN7S3339C43v23Ev
  virtual void  v24(); // _ZN7S3339C43v24Ev
  S3339C4(); // tgen
};
//SIG(-1 S3339C4) C1{ BC2{ BC3{ v7 v8 v9 v10} v11 v12 FC3} BC3 vd v1 v2 v3 v4 v5 v6 Fi}


 S3339C4 ::~S3339C4(){ note_dtor("S3339C4", this);}
void  S3339C4 ::v19(){vfunc_called(this, "_ZN7S3339C43v19Ev");}
void  S3339C4 ::v20(){vfunc_called(this, "_ZN7S3339C43v20Ev");}
void  S3339C4 ::v21(){vfunc_called(this, "_ZN7S3339C43v21Ev");}
void  S3339C4 ::v22(){vfunc_called(this, "_ZN7S3339C43v22Ev");}
void  S3339C4 ::v23(){vfunc_called(this, "_ZN7S3339C43v23Ev");}
void  S3339C4 ::v24(){vfunc_called(this, "_ZN7S3339C43v24Ev");}
S3339C4 ::S3339C4(){ note_ctor("S3339C4", this);} // tgen

static void Test_S3339C4()
{
  extern Class_Descriptor cd_S3339C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S3339C4, buf);
    S3339C4 *dp, &lv = *(dp=new (buf) S3339C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S3339C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3339C4)");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*), 0, "S3339C4");
    check_base_class_offset(lv, (S3339C5*), 0, "S3339C4");
    /*is_ambiguous_... S3339C4::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*), ABISELECT(16,8), "S3339C4");
    check_field_offset(lv, s3339c4f0, ABISELECT(24,12), "S3339C4.s3339c4f0");
    test_class_info(&lv, &cd_S3339C4);
    dp->~S3339C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C4(Test_S3339C4, "S3339C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S3339C4C1Ev();
extern void _ZN7S3339C4D1Ev();
Name_Map name_map_S3339C4[] = {
  NSPAIR(_ZN7S3339C4C1Ev),
  NSPAIR(_ZN7S3339C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
static Base_Class bases_S3339C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3339C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3339C6,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3339C4[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C4D1Ev();
extern void _ZN7S3339C4D0Ev();
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY vtc_S3339C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C4[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3339C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3339C4[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern VTBL_ENTRY _ZTI7S3339C4[];
extern  VTBL_ENTRY _ZTV7S3339C4[];
Class_Descriptor cd_S3339C4 = {  "S3339C4", // class name
  bases_S3339C4, 3,
  &(vtc_S3339C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S3339C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3339C4),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3339C3  {
  ::S3339C4 s3339c3f0;
  void *s3339c3f1;
  virtual void  v6(); // _ZN7S3339C32v6Ev
  virtual void  v7(); // _ZN7S3339C32v7Ev
  virtual void  v8(); // _ZN7S3339C32v8Ev
  virtual void  v9(); // _ZN7S3339C32v9Ev
  ~S3339C3(); // tgen
  S3339C3(); // tgen
};
//SIG(-1 S3339C3) C1{ v1 v2 v3 v4 FC2{ BC3{ BC4{ v11 v12 v13 v14} v15 v16 FC4} BC4 vd v5 v6 v7 v8 v9 v10 Fi} Fp}


void  S3339C3 ::v6(){vfunc_called(this, "_ZN7S3339C32v6Ev");}
void  S3339C3 ::v7(){vfunc_called(this, "_ZN7S3339C32v7Ev");}
void  S3339C3 ::v8(){vfunc_called(this, "_ZN7S3339C32v8Ev");}
void  S3339C3 ::v9(){vfunc_called(this, "_ZN7S3339C32v9Ev");}
S3339C3 ::~S3339C3(){ note_dtor("S3339C3", this);} // tgen
S3339C3 ::S3339C3(){ note_ctor("S3339C3", this);} // tgen

static void Test_S3339C3()
{
  extern Class_Descriptor cd_S3339C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S3339C3, buf);
    S3339C3 *dp, &lv = *(dp=new (buf) S3339C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S3339C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3339C3)");
    check_field_offset(lv, s3339c3f0, ABISELECT(8,4), "S3339C3.s3339c3f0");
    check_field_offset(lv, s3339c3f1, ABISELECT(40,20), "S3339C3.s3339c3f1");
    test_class_info(&lv, &cd_S3339C3);
    dp->~S3339C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C3(Test_S3339C3, "S3339C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S3339C3C1Ev();
extern void _ZN7S3339C3D1Ev();
Name_Map name_map_S3339C3[] = {
  NSPAIR(_ZN7S3339C3C1Ev),
  NSPAIR(_ZN7S3339C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3339C3[];
extern void _ZN7S3339C32v6Ev();
extern void _ZN7S3339C32v7Ev();
extern void _ZN7S3339C32v8Ev();
extern void _ZN7S3339C32v9Ev();
static  VTBL_ENTRY vtc_S3339C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C3[0]),
  (VTBL_ENTRY)&_ZN7S3339C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S3339C3[];
extern  VTBL_ENTRY _ZTV7S3339C3[];
Class_Descriptor cd_S3339C3 = {  "S3339C3", // class name
  0,0,//no base classes
  &(vtc_S3339C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S3339C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3339C3),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  S3339C8  : virtual S3339C5 {
  ::S3339C5 s3339c8f0;
  long double s3339c8f1;
  virtual  ~S3339C8(); // _ZN7S3339C8D2Ev
  virtual void  v16(); // _ZN7S3339C83v16Ev
  virtual void  v17(); // _ZN7S3339C83v17Ev
  virtual void  v18(); // _ZN7S3339C83v18Ev
  S3339C8(); // tgen
};
//SIG(-1 S3339C8) C1{ VBC2{ BC3{ v4 v5 v6 v7} v8 v9 FC3} vd v1 v2 v3 FC2 FD}


 S3339C8 ::~S3339C8(){ note_dtor("S3339C8", this);}
void  S3339C8 ::v16(){vfunc_called(this, "_ZN7S3339C83v16Ev");}
void  S3339C8 ::v17(){vfunc_called(this, "_ZN7S3339C83v17Ev");}
void  S3339C8 ::v18(){vfunc_called(this, "_ZN7S3339C83v18Ev");}
S3339C8 ::S3339C8(){ note_ctor("S3339C8", this);} // tgen

static void Test_S3339C8()
{
  extern Class_Descriptor cd_S3339C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S3339C8, buf);
    S3339C8 *dp, &lv = *(dp=new (buf) S3339C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S3339C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3339C8)");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*), ABISELECT(48,24), "S3339C8");
    check_base_class_offset(lv, (S3339C5*), ABISELECT(48,24), "S3339C8");
    check_field_offset(lv, s3339c8f0, ABISELECT(8,4), "S3339C8.s3339c8f0");
    check_field_offset(lv, s3339c8f1, ABISELECT(32,12), "S3339C8.s3339c8f1");
    test_class_info(&lv, &cd_S3339C8);
    dp->~S3339C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C8(Test_S3339C8, "S3339C8", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S3339C8C1Ev();
extern void _ZN7S3339C8D2Ev();
Name_Map name_map_S3339C8[] = {
  NSPAIR(_ZN7S3339C8C1Ev),
  NSPAIR(_ZN7S3339C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
static Base_Class bases_S3339C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C6,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(48,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3339C8[];
extern void _ZN7S3339C8D1Ev();
extern void _ZN7S3339C8D0Ev();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY vtc_S3339C8[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern VTBL_ENTRY _ZTV7S3339C8[];
static  VTT_ENTRY vtt_S3339C8[] = {
  {&(_ZTV7S3339C8[3]),  3,22},
  {&(_ZTV7S3339C8[16]),  16,22},
};
extern VTBL_ENTRY _ZTI7S3339C8[];
extern  VTBL_ENTRY _ZTV7S3339C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C8[];
Class_Descriptor cd_S3339C8 = {  "S3339C8", // class name
  bases_S3339C8, 2,
  &(vtc_S3339C8[0]), // expected_vtbl_contents
  &(vtt_S3339C8[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S3339C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3339C8),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3339C8),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3339C10  : virtual S3339C6 , S3339C5 {
  virtual  ~S3339C10(); // _ZN8S3339C10D2Ev
  virtual void  v31(); // _ZN8S3339C103v31Ev
  S3339C10(); // tgen
};
//SIG(-1 S3339C10) C1{ VBC2{ v2 v3 v4 v5} BC3{ BC2 v6 v7 FC2} vd v1}


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

static void Test_S3339C10()
{
  extern Class_Descriptor cd_S3339C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3339C10, buf);
    S3339C10 *dp, &lv = *(dp=new (buf) S3339C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3339C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3339C10)");
    /*is_ambiguous_... S3339C10::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*), ABISELECT(16,8), "S3339C10");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*), 0, "S3339C10");
    check_base_class_offset(lv, (S3339C5*), 0, "S3339C10");
    test_class_info(&lv, &cd_S3339C10);
    dp->~S3339C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C10(Test_S3339C10, "S3339C10", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S3339C10C1Ev();
extern void _ZN8S3339C10D2Ev();
Name_Map name_map_S3339C10[] = {
  NSPAIR(_ZN8S3339C10C1Ev),
  NSPAIR(_ZN8S3339C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
static Base_Class bases_S3339C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C6,    ABISELECT(16,8), //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_S3339C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3339C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S3339C10[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY vtc_S3339C10[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern VTBL_ENTRY _ZTV8S3339C10[];
static  VTT_ENTRY vtt_S3339C10[] = {
  {&(_ZTV8S3339C10[3]),  3,22},
  {&(_ZTV8S3339C10[18]),  18,22},
};
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
Class_Descriptor cd_S3339C10 = {  "S3339C10", // class name
  bases_S3339C10, 3,
  &(vtc_S3339C10[0]), // expected_vtbl_contents
  &(vtt_S3339C10[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S3339C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3339C10),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3339C10),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3339C9  : S3339C5 , S3339C6 {
  ::S3339C10 s3339c9f0;
  ::S20980C10_nt s3339c9f1;
  ::S20980C10_nt s3339c9f2;
  int s3339c9f3;
  virtual void  v25(); // _ZN7S3339C93v25Ev
  virtual void  v26(); // _ZN7S3339C93v26Ev
  virtual void  v27(); // _ZN7S3339C93v27Ev
  virtual void  v28(); // _ZN7S3339C93v28Ev
  ~S3339C9(); // tgen
  S3339C9(); // tgen
};
//SIG(-1 S3339C9) C1{ BC2{ BC3{ v5 v6 v7 v8} v9 v10 FC3} BC3 v1 v2 v3 v4 FC4{ VBC3 BC2 vd v11} FU5{ m} FU5 Fi}


void  S3339C9 ::v25(){vfunc_called(this, "_ZN7S3339C93v25Ev");}
void  S3339C9 ::v26(){vfunc_called(this, "_ZN7S3339C93v26Ev");}
void  S3339C9 ::v27(){vfunc_called(this, "_ZN7S3339C93v27Ev");}
void  S3339C9 ::v28(){vfunc_called(this, "_ZN7S3339C93v28Ev");}
S3339C9 ::~S3339C9(){ note_dtor("S3339C9", this);} // tgen
S3339C9 ::S3339C9(){ note_ctor("S3339C9", this);} // tgen

static void Test_S3339C9()
{
  extern Class_Descriptor cd_S3339C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S3339C9, buf);
    S3339C9 *dp, &lv = *(dp=new (buf) S3339C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S3339C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3339C9)");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*), 0, "S3339C9");
    check_base_class_offset(lv, (S3339C5*), 0, "S3339C9");
    /*is_ambiguous_... S3339C9::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*), ABISELECT(16,8), "S3339C9");
    check_field_offset(lv, s3339c9f0, ABISELECT(24,12), "S3339C9.s3339c9f0");
    check_field_offset(lv, s3339c9f1, ABISELECT(48,24), "S3339C9.s3339c9f1");
    check_field_offset(lv, s3339c9f2, ABISELECT(49,25), "S3339C9.s3339c9f2");
    check_field_offset(lv, s3339c9f3, ABISELECT(52,28), "S3339C9.s3339c9f3");
    test_class_info(&lv, &cd_S3339C9);
    dp->~S3339C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C9(Test_S3339C9, "S3339C9", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S3339C9C1Ev();
extern void _ZN7S3339C9D1Ev();
Name_Map name_map_S3339C9[] = {
  NSPAIR(_ZN7S3339C9C1Ev),
  NSPAIR(_ZN7S3339C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
static Base_Class bases_S3339C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3339C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3339C6,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3339C9[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C93v25Ev();
extern void _ZN7S3339C93v26Ev();
extern void _ZN7S3339C93v27Ev();
extern void _ZN7S3339C93v28Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY vtc_S3339C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C9[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v25Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v26Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v27Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v28Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3339C9[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern VTBL_ENTRY _ZTI7S3339C9[];
extern  VTBL_ENTRY _ZTV7S3339C9[];
Class_Descriptor cd_S3339C9 = {  "S3339C9", // class name
  bases_S3339C9, 3,
  &(vtc_S3339C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S3339C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3339C9),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3339C7  : virtual S3339C8 , S3339C4 , S3339C9 , S3339C5 {
  long double s3339c7f0;
  virtual  ~S3339C7(); // _ZN7S3339C7D2Ev
  S3339C7(); // tgen
};
//SIG(-1 S3339C7) C1{ VBC2{ VBC3{ BC4{ v1 v2 v3 v4} v5 v6 FC4} vd v7 v8 v9 FC3 FD} BC5{ BC3 BC4 vd v10 v11 v12 v13 v14 v15 Fi} BC6{ BC3 BC4 v16 v17 v18 v19 FC7{ VBC4 BC3 vd v20} FU8{ m} FU8 Fi} BC3 vd FD}


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

static void Test_S3339C7()
{
  extern Class_Descriptor cd_S3339C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,26)];
    init_test(&cd_S3339C7, buf);
    S3339C7 *dp, &lv = *(dp=new (buf) S3339C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S3339C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3339C7)");
    /*is_ambiguous_... S3339C7::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*), ABISELECT(176,92), "S3339C7");
    check_base_class_offset(lv, (S3339C5*)(S3339C8*), ABISELECT(176,92), "S3339C7");
    check_base_class_offset(lv, (S3339C8*), ABISELECT(128,68), "S3339C7");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C4*), 0, "S3339C7");
    check_base_class_offset(lv, (S3339C5*)(S3339C4*), 0, "S3339C7");
    /*is_ambiguous_... S3339C4::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C4*), ABISELECT(16,8), "S3339C7");
    check_base_class_offset(lv, (S3339C4*), 0, "S3339C7");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C9*), ABISELECT(32,16), "S3339C7");
    check_base_class_offset(lv, (S3339C5*)(S3339C9*), ABISELECT(32,16), "S3339C7");
    /*is_ambiguous_... S3339C9::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C9*), ABISELECT(48,24), "S3339C7");
    check_base_class_offset(lv, (S3339C9*), ABISELECT(32,16), "S3339C7");
    /*is_ambiguous_... S3339C7::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*), ABISELECT(88,48), "S3339C7");
    /*is_ambiguous_... S3339C7::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*), ABISELECT(88,48), "S3339C7");
    check_field_offset(lv, s3339c7f0, ABISELECT(112,56), "S3339C7.s3339c7f0");
    test_class_info(&lv, &cd_S3339C7);
    dp->~S3339C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C7(Test_S3339C7, "S3339C7", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN7S3339C7C1Ev();
extern void _ZN7S3339C7D2Ev();
Name_Map name_map_S3339C7[] = {
  NSPAIR(_ZN7S3339C7C1Ev),
  NSPAIR(_ZN7S3339C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C8;
extern VTBL_ENTRY _ZTI7S3339C8[];
extern  VTBL_ENTRY _ZTV7S3339C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C8[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C4;
extern VTBL_ENTRY _ZTI7S3339C4[];
extern  VTBL_ENTRY _ZTV7S3339C4[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C9;
extern VTBL_ENTRY _ZTI7S3339C9[];
extern  VTBL_ENTRY _ZTV7S3339C9[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
static Base_Class bases_S3339C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C6,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(176,92), //bcp->offset
    62, //bcp->virtual_function_table_offset
    8, //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
    2, //immediately_derived
  0, 1},
  {&cd_S3339C8,    ABISELECT(128,68), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3339C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3339C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(16,8), //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
    6, //immediately_derived
  0, 0},
  {&cd_S3339C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3339C6,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(48,24), //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3339C9,    ABISELECT(32,16), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3339C6,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(88,48), //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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3339C7[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C7D1Ev();
extern void _ZN7S3339C7D0Ev();
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C93v25Ev();
extern void _ZN7S3339C93v26Ev();
extern void _ZN7S3339C93v27Ev();
extern void _ZN7S3339C93v28Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n32_N7S3339C7D1Ev,_ZTv0_n16_N7S3339C7D1Ev)();
extern void ABISELECT(_ZThn128_N7S3339C7D1Ev,_ZThn68_N7S3339C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3339C7D0Ev,_ZTv0_n16_N7S3339C7D0Ev)();
extern void ABISELECT(_ZThn128_N7S3339C7D0Ev,_ZThn68_N7S3339C7D0Ev)() __attribute__((weak));
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY vtc_S3339C7[] = {
  ABISELECT(176,92),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3339C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v25Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v26Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v27Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v28Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C7D1Ev,_ZTv0_n16_N7S3339C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C7D0Ev,_ZTv0_n16_N7S3339C7D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern VTBL_ENTRY _ZTV7S3339C7[];
extern void _ZN7S3339C8D1Ev();
extern void _ZN7S3339C8D0Ev();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C8__7S3339C7[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C5__7S3339C8__7S3339C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
static  VTT_ENTRY vtt_S3339C7[] = {
  {&(_ZTV7S3339C7[4]),  4,76},
  {&(_ZTV7S3339C7[57]),  57,76},
  {&(_ZTV7S3339C7[70]),  70,76},
  {&(_tg__ZTV7S3339C8__7S3339C7[3]),  3,8},
  {&(_tg__ZTV7S3339C5__7S3339C8__7S3339C7[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S3339C7[];
extern  VTBL_ENTRY _ZTV7S3339C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C7[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C7D0Ev,_ZTv0_n16_N7S3339C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3339C7D0Ev,_ZThn68_N7S3339C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C7D1Ev,_ZTv0_n16_N7S3339C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3339C7D1Ev,_ZThn68_N7S3339C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3339C7 = {  "S3339C7", // class name
  bases_S3339C7, 13,
  &(vtc_S3339C7[0]), // expected_vtbl_contents
  &(vtt_S3339C7[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI7S3339C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3339C7),76, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3339C7),5, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3339C12  {
  int s3339c12f0;
  virtual void  v29(); // _ZN8S3339C123v29Ev
  virtual void  v30(); // _ZN8S3339C123v30Ev
  ~S3339C12(); // tgen
  S3339C12(); // tgen
};
//SIG(-1 S3339C12) C1{ v1 v2 Fi}


void  S3339C12 ::v29(){vfunc_called(this, "_ZN8S3339C123v29Ev");}
void  S3339C12 ::v30(){vfunc_called(this, "_ZN8S3339C123v30Ev");}
S3339C12 ::~S3339C12(){ note_dtor("S3339C12", this);} // tgen
S3339C12 ::S3339C12(){ note_ctor("S3339C12", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S3339C12C1Ev();
extern void _ZN8S3339C12D1Ev();
Name_Map name_map_S3339C12[] = {
  NSPAIR(_ZN8S3339C12C1Ev),
  NSPAIR(_ZN8S3339C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3339C12[];
extern void _ZN8S3339C123v29Ev();
extern void _ZN8S3339C123v30Ev();
static  VTBL_ENTRY vtc_S3339C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C12[0]),
  (VTBL_ENTRY)&_ZN8S3339C123v29Ev,
  (VTBL_ENTRY)&_ZN8S3339C123v30Ev,
};
extern VTBL_ENTRY _ZTI8S3339C12[];
extern  VTBL_ENTRY _ZTV8S3339C12[];
Class_Descriptor cd_S3339C12 = {  "S3339C12", // class name
  0,0,//no base classes
  &(vtc_S3339C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S3339C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3339C12),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  S3339C15  : S3339C4 , S3339C6 , S3339C10 {
  virtual void  v32(); // _ZN8S3339C153v32Ev
  virtual void  v33(); // _ZN8S3339C153v33Ev
  virtual void  v34(); // _ZN8S3339C153v34Ev
  ~S3339C15(); // tgen
  S3339C15(); // tgen
};
//SIG(-1 S3339C15) C1{ BC2{ BC3{ BC4{ v4 v5 v6 v7} v8 v9 FC4} BC4 vd v10 v11 v12 v13 v14 v15 Fi} BC4 BC5{ VBC4 BC3 vd v16} v1 v2 v3}


void  S3339C15 ::v32(){vfunc_called(this, "_ZN8S3339C153v32Ev");}
void  S3339C15 ::v33(){vfunc_called(this, "_ZN8S3339C153v33Ev");}
void  S3339C15 ::v34(){vfunc_called(this, "_ZN8S3339C153v34Ev");}
S3339C15 ::~S3339C15(){ note_dtor("S3339C15", this);} // tgen
S3339C15 ::S3339C15(){ note_ctor("S3339C15", this);} // tgen

static void Test_S3339C15()
{
  extern Class_Descriptor cd_S3339C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S3339C15, buf);
    S3339C15 *dp, &lv = *(dp=new (buf) S3339C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S3339C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3339C15)");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C4*), 0, "S3339C15");
    check_base_class_offset(lv, (S3339C5*)(S3339C4*), 0, "S3339C15");
    /*is_ambiguous_... S3339C4::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C4*), ABISELECT(16,8), "S3339C15");
    check_base_class_offset(lv, (S3339C4*), 0, "S3339C15");
    /*is_ambiguous_... S3339C15::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*), ABISELECT(32,16), "S3339C15");
    /*is_ambiguous_... S3339C10::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*), ABISELECT(56,28), "S3339C15");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*), ABISELECT(40,20), "S3339C15");
    check_base_class_offset(lv, (S3339C5*)(S3339C10*), ABISELECT(40,20), "S3339C15");
    check_base_class_offset(lv, (S3339C10*), ABISELECT(40,20), "S3339C15");
    test_class_info(&lv, &cd_S3339C15);
    dp->~S3339C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C15(Test_S3339C15, "S3339C15", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S3339C15C1Ev();
extern void _ZN8S3339C15D1Ev();
Name_Map name_map_S3339C15[] = {
  NSPAIR(_ZN8S3339C15C1Ev),
  NSPAIR(_ZN8S3339C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C4;
extern VTBL_ENTRY _ZTI7S3339C4[];
extern  VTBL_ENTRY _ZTV7S3339C4[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
static Base_Class bases_S3339C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3339C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3339C6,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3339C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3339C6,    ABISELECT(32,16), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3339C6,    ABISELECT(56,28), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3339C6,    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
    7, //immediately_derived
  0, 0},
  {&cd_S3339C5,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3339C10,    ABISELECT(40,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3339C15[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C15D1Ev();
extern void _ZN8S3339C15D0Ev();
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZThn40_N8S3339C15D1Ev,_ZThn20_N8S3339C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S3339C15D0Ev,_ZThn20_N8S3339C15D0Ev)();
extern void _ZN8S3339C103v31Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY vtc_S3339C15[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C15D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3339C15D1Ev,_ZThn20_N8S3339C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3339C15D0Ev,_ZThn20_N8S3339C15D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern VTBL_ENTRY _ZTV8S3339C15[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__8S3339C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C10__8S3339C15[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
static  VTT_ENTRY vtt_S3339C15[] = {
  {&(_ZTV8S3339C15[3]),  3,54},
  {&(_tg__ZTV8S3339C10__8S3339C15[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C10__8S3339C15[6]),  6,10},
  {&(_ZTV8S3339C15[35]),  35,54},
  {&(_ZTV8S3339C15[50]),  50,54},
};
extern VTBL_ENTRY _ZTI8S3339C15[];
extern  VTBL_ENTRY _ZTV8S3339C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C15[];
Class_Descriptor cd_S3339C15 = {  "S3339C15", // class name
  bases_S3339C15, 9,
  &(vtc_S3339C15[0]), // expected_vtbl_contents
  &(vtt_S3339C15[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S3339C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3339C15),54, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3339C15),5, //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  S3339C14  : S3339C5 , virtual S3339C15 {
  int s3339c14f0;
  void *s3339c14f1[11];
  virtual  ~S3339C14(); // _ZN8S3339C14D2Ev
  virtual void  v35(); // _ZN8S3339C143v35Ev
  virtual void  v36(); // _ZN8S3339C143v36Ev
  virtual void  v37(); // _ZN8S3339C143v37Ev
  virtual void  v38(); // _ZN8S3339C143v38Ev
  S3339C14(); // tgen
};
//SIG(-1 S3339C14) C1{ BC2{ BC3{ v5 v6 v7 v8} v9 v10 FC3} VBC4{ BC5{ BC2 BC3 vd v11 v12 v13 v14 v15 v16 Fi} BC3 BC6{ VBC3 BC2 vd v17} v18 v19 v20} vd v1 v2 v3 v4 Fi Fp[11]}


 S3339C14 ::~S3339C14(){ note_dtor("S3339C14", this);}
void  S3339C14 ::v35(){vfunc_called(this, "_ZN8S3339C143v35Ev");}
void  S3339C14 ::v36(){vfunc_called(this, "_ZN8S3339C143v36Ev");}
void  S3339C14 ::v37(){vfunc_called(this, "_ZN8S3339C143v37Ev");}
void  S3339C14 ::v38(){vfunc_called(this, "_ZN8S3339C143v38Ev");}
S3339C14 ::S3339C14(){ note_ctor("S3339C14", this);} // tgen

static void Test_S3339C14()
{
  extern Class_Descriptor cd_S3339C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[23];
    init_test(&cd_S3339C14, buf);
    S3339C14 *dp, &lv = *(dp=new (buf) S3339C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S3339C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3339C14)");
    /*is_ambiguous_... S3339C14::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*), 0, "S3339C14");
    /*is_ambiguous_... S3339C14::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*), 0, "S3339C14");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C4*)(S3339C15*), ABISELECT(112,56), "S3339C14");
    check_base_class_offset(lv, (S3339C5*)(S3339C4*)(S3339C15*), ABISELECT(112,56), "S3339C14");
    /*is_ambiguous_... S3339C4::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C4*)(S3339C15*), ABISELECT(128,64), "S3339C14");
    check_base_class_offset(lv, (S3339C4*)(S3339C15*), ABISELECT(112,56), "S3339C14");
    /*is_ambiguous_... S3339C15::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C15*), ABISELECT(144,72), "S3339C14");
    /*is_ambiguous_... S3339C10::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*)(S3339C15*), ABISELECT(168,84), "S3339C14");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*)(S3339C15*), ABISELECT(152,76), "S3339C14");
    check_base_class_offset(lv, (S3339C5*)(S3339C10*)(S3339C15*), ABISELECT(152,76), "S3339C14");
    check_base_class_offset(lv, (S3339C10*)(S3339C15*), ABISELECT(152,76), "S3339C14");
    check_base_class_offset(lv, (S3339C15*), ABISELECT(112,56), "S3339C14");
    check_field_offset(lv, s3339c14f0, ABISELECT(16,8), "S3339C14.s3339c14f0");
    check_field_offset(lv, s3339c14f1, ABISELECT(24,12), "S3339C14.s3339c14f1");
    test_class_info(&lv, &cd_S3339C14);
    dp->~S3339C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C14(Test_S3339C14, "S3339C14", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN8S3339C14C1Ev();
extern void _ZN8S3339C14D2Ev();
Name_Map name_map_S3339C14[] = {
  NSPAIR(_ZN8S3339C14C1Ev),
  NSPAIR(_ZN8S3339C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C4;
extern VTBL_ENTRY _ZTI7S3339C4[];
extern  VTBL_ENTRY _ZTV7S3339C4[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
extern Class_Descriptor cd_S3339C15;
extern VTBL_ENTRY _ZTI8S3339C15[];
extern  VTBL_ENTRY _ZTV8S3339C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C15[];
static Base_Class bases_S3339C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3339C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3339C6,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(128,64), //bcp->offset
    53, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3339C4,    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
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(144,72), //bcp->offset
    59, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(168,84), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3339C6,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3339C10,    ABISELECT(152,76), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3339C15,    ABISELECT(112,56), //bcp->offset
    16, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3339C14[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C14D1Ev();
extern void _ZN8S3339C14D0Ev();
extern void _ZN8S3339C143v35Ev();
extern void _ZN8S3339C143v36Ev();
extern void _ZN8S3339C143v37Ev();
extern void _ZN8S3339C143v38Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S3339C14D1Ev,_ZThn56_N8S3339C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S3339C14D0Ev,_ZThn56_N8S3339C14D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn40_n80_N8S3339C14D1Ev,_ZTvn20_n40_N8S3339C14D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S3339C14D0Ev,_ZTvn20_n40_N8S3339C14D0Ev)();
extern void _ZN8S3339C103v31Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY vtc_S3339C14[] = {
  ABISELECT(168,84),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C14D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v35Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v36Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v37Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v38Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(16,8),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C14D1Ev,_ZTvn20_n40_N8S3339C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C14D0Ev,_ZTvn20_n40_N8S3339C14D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern VTBL_ENTRY _ZTV8S3339C14[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C15D1Ev();
extern void _ZN8S3339C15D0Ev();
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C15__8S3339C14[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C15D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C15__8S3339C14[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C108S3339C15__8S3339C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZThn40_N8S3339C15D1Ev,_ZThn20_N8S3339C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S3339C15D0Ev,_ZThn20_N8S3339C15D0Ev)();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__8S3339C15__8S3339C14[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3339C15D1Ev,_ZThn20_N8S3339C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3339C15D0Ev,_ZThn20_N8S3339C15D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__A3__8S3339C15__8S3339C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
static  VTT_ENTRY vtt_S3339C14[] = {
  {&(_ZTV8S3339C14[4]),  4,87},
  {&(_ZTV8S3339C14[36]),  36,87},
  {&(_ZTV8S3339C14[55]),  55,87},
  {&(_ZTV8S3339C14[61]),  61,87},
  {&(_ZTV8S3339C14[68]),  68,87},
  {&(_ZTV8S3339C14[83]),  83,87},
  {&(_tg__ZTV8S3339C15__8S3339C14[3]),  3,20},
  {&(_tg__ZTV8S3339C108S3339C15__8S3339C14[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C108S3339C15__8S3339C14[6]),  6,10},
  {&(_tg__ZTV8S3339C10__8S3339C15__8S3339C14[3]),  3,12},
  {&(_tg__ZTV7S3339C6__A3__8S3339C15__8S3339C14[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S3339C14[];
extern  VTBL_ENTRY _ZTV8S3339C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C14[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3339C14D0Ev,_ZThn56_N8S3339C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3339C14D1Ev,_ZThn56_N8S3339C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3339C14 = {  "S3339C14", // class name
  bases_S3339C14, 12,
  &(vtc_S3339C14[0]), // expected_vtbl_contents
  &(vtt_S3339C14[0]), // expected_vtt_contents
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI8S3339C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3339C14),87, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3339C14),11, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3339C16  : virtual S3339C12 , virtual S3339C10 {
  ~S3339C16(); // tgen
  S3339C16(); // tgen
};
//SIG(-1 S3339C16) C1{ VBC2{ v1 v2 Fi} VBC3{ VBC4{ v3 v4 v5 v6} BC5{ BC4 v7 v8 FC4} vd v9}}


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

static void Test_S3339C16()
{
  extern Class_Descriptor cd_S3339C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S3339C16, buf);
    S3339C16 *dp, &lv = *(dp=new (buf) S3339C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S3339C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3339C16)");
    check_base_class_offset(lv, (S3339C12*), ABISELECT(8,4), "S3339C16");
    /*is_ambiguous_... S3339C10::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*), 0, "S3339C16");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*), ABISELECT(24,12), "S3339C16");
    check_base_class_offset(lv, (S3339C5*)(S3339C10*), ABISELECT(24,12), "S3339C16");
    check_base_class_offset(lv, (S3339C10*), ABISELECT(24,12), "S3339C16");
    test_class_info(&lv, &cd_S3339C16);
    dp->~S3339C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C16(Test_S3339C16, "S3339C16", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S3339C16C1Ev();
extern void _ZN8S3339C16D1Ev();
Name_Map name_map_S3339C16[] = {
  NSPAIR(_ZN8S3339C16C1Ev),
  NSPAIR(_ZN8S3339C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C12;
extern VTBL_ENTRY _ZTI8S3339C12[];
extern  VTBL_ENTRY _ZTV8S3339C12[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
static Base_Class bases_S3339C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C12,    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
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3339C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3339C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3339C10,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3339C16[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN8S3339C16D1Ev();
extern void _ZN8S3339C16D0Ev();
extern void _ZN8S3339C123v29Ev();
extern void _ZN8S3339C123v30Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S3339C16D1Ev,_ZThn12_N8S3339C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S3339C16D0Ev,_ZThn12_N8S3339C16D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY vtc_S3339C16[] = {
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN8S3339C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C16D0Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN8S3339C123v29Ev,
  (VTBL_ENTRY)&_ZN8S3339C123v30Ev,
  0,
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern VTBL_ENTRY _ZTV8S3339C16[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__8S3339C16[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C10__8S3339C16[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
static  VTT_ENTRY vtt_S3339C16[] = {
  {&(_ZTV8S3339C16[9]),  9,41},
  {&(_ZTV8S3339C16[19]),  19,41},
  {&(_ZTV8S3339C16[32]),  32,41},
  {&(_ZTV8S3339C16[9]),  9,41},
  {&(_tg__ZTV8S3339C10__8S3339C16[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C10__8S3339C16[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S3339C16[];
extern  VTBL_ENTRY _ZTV8S3339C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C16[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3339C16D0Ev,_ZThn12_N8S3339C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3339C16D1Ev,_ZThn12_N8S3339C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3339C16 = {  "S3339C16", // class name
  bases_S3339C16, 5,
  &(vtc_S3339C16[0]), // expected_vtbl_contents
  &(vtt_S3339C16[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S3339C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3339C16),41, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3339C16),6, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3339C13  : S3339C10 , S3339C5 , S3339C8 , S3339C14 , virtual S3339C16 {
  virtual  ~S3339C13(); // _ZN8S3339C13D2Ev
  virtual void  v39(); // _ZN8S3339C133v39Ev
  virtual void  v40(); // _ZN8S3339C133v40Ev
  virtual void  v41(); // _ZN8S3339C133v41Ev
  virtual void  v42(); // _ZN8S3339C133v42Ev
  virtual void  v43(); // _ZN8S3339C133v43Ev
  S3339C13(); // tgen
};
//SIG(-1 S3339C13) C1{ BC2{ VBC3{ v6 v7 v8 v9} BC4{ BC3 v10 v11 FC3} vd v12} BC4 BC5{ VBC4 vd v13 v14 v15 FC4 FD} BC6{ BC4 VBC7{ BC8{ BC4 BC3 vd v16 v17 v18 v19 v20 v21 Fi} BC3 BC2 v22 v23 v24} vd v25 v26 v27 v28 Fi Fp[11]} VBC9{ VBC10{ v29 v30 Fi} VBC2} vd v1 v2 v3 v4 v5}


 S3339C13 ::~S3339C13(){ note_dtor("S3339C13", this);}
void  S3339C13 ::v39(){vfunc_called(this, "_ZN8S3339C133v39Ev");}
void  S3339C13 ::v40(){vfunc_called(this, "_ZN8S3339C133v40Ev");}
void  S3339C13 ::v41(){vfunc_called(this, "_ZN8S3339C133v41Ev");}
void  S3339C13 ::v42(){vfunc_called(this, "_ZN8S3339C133v42Ev");}
void  S3339C13 ::v43(){vfunc_called(this, "_ZN8S3339C133v43Ev");}
S3339C13 ::S3339C13(){ note_ctor("S3339C13", this);} // tgen

static void Test_S3339C13()
{
  extern Class_Descriptor cd_S3339C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,39)];
    init_test(&cd_S3339C13, buf);
    S3339C13 *dp, &lv = *(dp=new (buf) S3339C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,152), "sizeof(S3339C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3339C13)");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*), ABISELECT(264,132), "S3339C13");
    /*is_ambiguous_... S3339C10::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*)(S3339C15*), ABISELECT(264,132), "S3339C13");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*), ABISELECT(264,132), "S3339C13");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*), 0, "S3339C13");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C10*), 0, "S3339C13");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C10*), 0, "S3339C13");
    /*is_ambiguous_... S3339C13::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*), ABISELECT(16,8), "S3339C13");
    /*is_ambiguous_... S3339C13::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*), ABISELECT(16,8), "S3339C13");
    /*is_ambiguous_... S3339C13::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*), ABISELECT(192,96), "S3339C13");
    check_base_class_offset(lv, (S3339C5*)(S3339C8*), ABISELECT(192,96), "S3339C13");
    check_base_class_offset(lv, (S3339C8*), ABISELECT(32,16), "S3339C13");
    /*is_ambiguous_... S3339C14::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C14*), ABISELECT(80,40), "S3339C13");
    /*is_ambiguous_... S3339C14::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C14*), ABISELECT(80,40), "S3339C13");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C4*)(S3339C15*), ABISELECT(208,104), "S3339C13");
    check_base_class_offset(lv, (S3339C5*)(S3339C4*)(S3339C15*), ABISELECT(208,104), "S3339C13");
    /*is_ambiguous_... S3339C4::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C4*)(S3339C15*), ABISELECT(224,112), "S3339C13");
    check_base_class_offset(lv, (S3339C4*)(S3339C15*), ABISELECT(208,104), "S3339C13");
    /*is_ambiguous_... S3339C15::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C15*), ABISELECT(240,120), "S3339C13");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*)(S3339C15*), ABISELECT(248,124), "S3339C13");
    check_base_class_offset(lv, (S3339C5*)(S3339C10*)(S3339C15*), ABISELECT(248,124), "S3339C13");
    check_base_class_offset(lv, (S3339C10*)(S3339C15*), ABISELECT(248,124), "S3339C13");
    check_base_class_offset(lv, (S3339C15*)(S3339C14*), ABISELECT(208,104), "S3339C13");
    check_base_class_offset(lv, (S3339C14*), ABISELECT(80,40), "S3339C13");
    check_base_class_offset(lv, (S3339C12*)(S3339C16*), ABISELECT(272,136), "S3339C13");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*), ABISELECT(288,144), "S3339C13");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C10*), ABISELECT(288,144), "S3339C13");
    check_base_class_offset(lv, (S3339C10*)(S3339C16*), ABISELECT(288,144), "S3339C13");
    check_base_class_offset(lv, (S3339C16*), ABISELECT(264,132), "S3339C13");
    test_class_info(&lv, &cd_S3339C13);
    dp->~S3339C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C13(Test_S3339C13, "S3339C13", ABISELECT(304,152));

#else // __cplusplus

extern void _ZN8S3339C13C1Ev();
extern void _ZN8S3339C13D2Ev();
Name_Map name_map_S3339C13[] = {
  NSPAIR(_ZN8S3339C13C1Ev),
  NSPAIR(_ZN8S3339C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C8;
extern VTBL_ENTRY _ZTI7S3339C8[];
extern  VTBL_ENTRY _ZTV7S3339C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C8[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C4;
extern VTBL_ENTRY _ZTI7S3339C4[];
extern  VTBL_ENTRY _ZTV7S3339C4[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
extern Class_Descriptor cd_S3339C15;
extern VTBL_ENTRY _ZTI8S3339C15[];
extern  VTBL_ENTRY _ZTV8S3339C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C15[];
extern Class_Descriptor cd_S3339C14;
extern VTBL_ENTRY _ZTI8S3339C14[];
extern  VTBL_ENTRY _ZTV8S3339C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C14[];
extern Class_Descriptor cd_S3339C12;
extern VTBL_ENTRY _ZTI8S3339C12[];
extern  VTBL_ENTRY _ZTV8S3339C12[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
extern Class_Descriptor cd_S3339C16;
extern VTBL_ENTRY _ZTI8S3339C16[];
extern  VTBL_ENTRY _ZTV8S3339C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C16[];
static Base_Class bases_S3339C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C6,    ABISELECT(264,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3339C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S3339C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    3, //immediately_derived
  0, 0},
  {&cd_S3339C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3339C6,    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
    21, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(16,8), //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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3339C6,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(192,96), //bcp->offset
    54, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3339C8,    ABISELECT(32,16), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3339C6,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(224,112), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3339C4,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(240,120), //bcp->offset
    111, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(248,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(248,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3339C10,    ABISELECT(248,124), //bcp->offset
    117, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3339C15,    ABISELECT(208,104), //bcp->offset
    68, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S3339C14,    ABISELECT(80,40), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3339C12,    ABISELECT(272,136), //bcp->offset
    145, //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
    13, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S3339C6,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(288,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3339C10,    ABISELECT(288,144), //bcp->offset
    151, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S3339C16,    ABISELECT(264,132), //bcp->offset
    129, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3339C13[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C13D1Ev();
extern void _ZN8S3339C13D0Ev();
extern void _ZN8S3339C103v31Ev();
extern void _ZN8S3339C133v39Ev();
extern void _ZN8S3339C133v40Ev();
extern void _ZN8S3339C133v41Ev();
extern void _ZN8S3339C133v42Ev();
extern void _ZN8S3339C133v43Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZThn32_N8S3339C13D1Ev,_ZThn16_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn32_N8S3339C13D0Ev,_ZThn16_N8S3339C13D0Ev)();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZThn80_N8S3339C13D1Ev,_ZThn40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S3339C13D0Ev,_ZThn40_N8S3339C13D0Ev)();
extern void _ZN8S3339C143v35Ev();
extern void _ZN8S3339C143v36Ev();
extern void _ZN8S3339C143v37Ev();
extern void _ZN8S3339C143v38Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn208_N8S3339C13D1Ev,_ZThn104_N8S3339C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev)();
extern void ABISELECT(_ZThn208_N8S3339C13D0Ev,_ZThn104_N8S3339C13D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn40_n80_N8S3339C13D1Ev,_ZTvn20_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S3339C13D0Ev,_ZTvn20_n40_N8S3339C13D0Ev)();
extern void _ZN8S3339C103v31Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn264_N8S3339C13D1Ev,_ZThn132_N8S3339C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev)();
extern void ABISELECT(_ZThn264_N8S3339C13D0Ev,_ZThn132_N8S3339C13D0Ev)() __attribute__((weak));
extern void _ZN8S3339C123v29Ev();
extern void _ZN8S3339C123v30Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn288_N8S3339C13D1Ev,_ZThn144_N8S3339C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev)();
extern void ABISELECT(_ZThn288_N8S3339C13D0Ev,_ZThn144_N8S3339C13D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY vtc_S3339C13[] = {
  ABISELECT(288,144),
  ABISELECT(272,136),
  ABISELECT(264,132),
  ABISELECT(208,104),
  ABISELECT(192,96),
  ABISELECT(264,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v39Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v40Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v41Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v42Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v43Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  ABISELECT(160,80),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3339C13D1Ev,_ZThn16_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3339C13D0Ev,_ZThn16_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
  ABISELECT(184,92),
  ABISELECT(128,64),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3339C13D1Ev,_ZThn40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3339C13D0Ev,_ZThn40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C143v35Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v36Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v37Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v38Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-104),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(16,8),
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C13D1Ev,_ZTvn20_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C13D0Ev,_ZTvn20_n40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  ABISELECT(-264,-132),
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  ABISELECT(-264,-132),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev),
  0,
  0,
  ABISELECT(-272,-136),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN8S3339C123v29Ev,
  (VTBL_ENTRY)&_ZN8S3339C123v30Ev,
  0,
  ABISELECT(-288,-144),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-288,-144),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern VTBL_ENTRY _ZTV8S3339C13[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__A__8S3339C13[] = {
  ABISELECT(264,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C10__A__8S3339C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-264,-132),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C8D1Ev();
extern void _ZN7S3339C8D0Ev();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C8__8S3339C13[] = {
  ABISELECT(160,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C5__7S3339C8__8S3339C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C14D1Ev();
extern void _ZN8S3339C14D0Ev();
extern void _ZN8S3339C143v35Ev();
extern void _ZN8S3339C143v36Ev();
extern void _ZN8S3339C143v37Ev();
extern void _ZN8S3339C143v38Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C14__8S3339C13[] = {
  ABISELECT(184,92),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C14D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v35Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v36Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v37Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v38Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S3339C14D1Ev,_ZThn64_N8S3339C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S3339C14D0Ev,_ZThn64_N8S3339C14D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C15__8S3339C14__8S3339C13[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C67S3339C48S3339C15__A2__8S3339C14__8S3339C13[] = {
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C68S3339C15__A3__8S3339C14__8S3339C13[] = {
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn40_n80_N8S3339C14D1Ev,_ZTvn20_n40_N8S3339C14D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S3339C14D0Ev,_ZTvn20_n40_N8S3339C14D0Ev)();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C15__8S3339C14__8S3339C13[] = {
  ABISELECT(16,8),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C14D1Ev,_ZTvn20_n40_N8S3339C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C14D0Ev,_ZTvn20_n40_N8S3339C14D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__A4__8S3339C14__8S3339C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C15D1Ev();
extern void _ZN8S3339C15D0Ev();
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C15__8S3339C13[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C15D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C15__A1__8S3339C13[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C108S3339C15__A1__8S3339C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZThn40_N8S3339C15D1Ev,_ZThn20_N8S3339C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S3339C15D0Ev,_ZThn20_N8S3339C15D0Ev)();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__8S3339C15__8S3339C13[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3339C15D1Ev,_ZThn20_N8S3339C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3339C15D0Ev,_ZThn20_N8S3339C15D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__A3__8S3339C15__8S3339C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN8S3339C16D1Ev();
extern void _ZN8S3339C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C16__8S3339C13[] = {
  0,
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN8S3339C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C16D0Ev,
};
extern void _ZN8S3339C123v29Ev();
extern void _ZN8S3339C123v30Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C12__8S3339C16__8S3339C13[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN8S3339C123v29Ev,
  (VTBL_ENTRY)&_ZN8S3339C123v30Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev)();
extern void ABISELECT(_ZThn24_N8S3339C16D1Ev,_ZThn12_N8S3339C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev)();
extern void ABISELECT(_ZThn24_N8S3339C16D0Ev,_ZThn12_N8S3339C16D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__8S3339C16__8S3339C13[] = {
  0,
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__A2__8S3339C13[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C10__A2__8S3339C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
static  VTT_ENTRY vtt_S3339C13[] = {
  {&(_ZTV8S3339C13[8]),  8,171},
  {&(_tg__ZTV8S3339C10__A__8S3339C13[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C10__A__8S3339C13[6]),  6,10},
  {&(_tg__ZTV7S3339C8__8S3339C13[3]),  3,8},
  {&(_tg__ZTV7S3339C5__7S3339C8__8S3339C13[8]),  8,14},
  {&(_tg__ZTV8S3339C14__8S3339C13[4]),  4,16},
  {&(_tg__ZTV8S3339C15__8S3339C14__8S3339C13[20]),  20,37},
  {&(_tg__ZTV7S3339C67S3339C48S3339C15__A2__8S3339C14__8S3339C13[2]),  2,6},
  {&(_tg__ZTV7S3339C68S3339C15__A3__8S3339C14__8S3339C13[2]),  2,6},
  {&(_tg__ZTV8S3339C108S3339C15__8S3339C14__8S3339C13[3]),  3,12},
  {&(_tg__ZTV7S3339C6__A4__8S3339C14__8S3339C13[6]),  6,10},
  {&(_ZTV8S3339C13[139]),  139,171},
  {&(_ZTV8S3339C13[33]),  33,171},
  {&(_ZTV8S3339C13[62]),  62,171},
  {&(_ZTV8S3339C13[42]),  42,171},
  {&(_ZTV8S3339C13[88]),  88,171},
  {&(_ZTV8S3339C13[107]),  107,171},
  {&(_ZTV8S3339C13[113]),  113,171},
  {&(_ZTV8S3339C13[120]),  120,171},
  {&(_ZTV8S3339C13[139]),  139,171},
  {&(_ZTV8S3339C13[149]),  149,171},
  {&(_ZTV8S3339C13[162]),  162,171},
  {&(_tg__ZTV8S3339C15__8S3339C13[3]),  3,20},
  {&(_tg__ZTV8S3339C108S3339C15__A1__8S3339C13[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C108S3339C15__A1__8S3339C13[6]),  6,10},
  {&(_tg__ZTV8S3339C10__8S3339C15__8S3339C13[3]),  3,12},
  {&(_tg__ZTV7S3339C6__A3__8S3339C15__8S3339C13[6]),  6,10},
  {&(_tg__ZTV8S3339C16__8S3339C13[9]),  9,15},
  {&(_tg__ZTV8S3339C12__8S3339C16__8S3339C13[4]),  4,6},
  {&(_tg__ZTV8S3339C10__8S3339C16__8S3339C13[11]),  11,20},
  {&(_tg__ZTV8S3339C16__8S3339C13[9]),  9,15},
  {&(_tg__ZTV8S3339C10__A2__8S3339C13[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C10__A2__8S3339C13[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S3339C13[];
extern  VTBL_ENTRY _ZTV8S3339C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C13[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3339C16D0Ev,_ZThn12_N8S3339C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3339C16D1Ev,_ZThn12_N8S3339C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3339C14D0Ev,_ZThn64_N8S3339C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3339C14D1Ev,_ZThn64_N8S3339C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S3339C13D0Ev,_ZThn144_N8S3339C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3339C13D0Ev,_ZThn132_N8S3339C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3339C13D0Ev,_ZThn104_N8S3339C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S3339C13D1Ev,_ZThn144_N8S3339C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3339C13D1Ev,_ZThn132_N8S3339C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3339C13D1Ev,_ZThn104_N8S3339C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3339C13 = {  "S3339C13", // class name
  bases_S3339C13, 26,
  &(vtc_S3339C13[0]), // expected_vtbl_contents
  &(vtt_S3339C13[0]), // expected_vtt_contents
  ABISELECT(304,152), // object size
  NSPAIRA(_ZTI8S3339C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3339C13),171, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3339C13),33, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3339C2  : S3339C3 , virtual S3339C7 , S3339C5 , virtual S3339C12 , virtual S3339C13 {
  virtual  ~S3339C2(); // _ZN7S3339C2D2Ev
  virtual void  v44(); // _ZN7S3339C23v44Ev
  virtual void  v45(); // _ZN7S3339C23v45Ev
  virtual void  v46(); // _ZN7S3339C23v46Ev
  virtual void  v47(); // _ZN7S3339C23v47Ev
  virtual void  v48(); // _ZN7S3339C23v48Ev
  S3339C2(); // tgen
};
//SIG(-1 S3339C2) C1{ BC2{ v6 v7 v8 v9 FC3{ BC4{ BC5{ v10 v11 v12 v13} v14 v15 FC5} BC5 vd v19 v20 v21 v22 v23 v24 Fi} Fp} VBC6{ VBC7{ VBC4 vd v16 v17 v18 FC4 FD} BC3 BC8{ BC4 BC5 v25 v26 v27 v28 FC9{ VBC5 BC4 vd v31} FU10{ m} FU10 Fi} BC4 vd FD} BC4 VBC11{ v29 v30 Fi} VBC12{ BC9 BC4 BC7 BC13{ BC4 VBC14{ BC3 BC5 BC9 v32 v33 v34} vd v35 v36 v37 v38 Fi Fp[11]} VBC15{ VBC11 VBC9} vd v39 v40 v41 v42 v43} vd v1 v2 v3 v4 v5}


 S3339C2 ::~S3339C2(){ note_dtor("S3339C2", this);}
void  S3339C2 ::v44(){vfunc_called(this, "_ZN7S3339C23v44Ev");}
void  S3339C2 ::v45(){vfunc_called(this, "_ZN7S3339C23v45Ev");}
void  S3339C2 ::v46(){vfunc_called(this, "_ZN7S3339C23v46Ev");}
void  S3339C2 ::v47(){vfunc_called(this, "_ZN7S3339C23v47Ev");}
void  S3339C2 ::v48(){vfunc_called(this, "_ZN7S3339C23v48Ev");}
S3339C2 ::S3339C2(){ note_ctor("S3339C2", this);} // tgen

static void Test_S3339C2()
{
  extern Class_Descriptor cd_S3339C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(35,70)];
    init_test(&cd_S3339C2, buf);
    S3339C2 *dp, &lv = *(dp=new (buf) S3339C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(544,276), "sizeof(S3339C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3339C2)");
    check_base_class_offset(lv, (S3339C3*), 0, "S3339C2");
    /*is_ambiguous_... S3339C2::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*), ABISELECT(240,124), "S3339C2");
    /*is_ambiguous_... S3339C2::S3339C8 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C8*), ABISELECT(240,124), "S3339C2");
    check_base_class_offset(lv, (S3339C5*)(S3339C8*)(S3339C13*), ABISELECT(240,124), "S3339C2");
    check_base_class_offset(lv, (S3339C8*)(S3339C7*), ABISELECT(192,100), "S3339C2");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C4*)(S3339C7*), ABISELECT(64,32), "S3339C2");
    check_base_class_offset(lv, (S3339C5*)(S3339C4*)(S3339C7*), ABISELECT(64,32), "S3339C2");
    /*is_ambiguous_... S3339C4::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C4*)(S3339C7*), ABISELECT(80,40), "S3339C2");
    check_base_class_offset(lv, (S3339C4*)(S3339C7*), ABISELECT(64,32), "S3339C2");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C9*)(S3339C7*), ABISELECT(96,48), "S3339C2");
    check_base_class_offset(lv, (S3339C5*)(S3339C9*)(S3339C7*), ABISELECT(96,48), "S3339C2");
    /*is_ambiguous_... S3339C9::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C9*)(S3339C7*), ABISELECT(112,56), "S3339C2");
    check_base_class_offset(lv, (S3339C9*)(S3339C7*), ABISELECT(96,48), "S3339C2");
    /*is_ambiguous_... S3339C7::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C7*), ABISELECT(152,80), "S3339C2");
    /*is_ambiguous_... S3339C7::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C7*), ABISELECT(152,80), "S3339C2");
    check_base_class_offset(lv, (S3339C7*), ABISELECT(64,32), "S3339C2");
    /*is_ambiguous_... S3339C2::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*), ABISELECT(48,24), "S3339C2");
    /*is_ambiguous_... S3339C2::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*), ABISELECT(48,24), "S3339C2");
    check_base_class_offset(lv, (S3339C12*), ABISELECT(256,132), "S3339C2");
    check_base_class_offset(lv, (S3339C12*)(S3339C16*), ABISELECT(256,132), "S3339C2");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*)(S3339C13*), ABISELECT(520,264), "S3339C2");
    /*is_ambiguous_... S3339C10::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*)(S3339C15*), ABISELECT(520,264), "S3339C2");
    /*is_ambiguous_... S3339C2::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*), ABISELECT(520,264), "S3339C2");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*)(S3339C13*), ABISELECT(272,140), "S3339C2");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C10*)(S3339C13*), ABISELECT(272,140), "S3339C2");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C10*)(S3339C13*), ABISELECT(272,140), "S3339C2");
    /*is_ambiguous_... S3339C13::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C13*), ABISELECT(288,148), "S3339C2");
    /*is_ambiguous_... S3339C13::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C13*), ABISELECT(288,148), "S3339C2");
    check_base_class_offset(lv, (S3339C8*)(S3339C13*), ABISELECT(304,156), "S3339C2");
    /*is_ambiguous_... S3339C14::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C14*)(S3339C13*), ABISELECT(352,180), "S3339C2");
    /*is_ambiguous_... S3339C14::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C14*)(S3339C13*), ABISELECT(352,180), "S3339C2");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C4*)(S3339C15*), ABISELECT(464,236), "S3339C2");
    check_base_class_offset(lv, (S3339C5*)(S3339C4*)(S3339C15*), ABISELECT(464,236), "S3339C2");
    /*is_ambiguous_... S3339C4::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C4*)(S3339C15*), ABISELECT(480,244), "S3339C2");
    check_base_class_offset(lv, (S3339C4*)(S3339C15*), ABISELECT(464,236), "S3339C2");
    /*is_ambiguous_... S3339C15::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C15*), ABISELECT(496,252), "S3339C2");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*)(S3339C15*), ABISELECT(504,256), "S3339C2");
    check_base_class_offset(lv, (S3339C5*)(S3339C10*)(S3339C15*), ABISELECT(504,256), "S3339C2");
    check_base_class_offset(lv, (S3339C10*)(S3339C15*), ABISELECT(504,256), "S3339C2");
    check_base_class_offset(lv, (S3339C15*)(S3339C14*)(S3339C13*), ABISELECT(464,236), "S3339C2");
    check_base_class_offset(lv, (S3339C14*)(S3339C13*), ABISELECT(352,180), "S3339C2");
    /*is_ambiguous_... S3339C2::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*), ABISELECT(528,268), "S3339C2");
    /*is_ambiguous_... S3339C2::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C10*), ABISELECT(528,268), "S3339C2");
    check_base_class_offset(lv, (S3339C10*)(S3339C16*), ABISELECT(528,268), "S3339C2");
    check_base_class_offset(lv, (S3339C16*)(S3339C13*), ABISELECT(520,264), "S3339C2");
    check_base_class_offset(lv, (S3339C13*), ABISELECT(272,140), "S3339C2");
    test_class_info(&lv, &cd_S3339C2);
    dp->~S3339C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C2(Test_S3339C2, "S3339C2", ABISELECT(544,276));

#else // __cplusplus

extern void _ZN7S3339C2C1Ev();
extern void _ZN7S3339C2D2Ev();
Name_Map name_map_S3339C2[] = {
  NSPAIR(_ZN7S3339C2C1Ev),
  NSPAIR(_ZN7S3339C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C3;
extern VTBL_ENTRY _ZTI7S3339C3[];
extern  VTBL_ENTRY _ZTV7S3339C3[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C8;
extern VTBL_ENTRY _ZTI7S3339C8[];
extern  VTBL_ENTRY _ZTV7S3339C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C8[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C4;
extern VTBL_ENTRY _ZTI7S3339C4[];
extern  VTBL_ENTRY _ZTV7S3339C4[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C9;
extern VTBL_ENTRY _ZTI7S3339C9[];
extern  VTBL_ENTRY _ZTV7S3339C9[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C7;
extern VTBL_ENTRY _ZTI7S3339C7[];
extern  VTBL_ENTRY _ZTV7S3339C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C7[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C12;
extern VTBL_ENTRY _ZTI8S3339C12[];
extern  VTBL_ENTRY _ZTV8S3339C12[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C8;
extern VTBL_ENTRY _ZTI7S3339C8[];
extern  VTBL_ENTRY _ZTV7S3339C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C8[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C4;
extern VTBL_ENTRY _ZTI7S3339C4[];
extern  VTBL_ENTRY _ZTV7S3339C4[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
extern Class_Descriptor cd_S3339C15;
extern VTBL_ENTRY _ZTI8S3339C15[];
extern  VTBL_ENTRY _ZTV8S3339C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C15[];
extern Class_Descriptor cd_S3339C14;
extern VTBL_ENTRY _ZTI8S3339C14[];
extern  VTBL_ENTRY _ZTV8S3339C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C14[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
extern Class_Descriptor cd_S3339C16;
extern VTBL_ENTRY _ZTI8S3339C16[];
extern  VTBL_ENTRY _ZTV8S3339C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C16[];
extern Class_Descriptor cd_S3339C13;
extern VTBL_ENTRY _ZTI8S3339C13[];
extern  VTBL_ENTRY _ZTV8S3339C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C13[];
static Base_Class bases_S3339C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {&cd_S3339C6,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(240,124), //bcp->offset
    109, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3339C8,    ABISELECT(192,100), //bcp->offset
    97, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3339C6,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(80,40), //bcp->offset
    65, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3339C4,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3339C5,    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
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(112,56), //bcp->offset
    83, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3339C9,    ABISELECT(96,48), //bcp->offset
    71, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(152,80), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3339C7,    ABISELECT(64,32), //bcp->offset
    30, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3339C6,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(48,24), //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
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3339C12,    ABISELECT(256,132), //bcp->offset
    123, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3339C6,    ABISELECT(520,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3339C6,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(272,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3339C10,    ABISELECT(272,140), //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
    32, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(288,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(288,148), //bcp->offset
    171, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3339C8,    ABISELECT(304,156), //bcp->offset
    179, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(352,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(352,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(464,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(464,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(480,244), //bcp->offset
    240, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3339C4,    ABISELECT(464,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(496,252), //bcp->offset
    246, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(504,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(504,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3339C10,    ABISELECT(504,256), //bcp->offset
    252, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3339C15,    ABISELECT(464,236), //bcp->offset
    203, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S3339C14,    ABISELECT(352,180), //bcp->offset
    187, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(528,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(528,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3339C10,    ABISELECT(528,268), //bcp->offset
    280, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S3339C16,    ABISELECT(520,264), //bcp->offset
    264, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S3339C13,    ABISELECT(272,140), //bcp->offset
    129, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3339C2[];
extern void _ZN7S3339C32v6Ev();
extern void _ZN7S3339C32v7Ev();
extern void _ZN7S3339C32v8Ev();
extern void _ZN7S3339C32v9Ev();
extern void _ZN7S3339C2D1Ev();
extern void _ZN7S3339C2D0Ev();
extern void _ZN7S3339C23v44Ev();
extern void _ZN7S3339C23v45Ev();
extern void _ZN7S3339C23v46Ev();
extern void _ZN7S3339C23v47Ev();
extern void _ZN7S3339C23v48Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n88_N7S3339C2D1Ev,_ZTv0_n44_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S3339C2D1Ev,_ZThn32_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S3339C2D0Ev,_ZTv0_n44_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S3339C2D0Ev,_ZThn32_N7S3339C2D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C93v25Ev();
extern void _ZN7S3339C93v26Ev();
extern void _ZN7S3339C93v27Ev();
extern void _ZN7S3339C93v28Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n32_N7S3339C2D1Ev,_ZTv0_n16_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S3339C2D1Ev,_ZThn100_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3339C2D0Ev,_ZTv0_n16_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S3339C2D0Ev,_ZThn100_N7S3339C2D0Ev)() __attribute__((weak));
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C123v29Ev();
extern void _ZN8S3339C123v30Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n120_N7S3339C2D1Ev,_ZTv0_n60_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn272_N7S3339C2D1Ev,_ZThn140_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S3339C2D0Ev,_ZTv0_n60_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn272_N7S3339C2D0Ev,_ZThn140_N7S3339C2D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
extern void _ZN8S3339C133v39Ev();
extern void _ZN8S3339C133v40Ev();
extern void _ZN8S3339C133v41Ev();
extern void _ZN8S3339C133v42Ev();
extern void _ZN8S3339C133v43Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn32_n120_N7S3339C2D1Ev,_ZTvn16_n60_N7S3339C2D1Ev)();
extern void ABISELECT(_ZTvn32_n120_N7S3339C2D0Ev,_ZTvn16_n60_N7S3339C2D0Ev)();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn80_n120_N7S3339C2D1Ev,_ZTvn40_n60_N7S3339C2D1Ev)();
extern void ABISELECT(_ZTvn80_n120_N7S3339C2D0Ev,_ZTvn40_n60_N7S3339C2D0Ev)();
extern void _ZN8S3339C143v35Ev();
extern void _ZN8S3339C143v36Ev();
extern void _ZN8S3339C143v37Ev();
extern void _ZN8S3339C143v38Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn464_N7S3339C2D1Ev,_ZThn236_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn464_N7S3339C2D0Ev,_ZThn236_N7S3339C2D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn40_n80_N7S3339C2D1Ev,_ZTvn20_n40_N7S3339C2D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N7S3339C2D0Ev,_ZTvn20_n40_N7S3339C2D0Ev)();
extern void _ZN8S3339C103v31Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn520_N7S3339C2D1Ev,_ZThn264_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn520_N7S3339C2D0Ev,_ZThn264_N7S3339C2D0Ev)() __attribute__((weak));
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn528_N7S3339C2D1Ev,_ZThn268_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn528_N7S3339C2D0Ev,_ZThn268_N7S3339C2D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY vtc_S3339C2[] = {
  ABISELECT(528,268),
  ABISELECT(520,264),
  ABISELECT(464,236),
  ABISELECT(520,264),
  ABISELECT(272,140),
  ABISELECT(256,132),
  ABISELECT(240,124),
  ABISELECT(192,100),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3339C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v44Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v45Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v48Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,92),
  ABISELECT(128,68),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3339C2D1Ev,_ZTv0_n44_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3339C2D0Ev,_ZTv0_n44_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v25Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v26Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v27Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v28Ev,
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  0,
  0,
  0,
  ABISELECT(-192,-100),
  ABISELECT(48,24),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C2D1Ev,_ZTv0_n16_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C2D0Ev,_ZTv0_n16_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  0,
  0,
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN8S3339C123v29Ev,
  (VTBL_ENTRY)&_ZN8S3339C123v30Ev,
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(256,128),
  ABISELECT(-16,-8),
  ABISELECT(248,124),
  ABISELECT(192,96),
  ABISELECT(-32,-16),
  ABISELECT(248,124),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3339C2D1Ev,_ZTv0_n60_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3339C2D0Ev,_ZTv0_n60_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v39Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v40Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v41Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v42Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v43Ev,
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  ABISELECT(-64,-32),
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n120_N7S3339C2D1Ev,_ZTvn16_n60_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n120_N7S3339C2D0Ev,_ZTvn16_n60_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
  ABISELECT(168,84),
  ABISELECT(112,56),
  ABISELECT(-352,-180),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n120_N7S3339C2D1Ev,_ZTvn40_n60_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n120_N7S3339C2D0Ev,_ZTvn40_n60_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C143v35Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v36Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v37Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v38Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-464,-236),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-464,-236),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
  ABISELECT(-480,-244),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(-496,-252),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(16,8),
  ABISELECT(-504,-256),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N7S3339C2D1Ev,_ZTvn20_n40_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N7S3339C2D0Ev,_ZTvn20_n40_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  ABISELECT(-520,-264),
  0,
  ABISELECT(8,4),
  ABISELECT(-264,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-520,-264),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev),
  0,
  ABISELECT(-528,-268),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-528,-268),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern VTBL_ENTRY _ZTV7S3339C2[];
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C7D1Ev();
extern void _ZN7S3339C7D0Ev();
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C7__7S3339C2[] = {
  ABISELECT(176,92),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3339C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S3339C7D1Ev,_ZTv0_n16_N7S3339C7D1Ev)();
extern void ABISELECT(_ZThn128_N7S3339C7D1Ev,_ZThn68_N7S3339C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3339C7D0Ev,_ZTv0_n16_N7S3339C7D0Ev)();
extern void ABISELECT(_ZThn128_N7S3339C7D0Ev,_ZThn68_N7S3339C7D0Ev)() __attribute__((weak));
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C8__7S3339C7__7S3339C2[] = {
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C7D1Ev,_ZTv0_n16_N7S3339C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C7D0Ev,_ZTv0_n16_N7S3339C7D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C5__7S3339C7__7S3339C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void _ZN7S3339C8D1Ev();
extern void _ZN7S3339C8D0Ev();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C8__7S3339C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C5__7S3339C8__7S3339C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C13D1Ev();
extern void _ZN8S3339C13D0Ev();
extern void _ZN8S3339C103v31Ev();
extern void _ZN8S3339C133v39Ev();
extern void _ZN8S3339C133v40Ev();
extern void _ZN8S3339C133v41Ev();
extern void _ZN8S3339C133v42Ev();
extern void _ZN8S3339C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C13__7S3339C2[] = {
  ABISELECT(256,128),
  ABISELECT(-16,-8),
  ABISELECT(248,124),
  ABISELECT(192,96),
  ABISELECT(-32,-16),
  ABISELECT(248,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v39Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v40Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v41Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v42Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v43Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C13__7S3339C2[] = {
  ABISELECT(248,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C108S3339C13__7S3339C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C8D1Ev();
extern void _ZN7S3339C8D0Ev();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C88S3339C13__A1__7S3339C2[] = {
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C5__7S3339C88S3339C13__A1__7S3339C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C14D1Ev();
extern void _ZN8S3339C14D0Ev();
extern void _ZN8S3339C143v35Ev();
extern void _ZN8S3339C143v36Ev();
extern void _ZN8S3339C143v37Ev();
extern void _ZN8S3339C143v38Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C148S3339C13__7S3339C2[] = {
  ABISELECT(168,84),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C14D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v35Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v36Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v37Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v38Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S3339C14D1Ev,_ZThn56_N8S3339C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S3339C14D0Ev,_ZThn56_N8S3339C14D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C15__8S3339C148S3339C13__7S3339C2[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C67S3339C48S3339C15__A2__8S3339C148S3339C13__7S3339C2[] = {
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C68S3339C15__A3__8S3339C148S3339C13__7S3339C2[] = {
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn40_n80_N8S3339C14D1Ev,_ZTvn20_n40_N8S3339C14D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S3339C14D0Ev,_ZTvn20_n40_N8S3339C14D0Ev)();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C15__8S3339C148S3339C13__7S3339C2[] = {
  ABISELECT(16,8),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C14D1Ev,_ZTvn20_n40_N8S3339C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C14D0Ev,_ZTvn20_n40_N8S3339C14D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__A4__8S3339C148S3339C13__7S3339C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn248_N8S3339C13D1Ev,_ZThn124_N8S3339C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev)();
extern void ABISELECT(_ZThn248_N8S3339C13D0Ev,_ZThn124_N8S3339C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3339C16__8S3339C13__7S3339C2[] = {
  ABISELECT(-248,-124),
  0,
  ABISELECT(8,4),
  ABISELECT(-264,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev),
};
extern void ABISELECT(_ZThn32_N8S3339C13D1Ev,_ZThn16_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn32_N8S3339C13D0Ev,_ZThn16_N8S3339C13D0Ev)();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C8__8S3339C13__7S3339C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3339C13D1Ev,_ZThn16_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3339C13D0Ev,_ZThn16_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C5__A2__8S3339C13__7S3339C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZThn80_N8S3339C13D1Ev,_ZThn40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S3339C13D0Ev,_ZThn40_N8S3339C13D0Ev)();
extern void _ZN8S3339C143v35Ev();
extern void _ZN8S3339C143v36Ev();
extern void _ZN8S3339C143v37Ev();
extern void _ZN8S3339C143v38Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C14__8S3339C13__7S3339C2[] = {
  ABISELECT(168,84),
  ABISELECT(112,56),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3339C13D1Ev,_ZThn40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3339C13D0Ev,_ZThn40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C143v35Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v36Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v37Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v38Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn192_N8S3339C13D1Ev,_ZThn96_N8S3339C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev)();
extern void ABISELECT(_ZThn192_N8S3339C13D0Ev,_ZThn96_N8S3339C13D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C15__8S3339C13__7S3339C2[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-96),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C67S3339C48S3339C15__A6__8S3339C13__7S3339C2[] = {
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C68S3339C15__A7__8S3339C13__7S3339C2[] = {
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn40_n80_N8S3339C13D1Ev,_ZTvn20_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S3339C13D0Ev,_ZTvn20_n40_N8S3339C13D0Ev)();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C15__A1__8S3339C13__7S3339C2[] = {
  ABISELECT(16,8),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C13D1Ev,_ZTvn20_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C13D0Ev,_ZTvn20_n40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN8S3339C123v29Ev();
extern void _ZN8S3339C123v30Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C12__8S3339C13__7S3339C2[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN8S3339C123v29Ev,
  (VTBL_ENTRY)&_ZN8S3339C123v30Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn256_N8S3339C13D1Ev,_ZThn128_N8S3339C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev)();
extern void ABISELECT(_ZThn256_N8S3339C13D0Ev,_ZThn128_N8S3339C13D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__A2__8S3339C13__7S3339C2[] = {
  0,
  ABISELECT(-256,-128),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-256,-128),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C15D1Ev();
extern void _ZN8S3339C15D0Ev();
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C15__7S3339C2[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C15D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C15__A1__7S3339C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C108S3339C15__A1__7S3339C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZThn40_N8S3339C15D1Ev,_ZThn20_N8S3339C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S3339C15D0Ev,_ZThn20_N8S3339C15D0Ev)();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__8S3339C15__7S3339C2[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3339C15D1Ev,_ZThn20_N8S3339C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3339C15D0Ev,_ZThn20_N8S3339C15D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__A3__8S3339C15__7S3339C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN8S3339C16D1Ev();
extern void _ZN8S3339C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C16__7S3339C2[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-264,-132),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN8S3339C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C16D0Ev,
};
extern void _ZN8S3339C123v29Ev();
extern void _ZN8S3339C123v30Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C12__8S3339C16__7S3339C2[] = {
  0,
  0,
  ABISELECT(264,132),
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN8S3339C123v29Ev,
  (VTBL_ENTRY)&_ZN8S3339C123v30Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev)();
extern void ABISELECT(_ZThn8_N8S3339C16D1Ev,_ZThn4_N8S3339C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev)();
extern void ABISELECT(_ZThn8_N8S3339C16D0Ev,_ZThn4_N8S3339C16D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__8S3339C16__7S3339C2[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__A2__7S3339C2[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C10__A2__7S3339C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
static  VTT_ENTRY vtt_S3339C2[] = {
  {&(_ZTV7S3339C2[11]),  11,300},
  {&(_ZTV7S3339C2[51]),  51,300},
  {&(_ZTV7S3339C2[104]),  104,300},
  {&(_ZTV7S3339C2[117]),  117,300},
  {&(_ZTV7S3339C2[67]),  67,300},
  {&(_ZTV7S3339C2[73]),  73,300},
  {&(_ZTV7S3339C2[85]),  85,300},
  {&(_ZTV7S3339C2[91]),  91,300},
  {&(_ZTV7S3339C2[127]),  127,300},
  {&(_ZTV7S3339C2[157]),  157,300},
  {&(_ZTV7S3339C2[274]),  274,300},
  {&(_ZTV7S3339C2[173]),  173,300},
  {&(_ZTV7S3339C2[182]),  182,300},
  {&(_ZTV7S3339C2[191]),  191,300},
  {&(_ZTV7S3339C2[223]),  223,300},
  {&(_ZTV7S3339C2[242]),  242,300},
  {&(_ZTV7S3339C2[248]),  248,300},
  {&(_ZTV7S3339C2[255]),  255,300},
  {&(_ZTV7S3339C2[274]),  274,300},
  {&(_ZTV7S3339C2[291]),  291,300},
  {&(_tg__ZTV7S3339C7__7S3339C2[4]),  4,18},
  {&(_tg__ZTV7S3339C8__7S3339C7__7S3339C2[7]),  7,12},
  {&(_tg__ZTV7S3339C5__7S3339C7__7S3339C2[8]),  8,14},
  {&(_tg__ZTV7S3339C8__7S3339C2[3]),  3,8},
  {&(_tg__ZTV7S3339C5__7S3339C8__7S3339C2[8]),  8,14},
  {&(_tg__ZTV8S3339C13__7S3339C2[8]),  8,22},
  {&(_tg__ZTV8S3339C108S3339C13__7S3339C2[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C108S3339C13__7S3339C2[6]),  6,10},
  {&(_tg__ZTV7S3339C88S3339C13__A1__7S3339C2[3]),  3,8},
  {&(_tg__ZTV7S3339C5__7S3339C88S3339C13__A1__7S3339C2[8]),  8,14},
  {&(_tg__ZTV8S3339C148S3339C13__7S3339C2[4]),  4,16},
  {&(_tg__ZTV8S3339C15__8S3339C148S3339C13__7S3339C2[20]),  20,37},
  {&(_tg__ZTV7S3339C67S3339C48S3339C15__A2__8S3339C148S3339C13__7S3339C2[2]),  2,6},
  {&(_tg__ZTV7S3339C68S3339C15__A3__8S3339C148S3339C13__7S3339C2[2]),  2,6},
  {&(_tg__ZTV8S3339C108S3339C15__8S3339C148S3339C13__7S3339C2[3]),  3,12},
  {&(_tg__ZTV7S3339C6__A4__8S3339C148S3339C13__7S3339C2[6]),  6,10},
  {&(_tg__ZTV8S3339C16__8S3339C13__7S3339C2[10]),  10,16},
  {&(_tg__ZTV7S3339C8__8S3339C13__7S3339C2[3]),  3,8},
  {&(_tg__ZTV7S3339C5__A2__8S3339C13__7S3339C2[8]),  8,14},
  {&(_tg__ZTV8S3339C14__8S3339C13__7S3339C2[4]),  4,16},
  {&(_tg__ZTV8S3339C15__8S3339C13__7S3339C2[20]),  20,37},
  {&(_tg__ZTV7S3339C67S3339C48S3339C15__A6__8S3339C13__7S3339C2[2]),  2,6},
  {&(_tg__ZTV7S3339C68S3339C15__A7__8S3339C13__7S3339C2[2]),  2,6},
  {&(_tg__ZTV8S3339C108S3339C15__A1__8S3339C13__7S3339C2[3]),  3,12},
  {&(_tg__ZTV8S3339C16__8S3339C13__7S3339C2[10]),  10,16},
  {&(_tg__ZTV8S3339C12__8S3339C13__7S3339C2[4]),  4,6},
  {&(_tg__ZTV8S3339C10__A2__8S3339C13__7S3339C2[11]),  11,20},
  {&(_tg__ZTV8S3339C15__7S3339C2[3]),  3,20},
  {&(_tg__ZTV8S3339C108S3339C15__A1__7S3339C2[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C108S3339C15__A1__7S3339C2[6]),  6,10},
  {&(_tg__ZTV8S3339C10__8S3339C15__7S3339C2[3]),  3,12},
  {&(_tg__ZTV7S3339C6__A3__8S3339C15__7S3339C2[6]),  6,10},
  {&(_tg__ZTV8S3339C16__7S3339C2[9]),  9,15},
  {&(_tg__ZTV8S3339C12__8S3339C16__7S3339C2[4]),  4,6},
  {&(_tg__ZTV8S3339C10__8S3339C16__7S3339C2[11]),  11,20},
  {&(_tg__ZTV8S3339C16__7S3339C2[9]),  9,15},
  {&(_tg__ZTV8S3339C10__A2__7S3339C2[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C10__A2__7S3339C2[6]),  6,10},
};
extern VTBL_ENTRY _ZTI7S3339C2[];
extern  VTBL_ENTRY _ZTV7S3339C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C2[];
static VTBL_ENTRY alt_thunk_names134[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3339C16D0Ev,_ZThn4_N8S3339C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3339C16D1Ev,_ZThn4_N8S3339C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S3339C13D0Ev,_ZThn128_N8S3339C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3339C13D0Ev,_ZThn96_N8S3339C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3339C13D0Ev,_ZThn124_N8S3339C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S3339C13D1Ev,_ZThn128_N8S3339C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3339C13D1Ev,_ZThn96_N8S3339C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3339C13D1Ev,_ZThn124_N8S3339C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3339C14D0Ev,_ZThn56_N8S3339C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3339C14D1Ev,_ZThn56_N8S3339C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C7D0Ev,_ZTv0_n16_N7S3339C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3339C7D0Ev,_ZThn68_N7S3339C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C7D1Ev,_ZTv0_n16_N7S3339C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3339C7D1Ev,_ZThn68_N7S3339C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S3339C2D0Ev,_ZThn268_N7S3339C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N7S3339C2D0Ev,_ZThn264_N7S3339C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3339C2D0Ev,_ZThn236_N7S3339C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S3339C2D1Ev,_ZThn268_N7S3339C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N7S3339C2D1Ev,_ZThn264_N7S3339C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3339C2D1Ev,_ZThn236_N7S3339C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3339C2D0Ev,_ZTv0_n60_N7S3339C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S3339C2D0Ev,_ZThn140_N7S3339C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3339C2D1Ev,_ZTv0_n60_N7S3339C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S3339C2D1Ev,_ZThn140_N7S3339C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C2D0Ev,_ZTv0_n16_N7S3339C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3339C2D0Ev,_ZThn100_N7S3339C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C2D1Ev,_ZTv0_n16_N7S3339C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3339C2D1Ev,_ZThn100_N7S3339C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3339C2D0Ev,_ZTv0_n44_N7S3339C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3339C2D0Ev,_ZThn32_N7S3339C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3339C2D1Ev,_ZTv0_n44_N7S3339C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3339C2D1Ev,_ZThn32_N7S3339C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3339C2 = {  "S3339C2", // class name
  bases_S3339C2, 42,
  &(vtc_S3339C2[0]), // expected_vtbl_contents
  &(vtt_S3339C2[0]), // expected_vtt_contents
  ABISELECT(544,276), // object size
  NSPAIRA(_ZTI7S3339C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3339C2),300, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3339C2),58, //virtual table table var
  42, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names134,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3339C1  : S3339C2 {
  ::S3339C14 s3339c1f0[2];
  int s3339c1f1;
  virtual  ~S3339C1(); // _ZN7S3339C1D2Ev
  virtual void  v1(); // _ZN7S3339C12v1Ev
  virtual void  v2(); // _ZN7S3339C12v2Ev
  virtual void  v3(); // _ZN7S3339C12v3Ev
  virtual void  v4(); // _ZN7S3339C12v4Ev
  virtual void  v5(); // _ZN7S3339C12v5Ev
  S3339C1(); // tgen
};
//SIG(1 S3339C1) C1{ BC2{ BC3{ v6 v7 v8 v9 FC4{ BC5{ BC6{ v10 v11 v12 v13} v14 v15 FC6} BC6 vd v19 v20 v21 v22 v23 v24 Fi} Fp} VBC7{ VBC8{ VBC5 vd v16 v17 v18 FC5 FD} BC4 BC9{ BC5 BC6 v25 v26 v27 v28 FC10{ VBC6 BC5 vd v31} FU11{ m} FU11 Fi} BC5 vd FD} BC5 VBC12{ v29 v30 Fi} VBC13{ BC10 BC5 BC8 BC14{ BC5 VBC15{ BC4 BC6 BC10 v32 v33 v34} vd v35 v36 v37 v38 Fi Fp[11]} VBC16{ VBC12 VBC10} vd v39 v40 v41 v42 v43} vd v44 v45 v46 v47 v48} vd v1 v2 v3 v4 v5 FC14[2] Fi}


 S3339C1 ::~S3339C1(){ note_dtor("S3339C1", this);}
void  S3339C1 ::v1(){vfunc_called(this, "_ZN7S3339C12v1Ev");}
void  S3339C1 ::v2(){vfunc_called(this, "_ZN7S3339C12v2Ev");}
void  S3339C1 ::v3(){vfunc_called(this, "_ZN7S3339C12v3Ev");}
void  S3339C1 ::v4(){vfunc_called(this, "_ZN7S3339C12v4Ev");}
void  S3339C1 ::v5(){vfunc_called(this, "_ZN7S3339C12v5Ev");}
S3339C1 ::S3339C1(){ note_ctor("S3339C1", this);} // tgen

static void Test_S3339C1()
{
  extern Class_Descriptor cd_S3339C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,115)];
    init_test(&cd_S3339C1, buf);
    S3339C1 *dp, &lv = *(dp=new (buf) S3339C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,456), "sizeof(S3339C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3339C1)");
    check_base_class_offset(lv, (S3339C3*)(S3339C2*), 0, "S3339C1");
    /*is_ambiguous_... S3339C1::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*), ABISELECT(608,304), "S3339C1");
    /*is_ambiguous_... S3339C1::S3339C8 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C8*), ABISELECT(608,304), "S3339C1");
    check_base_class_offset(lv, (S3339C5*)(S3339C8*)(S3339C13*), ABISELECT(608,304), "S3339C1");
    check_base_class_offset(lv, (S3339C8*)(S3339C7*), ABISELECT(560,280), "S3339C1");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C4*)(S3339C7*), ABISELECT(432,212), "S3339C1");
    check_base_class_offset(lv, (S3339C5*)(S3339C4*)(S3339C7*), ABISELECT(432,212), "S3339C1");
    /*is_ambiguous_... S3339C4::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C4*)(S3339C7*), ABISELECT(448,220), "S3339C1");
    check_base_class_offset(lv, (S3339C4*)(S3339C7*), ABISELECT(432,212), "S3339C1");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C9*)(S3339C7*), ABISELECT(464,228), "S3339C1");
    check_base_class_offset(lv, (S3339C5*)(S3339C9*)(S3339C7*), ABISELECT(464,228), "S3339C1");
    /*is_ambiguous_... S3339C9::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C9*)(S3339C7*), ABISELECT(480,236), "S3339C1");
    check_base_class_offset(lv, (S3339C9*)(S3339C7*), ABISELECT(464,228), "S3339C1");
    /*is_ambiguous_... S3339C7::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C7*), ABISELECT(520,260), "S3339C1");
    /*is_ambiguous_... S3339C7::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C7*), ABISELECT(520,260), "S3339C1");
    check_base_class_offset(lv, (S3339C7*)(S3339C2*), ABISELECT(432,212), "S3339C1");
    /*is_ambiguous_... S3339C2::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C2*), ABISELECT(48,24), "S3339C1");
    /*is_ambiguous_... S3339C2::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C2*), ABISELECT(48,24), "S3339C1");
    check_base_class_offset(lv, (S3339C12*)(S3339C2*), ABISELECT(624,312), "S3339C1");
    check_base_class_offset(lv, (S3339C12*)(S3339C16*), ABISELECT(624,312), "S3339C1");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*)(S3339C13*), ABISELECT(888,444), "S3339C1");
    /*is_ambiguous_... S3339C10::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*)(S3339C15*), ABISELECT(888,444), "S3339C1");
    /*is_ambiguous_... S3339C1::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C10*), ABISELECT(888,444), "S3339C1");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*)(S3339C13*), ABISELECT(640,320), "S3339C1");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C10*)(S3339C13*), ABISELECT(640,320), "S3339C1");
    /*is_ambiguous_... S3339C13::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C10*)(S3339C13*), ABISELECT(640,320), "S3339C1");
    /*is_ambiguous_... S3339C13::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C13*), ABISELECT(656,328), "S3339C1");
    /*is_ambiguous_... S3339C13::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C13*), ABISELECT(656,328), "S3339C1");
    check_base_class_offset(lv, (S3339C8*)(S3339C13*), ABISELECT(672,336), "S3339C1");
    /*is_ambiguous_... S3339C14::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C14*)(S3339C13*), ABISELECT(720,360), "S3339C1");
    /*is_ambiguous_... S3339C14::S3339C5 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C14*)(S3339C13*), ABISELECT(720,360), "S3339C1");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C4*)(S3339C15*), ABISELECT(832,416), "S3339C1");
    check_base_class_offset(lv, (S3339C5*)(S3339C4*)(S3339C15*), ABISELECT(832,416), "S3339C1");
    /*is_ambiguous_... S3339C4::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C4*)(S3339C15*), ABISELECT(848,424), "S3339C1");
    check_base_class_offset(lv, (S3339C4*)(S3339C15*), ABISELECT(832,416), "S3339C1");
    /*is_ambiguous_... S3339C15::S3339C6 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C15*), ABISELECT(864,432), "S3339C1");
    check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*)(S3339C15*), ABISELECT(872,436), "S3339C1");
    check_base_class_offset(lv, (S3339C5*)(S3339C10*)(S3339C15*), ABISELECT(872,436), "S3339C1");
    check_base_class_offset(lv, (S3339C10*)(S3339C15*), ABISELECT(872,436), "S3339C1");
    check_base_class_offset(lv, (S3339C15*)(S3339C14*)(S3339C13*), ABISELECT(832,416), "S3339C1");
    check_base_class_offset(lv, (S3339C14*)(S3339C13*), ABISELECT(720,360), "S3339C1");
    /*is_ambiguous_... S3339C1::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C6*)(S3339C5*)(S3339C10*), ABISELECT(896,448), "S3339C1");
    /*is_ambiguous_... S3339C1::S3339C10 */ AMB_check_base_class_offset(lv, (S3339C5*)(S3339C10*), ABISELECT(896,448), "S3339C1");
    check_base_class_offset(lv, (S3339C10*)(S3339C16*), ABISELECT(896,448), "S3339C1");
    check_base_class_offset(lv, (S3339C16*)(S3339C13*), ABISELECT(888,444), "S3339C1");
    check_base_class_offset(lv, (S3339C13*)(S3339C2*), ABISELECT(640,320), "S3339C1");
    check_base_class_offset(lv, (S3339C2*), 0, "S3339C1");
    check_field_offset(lv, s3339c1f0, ABISELECT(64,32), "S3339C1.s3339c1f0");
    check_field_offset(lv, s3339c1f1, ABISELECT(416,208), "S3339C1.s3339c1f1");
    test_class_info(&lv, &cd_S3339C1);
    dp->~S3339C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3339C1(Test_S3339C1, "S3339C1", ABISELECT(912,456));

#else // __cplusplus

extern void _ZN7S3339C1C1Ev();
extern void _ZN7S3339C1D2Ev();
Name_Map name_map_S3339C1[] = {
  NSPAIR(_ZN7S3339C1C1Ev),
  NSPAIR(_ZN7S3339C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3339C3;
extern VTBL_ENTRY _ZTI7S3339C3[];
extern  VTBL_ENTRY _ZTV7S3339C3[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C8;
extern VTBL_ENTRY _ZTI7S3339C8[];
extern  VTBL_ENTRY _ZTV7S3339C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C8[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C4;
extern VTBL_ENTRY _ZTI7S3339C4[];
extern  VTBL_ENTRY _ZTV7S3339C4[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C9;
extern VTBL_ENTRY _ZTI7S3339C9[];
extern  VTBL_ENTRY _ZTV7S3339C9[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C7;
extern VTBL_ENTRY _ZTI7S3339C7[];
extern  VTBL_ENTRY _ZTV7S3339C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C7[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C12;
extern VTBL_ENTRY _ZTI8S3339C12[];
extern  VTBL_ENTRY _ZTV8S3339C12[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C8;
extern VTBL_ENTRY _ZTI7S3339C8[];
extern  VTBL_ENTRY _ZTV7S3339C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C8[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C4;
extern VTBL_ENTRY _ZTI7S3339C4[];
extern  VTBL_ENTRY _ZTV7S3339C4[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
extern Class_Descriptor cd_S3339C15;
extern VTBL_ENTRY _ZTI8S3339C15[];
extern  VTBL_ENTRY _ZTV8S3339C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C15[];
extern Class_Descriptor cd_S3339C14;
extern VTBL_ENTRY _ZTI8S3339C14[];
extern  VTBL_ENTRY _ZTV8S3339C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C14[];
extern Class_Descriptor cd_S3339C6;
extern VTBL_ENTRY _ZTI7S3339C6[];
extern  VTBL_ENTRY _ZTV7S3339C6[];
extern Class_Descriptor cd_S3339C5;
extern VTBL_ENTRY _ZTI7S3339C5[];
extern  VTBL_ENTRY _ZTV7S3339C5[];
extern Class_Descriptor cd_S3339C10;
extern VTBL_ENTRY _ZTI8S3339C10[];
extern  VTBL_ENTRY _ZTV8S3339C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C10[];
extern Class_Descriptor cd_S3339C16;
extern VTBL_ENTRY _ZTI8S3339C16[];
extern  VTBL_ENTRY _ZTV8S3339C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C16[];
extern Class_Descriptor cd_S3339C13;
extern VTBL_ENTRY _ZTI8S3339C13[];
extern  VTBL_ENTRY _ZTV8S3339C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3339C13[];
extern Class_Descriptor cd_S3339C2;
extern VTBL_ENTRY _ZTI7S3339C2[];
extern  VTBL_ENTRY _ZTV7S3339C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C2[];
static Base_Class bases_S3339C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3339C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    42, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(608,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(608,304), //bcp->offset
    114, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3339C8,    ABISELECT(560,280), //bcp->offset
    102, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3339C6,    ABISELECT(432,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(432,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(448,220), //bcp->offset
    70, //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
    7, //immediately_derived
  0, 0},
  {&cd_S3339C4,    ABISELECT(432,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
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(464,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(464,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(480,236), //bcp->offset
    88, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3339C9,    ABISELECT(464,228), //bcp->offset
    76, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(520,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(520,260), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3339C7,    ABISELECT(432,212), //bcp->offset
    35, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3339C6,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(48,24), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3339C12,    ABISELECT(624,312), //bcp->offset
    128, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S3339C6,    ABISELECT(888,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3339C6,    ABISELECT(640,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(640,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3339C10,    ABISELECT(640,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(656,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(656,328), //bcp->offset
    176, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3339C8,    ABISELECT(672,336), //bcp->offset
    184, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(720,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(720,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(832,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(832,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(848,424), //bcp->offset
    245, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3339C4,    ABISELECT(832,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(864,432), //bcp->offset
    251, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(872,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(872,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3339C10,    ABISELECT(872,436), //bcp->offset
    257, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3339C15,    ABISELECT(832,416), //bcp->offset
    208, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S3339C14,    ABISELECT(720,360), //bcp->offset
    192, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3339C6,    ABISELECT(896,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3339C5,    ABISELECT(896,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3339C10,    ABISELECT(896,448), //bcp->offset
    285, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S3339C16,    ABISELECT(888,444), //bcp->offset
    269, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S3339C13,    ABISELECT(640,320), //bcp->offset
    134, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3339C2,    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
    43, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3339C1[];
extern void _ZN7S3339C32v6Ev();
extern void _ZN7S3339C32v7Ev();
extern void _ZN7S3339C32v8Ev();
extern void _ZN7S3339C32v9Ev();
extern void _ZN7S3339C1D1Ev();
extern void _ZN7S3339C1D0Ev();
extern void _ZN7S3339C23v44Ev();
extern void _ZN7S3339C23v45Ev();
extern void _ZN7S3339C23v46Ev();
extern void _ZN7S3339C23v47Ev();
extern void _ZN7S3339C23v48Ev();
extern void _ZN7S3339C12v1Ev();
extern void _ZN7S3339C12v2Ev();
extern void _ZN7S3339C12v3Ev();
extern void _ZN7S3339C12v4Ev();
extern void _ZN7S3339C12v5Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n88_N7S3339C1D1Ev,_ZTv0_n44_N7S3339C1D1Ev)();
extern void ABISELECT(_ZThn432_N7S3339C1D1Ev,_ZThn212_N7S3339C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S3339C1D0Ev,_ZTv0_n44_N7S3339C1D0Ev)();
extern void ABISELECT(_ZThn432_N7S3339C1D0Ev,_ZThn212_N7S3339C1D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C93v25Ev();
extern void _ZN7S3339C93v26Ev();
extern void _ZN7S3339C93v27Ev();
extern void _ZN7S3339C93v28Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n32_N7S3339C1D1Ev,_ZTv0_n16_N7S3339C1D1Ev)();
extern void ABISELECT(_ZThn560_N7S3339C1D1Ev,_ZThn280_N7S3339C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3339C1D0Ev,_ZTv0_n16_N7S3339C1D0Ev)();
extern void ABISELECT(_ZThn560_N7S3339C1D0Ev,_ZThn280_N7S3339C1D0Ev)() __attribute__((weak));
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C123v29Ev();
extern void _ZN8S3339C123v30Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n120_N7S3339C1D1Ev,_ZTv0_n60_N7S3339C1D1Ev)();
extern void ABISELECT(_ZThn640_N7S3339C1D1Ev,_ZThn320_N7S3339C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S3339C1D0Ev,_ZTv0_n60_N7S3339C1D0Ev)();
extern void ABISELECT(_ZThn640_N7S3339C1D0Ev,_ZThn320_N7S3339C1D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
extern void _ZN8S3339C133v39Ev();
extern void _ZN8S3339C133v40Ev();
extern void _ZN8S3339C133v41Ev();
extern void _ZN8S3339C133v42Ev();
extern void _ZN8S3339C133v43Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn32_n120_N7S3339C1D1Ev,_ZTvn16_n60_N7S3339C1D1Ev)();
extern void ABISELECT(_ZTvn32_n120_N7S3339C1D0Ev,_ZTvn16_n60_N7S3339C1D0Ev)();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn80_n120_N7S3339C1D1Ev,_ZTvn40_n60_N7S3339C1D1Ev)();
extern void ABISELECT(_ZTvn80_n120_N7S3339C1D0Ev,_ZTvn40_n60_N7S3339C1D0Ev)();
extern void _ZN8S3339C143v35Ev();
extern void _ZN8S3339C143v36Ev();
extern void _ZN8S3339C143v37Ev();
extern void _ZN8S3339C143v38Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S3339C1D1Ev,_ZTv0_n40_N7S3339C1D1Ev)();
extern void ABISELECT(_ZThn832_N7S3339C1D1Ev,_ZThn416_N7S3339C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3339C1D0Ev,_ZTv0_n40_N7S3339C1D0Ev)();
extern void ABISELECT(_ZThn832_N7S3339C1D0Ev,_ZThn416_N7S3339C1D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn40_n80_N7S3339C1D1Ev,_ZTvn20_n40_N7S3339C1D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N7S3339C1D0Ev,_ZTvn20_n40_N7S3339C1D0Ev)();
extern void _ZN8S3339C103v31Ev();
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void ABISELECT(_ZTv0_n80_N7S3339C1D1Ev,_ZTv0_n40_N7S3339C1D1Ev)();
extern void ABISELECT(_ZThn888_N7S3339C1D1Ev,_ZThn444_N7S3339C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3339C1D0Ev,_ZTv0_n40_N7S3339C1D0Ev)();
extern void ABISELECT(_ZThn888_N7S3339C1D0Ev,_ZThn444_N7S3339C1D0Ev)() __attribute__((weak));
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S3339C1D1Ev,_ZTv0_n40_N7S3339C1D1Ev)();
extern void ABISELECT(_ZThn896_N7S3339C1D1Ev,_ZThn448_N7S3339C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3339C1D0Ev,_ZTv0_n40_N7S3339C1D0Ev)();
extern void ABISELECT(_ZThn896_N7S3339C1D0Ev,_ZThn448_N7S3339C1D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY vtc_S3339C1[] = {
  ABISELECT(896,448),
  ABISELECT(888,444),
  ABISELECT(832,416),
  ABISELECT(888,444),
  ABISELECT(640,320),
  ABISELECT(624,312),
  ABISELECT(608,304),
  ABISELECT(560,280),
  ABISELECT(432,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3339C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v44Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v45Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v48Ev,
  (VTBL_ENTRY)&_ZN7S3339C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3339C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3339C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3339C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3339C12v5Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-212),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,92),
  ABISELECT(128,68),
  ABISELECT(-432,-212),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3339C1D1Ev,_ZTv0_n44_N7S3339C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3339C1D0Ev,_ZTv0_n44_N7S3339C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  ABISELECT(-448,-220),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(-464,-228),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v25Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v26Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v27Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v28Ev,
  ABISELECT(-480,-236),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(-520,-260),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  0,
  0,
  0,
  ABISELECT(-560,-280),
  ABISELECT(48,24),
  ABISELECT(-560,-280),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C1D1Ev,_ZTv0_n16_N7S3339C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C1D0Ev,_ZTv0_n16_N7S3339C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-608,-304),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  0,
  0,
  ABISELECT(-624,-312),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN8S3339C123v29Ev,
  (VTBL_ENTRY)&_ZN8S3339C123v30Ev,
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-320),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(256,128),
  ABISELECT(-16,-8),
  ABISELECT(248,124),
  ABISELECT(192,96),
  ABISELECT(-32,-16),
  ABISELECT(248,124),
  ABISELECT(-640,-320),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3339C1D1Ev,_ZTv0_n60_N7S3339C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3339C1D0Ev,_ZTv0_n60_N7S3339C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v39Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v40Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v41Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v42Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v43Ev,
  ABISELECT(-656,-328),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  ABISELECT(-64,-32),
  ABISELECT(-672,-336),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n120_N7S3339C1D1Ev,_ZTvn16_n60_N7S3339C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n120_N7S3339C1D0Ev,_ZTvn16_n60_N7S3339C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
  ABISELECT(168,84),
  ABISELECT(112,56),
  ABISELECT(-720,-360),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n120_N7S3339C1D1Ev,_ZTvn40_n60_N7S3339C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n120_N7S3339C1D0Ev,_ZTvn40_n60_N7S3339C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C143v35Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v36Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v37Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v38Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-832,-416),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-832,-416),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C1D1Ev,_ZTv0_n40_N7S3339C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C1D0Ev,_ZTv0_n40_N7S3339C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
  ABISELECT(-848,-424),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(-864,-432),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  ABISELECT(16,8),
  ABISELECT(-872,-436),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N7S3339C1D1Ev,_ZTvn20_n40_N7S3339C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N7S3339C1D0Ev,_ZTvn20_n40_N7S3339C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  ABISELECT(-888,-444),
  0,
  ABISELECT(8,4),
  ABISELECT(-264,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-888,-444),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C1D1Ev,_ZTv0_n40_N7S3339C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C1D0Ev,_ZTv0_n40_N7S3339C1D0Ev),
  0,
  ABISELECT(-896,-448),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-896,-448),
  (VTBL_ENTRY)&(_ZTI7S3339C1[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C1D1Ev,_ZTv0_n40_N7S3339C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C1D0Ev,_ZTv0_n40_N7S3339C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern VTBL_ENTRY _ZTV7S3339C1[];
extern void _ZN7S3339C32v6Ev();
extern void _ZN7S3339C32v7Ev();
extern void _ZN7S3339C32v8Ev();
extern void _ZN7S3339C32v9Ev();
extern void _ZN7S3339C2D1Ev();
extern void _ZN7S3339C2D0Ev();
extern void _ZN7S3339C23v44Ev();
extern void _ZN7S3339C23v45Ev();
extern void _ZN7S3339C23v46Ev();
extern void _ZN7S3339C23v47Ev();
extern void _ZN7S3339C23v48Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C2__7S3339C1[] = {
  ABISELECT(896,448),
  ABISELECT(888,444),
  ABISELECT(832,416),
  ABISELECT(888,444),
  ABISELECT(640,320),
  ABISELECT(624,312),
  ABISELECT(608,304),
  ABISELECT(560,280),
  ABISELECT(432,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3339C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3339C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v44Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v45Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3339C23v48Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n88_N7S3339C2D1Ev,_ZTv0_n44_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn432_N7S3339C2D1Ev,_ZThn212_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S3339C2D0Ev,_ZTv0_n44_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn432_N7S3339C2D0Ev,_ZThn212_N7S3339C2D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C7__7S3339C2__7S3339C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-212),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,92),
  ABISELECT(128,68),
  ABISELECT(-432,-212),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3339C2D1Ev,_ZTv0_n44_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3339C2D0Ev,_ZTv0_n44_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S3339C2D1Ev,_ZTv0_n16_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn560_N7S3339C2D1Ev,_ZThn280_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3339C2D0Ev,_ZTv0_n16_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn560_N7S3339C2D0Ev,_ZThn280_N7S3339C2D0Ev)() __attribute__((weak));
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C8__7S3339C2__7S3339C1[] = {
  0,
  0,
  0,
  ABISELECT(-560,-280),
  ABISELECT(48,24),
  ABISELECT(-560,-280),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C2D1Ev,_ZTv0_n16_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C2D0Ev,_ZTv0_n16_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C5__7S3339C2__7S3339C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-608,-304),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C67S3339C47S3339C7__A2__7S3339C2__7S3339C1[] = {
  ABISELECT(-448,-220),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C93v25Ev();
extern void _ZN7S3339C93v26Ev();
extern void _ZN7S3339C93v27Ev();
extern void _ZN7S3339C93v28Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C97S3339C7__7S3339C2__7S3339C1[] = {
  ABISELECT(-464,-228),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v25Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v26Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v27Ev,
  (VTBL_ENTRY)&_ZN7S3339C93v28Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C67S3339C97S3339C7__A4__7S3339C2__7S3339C1[] = {
  ABISELECT(-480,-236),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C57S3339C7__A3__7S3339C2__7S3339C1[] = {
  ABISELECT(-520,-260),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void _ZN8S3339C123v29Ev();
extern void _ZN8S3339C123v30Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C12__7S3339C2__7S3339C1[] = {
  0,
  0,
  ABISELECT(-624,-312),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN8S3339C123v29Ev,
  (VTBL_ENTRY)&_ZN8S3339C123v30Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n120_N7S3339C2D1Ev,_ZTv0_n60_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn640_N7S3339C2D1Ev,_ZThn320_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S3339C2D0Ev,_ZTv0_n60_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn640_N7S3339C2D0Ev,_ZThn320_N7S3339C2D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
extern void _ZN8S3339C133v39Ev();
extern void _ZN8S3339C133v40Ev();
extern void _ZN8S3339C133v41Ev();
extern void _ZN8S3339C133v42Ev();
extern void _ZN8S3339C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C13__7S3339C2__7S3339C1[] = {
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(80,40),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-320),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(256,128),
  ABISELECT(-16,-8),
  ABISELECT(248,124),
  ABISELECT(192,96),
  ABISELECT(-32,-16),
  ABISELECT(248,124),
  ABISELECT(-640,-320),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3339C2D1Ev,_ZTv0_n60_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3339C2D0Ev,_ZTv0_n60_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v39Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v40Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v41Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v42Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v43Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn888_N7S3339C2D1Ev,_ZThn444_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn888_N7S3339C2D0Ev,_ZThn444_N7S3339C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3339C16__7S3339C2__7S3339C1[] = {
  ABISELECT(-888,-444),
  0,
  ABISELECT(8,4),
  ABISELECT(-264,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-888,-444),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev),
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C58S3339C13__A6__7S3339C2__7S3339C1[] = {
  ABISELECT(-656,-328),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void ABISELECT(_ZTvn32_n120_N7S3339C2D1Ev,_ZTvn16_n60_N7S3339C2D1Ev)();
extern void ABISELECT(_ZTvn32_n120_N7S3339C2D0Ev,_ZTvn16_n60_N7S3339C2D0Ev)();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C88S3339C13__A1__7S3339C2__7S3339C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-672,-336),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n120_N7S3339C2D1Ev,_ZTvn16_n60_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n120_N7S3339C2D0Ev,_ZTvn16_n60_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn80_n120_N7S3339C2D1Ev,_ZTvn40_n60_N7S3339C2D1Ev)();
extern void ABISELECT(_ZTvn80_n120_N7S3339C2D0Ev,_ZTvn40_n60_N7S3339C2D0Ev)();
extern void _ZN8S3339C143v35Ev();
extern void _ZN8S3339C143v36Ev();
extern void _ZN8S3339C143v37Ev();
extern void _ZN8S3339C143v38Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C148S3339C13__7S3339C2__7S3339C1[] = {
  ABISELECT(168,84),
  ABISELECT(112,56),
  ABISELECT(-720,-360),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n120_N7S3339C2D1Ev,_ZTvn40_n60_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n120_N7S3339C2D0Ev,_ZTvn40_n60_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C143v35Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v36Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v37Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v38Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn832_N7S3339C2D1Ev,_ZThn416_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn832_N7S3339C2D0Ev,_ZThn416_N7S3339C2D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C15__7S3339C2__7S3339C1[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-832,-416),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-832,-416),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C67S3339C48S3339C15__A12__7S3339C2__7S3339C1[] = {
  ABISELECT(-848,-424),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C68S3339C15__A13__7S3339C2__7S3339C1[] = {
  ABISELECT(-864,-432),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn40_n80_N7S3339C2D1Ev,_ZTvn20_n40_N7S3339C2D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N7S3339C2D0Ev,_ZTvn20_n40_N7S3339C2D0Ev)();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C15__A1__7S3339C2__7S3339C1[] = {
  ABISELECT(16,8),
  ABISELECT(-872,-436),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N7S3339C2D1Ev,_ZTvn20_n40_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N7S3339C2D0Ev,_ZTvn20_n40_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev)();
extern void ABISELECT(_ZThn896_N7S3339C2D1Ev,_ZThn448_N7S3339C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev)();
extern void ABISELECT(_ZThn896_N7S3339C2D0Ev,_ZThn448_N7S3339C2D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__A2__7S3339C2__7S3339C1[] = {
  0,
  ABISELECT(-896,-448),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-896,-448),
  (VTBL_ENTRY)&(_ZTI7S3339C2[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN7S3339C7D1Ev();
extern void _ZN7S3339C7D0Ev();
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C7__7S3339C1[] = {
  ABISELECT(176,92),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN7S3339C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S3339C7D1Ev,_ZTv0_n16_N7S3339C7D1Ev)();
extern void ABISELECT(_ZThn128_N7S3339C7D1Ev,_ZThn68_N7S3339C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3339C7D0Ev,_ZTv0_n16_N7S3339C7D0Ev)();
extern void ABISELECT(_ZThn128_N7S3339C7D0Ev,_ZThn68_N7S3339C7D0Ev)() __attribute__((weak));
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C8__7S3339C7__7S3339C1[] = {
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C7D1Ev,_ZTv0_n16_N7S3339C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3339C7D0Ev,_ZTv0_n16_N7S3339C7D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C5__7S3339C7__7S3339C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S3339C7[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void _ZN7S3339C8D1Ev();
extern void _ZN7S3339C8D0Ev();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C8__7S3339C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C5__7S3339C8__7S3339C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C13D1Ev();
extern void _ZN8S3339C13D0Ev();
extern void _ZN8S3339C103v31Ev();
extern void _ZN8S3339C133v39Ev();
extern void _ZN8S3339C133v40Ev();
extern void _ZN8S3339C133v41Ev();
extern void _ZN8S3339C133v42Ev();
extern void _ZN8S3339C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C13__7S3339C1[] = {
  ABISELECT(256,128),
  ABISELECT(-16,-8),
  ABISELECT(248,124),
  ABISELECT(192,96),
  ABISELECT(-32,-16),
  ABISELECT(248,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v39Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v40Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v41Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v42Ev,
  (VTBL_ENTRY)&_ZN8S3339C133v43Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C13__7S3339C1[] = {
  ABISELECT(248,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C108S3339C13__7S3339C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C8D1Ev();
extern void _ZN7S3339C8D0Ev();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C88S3339C13__A1__7S3339C1[] = {
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3339C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C5__7S3339C88S3339C13__A1__7S3339C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S3339C8[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C14D1Ev();
extern void _ZN8S3339C14D0Ev();
extern void _ZN8S3339C143v35Ev();
extern void _ZN8S3339C143v36Ev();
extern void _ZN8S3339C143v37Ev();
extern void _ZN8S3339C143v38Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C148S3339C13__7S3339C1[] = {
  ABISELECT(168,84),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C14D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v35Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v36Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v37Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v38Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S3339C14D1Ev,_ZThn56_N8S3339C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S3339C14D0Ev,_ZThn56_N8S3339C14D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C15__8S3339C148S3339C13__7S3339C1[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C67S3339C48S3339C15__A2__8S3339C148S3339C13__7S3339C1[] = {
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C68S3339C15__A3__8S3339C148S3339C13__7S3339C1[] = {
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn40_n80_N8S3339C14D1Ev,_ZTvn20_n40_N8S3339C14D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S3339C14D0Ev,_ZTvn20_n40_N8S3339C14D0Ev)();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C15__8S3339C148S3339C13__7S3339C1[] = {
  ABISELECT(16,8),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C14D1Ev,_ZTvn20_n40_N8S3339C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C14D0Ev,_ZTvn20_n40_N8S3339C14D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__A4__8S3339C148S3339C13__7S3339C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S3339C14[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn248_N8S3339C13D1Ev,_ZThn124_N8S3339C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev)();
extern void ABISELECT(_ZThn248_N8S3339C13D0Ev,_ZThn124_N8S3339C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3339C16__8S3339C13__7S3339C1[] = {
  ABISELECT(-248,-124),
  0,
  ABISELECT(8,4),
  ABISELECT(-264,-132),
  0,
  0,
  0,
  0,
  ABISELECT(-248,-124),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev),
};
extern void ABISELECT(_ZThn32_N8S3339C13D1Ev,_ZThn16_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn32_N8S3339C13D0Ev,_ZThn16_N8S3339C13D0Ev)();
extern void _ZN7S3339C83v16Ev();
extern void _ZN7S3339C83v17Ev();
extern void _ZN7S3339C83v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C8__8S3339C13__7S3339C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3339C13D1Ev,_ZThn16_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3339C13D0Ev,_ZThn16_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v17Ev,
  (VTBL_ENTRY)&_ZN7S3339C83v18Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C5__A2__8S3339C13__7S3339C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZThn80_N8S3339C13D1Ev,_ZThn40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S3339C13D0Ev,_ZThn40_N8S3339C13D0Ev)();
extern void _ZN8S3339C143v35Ev();
extern void _ZN8S3339C143v36Ev();
extern void _ZN8S3339C143v37Ev();
extern void _ZN8S3339C143v38Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C14__8S3339C13__7S3339C1[] = {
  ABISELECT(168,84),
  ABISELECT(112,56),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3339C13D1Ev,_ZThn40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3339C13D0Ev,_ZThn40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C143v35Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v36Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v37Ev,
  (VTBL_ENTRY)&_ZN8S3339C143v38Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn192_N8S3339C13D1Ev,_ZThn96_N8S3339C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev)();
extern void ABISELECT(_ZThn192_N8S3339C13D0Ev,_ZThn96_N8S3339C13D0Ev)() __attribute__((weak));
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C15__8S3339C13__7S3339C1[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-96),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C67S3339C48S3339C15__A6__8S3339C13__7S3339C1[] = {
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C68S3339C15__A7__8S3339C13__7S3339C1[] = {
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTvn40_n80_N8S3339C13D1Ev,_ZTvn20_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S3339C13D0Ev,_ZTvn20_n40_N8S3339C13D0Ev)();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C15__A1__8S3339C13__7S3339C1[] = {
  ABISELECT(16,8),
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C13D1Ev,_ZTvn20_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S3339C13D0Ev,_ZTvn20_n40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN8S3339C123v29Ev();
extern void _ZN8S3339C123v30Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C12__8S3339C13__7S3339C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN8S3339C123v29Ev,
  (VTBL_ENTRY)&_ZN8S3339C123v30Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev)();
extern void ABISELECT(_ZThn256_N8S3339C13D1Ev,_ZThn128_N8S3339C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev)();
extern void ABISELECT(_ZThn256_N8S3339C13D0Ev,_ZThn128_N8S3339C13D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__A2__8S3339C13__7S3339C1[] = {
  0,
  ABISELECT(-256,-128),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-256,-128),
  (VTBL_ENTRY)&(_ZTI8S3339C13[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C15D1Ev();
extern void _ZN8S3339C15D0Ev();
extern void _ZN7S3339C43v19Ev();
extern void _ZN7S3339C43v20Ev();
extern void _ZN7S3339C43v21Ev();
extern void _ZN7S3339C43v22Ev();
extern void _ZN7S3339C43v23Ev();
extern void _ZN7S3339C43v24Ev();
extern void _ZN8S3339C153v32Ev();
extern void _ZN8S3339C153v33Ev();
extern void _ZN8S3339C153v34Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C15__7S3339C1[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C15D0Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v20Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3339C43v24Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v32Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v33Ev,
  (VTBL_ENTRY)&_ZN8S3339C153v34Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C108S3339C15__A1__7S3339C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C108S3339C15__A1__7S3339C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZThn40_N8S3339C15D1Ev,_ZThn20_N8S3339C15D1Ev)();
extern void ABISELECT(_ZThn40_N8S3339C15D0Ev,_ZThn20_N8S3339C15D0Ev)();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__8S3339C15__7S3339C1[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3339C15D1Ev,_ZThn20_N8S3339C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S3339C15D0Ev,_ZThn20_N8S3339C15D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__A3__8S3339C15__7S3339C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S3339C15[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN8S3339C16D1Ev();
extern void _ZN8S3339C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C16__7S3339C1[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-264,-132),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN8S3339C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C16D0Ev,
};
extern void _ZN8S3339C123v29Ev();
extern void _ZN8S3339C123v30Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C12__8S3339C16__7S3339C1[] = {
  0,
  0,
  ABISELECT(264,132),
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN8S3339C123v29Ev,
  (VTBL_ENTRY)&_ZN8S3339C123v30Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev)();
extern void ABISELECT(_ZThn8_N8S3339C16D1Ev,_ZThn4_N8S3339C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev)();
extern void ABISELECT(_ZThn8_N8S3339C16D0Ev,_ZThn4_N8S3339C16D0Ev)() __attribute__((weak));
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__8S3339C16__7S3339C1[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3339C16[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
extern void _ZN7S3339C53v14Ev();
extern void _ZN7S3339C53v15Ev();
extern void _ZN8S3339C10D1Ev();
extern void _ZN8S3339C10D0Ev();
extern void _ZN8S3339C103v31Ev();
static  VTBL_ENTRY _tg__ZTV8S3339C10__A2__7S3339C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3339C53v15Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3339C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3339C103v31Ev,
};
extern void _ZN7S3339C63v10Ev();
extern void _ZN7S3339C63v11Ev();
extern void _ZN7S3339C63v12Ev();
extern void _ZN7S3339C63v13Ev();
static  VTBL_ENTRY _tg__ZTV7S3339C6__8S3339C10__A2__7S3339C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S3339C10[0]),
  (VTBL_ENTRY)&_ZN7S3339C63v10Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v11Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v12Ev,
  (VTBL_ENTRY)&_ZN7S3339C63v13Ev,
};
static  VTT_ENTRY vtt_S3339C1[] = {
  {&(_ZTV7S3339C1[11]),  11,305},
  {&(_tg__ZTV7S3339C2__7S3339C1[11]),  11,22},
  {&(_tg__ZTV7S3339C7__7S3339C2__7S3339C1[21]),  21,35},
  {&(_tg__ZTV7S3339C8__7S3339C2__7S3339C1[7]),  7,12},
  {&(_tg__ZTV7S3339C5__7S3339C2__7S3339C1[8]),  8,14},
  {&(_tg__ZTV7S3339C67S3339C47S3339C7__A2__7S3339C2__7S3339C1[2]),  2,6},
  {&(_tg__ZTV7S3339C97S3339C7__7S3339C2__7S3339C1[2]),  2,12},
  {&(_tg__ZTV7S3339C67S3339C97S3339C7__A4__7S3339C2__7S3339C1[2]),  2,6},
  {&(_tg__ZTV7S3339C57S3339C7__A3__7S3339C2__7S3339C1[2]),  2,8},
  {&(_tg__ZTV8S3339C12__7S3339C2__7S3339C1[4]),  4,6},
  {&(_tg__ZTV8S3339C13__7S3339C2__7S3339C1[28]),  28,42},
  {&(_tg__ZTV8S3339C16__7S3339C2__7S3339C1[10]),  10,16},
  {&(_tg__ZTV7S3339C58S3339C13__A6__7S3339C2__7S3339C1[2]),  2,8},
  {&(_tg__ZTV7S3339C88S3339C13__A1__7S3339C2__7S3339C1[3]),  3,8},
  {&(_tg__ZTV8S3339C148S3339C13__7S3339C2__7S3339C1[4]),  4,16},
  {&(_tg__ZTV8S3339C15__7S3339C2__7S3339C1[20]),  20,37},
  {&(_tg__ZTV7S3339C67S3339C48S3339C15__A12__7S3339C2__7S3339C1[2]),  2,6},
  {&(_tg__ZTV7S3339C68S3339C15__A13__7S3339C2__7S3339C1[2]),  2,6},
  {&(_tg__ZTV8S3339C108S3339C15__A1__7S3339C2__7S3339C1[3]),  3,12},
  {&(_tg__ZTV8S3339C16__7S3339C2__7S3339C1[10]),  10,16},
  {&(_tg__ZTV8S3339C10__A2__7S3339C2__7S3339C1[11]),  11,20},
  {&(_ZTV7S3339C1[56]),  56,305},
  {&(_ZTV7S3339C1[109]),  109,305},
  {&(_ZTV7S3339C1[122]),  122,305},
  {&(_ZTV7S3339C1[72]),  72,305},
  {&(_ZTV7S3339C1[78]),  78,305},
  {&(_ZTV7S3339C1[90]),  90,305},
  {&(_ZTV7S3339C1[96]),  96,305},
  {&(_ZTV7S3339C1[132]),  132,305},
  {&(_ZTV7S3339C1[162]),  162,305},
  {&(_ZTV7S3339C1[279]),  279,305},
  {&(_ZTV7S3339C1[178]),  178,305},
  {&(_ZTV7S3339C1[187]),  187,305},
  {&(_ZTV7S3339C1[196]),  196,305},
  {&(_ZTV7S3339C1[228]),  228,305},
  {&(_ZTV7S3339C1[247]),  247,305},
  {&(_ZTV7S3339C1[253]),  253,305},
  {&(_ZTV7S3339C1[260]),  260,305},
  {&(_ZTV7S3339C1[279]),  279,305},
  {&(_ZTV7S3339C1[296]),  296,305},
  {&(_tg__ZTV7S3339C7__7S3339C1[4]),  4,18},
  {&(_tg__ZTV7S3339C8__7S3339C7__7S3339C1[7]),  7,12},
  {&(_tg__ZTV7S3339C5__7S3339C7__7S3339C1[8]),  8,14},
  {&(_tg__ZTV7S3339C8__7S3339C1[3]),  3,8},
  {&(_tg__ZTV7S3339C5__7S3339C8__7S3339C1[8]),  8,14},
  {&(_tg__ZTV8S3339C13__7S3339C1[8]),  8,22},
  {&(_tg__ZTV8S3339C108S3339C13__7S3339C1[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C108S3339C13__7S3339C1[6]),  6,10},
  {&(_tg__ZTV7S3339C88S3339C13__A1__7S3339C1[3]),  3,8},
  {&(_tg__ZTV7S3339C5__7S3339C88S3339C13__A1__7S3339C1[8]),  8,14},
  {&(_tg__ZTV8S3339C148S3339C13__7S3339C1[4]),  4,16},
  {&(_tg__ZTV8S3339C15__8S3339C148S3339C13__7S3339C1[20]),  20,37},
  {&(_tg__ZTV7S3339C67S3339C48S3339C15__A2__8S3339C148S3339C13__7S3339C1[2]),  2,6},
  {&(_tg__ZTV7S3339C68S3339C15__A3__8S3339C148S3339C13__7S3339C1[2]),  2,6},
  {&(_tg__ZTV8S3339C108S3339C15__8S3339C148S3339C13__7S3339C1[3]),  3,12},
  {&(_tg__ZTV7S3339C6__A4__8S3339C148S3339C13__7S3339C1[6]),  6,10},
  {&(_tg__ZTV8S3339C16__8S3339C13__7S3339C1[10]),  10,16},
  {&(_tg__ZTV7S3339C8__8S3339C13__7S3339C1[3]),  3,8},
  {&(_tg__ZTV7S3339C5__A2__8S3339C13__7S3339C1[8]),  8,14},
  {&(_tg__ZTV8S3339C14__8S3339C13__7S3339C1[4]),  4,16},
  {&(_tg__ZTV8S3339C15__8S3339C13__7S3339C1[20]),  20,37},
  {&(_tg__ZTV7S3339C67S3339C48S3339C15__A6__8S3339C13__7S3339C1[2]),  2,6},
  {&(_tg__ZTV7S3339C68S3339C15__A7__8S3339C13__7S3339C1[2]),  2,6},
  {&(_tg__ZTV8S3339C108S3339C15__A1__8S3339C13__7S3339C1[3]),  3,12},
  {&(_tg__ZTV8S3339C16__8S3339C13__7S3339C1[10]),  10,16},
  {&(_tg__ZTV8S3339C12__8S3339C13__7S3339C1[4]),  4,6},
  {&(_tg__ZTV8S3339C10__A2__8S3339C13__7S3339C1[11]),  11,20},
  {&(_tg__ZTV8S3339C15__7S3339C1[3]),  3,20},
  {&(_tg__ZTV8S3339C108S3339C15__A1__7S3339C1[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C108S3339C15__A1__7S3339C1[6]),  6,10},
  {&(_tg__ZTV8S3339C10__8S3339C15__7S3339C1[3]),  3,12},
  {&(_tg__ZTV7S3339C6__A3__8S3339C15__7S3339C1[6]),  6,10},
  {&(_tg__ZTV8S3339C16__7S3339C1[9]),  9,15},
  {&(_tg__ZTV8S3339C12__8S3339C16__7S3339C1[4]),  4,6},
  {&(_tg__ZTV8S3339C10__8S3339C16__7S3339C1[11]),  11,20},
  {&(_tg__ZTV8S3339C16__7S3339C1[9]),  9,15},
  {&(_tg__ZTV8S3339C10__A2__7S3339C1[3]),  3,12},
  {&(_tg__ZTV7S3339C6__8S3339C10__A2__7S3339C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI7S3339C1[];
extern  VTBL_ENTRY _ZTV7S3339C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3339C1[];
static VTBL_ENTRY alt_thunk_names135[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C16D0Ev,_ZTv0_n40_N8S3339C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3339C16D0Ev,_ZThn4_N8S3339C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C16D1Ev,_ZTv0_n40_N8S3339C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3339C16D1Ev,_ZThn4_N8S3339C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C13D0Ev,_ZTv0_n40_N8S3339C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S3339C13D0Ev,_ZThn128_N8S3339C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3339C13D0Ev,_ZThn96_N8S3339C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3339C13D0Ev,_ZThn124_N8S3339C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C13D1Ev,_ZTv0_n40_N8S3339C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S3339C13D1Ev,_ZThn128_N8S3339C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3339C13D1Ev,_ZThn96_N8S3339C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3339C13D1Ev,_ZThn124_N8S3339C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C14D0Ev,_ZTv0_n40_N8S3339C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3339C14D0Ev,_ZThn56_N8S3339C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3339C14D1Ev,_ZTv0_n40_N8S3339C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3339C14D1Ev,_ZThn56_N8S3339C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C7D0Ev,_ZTv0_n16_N7S3339C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3339C7D0Ev,_ZThn68_N7S3339C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C7D1Ev,_ZTv0_n16_N7S3339C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3339C7D1Ev,_ZThn68_N7S3339C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3339C2D0Ev,_ZTv0_n40_N7S3339C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N7S3339C2D0Ev,_ZThn448_N7S3339C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S3339C2D0Ev,_ZThn416_N7S3339C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn888_N7S3339C2D0Ev,_ZThn444_N7S3339C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3339C2D1Ev,_ZTv0_n40_N7S3339C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N7S3339C2D1Ev,_ZThn448_N7S3339C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S3339C2D1Ev,_ZThn416_N7S3339C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn888_N7S3339C2D1Ev,_ZThn444_N7S3339C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3339C2D0Ev,_ZTv0_n60_N7S3339C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S3339C2D0Ev,_ZThn320_N7S3339C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3339C2D1Ev,_ZTv0_n60_N7S3339C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S3339C2D1Ev,_ZThn320_N7S3339C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C2D0Ev,_ZTv0_n16_N7S3339C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S3339C2D0Ev,_ZThn280_N7S3339C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C2D1Ev,_ZTv0_n16_N7S3339C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S3339C2D1Ev,_ZThn280_N7S3339C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3339C2D0Ev,_ZTv0_n44_N7S3339C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S3339C2D0Ev,_ZThn212_N7S3339C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3339C2D1Ev,_ZTv0_n44_N7S3339C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S3339C2D1Ev,_ZThn212_N7S3339C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3339C1D0Ev,_ZTv0_n40_N7S3339C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N7S3339C1D0Ev,_ZThn448_N7S3339C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn888_N7S3339C1D0Ev,_ZThn444_N7S3339C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S3339C1D0Ev,_ZThn416_N7S3339C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3339C1D1Ev,_ZTv0_n40_N7S3339C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N7S3339C1D1Ev,_ZThn448_N7S3339C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn888_N7S3339C1D1Ev,_ZThn444_N7S3339C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S3339C1D1Ev,_ZThn416_N7S3339C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3339C1D0Ev,_ZTv0_n60_N7S3339C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S3339C1D0Ev,_ZThn320_N7S3339C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3339C1D1Ev,_ZTv0_n60_N7S3339C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S3339C1D1Ev,_ZThn320_N7S3339C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C1D0Ev,_ZTv0_n16_N7S3339C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S3339C1D0Ev,_ZThn280_N7S3339C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3339C1D1Ev,_ZTv0_n16_N7S3339C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S3339C1D1Ev,_ZThn280_N7S3339C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3339C1D0Ev,_ZTv0_n44_N7S3339C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S3339C1D0Ev,_ZThn212_N7S3339C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3339C1D1Ev,_ZTv0_n44_N7S3339C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S3339C1D1Ev,_ZThn212_N7S3339C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3339C1 = {  "S3339C1", // class name
  bases_S3339C1, 43,
  &(vtc_S3339C1[0]), // expected_vtbl_contents
  &(vtt_S3339C1[0]), // expected_vtt_contents
  ABISELECT(912,456), // object size
  NSPAIRA(_ZTI7S3339C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3339C1),305, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3339C1),78, //virtual table table var
  43, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names135,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20333C2  {
  virtual void  v6(); // _ZN8S20333C22v6Ev
  ~S20333C2(); // tgen
  S20333C2(); // tgen
};
//SIG(-1 S20333C2) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20333C2C1Ev();
extern void _ZN8S20333C2D1Ev();
Name_Map name_map_S20333C2[] = {
  NSPAIR(_ZN8S20333C2C1Ev),
  NSPAIR(_ZN8S20333C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20333C2[];
extern void _ZN8S20333C22v6Ev();
static  VTBL_ENTRY vtc_S20333C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C2[0]),
  (VTBL_ENTRY)&_ZN8S20333C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20333C2[];
extern  VTBL_ENTRY _ZTV8S20333C2[];
Class_Descriptor cd_S20333C2 = {  "S20333C2", // class name
  0,0,//no base classes
  &(vtc_S20333C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20333C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20333C2),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  S20333C5  {
  virtual void  v7(); // _ZN8S20333C52v7Ev
  virtual void  v8(); // _ZN8S20333C52v8Ev
  virtual void  v9(); // _ZN8S20333C52v9Ev
  ~S20333C5(); // tgen
  S20333C5(); // tgen
};
//SIG(-1 S20333C5) C1{ v1 v2 v3}


void  S20333C5 ::v7(){vfunc_called(this, "_ZN8S20333C52v7Ev");}
void  S20333C5 ::v8(){vfunc_called(this, "_ZN8S20333C52v8Ev");}
void  S20333C5 ::v9(){vfunc_called(this, "_ZN8S20333C52v9Ev");}
S20333C5 ::~S20333C5(){ note_dtor("S20333C5", this);} // tgen
S20333C5 ::S20333C5(){ note_ctor("S20333C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20333C5C1Ev();
extern void _ZN8S20333C5D1Ev();
Name_Map name_map_S20333C5[] = {
  NSPAIR(_ZN8S20333C5C1Ev),
  NSPAIR(_ZN8S20333C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20333C5[];
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
static  VTBL_ENTRY vtc_S20333C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C5[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
};
extern VTBL_ENTRY _ZTI8S20333C5[];
extern  VTBL_ENTRY _ZTV8S20333C5[];
Class_Descriptor cd_S20333C5 = {  "S20333C5", // class name
  0,0,//no base classes
  &(vtc_S20333C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20333C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20333C5),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  S20333C4  : S20333C5 {
  int s20333c4f0[3];
  virtual void  v10(); // _ZN8S20333C43v10Ev
  virtual void  v11(); // _ZN8S20333C43v11Ev
  virtual void  v12(); // _ZN8S20333C43v12Ev
  virtual void  v13(); // _ZN8S20333C43v13Ev
  virtual void  v14(); // _ZN8S20333C43v14Ev
  virtual void  v15(); // _ZN8S20333C43v15Ev
  ~S20333C4(); // tgen
  S20333C4(); // tgen
};
//SIG(-1 S20333C4) C1{ BC2{ v7 v8 v9} v1 v2 v3 v4 v5 v6 Fi[3]}


void  S20333C4 ::v10(){vfunc_called(this, "_ZN8S20333C43v10Ev");}
void  S20333C4 ::v11(){vfunc_called(this, "_ZN8S20333C43v11Ev");}
void  S20333C4 ::v12(){vfunc_called(this, "_ZN8S20333C43v12Ev");}
void  S20333C4 ::v13(){vfunc_called(this, "_ZN8S20333C43v13Ev");}
void  S20333C4 ::v14(){vfunc_called(this, "_ZN8S20333C43v14Ev");}
void  S20333C4 ::v15(){vfunc_called(this, "_ZN8S20333C43v15Ev");}
S20333C4 ::~S20333C4(){ note_dtor("S20333C4", this);} // tgen
S20333C4 ::S20333C4(){ note_ctor("S20333C4", this);} // tgen

static void Test_S20333C4()
{
  extern Class_Descriptor cd_S20333C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20333C4, buf);
    S20333C4 *dp, &lv = *(dp=new (buf) S20333C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20333C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20333C4)");
    check_base_class_offset(lv, (S20333C5*), 0, "S20333C4");
    check_field_offset(lv, s20333c4f0, ABISELECT(8,4), "S20333C4.s20333c4f0");
    test_class_info(&lv, &cd_S20333C4);
    dp->~S20333C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20333C4(Test_S20333C4, "S20333C4", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20333C4C1Ev();
extern void _ZN8S20333C4D1Ev();
Name_Map name_map_S20333C4[] = {
  NSPAIR(_ZN8S20333C4C1Ev),
  NSPAIR(_ZN8S20333C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20333C5;
extern VTBL_ENTRY _ZTI8S20333C5[];
extern  VTBL_ENTRY _ZTV8S20333C5[];
static Base_Class bases_S20333C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20333C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20333C4[];
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C43v10Ev();
extern void _ZN8S20333C43v11Ev();
extern void _ZN8S20333C43v12Ev();
extern void _ZN8S20333C43v13Ev();
extern void _ZN8S20333C43v14Ev();
extern void _ZN8S20333C43v15Ev();
static  VTBL_ENTRY vtc_S20333C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C4[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v15Ev,
};
extern VTBL_ENTRY _ZTI8S20333C4[];
extern  VTBL_ENTRY _ZTV8S20333C4[];
Class_Descriptor cd_S20333C4 = {  "S20333C4", // class name
  bases_S20333C4, 1,
  &(vtc_S20333C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20333C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20333C4),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20333C7  {
  long double s20333c7f0;
  virtual void  v16(); // _ZN8S20333C73v16Ev
  virtual void  v17(); // _ZN8S20333C73v17Ev
  virtual void  v18(); // _ZN8S20333C73v18Ev
  virtual void  v19(); // _ZN8S20333C73v19Ev
  virtual void  v20(); // _ZN8S20333C73v20Ev
  ~S20333C7(); // tgen
  S20333C7(); // tgen
};
//SIG(-1 S20333C7) C1{ v1 v2 v3 v4 v5 FD}


void  S20333C7 ::v16(){vfunc_called(this, "_ZN8S20333C73v16Ev");}
void  S20333C7 ::v17(){vfunc_called(this, "_ZN8S20333C73v17Ev");}
void  S20333C7 ::v18(){vfunc_called(this, "_ZN8S20333C73v18Ev");}
void  S20333C7 ::v19(){vfunc_called(this, "_ZN8S20333C73v19Ev");}
void  S20333C7 ::v20(){vfunc_called(this, "_ZN8S20333C73v20Ev");}
S20333C7 ::~S20333C7(){ note_dtor("S20333C7", this);} // tgen
S20333C7 ::S20333C7(){ note_ctor("S20333C7", this);} // tgen

static void Test_S20333C7()
{
  extern Class_Descriptor cd_S20333C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S20333C7, buf);
    S20333C7 *dp, &lv = *(dp=new (buf) S20333C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20333C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20333C7)");
    check_field_offset(lv, s20333c7f0, ABISELECT(16,4), "S20333C7.s20333c7f0");
    test_class_info(&lv, &cd_S20333C7);
    dp->~S20333C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20333C7(Test_S20333C7, "S20333C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20333C7C1Ev();
extern void _ZN8S20333C7D1Ev();
Name_Map name_map_S20333C7[] = {
  NSPAIR(_ZN8S20333C7C1Ev),
  NSPAIR(_ZN8S20333C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20333C7[];
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY vtc_S20333C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C7[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
Class_Descriptor cd_S20333C7 = {  "S20333C7", // class name
  0,0,//no base classes
  &(vtc_S20333C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20333C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20333C7),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20333C8  {
  __tsi64 s20333c8f0[3];
  virtual  ~S20333C8(); // _ZN8S20333C8D1Ev
  virtual void  v21(); // _ZN8S20333C83v21Ev
  virtual void  v22(); // _ZN8S20333C83v22Ev
  virtual void  v23(); // _ZN8S20333C83v23Ev
  virtual void  v24(); // _ZN8S20333C83v24Ev
  virtual void  v25(); // _ZN8S20333C83v25Ev
  S20333C8(); // tgen
};
//SIG(-1 S20333C8) C1{ vd v1 v2 v3 v4 v5 FL[3]}


 S20333C8 ::~S20333C8(){ note_dtor("S20333C8", this);}
void  S20333C8 ::v21(){vfunc_called(this, "_ZN8S20333C83v21Ev");}
void  S20333C8 ::v22(){vfunc_called(this, "_ZN8S20333C83v22Ev");}
void  S20333C8 ::v23(){vfunc_called(this, "_ZN8S20333C83v23Ev");}
void  S20333C8 ::v24(){vfunc_called(this, "_ZN8S20333C83v24Ev");}
void  S20333C8 ::v25(){vfunc_called(this, "_ZN8S20333C83v25Ev");}
S20333C8 ::S20333C8(){ note_ctor("S20333C8", this);} // tgen

static void Test_S20333C8()
{
  extern Class_Descriptor cd_S20333C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S20333C8, buf);
    S20333C8 *dp, &lv = *(dp=new (buf) S20333C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S20333C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20333C8)");
    check_field_offset(lv, s20333c8f0, ABISELECT(8,4), "S20333C8.s20333c8f0");
    test_class_info(&lv, &cd_S20333C8);
    dp->~S20333C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20333C8(Test_S20333C8, "S20333C8", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN8S20333C8C1Ev();
extern void _ZN8S20333C8D1Ev();
Name_Map name_map_S20333C8[] = {
  NSPAIR(_ZN8S20333C8C1Ev),
  NSPAIR(_ZN8S20333C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20333C8[];
extern void _ZN8S20333C8D1Ev();
extern void _ZN8S20333C8D0Ev();
extern void _ZN8S20333C83v21Ev();
extern void _ZN8S20333C83v22Ev();
extern void _ZN8S20333C83v23Ev();
extern void _ZN8S20333C83v24Ev();
extern void _ZN8S20333C83v25Ev();
static  VTBL_ENTRY vtc_S20333C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C8[0]),
  (VTBL_ENTRY)&_ZN8S20333C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v25Ev,
};
extern VTBL_ENTRY _ZTI8S20333C8[];
extern  VTBL_ENTRY _ZTV8S20333C8[];
Class_Descriptor cd_S20333C8 = {  "S20333C8", // class name
  0,0,//no base classes
  &(vtc_S20333C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI8S20333C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20333C8),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  S20333C11  : virtual S20333C7 {
  ::S20333C7 s20333c11f0;
  virtual  ~S20333C11(); // _ZN9S20333C11D2Ev
  virtual void  v26(); // _ZN9S20333C113v26Ev
  virtual void  v27(); // _ZN9S20333C113v27Ev
  virtual void  v28(); // _ZN9S20333C113v28Ev
  virtual void  v29(); // _ZN9S20333C113v29Ev
  virtual void  v30(); // _ZN9S20333C113v30Ev
  S20333C11(); // tgen
};
//SIG(-1 S20333C11) C1{ VBC2{ v6 v7 v8 v9 v10 FD} vd v1 v2 v3 v4 v5 FC2}


 S20333C11 ::~S20333C11(){ note_dtor("S20333C11", this);}
void  S20333C11 ::v26(){vfunc_called(this, "_ZN9S20333C113v26Ev");}
void  S20333C11 ::v27(){vfunc_called(this, "_ZN9S20333C113v27Ev");}
void  S20333C11 ::v28(){vfunc_called(this, "_ZN9S20333C113v28Ev");}
void  S20333C11 ::v29(){vfunc_called(this, "_ZN9S20333C113v29Ev");}
void  S20333C11 ::v30(){vfunc_called(this, "_ZN9S20333C113v30Ev");}
S20333C11 ::S20333C11(){ note_ctor("S20333C11", this);} // tgen

static void Test_S20333C11()
{
  extern Class_Descriptor cd_S20333C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20333C11, buf);
    S20333C11 *dp, &lv = *(dp=new (buf) S20333C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20333C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20333C11)");
    check_base_class_offset(lv, (S20333C7*), ABISELECT(48,20), "S20333C11");
    check_field_offset(lv, s20333c11f0, ABISELECT(16,4), "S20333C11.s20333c11f0");
    test_class_info(&lv, &cd_S20333C11);
    dp->~S20333C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20333C11(Test_S20333C11, "S20333C11", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN9S20333C11C1Ev();
extern void _ZN9S20333C11D2Ev();
Name_Map name_map_S20333C11[] = {
  NSPAIR(_ZN9S20333C11C1Ev),
  NSPAIR(_ZN9S20333C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
static Base_Class bases_S20333C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20333C7,    ABISELECT(48,20), //bcp->offset
    10, //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 _ZTI9S20333C11[];
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY vtc_S20333C11[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern VTBL_ENTRY _ZTV9S20333C11[];
static  VTT_ENTRY vtt_S20333C11[] = {
  {&(_ZTV9S20333C11[3]),  3,22},
  {&(_ZTV9S20333C11[17]),  17,22},
};
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
Class_Descriptor cd_S20333C11 = {  "S20333C11", // class name
  bases_S20333C11, 1,
  &(vtc_S20333C11[0]), // expected_vtbl_contents
  &(vtt_S20333C11[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI9S20333C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20333C11),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20333C11),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  S20333C10  : S20333C11 {
  virtual void  v31(); // _ZN9S20333C103v31Ev
  virtual void  v32(); // _ZN9S20333C103v32Ev
  ~S20333C10(); // tgen
  S20333C10(); // tgen
};
//SIG(-1 S20333C10) C1{ BC2{ VBC3{ v3 v4 v5 v6 v7 FD} vd v8 v9 v10 v11 v12 FC3} v1 v2}


void  S20333C10 ::v31(){vfunc_called(this, "_ZN9S20333C103v31Ev");}
void  S20333C10 ::v32(){vfunc_called(this, "_ZN9S20333C103v32Ev");}
S20333C10 ::~S20333C10(){ note_dtor("S20333C10", this);} // tgen
S20333C10 ::S20333C10(){ note_ctor("S20333C10", this);} // tgen

static void Test_S20333C10()
{
  extern Class_Descriptor cd_S20333C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20333C10, buf);
    S20333C10 *dp, &lv = *(dp=new (buf) S20333C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20333C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20333C10)");
    check_base_class_offset(lv, (S20333C7*)(S20333C11*), ABISELECT(48,20), "S20333C10");
    check_base_class_offset(lv, (S20333C11*), 0, "S20333C10");
    test_class_info(&lv, &cd_S20333C10);
    dp->~S20333C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20333C10(Test_S20333C10, "S20333C10", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN9S20333C10C1Ev();
extern void _ZN9S20333C10D1Ev();
Name_Map name_map_S20333C10[] = {
  NSPAIR(_ZN9S20333C10C1Ev),
  NSPAIR(_ZN9S20333C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
static Base_Class bases_S20333C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20333C7,    ABISELECT(48,20), //bcp->offset
    12, //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_S20333C11,    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 _ZTI9S20333C10[];
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY vtc_S20333C10[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern VTBL_ENTRY _ZTV9S20333C10[];
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C11__9S20333C10[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C11__9S20333C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
static  VTT_ENTRY vtt_S20333C10[] = {
  {&(_ZTV9S20333C10[3]),  3,24},
  {&(_tg__ZTV9S20333C11__9S20333C10[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C11__9S20333C10[7]),  7,12},
  {&(_ZTV9S20333C10[19]),  19,24},
};
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
Class_Descriptor cd_S20333C10 = {  "S20333C10", // class name
  bases_S20333C10, 2,
  &(vtc_S20333C10[0]), // expected_vtbl_contents
  &(vtt_S20333C10[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI9S20333C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20333C10),24, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20333C10),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  S20333C12  : virtual S20333C7 , S20333C11 , S20333C10 {
  char s20333c12f0[8];
  virtual void  v33(); // _ZN9S20333C123v33Ev
  virtual void  v34(); // _ZN9S20333C123v34Ev
  virtual void  v35(); // _ZN9S20333C123v35Ev
  virtual void  v36(); // _ZN9S20333C123v36Ev
  virtual void  v37(); // _ZN9S20333C123v37Ev
  virtual void  v38(); // _ZN9S20333C123v38Ev
  virtual void  v39(); // _ZN9S20333C123v39Ev
  ~S20333C12(); // tgen
  S20333C12(); // tgen
};
//SIG(-1 S20333C12) C1{ VBC2{ v8 v9 v10 v11 v12 FD} BC3{ VBC2 vd v13 v14 v15 v16 v17 FC2} BC4{ BC3 v18 v19} v1 v2 v3 v4 v5 v6 v7 Fc[8]}


void  S20333C12 ::v33(){vfunc_called(this, "_ZN9S20333C123v33Ev");}
void  S20333C12 ::v34(){vfunc_called(this, "_ZN9S20333C123v34Ev");}
void  S20333C12 ::v35(){vfunc_called(this, "_ZN9S20333C123v35Ev");}
void  S20333C12 ::v36(){vfunc_called(this, "_ZN9S20333C123v36Ev");}
void  S20333C12 ::v37(){vfunc_called(this, "_ZN9S20333C123v37Ev");}
void  S20333C12 ::v38(){vfunc_called(this, "_ZN9S20333C123v38Ev");}
void  S20333C12 ::v39(){vfunc_called(this, "_ZN9S20333C123v39Ev");}
S20333C12 ::~S20333C12(){ note_dtor("S20333C12", this);} // tgen
S20333C12 ::S20333C12(){ note_ctor("S20333C12", this);} // tgen

static void Test_S20333C12()
{
  extern Class_Descriptor cd_S20333C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,17)];
    init_test(&cd_S20333C12, buf);
    S20333C12 *dp, &lv = *(dp=new (buf) S20333C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,64), "sizeof(S20333C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20333C12)");
    check_base_class_offset(lv, (S20333C7*), ABISELECT(112,48), "S20333C12");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*), ABISELECT(112,48), "S20333C12");
    check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*), ABISELECT(112,48), "S20333C12");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C11*), 0, "S20333C12");
    check_base_class_offset(lv, (S20333C11*)(S20333C10*), ABISELECT(48,20), "S20333C12");
    check_base_class_offset(lv, (S20333C10*), ABISELECT(48,20), "S20333C12");
    check_field_offset(lv, s20333c12f0, ABISELECT(96,40), "S20333C12.s20333c12f0");
    test_class_info(&lv, &cd_S20333C12);
    dp->~S20333C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20333C12(Test_S20333C12, "S20333C12", ABISELECT(144,64));

#else // __cplusplus

extern void _ZN9S20333C12C1Ev();
extern void _ZN9S20333C12D1Ev();
Name_Map name_map_S20333C12[] = {
  NSPAIR(_ZN9S20333C12C1Ev),
  NSPAIR(_ZN9S20333C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
static Base_Class bases_S20333C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20333C7,    ABISELECT(112,48), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20333C11,    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_S20333C11,    ABISELECT(48,20), //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_S20333C10,    ABISELECT(48,20), //bcp->offset
    17, //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 _ZTI9S20333C12[];
extern void _ZN9S20333C12D1Ev();
extern void _ZN9S20333C12D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
extern void ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY vtc_S20333C12[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN9S20333C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
  ABISELECT(64,28),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern VTBL_ENTRY _ZTV9S20333C12[];
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C11__9S20333C12[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C11__9S20333C12[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C10__9S20333C12[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C10__A1__9S20333C12[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C10__A1__9S20333C12[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C10__9S20333C12[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
static  VTT_ENTRY vtt_S20333C12[] = {
  {&(_ZTV9S20333C12[3]),  3,41},
  {&(_tg__ZTV9S20333C11__9S20333C12[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C11__9S20333C12[7]),  7,12},
  {&(_tg__ZTV9S20333C10__9S20333C12[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C10__A1__9S20333C12[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C10__A1__9S20333C12[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C10__9S20333C12[7]),  7,12},
  {&(_ZTV9S20333C12[36]),  36,41},
  {&(_ZTV9S20333C12[20]),  20,41},
};
extern VTBL_ENTRY _ZTI9S20333C12[];
extern  VTBL_ENTRY _ZTV9S20333C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C12[];
Class_Descriptor cd_S20333C12 = {  "S20333C12", // class name
  bases_S20333C12, 4,
  &(vtc_S20333C12[0]), // expected_vtbl_contents
  &(vtt_S20333C12[0]), // expected_vtt_contents
  ABISELECT(144,64), // object size
  NSPAIRA(_ZTI9S20333C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20333C12),41, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20333C12),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20333C9  : S20333C10 , S20333C7 , virtual S20333C12 {
  int s20333c9f0;
  virtual void  v40(); // _ZN8S20333C93v40Ev
  virtual void  v41(); // _ZN8S20333C93v41Ev
  virtual void  v42(); // _ZN8S20333C93v42Ev
  virtual void  v43(); // _ZN8S20333C93v43Ev
  virtual void  v44(); // _ZN8S20333C93v44Ev
  virtual void  v45(); // _ZN8S20333C93v45Ev
  virtual void  v46(); // _ZN8S20333C93v46Ev
  ~S20333C9(); // tgen
  S20333C9(); // tgen
};
//SIG(-1 S20333C9) C1{ BC2{ BC3{ VBC4{ v8 v9 v10 v11 v12 FD} vd v13 v14 v15 v16 v17 FC4} v18 v19} BC4 VBC5{ VBC4 BC3 BC2 v20 v21 v22 v23 v24 v25 v26 Fc[8]} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S20333C9 ::v40(){vfunc_called(this, "_ZN8S20333C93v40Ev");}
void  S20333C9 ::v41(){vfunc_called(this, "_ZN8S20333C93v41Ev");}
void  S20333C9 ::v42(){vfunc_called(this, "_ZN8S20333C93v42Ev");}
void  S20333C9 ::v43(){vfunc_called(this, "_ZN8S20333C93v43Ev");}
void  S20333C9 ::v44(){vfunc_called(this, "_ZN8S20333C93v44Ev");}
void  S20333C9 ::v45(){vfunc_called(this, "_ZN8S20333C93v45Ev");}
void  S20333C9 ::v46(){vfunc_called(this, "_ZN8S20333C93v46Ev");}
S20333C9 ::~S20333C9(){ note_dtor("S20333C9", this);} // tgen
S20333C9 ::S20333C9(){ note_ctor("S20333C9", this);} // tgen

static void Test_S20333C9()
{
  extern Class_Descriptor cd_S20333C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,27)];
    init_test(&cd_S20333C9, buf);
    S20333C9 *dp, &lv = *(dp=new (buf) S20333C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,104), "sizeof(S20333C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20333C9)");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*), ABISELECT(96,40), "S20333C9");
    check_base_class_offset(lv, (S20333C7*)(S20333C12*), ABISELECT(96,40), "S20333C9");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C12*), ABISELECT(96,40), "S20333C9");
    check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C12*), ABISELECT(96,40), "S20333C9");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C10*), 0, "S20333C9");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C10*), 0, "S20333C9");
    /*is_ambiguous_... S20333C9::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*), ABISELECT(48,20), "S20333C9");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C12*), ABISELECT(128,56), "S20333C9");
    check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C12*), ABISELECT(176,76), "S20333C9");
    check_base_class_offset(lv, (S20333C10*)(S20333C12*), ABISELECT(176,76), "S20333C9");
    check_base_class_offset(lv, (S20333C12*), ABISELECT(128,56), "S20333C9");
    check_field_offset(lv, s20333c9f0, ABISELECT(80,36), "S20333C9.s20333c9f0");
    test_class_info(&lv, &cd_S20333C9);
    dp->~S20333C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20333C9(Test_S20333C9, "S20333C9", ABISELECT(240,104));

#else // __cplusplus

extern void _ZN8S20333C9C1Ev();
extern void _ZN8S20333C9D1Ev();
Name_Map name_map_S20333C9[] = {
  NSPAIR(_ZN8S20333C9C1Ev),
  NSPAIR(_ZN8S20333C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C12;
extern VTBL_ENTRY _ZTI9S20333C12[];
extern  VTBL_ENTRY _ZTV9S20333C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C12[];
static Base_Class bases_S20333C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20333C7,    ABISELECT(96,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20333C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20333C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20333C7,    ABISELECT(48,20), //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_S20333C11,    ABISELECT(128,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(176,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(176,76), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20333C12,    ABISELECT(128,56), //bcp->offset
    39, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20333C9[];
extern void _ZN8S20333C9D1Ev();
extern void _ZN8S20333C9D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S20333C9D1Ev,_ZThn56_N8S20333C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S20333C9D0Ev,_ZThn56_N8S20333C9D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY vtc_S20333C9[] = {
  ABISELECT(128,56),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-56),
  ABISELECT(-32,-16),
  ABISELECT(-128,-56),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
  ABISELECT(-80,-36),
  ABISELECT(-176,-76),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern VTBL_ENTRY _ZTV8S20333C9[];
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C10__8S20333C9[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C10__8S20333C9[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C10__8S20333C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C10__8S20333C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN9S20333C12D1Ev();
extern void _ZN9S20333C12D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C9[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN9S20333C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C12__A1__8S20333C9[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C12__A1__8S20333C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C9[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C109S20333C12__A2__8S20333C9[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C109S20333C12__A2__8S20333C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C109S20333C12__A1__8S20333C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C12__8S20333C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C10__9S20333C12__8S20333C9[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
static  VTT_ENTRY vtt_S20333C9[] = {
  {&(_ZTV8S20333C9[4]),  4,83},
  {&(_tg__ZTV9S20333C10__8S20333C9[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C10__8S20333C9[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C10__8S20333C9[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C10__8S20333C9[7]),  7,12},
  {&(_ZTV8S20333C9[34]),  34,83},
  {&(_ZTV8S20333C9[57]),  57,83},
  {&(_ZTV8S20333C9[74]),  74,83},
  {&(_tg__ZTV9S20333C12__8S20333C9[3]),  3,17},
  {&(_tg__ZTV9S20333C119S20333C12__A1__8S20333C9[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C12__A1__8S20333C9[7]),  7,12},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C9[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C109S20333C12__A2__8S20333C9[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C109S20333C12__A2__8S20333C9[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C109S20333C12__A1__8S20333C9[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C12__8S20333C9[7]),  7,12},
  {&(_tg__ZTV9S20333C10__9S20333C12__8S20333C9[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20333C9[];
extern  VTBL_ENTRY _ZTV8S20333C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C9[];
static VTBL_ENTRY alt_thunk_names136[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20333C9D0Ev,_ZThn56_N8S20333C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20333C9D1Ev,_ZThn56_N8S20333C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20333C9 = {  "S20333C9", // class name
  bases_S20333C9, 8,
  &(vtc_S20333C9[0]), // expected_vtbl_contents
  &(vtt_S20333C9[0]), // expected_vtt_contents
  ABISELECT(240,104), // object size
  NSPAIRA(_ZTI8S20333C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20333C9),83, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20333C9),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names136,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20333C6  : virtual S20333C4 , virtual S20333C5 , virtual S20333C7 , S20333C8 , S20333C9 {
  void *s20333c6f0;
  virtual  ~S20333C6(); // _ZN8S20333C6D2Ev
  virtual void  v47(); // _ZN8S20333C63v47Ev
  S20333C6(); // tgen
};
//SIG(-1 S20333C6) C1{ VBC2{ BC3{ v2 v3 v4} v5 v6 v7 v8 v9 v10 Fi[3]} VBC3 VBC4{ v11 v12 v13 v14 v15 FD} BC5{ vd v16 v17 v18 v19 v20 FL[3]} BC6{ BC7{ BC8{ VBC4 vd v21 v22 v23 v24 v25 FC4} v26 v27} BC4 VBC9{ VBC4 BC8 BC7 v28 v29 v30 v31 v32 v33 v34 Fc[8]} v35 v36 v37 v38 v39 v40 v41 Fi} vd v1 Fp}


 S20333C6 ::~S20333C6(){ note_dtor("S20333C6", this);}
void  S20333C6 ::v47(){vfunc_called(this, "_ZN8S20333C63v47Ev");}
S20333C6 ::S20333C6(){ note_ctor("S20333C6", this);} // tgen

static void Test_S20333C6()
{
  extern Class_Descriptor cd_S20333C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,40)];
    init_test(&cd_S20333C6, buf);
    S20333C6 *dp, &lv = *(dp=new (buf) S20333C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,156), "sizeof(S20333C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20333C6)");
    check_base_class_offset(lv, (S20333C5*)(S20333C4*), ABISELECT(128,72), "S20333C6");
    check_base_class_offset(lv, (S20333C4*), ABISELECT(128,72), "S20333C6");
    /*is_ambiguous_... S20333C6::S20333C5 */ AMB_check_base_class_offset(lv, (S20333C5*), ABISELECT(152,88), "S20333C6");
    /*is_ambiguous_... S20333C6::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*), ABISELECT(160,92), "S20333C6");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C9*), ABISELECT(160,92), "S20333C6");
    check_base_class_offset(lv, (S20333C7*)(S20333C12*), ABISELECT(160,92), "S20333C6");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C12*), ABISELECT(160,92), "S20333C6");
    check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C12*), ABISELECT(160,92), "S20333C6");
    check_base_class_offset(lv, (S20333C8*), 0, "S20333C6");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C9*), ABISELECT(32,28), "S20333C6");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C10*)(S20333C9*), ABISELECT(32,28), "S20333C6");
    /*is_ambiguous_... S20333C9::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C9*), ABISELECT(80,48), "S20333C6");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C12*), ABISELECT(192,108), "S20333C6");
    check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C12*), ABISELECT(240,128), "S20333C6");
    check_base_class_offset(lv, (S20333C10*)(S20333C12*), ABISELECT(240,128), "S20333C6");
    check_base_class_offset(lv, (S20333C12*)(S20333C9*), ABISELECT(192,108), "S20333C6");
    check_base_class_offset(lv, (S20333C9*), ABISELECT(32,28), "S20333C6");
    check_field_offset(lv, s20333c6f0, ABISELECT(120,68), "S20333C6.s20333c6f0");
    test_class_info(&lv, &cd_S20333C6);
    dp->~S20333C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20333C6(Test_S20333C6, "S20333C6", ABISELECT(304,156));

#else // __cplusplus

extern void _ZN8S20333C6C1Ev();
extern void _ZN8S20333C6D2Ev();
Name_Map name_map_S20333C6[] = {
  NSPAIR(_ZN8S20333C6C1Ev),
  NSPAIR(_ZN8S20333C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20333C5;
extern VTBL_ENTRY _ZTI8S20333C5[];
extern  VTBL_ENTRY _ZTV8S20333C5[];
extern Class_Descriptor cd_S20333C4;
extern VTBL_ENTRY _ZTI8S20333C4[];
extern  VTBL_ENTRY _ZTV8S20333C4[];
extern Class_Descriptor cd_S20333C5;
extern VTBL_ENTRY _ZTI8S20333C5[];
extern  VTBL_ENTRY _ZTV8S20333C5[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C8;
extern VTBL_ENTRY _ZTI8S20333C8[];
extern  VTBL_ENTRY _ZTV8S20333C8[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C12;
extern VTBL_ENTRY _ZTI9S20333C12[];
extern  VTBL_ENTRY _ZTV9S20333C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C12[];
extern Class_Descriptor cd_S20333C9;
extern VTBL_ENTRY _ZTI8S20333C9[];
extern  VTBL_ENTRY _ZTV8S20333C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C9[];
static Base_Class bases_S20333C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20333C5,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20333C4,    ABISELECT(128,72), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20333C5,    ABISELECT(152,88), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20333C7,    ABISELECT(160,92), //bcp->offset
    69, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20333C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20333C11,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20333C7,    ABISELECT(80,48), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(240,128), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(240,128), //bcp->offset
    113, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20333C12,    ABISELECT(192,108), //bcp->offset
    81, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20333C9,    ABISELECT(32,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI8S20333C6[];
extern void _ZN8S20333C6D1Ev();
extern void _ZN8S20333C6D0Ev();
extern void _ZN8S20333C83v21Ev();
extern void _ZN8S20333C83v22Ev();
extern void _ZN8S20333C83v23Ev();
extern void _ZN8S20333C83v24Ev();
extern void _ZN8S20333C83v25Ev();
extern void _ZN8S20333C63v47Ev();
extern void ABISELECT(_ZThn32_N8S20333C6D1Ev,_ZThn28_N8S20333C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20333C6D0Ev,_ZThn28_N8S20333C6D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C43v10Ev();
extern void _ZN8S20333C43v11Ev();
extern void _ZN8S20333C43v12Ev();
extern void _ZN8S20333C43v13Ev();
extern void _ZN8S20333C43v14Ev();
extern void _ZN8S20333C43v15Ev();
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S20333C6D1Ev,_ZThn108_N8S20333C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S20333C6D0Ev,_ZThn108_N8S20333C6D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20333C6D1Ev,_ZTvn20_n16_N8S20333C6D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C6D0Ev,_ZTvn20_n16_N8S20333C6D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY vtc_S20333C6[] = {
  ABISELECT(192,108),
  ABISELECT(160,92),
  ABISELECT(152,88),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20333C63v47Ev,
  ABISELECT(160,80),
  ABISELECT(128,64),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20333C6D1Ev,_ZThn28_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20333C6D0Ev,_ZThn28_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v15Ev,
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
  ABISELECT(-80,-36),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C6D1Ev,_ZTvn20_n16_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C6D0Ev,_ZTvn20_n16_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern VTBL_ENTRY _ZTV8S20333C6[];
extern void _ZN8S20333C9D1Ev();
extern void _ZN8S20333C9D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C9__8S20333C6[] = {
  ABISELECT(160,80),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C108S20333C9__8S20333C6[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C108S20333C9__8S20333C6[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C108S20333C9__8S20333C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C108S20333C9__8S20333C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C9__8S20333C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S20333C9D1Ev,_ZThn80_N8S20333C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev)();
extern void ABISELECT(_ZThn160_N8S20333C9D0Ev,_ZThn80_N8S20333C9D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C9__8S20333C6[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  ABISELECT(-32,-16),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C9__8S20333C6[] = {
  ABISELECT(-80,-36),
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C12D1Ev();
extern void _ZN9S20333C12D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C6[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN9S20333C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C12__A1__8S20333C6[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C12__A1__8S20333C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C6[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C109S20333C12__A2__8S20333C6[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C109S20333C12__A2__8S20333C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C109S20333C12__A1__8S20333C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C12__8S20333C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C10__9S20333C12__8S20333C6[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
static  VTT_ENTRY vtt_S20333C6[] = {
  {&(_ZTV8S20333C6[6]),  6,125},
  {&(_tg__ZTV8S20333C9__8S20333C6[4]),  4,20},
  {&(_tg__ZTV9S20333C108S20333C9__8S20333C6[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C108S20333C9__8S20333C6[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C108S20333C9__8S20333C6[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C108S20333C9__8S20333C6[7]),  7,12},
  {&(_tg__ZTV8S20333C7__8S20333C9__8S20333C6[7]),  7,12},
  {&(_tg__ZTV9S20333C12__8S20333C9__8S20333C6[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C9__8S20333C6[3]),  3,12},
  {&(_ZTV8S20333C6[52]),  52,125},
  {&(_ZTV8S20333C6[66]),  66,125},
  {&(_ZTV8S20333C6[76]),  76,125},
  {&(_ZTV8S20333C6[18]),  18,125},
  {&(_ZTV8S20333C6[99]),  99,125},
  {&(_ZTV8S20333C6[116]),  116,125},
  {&(_tg__ZTV9S20333C12__8S20333C6[3]),  3,17},
  {&(_tg__ZTV9S20333C119S20333C12__A1__8S20333C6[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C12__A1__8S20333C6[7]),  7,12},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C6[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C109S20333C12__A2__8S20333C6[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C109S20333C12__A2__8S20333C6[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C109S20333C12__A1__8S20333C6[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C12__8S20333C6[7]),  7,12},
  {&(_tg__ZTV9S20333C10__9S20333C12__8S20333C6[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20333C6[];
extern  VTBL_ENTRY _ZTV8S20333C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C6[];
static VTBL_ENTRY alt_thunk_names137[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20333C9D0Ev,_ZThn80_N8S20333C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20333C9D1Ev,_ZThn80_N8S20333C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20333C6D0Ev,_ZThn108_N8S20333C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20333C6D1Ev,_ZThn108_N8S20333C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20333C6 = {  "S20333C6", // class name
  bases_S20333C6, 13,
  &(vtc_S20333C6[0]), // expected_vtbl_contents
  &(vtt_S20333C6[0]), // expected_vtt_contents
  ABISELECT(304,156), // object size
  NSPAIRA(_ZTI8S20333C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20333C6),125, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20333C6),24, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names137,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20333C3  : virtual S20333C4 , virtual S20333C5 , virtual S20333C6 , S20333C7 , virtual S20333C9 {
  virtual  ~S20333C3(); // _ZN8S20333C3D2Ev
  virtual void  v48(); // _ZN8S20333C33v48Ev
  virtual void  v49(); // _ZN8S20333C33v49Ev
  virtual void  v50(); // _ZN8S20333C33v50Ev
  virtual void  v51(); // _ZN8S20333C33v51Ev
  virtual void  v52(); // _ZN8S20333C33v52Ev
  virtual void  v53(); // _ZN8S20333C33v53Ev
  virtual void  v54(); // _ZN8S20333C33v54Ev
  S20333C3(); // tgen
};
//SIG(-1 S20333C3) C1{ VBC2{ BC3{ v8 v9 v10} v11 v12 v13 v14 v15 v16 Fi[3]} VBC3 VBC4{ VBC2 VBC3 VBC5{ v17 v18 v19 v20 v21 FD} BC6{ vd v22 v23 v24 v25 v26 FL[3]} BC7{ BC8{ BC9{ VBC5 vd v27 v28 v29 v30 v31 FC5} v32 v33} BC5 VBC10{ VBC5 BC9 BC8 v34 v35 v36 v37 v38 v39 v40 Fc[8]} v41 v42 v43 v44 v45 v46 v47 Fi} vd v48 Fp} BC5 VBC7 vd v1 v2 v3 v4 v5 v6 v7}


 S20333C3 ::~S20333C3(){ note_dtor("S20333C3", this);}
void  S20333C3 ::v48(){vfunc_called(this, "_ZN8S20333C33v48Ev");}
void  S20333C3 ::v49(){vfunc_called(this, "_ZN8S20333C33v49Ev");}
void  S20333C3 ::v50(){vfunc_called(this, "_ZN8S20333C33v50Ev");}
void  S20333C3 ::v51(){vfunc_called(this, "_ZN8S20333C33v51Ev");}
void  S20333C3 ::v52(){vfunc_called(this, "_ZN8S20333C33v52Ev");}
void  S20333C3 ::v53(){vfunc_called(this, "_ZN8S20333C33v53Ev");}
void  S20333C3 ::v54(){vfunc_called(this, "_ZN8S20333C33v54Ev");}
S20333C3 ::S20333C3(){ note_ctor("S20333C3", this);} // tgen

static void Test_S20333C3()
{
  extern Class_Descriptor cd_S20333C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,54)];
    init_test(&cd_S20333C3, buf);
    S20333C3 *dp, &lv = *(dp=new (buf) S20333C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,212), "sizeof(S20333C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20333C3)");
    check_base_class_offset(lv, (S20333C5*)(S20333C4*), ABISELECT(32,16), "S20333C3");
    check_base_class_offset(lv, (S20333C4*), ABISELECT(32,16), "S20333C3");
    check_base_class_offset(lv, (S20333C4*)(S20333C6*), ABISELECT(32,16), "S20333C3");
    /*is_ambiguous_... S20333C3::S20333C5 */ AMB_check_base_class_offset(lv, (S20333C5*), ABISELECT(56,32), "S20333C3");
    /*is_ambiguous_... S20333C6::S20333C5 */ AMB_check_base_class_offset(lv, (S20333C5*)(S20333C6*), ABISELECT(56,32), "S20333C3");
    /*is_ambiguous_... S20333C6::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C6*), ABISELECT(192,108), "S20333C3");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C9*)(S20333C6*), ABISELECT(192,108), "S20333C3");
    check_base_class_offset(lv, (S20333C7*)(S20333C12*), ABISELECT(192,108), "S20333C3");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C12*), ABISELECT(192,108), "S20333C3");
    check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C12*), ABISELECT(192,108), "S20333C3");
    /*is_ambiguous_... S20333C3::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C9*), ABISELECT(192,108), "S20333C3");
    check_base_class_offset(lv, (S20333C8*)(S20333C6*), ABISELECT(64,36), "S20333C3");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C9*)(S20333C6*), ABISELECT(96,64), "S20333C3");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C10*)(S20333C9*)(S20333C6*), ABISELECT(96,64), "S20333C3");
    /*is_ambiguous_... S20333C9::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C9*)(S20333C6*), ABISELECT(144,84), "S20333C3");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C12*), ABISELECT(224,124), "S20333C3");
    check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C12*), ABISELECT(272,144), "S20333C3");
    check_base_class_offset(lv, (S20333C10*)(S20333C12*), ABISELECT(272,144), "S20333C3");
    check_base_class_offset(lv, (S20333C12*)(S20333C9*)(S20333C6*), ABISELECT(224,124), "S20333C3");
    /*is_ambiguous_... S20333C3::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C12*)(S20333C9*), ABISELECT(224,124), "S20333C3");
    check_base_class_offset(lv, (S20333C9*)(S20333C6*), ABISELECT(96,64), "S20333C3");
    check_base_class_offset(lv, (S20333C6*), ABISELECT(64,36), "S20333C3");
    /*is_ambiguous_... S20333C3::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*), 0, "S20333C3");
    /*is_ambiguous_... S20333C3::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C9*), ABISELECT(336,172), "S20333C3");
    /*is_ambiguous_... S20333C3::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C10*)(S20333C9*), ABISELECT(336,172), "S20333C3");
    /*is_ambiguous_... S20333C3::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C9*), ABISELECT(384,192), "S20333C3");
    /*is_ambiguous_... S20333C3::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C9*), ABISELECT(336,172), "S20333C3");
    test_class_info(&lv, &cd_S20333C3);
    dp->~S20333C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20333C3(Test_S20333C3, "S20333C3", ABISELECT(432,212));

#else // __cplusplus

extern void _ZN8S20333C3C1Ev();
extern void _ZN8S20333C3D2Ev();
Name_Map name_map_S20333C3[] = {
  NSPAIR(_ZN8S20333C3C1Ev),
  NSPAIR(_ZN8S20333C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20333C5;
extern VTBL_ENTRY _ZTI8S20333C5[];
extern  VTBL_ENTRY _ZTV8S20333C5[];
extern Class_Descriptor cd_S20333C4;
extern VTBL_ENTRY _ZTI8S20333C4[];
extern  VTBL_ENTRY _ZTV8S20333C4[];
extern Class_Descriptor cd_S20333C5;
extern VTBL_ENTRY _ZTI8S20333C5[];
extern  VTBL_ENTRY _ZTV8S20333C5[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C8;
extern VTBL_ENTRY _ZTI8S20333C8[];
extern  VTBL_ENTRY _ZTV8S20333C8[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C12;
extern VTBL_ENTRY _ZTI9S20333C12[];
extern  VTBL_ENTRY _ZTV9S20333C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C12[];
extern Class_Descriptor cd_S20333C9;
extern VTBL_ENTRY _ZTI8S20333C9[];
extern  VTBL_ENTRY _ZTV8S20333C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C9[];
extern Class_Descriptor cd_S20333C6;
extern VTBL_ENTRY _ZTI8S20333C6[];
extern  VTBL_ENTRY _ZTV8S20333C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C6[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C9;
extern VTBL_ENTRY _ZTI8S20333C9[];
extern  VTBL_ENTRY _ZTV8S20333C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C9[];
static Base_Class bases_S20333C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20333C5,    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_S20333C4,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20333C5,    ABISELECT(56,32), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20333C7,    ABISELECT(192,108), //bcp->offset
    117, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20333C8,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(96,64), //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
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20333C7,    ABISELECT(144,84), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(272,144), //bcp->offset
    161, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20333C12,    ABISELECT(224,124), //bcp->offset
    129, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20333C9,    ABISELECT(96,64), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20333C6,    ABISELECT(64,36), //bcp->offset
    50, //bcp->virtual_function_table_offset
    32, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20333C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20333C11,    ABISELECT(336,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(336,172), //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
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20333C7,    ABISELECT(384,192), //bcp->offset
    213, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20333C9,    ABISELECT(336,172), //bcp->offset
    173, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20333C3[];
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void _ZN8S20333C3D1Ev();
extern void _ZN8S20333C3D0Ev();
extern void _ZN8S20333C33v48Ev();
extern void _ZN8S20333C33v49Ev();
extern void _ZN8S20333C33v50Ev();
extern void _ZN8S20333C33v51Ev();
extern void _ZN8S20333C33v52Ev();
extern void _ZN8S20333C33v53Ev();
extern void _ZN8S20333C33v54Ev();
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C43v10Ev();
extern void _ZN8S20333C43v11Ev();
extern void _ZN8S20333C43v12Ev();
extern void _ZN8S20333C43v13Ev();
extern void _ZN8S20333C43v14Ev();
extern void _ZN8S20333C43v15Ev();
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void ABISELECT(_ZTv0_n56_N8S20333C3D1Ev,_ZTv0_n28_N8S20333C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S20333C3D1Ev,_ZThn36_N8S20333C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20333C3D0Ev,_ZTv0_n28_N8S20333C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S20333C3D0Ev,_ZThn36_N8S20333C3D0Ev)() __attribute__((weak));
extern void _ZN8S20333C83v21Ev();
extern void _ZN8S20333C83v22Ev();
extern void _ZN8S20333C83v23Ev();
extern void _ZN8S20333C83v24Ev();
extern void _ZN8S20333C83v25Ev();
extern void _ZN8S20333C63v47Ev();
extern void ABISELECT(_ZTvn32_n56_N8S20333C3D1Ev,_ZTvn28_n28_N8S20333C3D1Ev)();
extern void ABISELECT(_ZTvn32_n56_N8S20333C3D0Ev,_ZTvn28_n28_N8S20333C3D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void ABISELECT(_ZTv0_n32_N8S20333C3D1Ev,_ZTv0_n16_N8S20333C3D1Ev)();
extern void ABISELECT(_ZThn224_N8S20333C3D1Ev,_ZThn124_N8S20333C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C3D0Ev,_ZTv0_n16_N8S20333C3D0Ev)();
extern void ABISELECT(_ZThn224_N8S20333C3D0Ev,_ZThn124_N8S20333C3D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20333C3D1Ev,_ZTvn20_n16_N8S20333C3D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C3D0Ev,_ZTvn20_n16_N8S20333C3D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void ABISELECT(_ZTv0_n40_N8S20333C3D1Ev,_ZTv0_n20_N8S20333C3D1Ev)();
extern void ABISELECT(_ZThn336_N8S20333C3D1Ev,_ZThn172_N8S20333C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20333C3D0Ev,_ZTv0_n20_N8S20333C3D0Ev)();
extern void ABISELECT(_ZThn336_N8S20333C3D0Ev,_ZThn172_N8S20333C3D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY vtc_S20333C3[] = {
  ABISELECT(336,172),
  ABISELECT(224,124),
  ABISELECT(192,108),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20333C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v48Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v49Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v50Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v51Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v52Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v53Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v54Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v15Ev,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(-8,-4),
  ABISELECT(-32,-20),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20333C3D1Ev,_ZTv0_n28_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20333C3D0Ev,_ZTv0_n28_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20333C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20333C63v47Ev,
  ABISELECT(128,60),
  ABISELECT(96,44),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20333C3D1Ev,_ZTvn28_n28_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20333C3D0Ev,_ZTvn28_n28_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-124),
  ABISELECT(-32,-16),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C3D1Ev,_ZTv0_n16_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C3D0Ev,_ZTv0_n16_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
  ABISELECT(-80,-36),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C3D1Ev,_ZTvn20_n16_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C3D0Ev,_ZTvn20_n16_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-172),
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  ABISELECT(-336,-172),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20333C3D1Ev,_ZTv0_n20_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20333C3D0Ev,_ZTv0_n20_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
  ABISELECT(-384,-192),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern VTBL_ENTRY _ZTV8S20333C3[];
extern void _ZN8S20333C6D1Ev();
extern void _ZN8S20333C6D0Ev();
extern void _ZN8S20333C83v21Ev();
extern void _ZN8S20333C83v22Ev();
extern void _ZN8S20333C83v23Ev();
extern void _ZN8S20333C83v24Ev();
extern void _ZN8S20333C83v25Ev();
extern void _ZN8S20333C63v47Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C6__8S20333C3[] = {
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(-8,-4),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20333C63v47Ev,
};
extern void _ZN8S20333C9D1Ev();
extern void _ZN8S20333C9D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C98S20333C6__8S20333C3[] = {
  ABISELECT(128,60),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C108S20333C98S20333C6__8S20333C3[] = {
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C108S20333C98S20333C6__8S20333C3[] = {
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C108S20333C98S20333C6__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C108S20333C98S20333C6__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C98S20333C6__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S20333C9D1Ev,_ZThn60_N8S20333C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S20333C9D0Ev,_ZThn60_N8S20333C9D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C98S20333C6__8S20333C3[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-60),
  ABISELECT(-32,-16),
  ABISELECT(-128,-60),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C98S20333C6__8S20333C3[] = {
  ABISELECT(-80,-36),
  ABISELECT(-176,-80),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C43v10Ev();
extern void _ZN8S20333C43v11Ev();
extern void _ZN8S20333C43v12Ev();
extern void _ZN8S20333C43v13Ev();
extern void _ZN8S20333C43v14Ev();
extern void _ZN8S20333C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C4__8S20333C6__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v15Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C5__A1__8S20333C6__8S20333C3[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C6__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZThn32_N8S20333C6D1Ev,_ZThn28_N8S20333C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20333C6D0Ev,_ZThn28_N8S20333C6D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C9__8S20333C6__8S20333C3[] = {
  ABISELECT(128,60),
  ABISELECT(96,44),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20333C6D1Ev,_ZThn28_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20333C6D0Ev,_ZThn28_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20333C6D1Ev,_ZThn88_N8S20333C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20333C6D0Ev,_ZThn88_N8S20333C6D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C6__8S20333C3[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-88),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C6D1Ev,_ZTvn20_n16_N8S20333C6D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C6D0Ev,_ZTvn20_n16_N8S20333C6D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C6__8S20333C3[] = {
  ABISELECT(-80,-36),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C6D1Ev,_ZTvn20_n16_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C6D0Ev,_ZTvn20_n16_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C12D1Ev();
extern void _ZN9S20333C12D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C3[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN9S20333C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C12__A1__8S20333C3[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C12__A1__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C3[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C109S20333C12__A2__8S20333C3[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C109S20333C12__A2__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C109S20333C12__A1__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C12__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C10__9S20333C12__8S20333C3[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN8S20333C9D1Ev();
extern void _ZN8S20333C9D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C9__A1__8S20333C3[] = {
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C108S20333C9__A2__8S20333C3[] = {
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C108S20333C9__A3__8S20333C3[] = {
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C108S20333C9__A3__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C108S20333C9__A2__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C9__A1__8S20333C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C9__A1__8S20333C3[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,48),
  ABISELECT(-32,-16),
  ABISELECT(112,48),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C9__A1__8S20333C3[] = {
  ABISELECT(-80,-36),
  ABISELECT(64,28),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
static  VTT_ENTRY vtt_S20333C3[] = {
  {&(_ZTV8S20333C3[8]),  8,220},
  {&(_ZTV8S20333C3[33]),  33,220},
  {&(_ZTV8S20333C3[47]),  47,220},
  {&(_ZTV8S20333C3[82]),  82,220},
  {&(_ZTV8S20333C3[124]),  124,220},
  {&(_ZTV8S20333C3[94]),  94,220},
  {&(_ZTV8S20333C3[112]),  112,220},
  {&(_ZTV8S20333C3[147]),  147,220},
  {&(_ZTV8S20333C3[164]),  164,220},
  {&(_ZTV8S20333C3[197]),  197,220},
  {&(_ZTV8S20333C3[215]),  215,220},
  {&(_tg__ZTV8S20333C6__8S20333C3[6]),  6,14},
  {&(_tg__ZTV8S20333C98S20333C6__8S20333C3[4]),  4,20},
  {&(_tg__ZTV9S20333C108S20333C98S20333C6__8S20333C3[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C108S20333C98S20333C6__8S20333C3[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C108S20333C98S20333C6__8S20333C3[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C108S20333C98S20333C6__8S20333C3[7]),  7,12},
  {&(_tg__ZTV8S20333C7__8S20333C98S20333C6__8S20333C3[7]),  7,12},
  {&(_tg__ZTV9S20333C12__8S20333C98S20333C6__8S20333C3[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C98S20333C6__8S20333C3[3]),  3,12},
  {&(_tg__ZTV8S20333C4__8S20333C6__8S20333C3[11]),  11,20},
  {&(_tg__ZTV8S20333C5__A1__8S20333C6__8S20333C3[5]),  5,8},
  {&(_tg__ZTV8S20333C7__8S20333C6__8S20333C3[7]),  7,12},
  {&(_tg__ZTV8S20333C9__8S20333C6__8S20333C3[4]),  4,20},
  {&(_tg__ZTV9S20333C12__8S20333C6__8S20333C3[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C6__8S20333C3[3]),  3,12},
  {&(_tg__ZTV9S20333C12__8S20333C3[3]),  3,17},
  {&(_tg__ZTV9S20333C119S20333C12__A1__8S20333C3[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C12__A1__8S20333C3[7]),  7,12},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C3[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C109S20333C12__A2__8S20333C3[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C109S20333C12__A2__8S20333C3[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C109S20333C12__A1__8S20333C3[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C12__8S20333C3[7]),  7,12},
  {&(_tg__ZTV9S20333C10__9S20333C12__8S20333C3[3]),  3,12},
  {&(_tg__ZTV8S20333C9__A1__8S20333C3[4]),  4,20},
  {&(_tg__ZTV9S20333C108S20333C9__A2__8S20333C3[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C108S20333C9__A3__8S20333C3[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C108S20333C9__A3__8S20333C3[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C108S20333C9__A2__8S20333C3[7]),  7,12},
  {&(_tg__ZTV8S20333C7__8S20333C9__A1__8S20333C3[7]),  7,12},
  {&(_tg__ZTV9S20333C12__8S20333C9__A1__8S20333C3[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C9__A1__8S20333C3[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20333C3[];
extern  VTBL_ENTRY _ZTV8S20333C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C3[];
static VTBL_ENTRY alt_thunk_names138[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20333C6D0Ev,_ZThn88_N8S20333C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20333C6D1Ev,_ZThn88_N8S20333C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20333C9D0Ev,_ZThn60_N8S20333C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20333C9D1Ev,_ZThn60_N8S20333C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20333C3D0Ev,_ZTv0_n20_N8S20333C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20333C3D0Ev,_ZThn172_N8S20333C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20333C3D1Ev,_ZTv0_n20_N8S20333C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20333C3D1Ev,_ZThn172_N8S20333C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C3D0Ev,_ZTv0_n16_N8S20333C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20333C3D0Ev,_ZThn124_N8S20333C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C3D1Ev,_ZTv0_n16_N8S20333C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20333C3D1Ev,_ZThn124_N8S20333C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20333C3D0Ev,_ZTv0_n28_N8S20333C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20333C3D0Ev,_ZThn36_N8S20333C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20333C3D1Ev,_ZTv0_n28_N8S20333C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20333C3D1Ev,_ZThn36_N8S20333C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20333C3 = {  "S20333C3", // class name
  bases_S20333C3, 19,
  &(vtc_S20333C3[0]), // expected_vtbl_contents
  &(vtt_S20333C3[0]), // expected_vtt_contents
  ABISELECT(432,212), // object size
  NSPAIRA(_ZTI8S20333C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20333C3),220, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20333C3),43, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names138,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20333C13  : virtual S20333C3 {
  __tsi64 s20333c13f0;
  virtual void  v55(); // _ZN9S20333C133v55Ev
  virtual void  v56(); // _ZN9S20333C133v56Ev
  virtual void  v57(); // _ZN9S20333C133v57Ev
  virtual void  v58(); // _ZN9S20333C133v58Ev
  virtual void  v59(); // _ZN9S20333C133v59Ev
  virtual void  v60(); // _ZN9S20333C133v60Ev
  virtual void  v61(); // _ZN9S20333C133v61Ev
  ~S20333C13(); // tgen
  S20333C13(); // tgen
};
//SIG(-1 S20333C13) C1{ VBC2{ VBC3{ BC4{ v8 v9 v10} v11 v12 v13 v14 v15 v16 Fi[3]} VBC4 VBC5{ VBC3 VBC4 VBC6{ v17 v18 v19 v20 v21 FD} BC7{ vd v22 v23 v24 v25 v26 FL[3]} BC8{ BC9{ BC10{ VBC6 vd v27 v28 v29 v30 v31 FC6} v32 v33} BC6 VBC11{ VBC6 BC10 BC9 v34 v35 v36 v37 v38 v39 v40 Fc[8]} v41 v42 v43 v44 v45 v46 v47 Fi} vd v48 Fp} BC6 VBC8 vd v49 v50 v51 v52 v53 v54 v55} v1 v2 v3 v4 v5 v6 v7 FL}


void  S20333C13 ::v55(){vfunc_called(this, "_ZN9S20333C133v55Ev");}
void  S20333C13 ::v56(){vfunc_called(this, "_ZN9S20333C133v56Ev");}
void  S20333C13 ::v57(){vfunc_called(this, "_ZN9S20333C133v57Ev");}
void  S20333C13 ::v58(){vfunc_called(this, "_ZN9S20333C133v58Ev");}
void  S20333C13 ::v59(){vfunc_called(this, "_ZN9S20333C133v59Ev");}
void  S20333C13 ::v60(){vfunc_called(this, "_ZN9S20333C133v60Ev");}
void  S20333C13 ::v61(){vfunc_called(this, "_ZN9S20333C133v61Ev");}
S20333C13 ::~S20333C13(){ note_dtor("S20333C13", this);} // tgen
S20333C13 ::S20333C13(){ note_ctor("S20333C13", this);} // tgen

static void Test_S20333C13()
{
  extern Class_Descriptor cd_S20333C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(29,56)];
    init_test(&cd_S20333C13, buf);
    S20333C13 *dp, &lv = *(dp=new (buf) S20333C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,220), "sizeof(S20333C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20333C13)");
    check_base_class_offset(lv, (S20333C5*)(S20333C4*), ABISELECT(48,28), "S20333C13");
    check_base_class_offset(lv, (S20333C4*)(S20333C3*), ABISELECT(48,28), "S20333C13");
    check_base_class_offset(lv, (S20333C4*)(S20333C6*), ABISELECT(48,28), "S20333C13");
    /*is_ambiguous_... S20333C3::S20333C5 */ AMB_check_base_class_offset(lv, (S20333C5*)(S20333C3*), 0, "S20333C13");
    /*is_ambiguous_... S20333C6::S20333C5 */ AMB_check_base_class_offset(lv, (S20333C5*)(S20333C6*), 0, "S20333C13");
    /*is_ambiguous_... S20333C6::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C6*), ABISELECT(208,116), "S20333C13");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C9*)(S20333C6*), ABISELECT(208,116), "S20333C13");
    check_base_class_offset(lv, (S20333C7*)(S20333C12*), ABISELECT(208,116), "S20333C13");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C12*), ABISELECT(208,116), "S20333C13");
    check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C12*), ABISELECT(208,116), "S20333C13");
    /*is_ambiguous_... S20333C13::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C9*), ABISELECT(208,116), "S20333C13");
    check_base_class_offset(lv, (S20333C8*)(S20333C6*), ABISELECT(80,44), "S20333C13");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C9*)(S20333C6*), ABISELECT(112,72), "S20333C13");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C10*)(S20333C9*)(S20333C6*), ABISELECT(112,72), "S20333C13");
    /*is_ambiguous_... S20333C9::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C9*)(S20333C6*), ABISELECT(160,92), "S20333C13");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C12*), ABISELECT(240,132), "S20333C13");
    check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C12*), ABISELECT(288,152), "S20333C13");
    check_base_class_offset(lv, (S20333C10*)(S20333C12*), ABISELECT(288,152), "S20333C13");
    check_base_class_offset(lv, (S20333C12*)(S20333C9*)(S20333C6*), ABISELECT(240,132), "S20333C13");
    /*is_ambiguous_... S20333C13::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C12*)(S20333C9*), ABISELECT(240,132), "S20333C13");
    check_base_class_offset(lv, (S20333C9*)(S20333C6*), ABISELECT(112,72), "S20333C13");
    check_base_class_offset(lv, (S20333C6*)(S20333C3*), ABISELECT(80,44), "S20333C13");
    /*is_ambiguous_... S20333C3::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C3*), ABISELECT(16,12), "S20333C13");
    /*is_ambiguous_... S20333C13::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C9*), ABISELECT(352,180), "S20333C13");
    /*is_ambiguous_... S20333C13::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C10*)(S20333C9*), ABISELECT(352,180), "S20333C13");
    /*is_ambiguous_... S20333C13::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C9*), ABISELECT(400,200), "S20333C13");
    /*is_ambiguous_... S20333C3::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C9*)(S20333C3*), ABISELECT(352,180), "S20333C13");
    check_base_class_offset(lv, (S20333C3*), ABISELECT(16,12), "S20333C13");
    check_field_offset(lv, s20333c13f0, ABISELECT(8,4), "S20333C13.s20333c13f0");
    test_class_info(&lv, &cd_S20333C13);
    dp->~S20333C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20333C13(Test_S20333C13, "S20333C13", ABISELECT(448,220));

#else // __cplusplus

extern void _ZN9S20333C13C1Ev();
extern void _ZN9S20333C13D1Ev();
Name_Map name_map_S20333C13[] = {
  NSPAIR(_ZN9S20333C13C1Ev),
  NSPAIR(_ZN9S20333C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20333C5;
extern VTBL_ENTRY _ZTI8S20333C5[];
extern  VTBL_ENTRY _ZTV8S20333C5[];
extern Class_Descriptor cd_S20333C4;
extern VTBL_ENTRY _ZTI8S20333C4[];
extern  VTBL_ENTRY _ZTV8S20333C4[];
extern Class_Descriptor cd_S20333C5;
extern VTBL_ENTRY _ZTI8S20333C5[];
extern  VTBL_ENTRY _ZTV8S20333C5[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C8;
extern VTBL_ENTRY _ZTI8S20333C8[];
extern  VTBL_ENTRY _ZTV8S20333C8[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C12;
extern VTBL_ENTRY _ZTI9S20333C12[];
extern  VTBL_ENTRY _ZTV9S20333C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C12[];
extern Class_Descriptor cd_S20333C9;
extern VTBL_ENTRY _ZTI8S20333C9[];
extern  VTBL_ENTRY _ZTV8S20333C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C9[];
extern Class_Descriptor cd_S20333C6;
extern VTBL_ENTRY _ZTI8S20333C6[];
extern  VTBL_ENTRY _ZTV8S20333C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C6[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C9;
extern VTBL_ENTRY _ZTI8S20333C9[];
extern  VTBL_ENTRY _ZTV8S20333C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C9[];
extern Class_Descriptor cd_S20333C3;
extern VTBL_ENTRY _ZTI8S20333C3[];
extern  VTBL_ENTRY _ZTV8S20333C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C3[];
static Base_Class bases_S20333C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20333C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20333C4,    ABISELECT(48,28), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20333C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20333C7,    ABISELECT(208,116), //bcp->offset
    146, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20333C8,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(112,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(112,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20333C7,    ABISELECT(160,92), //bcp->offset
    139, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(240,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(288,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(288,152), //bcp->offset
    190, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20333C12,    ABISELECT(240,132), //bcp->offset
    158, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20333C9,    ABISELECT(112,72), //bcp->offset
    119, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20333C6,    ABISELECT(80,44), //bcp->offset
    79, //bcp->virtual_function_table_offset
    32, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20333C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(352,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(352,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20333C7,    ABISELECT(400,200), //bcp->offset
    242, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20333C9,    ABISELECT(352,180), //bcp->offset
    202, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20333C3,    ABISELECT(16,12), //bcp->offset
    24, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20333C13[];
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN9S20333C133v55Ev();
extern void _ZN9S20333C133v56Ev();
extern void _ZN9S20333C133v57Ev();
extern void _ZN9S20333C133v58Ev();
extern void _ZN9S20333C133v59Ev();
extern void _ZN9S20333C133v60Ev();
extern void _ZN9S20333C133v61Ev();
extern void _ZN9S20333C13D1Ev();
extern void _ZN9S20333C13D0Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void ABISELECT(_ZTv0_n112_N9S20333C13D1Ev,_ZTv0_n56_N9S20333C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S20333C13D1Ev,_ZThn12_N9S20333C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S20333C13D0Ev,_ZTv0_n56_N9S20333C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S20333C13D0Ev,_ZThn12_N9S20333C13D0Ev)() __attribute__((weak));
extern void _ZN8S20333C33v48Ev();
extern void _ZN8S20333C33v49Ev();
extern void _ZN8S20333C33v50Ev();
extern void _ZN8S20333C33v51Ev();
extern void _ZN8S20333C33v52Ev();
extern void _ZN8S20333C33v53Ev();
extern void _ZN8S20333C33v54Ev();
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C43v10Ev();
extern void _ZN8S20333C43v11Ev();
extern void _ZN8S20333C43v12Ev();
extern void _ZN8S20333C43v13Ev();
extern void _ZN8S20333C43v14Ev();
extern void _ZN8S20333C43v15Ev();
extern void ABISELECT(_ZTv0_n56_N9S20333C13D1Ev,_ZTv0_n28_N9S20333C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S20333C13D1Ev,_ZThn44_N9S20333C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20333C13D0Ev,_ZTv0_n28_N9S20333C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S20333C13D0Ev,_ZThn44_N9S20333C13D0Ev)() __attribute__((weak));
extern void _ZN8S20333C83v21Ev();
extern void _ZN8S20333C83v22Ev();
extern void _ZN8S20333C83v23Ev();
extern void _ZN8S20333C83v24Ev();
extern void _ZN8S20333C83v25Ev();
extern void _ZN8S20333C63v47Ev();
extern void ABISELECT(_ZTvn32_n56_N9S20333C13D1Ev,_ZTvn28_n28_N9S20333C13D1Ev)();
extern void ABISELECT(_ZTvn32_n56_N9S20333C13D0Ev,_ZTvn28_n28_N9S20333C13D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void ABISELECT(_ZTv0_n32_N9S20333C13D1Ev,_ZTv0_n16_N9S20333C13D1Ev)();
extern void ABISELECT(_ZThn240_N9S20333C13D1Ev,_ZThn132_N9S20333C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20333C13D0Ev,_ZTv0_n16_N9S20333C13D0Ev)();
extern void ABISELECT(_ZThn240_N9S20333C13D0Ev,_ZThn132_N9S20333C13D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
extern void ABISELECT(_ZTvn48_n32_N9S20333C13D1Ev,_ZTvn20_n16_N9S20333C13D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N9S20333C13D0Ev,_ZTvn20_n16_N9S20333C13D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void ABISELECT(_ZTv0_n40_N9S20333C13D1Ev,_ZTv0_n20_N9S20333C13D1Ev)();
extern void ABISELECT(_ZThn352_N9S20333C13D1Ev,_ZThn180_N9S20333C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20333C13D0Ev,_ZTv0_n20_N9S20333C13D0Ev)();
extern void ABISELECT(_ZThn352_N9S20333C13D0Ev,_ZThn180_N9S20333C13D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY vtc_S20333C13[] = {
  ABISELECT(352,180),
  ABISELECT(240,132),
  ABISELECT(208,116),
  ABISELECT(80,44),
  0,
  ABISELECT(48,28),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v55Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v56Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v57Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v58Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v59Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v60Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v61Ev,
  (VTBL_ENTRY)&_ZN9S20333C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C13D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(336,168),
  ABISELECT(224,120),
  ABISELECT(192,104),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20333C13D1Ev,_ZTv0_n56_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20333C13D0Ev,_ZTv0_n56_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20333C33v48Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v49Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v50Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v51Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v52Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v53Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v54Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v15Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-44),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20333C13D1Ev,_ZTv0_n28_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20333C13D0Ev,_ZTv0_n28_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20333C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20333C63v47Ev,
  ABISELECT(128,60),
  ABISELECT(96,44),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N9S20333C13D1Ev,_ZTvn28_n28_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N9S20333C13D0Ev,_ZTvn28_n28_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  ABISELECT(-32,-16),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20333C13D1Ev,_ZTv0_n16_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20333C13D0Ev,_ZTv0_n16_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
  ABISELECT(-80,-36),
  ABISELECT(-288,-152),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20333C13D1Ev,_ZTvn20_n16_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20333C13D0Ev,_ZTvn20_n16_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-180),
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  ABISELECT(-352,-180),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20333C13D1Ev,_ZTv0_n20_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20333C13D0Ev,_ZTv0_n20_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
  ABISELECT(-400,-200),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern VTBL_ENTRY _ZTV9S20333C13[];
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void _ZN8S20333C3D1Ev();
extern void _ZN8S20333C3D0Ev();
extern void _ZN8S20333C33v48Ev();
extern void _ZN8S20333C33v49Ev();
extern void _ZN8S20333C33v50Ev();
extern void _ZN8S20333C33v51Ev();
extern void _ZN8S20333C33v52Ev();
extern void _ZN8S20333C33v53Ev();
extern void _ZN8S20333C33v54Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C3__9S20333C13[] = {
  ABISELECT(336,168),
  ABISELECT(224,120),
  ABISELECT(192,104),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20333C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v48Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v49Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v50Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v51Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v52Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v53Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v54Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C43v10Ev();
extern void _ZN8S20333C43v11Ev();
extern void _ZN8S20333C43v12Ev();
extern void _ZN8S20333C43v13Ev();
extern void _ZN8S20333C43v14Ev();
extern void _ZN8S20333C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C4__8S20333C3__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v15Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C5__A1__8S20333C3__9S20333C13[] = {
  0,
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20333C3D1Ev,_ZTv0_n28_N8S20333C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S20333C3D1Ev,_ZThn32_N8S20333C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20333C3D0Ev,_ZTv0_n28_N8S20333C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S20333C3D0Ev,_ZThn32_N8S20333C3D0Ev)() __attribute__((weak));
extern void _ZN8S20333C83v21Ev();
extern void _ZN8S20333C83v22Ev();
extern void _ZN8S20333C83v23Ev();
extern void _ZN8S20333C83v24Ev();
extern void _ZN8S20333C83v25Ev();
extern void _ZN8S20333C63v47Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C6__8S20333C3__9S20333C13[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20333C3D1Ev,_ZTv0_n28_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20333C3D0Ev,_ZTv0_n28_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20333C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20333C63v47Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C3__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTvn32_n56_N8S20333C3D1Ev,_ZTvn28_n28_N8S20333C3D1Ev)();
extern void ABISELECT(_ZTvn32_n56_N8S20333C3D0Ev,_ZTvn28_n28_N8S20333C3D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C98S20333C6__8S20333C3__9S20333C13[] = {
  ABISELECT(128,60),
  ABISELECT(96,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20333C3D1Ev,_ZTvn28_n28_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20333C3D0Ev,_ZTvn28_n28_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C78S20333C98S20333C6__A1__8S20333C3__9S20333C13[] = {
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C3D1Ev,_ZTv0_n16_N8S20333C3D1Ev)();
extern void ABISELECT(_ZThn224_N8S20333C3D1Ev,_ZThn120_N8S20333C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C3D0Ev,_ZTv0_n16_N8S20333C3D0Ev)();
extern void ABISELECT(_ZThn224_N8S20333C3D0Ev,_ZThn120_N8S20333C3D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C3__9S20333C13[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-120),
  ABISELECT(-32,-16),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C3D1Ev,_ZTv0_n16_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C3D0Ev,_ZTv0_n16_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C3D1Ev,_ZTvn20_n16_N8S20333C3D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C3D0Ev,_ZTvn20_n16_N8S20333C3D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C3__9S20333C13[] = {
  ABISELECT(-80,-36),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C3D1Ev,_ZTvn20_n16_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C3D0Ev,_ZTvn20_n16_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S20333C3D1Ev,_ZTv0_n20_N8S20333C3D1Ev)();
extern void ABISELECT(_ZThn336_N8S20333C3D1Ev,_ZThn168_N8S20333C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20333C3D0Ev,_ZTv0_n20_N8S20333C3D0Ev)();
extern void ABISELECT(_ZThn336_N8S20333C3D0Ev,_ZThn168_N8S20333C3D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C9__A1__8S20333C3__9S20333C13[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-168),
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20333C3D1Ev,_ZTv0_n20_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20333C3D0Ev,_ZTv0_n20_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C78S20333C9__A3__8S20333C3__9S20333C13[] = {
  ABISELECT(-384,-188),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C6D1Ev();
extern void _ZN8S20333C6D0Ev();
extern void _ZN8S20333C83v21Ev();
extern void _ZN8S20333C83v22Ev();
extern void _ZN8S20333C83v23Ev();
extern void _ZN8S20333C83v24Ev();
extern void _ZN8S20333C83v25Ev();
extern void _ZN8S20333C63v47Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C6__9S20333C13[] = {
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(-80,-44),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20333C63v47Ev,
};
extern void _ZN8S20333C9D1Ev();
extern void _ZN8S20333C9D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C98S20333C6__9S20333C13[] = {
  ABISELECT(128,60),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C108S20333C98S20333C6__9S20333C13[] = {
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C108S20333C98S20333C6__9S20333C13[] = {
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C108S20333C98S20333C6__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C108S20333C98S20333C6__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C98S20333C6__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S20333C9D1Ev,_ZThn60_N8S20333C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S20333C9D0Ev,_ZThn60_N8S20333C9D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C98S20333C6__9S20333C13[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-60),
  ABISELECT(-32,-16),
  ABISELECT(-128,-60),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C98S20333C6__9S20333C13[] = {
  ABISELECT(-80,-36),
  ABISELECT(-176,-80),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C43v10Ev();
extern void _ZN8S20333C43v11Ev();
extern void _ZN8S20333C43v12Ev();
extern void _ZN8S20333C43v13Ev();
extern void _ZN8S20333C43v14Ev();
extern void _ZN8S20333C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C4__8S20333C6__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v15Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C5__A1__8S20333C6__9S20333C13[] = {
  0,
  0,
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C6__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZThn32_N8S20333C6D1Ev,_ZThn28_N8S20333C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20333C6D0Ev,_ZThn28_N8S20333C6D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C9__8S20333C6__9S20333C13[] = {
  ABISELECT(128,60),
  ABISELECT(96,44),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20333C6D1Ev,_ZThn28_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20333C6D0Ev,_ZThn28_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20333C6D1Ev,_ZThn88_N8S20333C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20333C6D0Ev,_ZThn88_N8S20333C6D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C6__9S20333C13[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-88),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C6D1Ev,_ZTvn20_n16_N8S20333C6D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C6D0Ev,_ZTvn20_n16_N8S20333C6D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C6__9S20333C13[] = {
  ABISELECT(-80,-36),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C6D1Ev,_ZTvn20_n16_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C6D0Ev,_ZTvn20_n16_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C12D1Ev();
extern void _ZN9S20333C12D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__9S20333C13[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN9S20333C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C12__A1__9S20333C13[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C12__A1__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__9S20333C13[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C109S20333C12__A2__9S20333C13[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C109S20333C12__A2__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C109S20333C12__A1__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C12__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C10__9S20333C12__9S20333C13[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN8S20333C9D1Ev();
extern void _ZN8S20333C9D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C9__A1__9S20333C13[] = {
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C108S20333C9__A2__9S20333C13[] = {
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C108S20333C9__A3__9S20333C13[] = {
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C108S20333C9__A3__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C108S20333C9__A2__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C9__A1__9S20333C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C9__A1__9S20333C13[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,48),
  ABISELECT(-32,-16),
  ABISELECT(112,48),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C9__A1__9S20333C13[] = {
  ABISELECT(-80,-36),
  ABISELECT(64,28),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
static  VTT_ENTRY vtt_S20333C13[] = {
  {&(_ZTV9S20333C13[12]),  12,249},
  {&(_ZTV9S20333C13[45]),  45,249},
  {&(_ZTV9S20333C13[70]),  70,249},
  {&(_ZTV9S20333C13[12]),  12,249},
  {&(_ZTV9S20333C13[111]),  111,249},
  {&(_ZTV9S20333C13[153]),  153,249},
  {&(_ZTV9S20333C13[123]),  123,249},
  {&(_ZTV9S20333C13[141]),  141,249},
  {&(_ZTV9S20333C13[176]),  176,249},
  {&(_ZTV9S20333C13[193]),  193,249},
  {&(_ZTV9S20333C13[226]),  226,249},
  {&(_ZTV9S20333C13[244]),  244,249},
  {&(_tg__ZTV8S20333C3__9S20333C13[8]),  8,22},
  {&(_tg__ZTV8S20333C4__8S20333C3__9S20333C13[11]),  11,20},
  {&(_tg__ZTV8S20333C5__A1__8S20333C3__9S20333C13[5]),  5,8},
  {&(_tg__ZTV8S20333C6__8S20333C3__9S20333C13[32]),  32,40},
  {&(_tg__ZTV8S20333C7__8S20333C3__9S20333C13[7]),  7,12},
  {&(_tg__ZTV8S20333C98S20333C6__8S20333C3__9S20333C13[4]),  4,20},
  {&(_tg__ZTV8S20333C78S20333C98S20333C6__A1__8S20333C3__9S20333C13[2]),  2,7},
  {&(_tg__ZTV9S20333C12__8S20333C3__9S20333C13[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C3__9S20333C13[3]),  3,12},
  {&(_tg__ZTV8S20333C9__A1__8S20333C3__9S20333C13[24]),  24,40},
  {&(_tg__ZTV8S20333C78S20333C9__A3__8S20333C3__9S20333C13[2]),  2,7},
  {&(_tg__ZTV8S20333C6__9S20333C13[6]),  6,14},
  {&(_tg__ZTV8S20333C98S20333C6__9S20333C13[4]),  4,20},
  {&(_tg__ZTV9S20333C108S20333C98S20333C6__9S20333C13[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C108S20333C98S20333C6__9S20333C13[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C108S20333C98S20333C6__9S20333C13[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C108S20333C98S20333C6__9S20333C13[7]),  7,12},
  {&(_tg__ZTV8S20333C7__8S20333C98S20333C6__9S20333C13[7]),  7,12},
  {&(_tg__ZTV9S20333C12__8S20333C98S20333C6__9S20333C13[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C98S20333C6__9S20333C13[3]),  3,12},
  {&(_tg__ZTV8S20333C4__8S20333C6__9S20333C13[11]),  11,20},
  {&(_tg__ZTV8S20333C5__A1__8S20333C6__9S20333C13[5]),  5,8},
  {&(_tg__ZTV8S20333C7__8S20333C6__9S20333C13[7]),  7,12},
  {&(_tg__ZTV8S20333C9__8S20333C6__9S20333C13[4]),  4,20},
  {&(_tg__ZTV9S20333C12__8S20333C6__9S20333C13[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C6__9S20333C13[3]),  3,12},
  {&(_tg__ZTV9S20333C12__9S20333C13[3]),  3,17},
  {&(_tg__ZTV9S20333C119S20333C12__A1__9S20333C13[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C12__A1__9S20333C13[7]),  7,12},
  {&(_tg__ZTV9S20333C109S20333C12__A1__9S20333C13[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C109S20333C12__A2__9S20333C13[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C109S20333C12__A2__9S20333C13[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C109S20333C12__A1__9S20333C13[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C12__9S20333C13[7]),  7,12},
  {&(_tg__ZTV9S20333C10__9S20333C12__9S20333C13[3]),  3,12},
  {&(_tg__ZTV8S20333C9__A1__9S20333C13[4]),  4,20},
  {&(_tg__ZTV9S20333C108S20333C9__A2__9S20333C13[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C108S20333C9__A3__9S20333C13[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C108S20333C9__A3__9S20333C13[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C108S20333C9__A2__9S20333C13[7]),  7,12},
  {&(_tg__ZTV8S20333C7__8S20333C9__A1__9S20333C13[7]),  7,12},
  {&(_tg__ZTV9S20333C12__8S20333C9__A1__9S20333C13[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C9__A1__9S20333C13[3]),  3,12},
};
extern VTBL_ENTRY _ZTI9S20333C13[];
extern  VTBL_ENTRY _ZTV9S20333C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C13[];
static VTBL_ENTRY alt_thunk_names139[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20333C6D0Ev,_ZThn88_N8S20333C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20333C6D1Ev,_ZThn88_N8S20333C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20333C9D0Ev,_ZThn60_N8S20333C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20333C9D1Ev,_ZThn60_N8S20333C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20333C3D0Ev,_ZTv0_n20_N8S20333C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20333C3D0Ev,_ZThn168_N8S20333C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20333C3D1Ev,_ZTv0_n20_N8S20333C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20333C3D1Ev,_ZThn168_N8S20333C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C3D0Ev,_ZTv0_n16_N8S20333C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20333C3D0Ev,_ZThn120_N8S20333C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C3D1Ev,_ZTv0_n16_N8S20333C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20333C3D1Ev,_ZThn120_N8S20333C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20333C3D0Ev,_ZTv0_n28_N8S20333C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20333C3D0Ev,_ZThn32_N8S20333C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20333C3D1Ev,_ZTv0_n28_N8S20333C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20333C3D1Ev,_ZThn32_N8S20333C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20333C13D0Ev,_ZTv0_n20_N9S20333C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20333C13D0Ev,_ZThn180_N9S20333C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20333C13D1Ev,_ZTv0_n20_N9S20333C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20333C13D1Ev,_ZThn180_N9S20333C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20333C13D0Ev,_ZTv0_n16_N9S20333C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20333C13D0Ev,_ZThn132_N9S20333C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20333C13D1Ev,_ZTv0_n16_N9S20333C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20333C13D1Ev,_ZThn132_N9S20333C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20333C13D0Ev,_ZTv0_n28_N9S20333C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20333C13D0Ev,_ZThn44_N9S20333C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20333C13D1Ev,_ZTv0_n28_N9S20333C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20333C13D1Ev,_ZThn44_N9S20333C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20333C13D0Ev,_ZTv0_n56_N9S20333C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20333C13D0Ev,_ZThn12_N9S20333C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20333C13D1Ev,_ZTv0_n56_N9S20333C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20333C13D1Ev,_ZThn12_N9S20333C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20333C13 = {  "S20333C13", // class name
  bases_S20333C13, 20,
  &(vtc_S20333C13[0]), // expected_vtbl_contents
  &(vtt_S20333C13[0]), // expected_vtt_contents
  ABISELECT(448,220), // object size
  NSPAIRA(_ZTI9S20333C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20333C13),249, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20333C13),55, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names139,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20333C1  : virtual S20333C2 , virtual S20333C3 , virtual S20333C13 {
  void *s20333c1f0;
  virtual  ~S20333C1(); // _ZN8S20333C1D2Ev
  virtual void  v1(); // _ZN8S20333C12v1Ev
  virtual void  v2(); // _ZN8S20333C12v2Ev
  virtual void  v3(); // _ZN8S20333C12v3Ev
  virtual void  v4(); // _ZN8S20333C12v4Ev
  virtual void  v5(); // _ZN8S20333C12v5Ev
  S20333C1(); // tgen
};
//SIG(1 S20333C1) C1{ VBC2{ v6} VBC3{ VBC4{ BC5{ v7 v8 v9} v10 v11 v12 v13 v14 v15 Fi[3]} VBC5 VBC6{ VBC4 VBC5 VBC7{ v16 v17 v18 v19 v20 FD} BC8{ vd v21 v22 v23 v24 v25 FL[3]} BC9{ BC10{ BC11{ VBC7 vd v26 v27 v28 v29 v30 FC7} v31 v32} BC7 VBC12{ VBC7 BC11 BC10 v33 v34 v35 v36 v37 v38 v39 Fc[8]} v40 v41 v42 v43 v44 v45 v46 Fi} vd v47 Fp} BC7 VBC9 vd v48 v49 v50 v51 v52 v53 v54} VBC13{ VBC3 v55 v56 v57 v58 v59 v60 v61 FL} vd v1 v2 v3 v4 v5 Fp}


 S20333C1 ::~S20333C1(){ note_dtor("S20333C1", this);}
void  S20333C1 ::v1(){vfunc_called(this, "_ZN8S20333C12v1Ev");}
void  S20333C1 ::v2(){vfunc_called(this, "_ZN8S20333C12v2Ev");}
void  S20333C1 ::v3(){vfunc_called(this, "_ZN8S20333C12v3Ev");}
void  S20333C1 ::v4(){vfunc_called(this, "_ZN8S20333C12v4Ev");}
void  S20333C1 ::v5(){vfunc_called(this, "_ZN8S20333C12v5Ev");}
S20333C1 ::S20333C1(){ note_ctor("S20333C1", this);} // tgen

static void Test_S20333C1()
{
  extern Class_Descriptor cd_S20333C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,58)];
    init_test(&cd_S20333C1, buf);
    S20333C1 *dp, &lv = *(dp=new (buf) S20333C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,228), "sizeof(S20333C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20333C1)");
    check_base_class_offset(lv, (S20333C2*), 0, "S20333C1");
    check_base_class_offset(lv, (S20333C5*)(S20333C4*), ABISELECT(48,24), "S20333C1");
    check_base_class_offset(lv, (S20333C4*)(S20333C3*), ABISELECT(48,24), "S20333C1");
    check_base_class_offset(lv, (S20333C4*)(S20333C6*), ABISELECT(48,24), "S20333C1");
    /*is_ambiguous_... S20333C3::S20333C5 */ AMB_check_base_class_offset(lv, (S20333C5*)(S20333C3*), ABISELECT(440,216), "S20333C1");
    /*is_ambiguous_... S20333C6::S20333C5 */ AMB_check_base_class_offset(lv, (S20333C5*)(S20333C6*), ABISELECT(440,216), "S20333C1");
    /*is_ambiguous_... S20333C6::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C6*), ABISELECT(208,112), "S20333C1");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C9*)(S20333C6*), ABISELECT(208,112), "S20333C1");
    check_base_class_offset(lv, (S20333C7*)(S20333C12*), ABISELECT(208,112), "S20333C1");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C12*), ABISELECT(208,112), "S20333C1");
    check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C12*), ABISELECT(208,112), "S20333C1");
    /*is_ambiguous_... S20333C1::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C11*)(S20333C10*)(S20333C9*), ABISELECT(208,112), "S20333C1");
    check_base_class_offset(lv, (S20333C8*)(S20333C6*), ABISELECT(80,40), "S20333C1");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C9*)(S20333C6*), ABISELECT(112,68), "S20333C1");
    /*is_ambiguous_... S20333C9::S20333C10 */ AMB_check_base_class_offset(lv, (S20333C10*)(S20333C9*)(S20333C6*), ABISELECT(112,68), "S20333C1");
    /*is_ambiguous_... S20333C9::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C9*)(S20333C6*), ABISELECT(160,88), "S20333C1");
    /*is_ambiguous_... S20333C12::S20333C11 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C12*), ABISELECT(240,128), "S20333C1");
    check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C12*), ABISELECT(288,148), "S20333C1");
    check_base_class_offset(lv, (S20333C10*)(S20333C12*), ABISELECT(288,148), "S20333C1");
    check_base_class_offset(lv, (S20333C12*)(S20333C9*)(S20333C6*), ABISELECT(240,128), "S20333C1");
    /*is_ambiguous_... S20333C1::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C12*)(S20333C9*), ABISELECT(240,128), "S20333C1");
    check_base_class_offset(lv, (S20333C9*)(S20333C6*), ABISELECT(112,68), "S20333C1");
    check_base_class_offset(lv, (S20333C6*)(S20333C3*), ABISELECT(80,40), "S20333C1");
    /*is_ambiguous_... S20333C3::S20333C7 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C3*), ABISELECT(16,8), "S20333C1");
    /*is_ambiguous_... S20333C1::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C11*)(S20333C10*)(S20333C9*), ABISELECT(352,176), "S20333C1");
    /*is_ambiguous_... S20333C1::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C10*)(S20333C9*), ABISELECT(352,176), "S20333C1");
    /*is_ambiguous_... S20333C1::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C7*)(S20333C9*), ABISELECT(400,196), "S20333C1");
    /*is_ambiguous_... S20333C3::S20333C9 */ AMB_check_base_class_offset(lv, (S20333C9*)(S20333C3*), ABISELECT(352,176), "S20333C1");
    check_base_class_offset(lv, (S20333C3*), ABISELECT(16,8), "S20333C1");
    check_base_class_offset(lv, (S20333C3*)(S20333C13*), ABISELECT(16,8), "S20333C1");
    check_base_class_offset(lv, (S20333C13*), ABISELECT(440,216), "S20333C1");
    check_field_offset(lv, s20333c1f0, ABISELECT(8,4), "S20333C1.s20333c1f0");
    test_class_info(&lv, &cd_S20333C1);
    dp->~S20333C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20333C1(Test_S20333C1, "S20333C1", ABISELECT(464,228));

#else // __cplusplus

extern void _ZN8S20333C1C1Ev();
extern void _ZN8S20333C1D2Ev();
Name_Map name_map_S20333C1[] = {
  NSPAIR(_ZN8S20333C1C1Ev),
  NSPAIR(_ZN8S20333C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20333C2;
extern VTBL_ENTRY _ZTI8S20333C2[];
extern  VTBL_ENTRY _ZTV8S20333C2[];
extern Class_Descriptor cd_S20333C5;
extern VTBL_ENTRY _ZTI8S20333C5[];
extern  VTBL_ENTRY _ZTV8S20333C5[];
extern Class_Descriptor cd_S20333C4;
extern VTBL_ENTRY _ZTI8S20333C4[];
extern  VTBL_ENTRY _ZTV8S20333C4[];
extern Class_Descriptor cd_S20333C5;
extern VTBL_ENTRY _ZTI8S20333C5[];
extern  VTBL_ENTRY _ZTV8S20333C5[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C8;
extern VTBL_ENTRY _ZTI8S20333C8[];
extern  VTBL_ENTRY _ZTV8S20333C8[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C12;
extern VTBL_ENTRY _ZTI9S20333C12[];
extern  VTBL_ENTRY _ZTV9S20333C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C12[];
extern Class_Descriptor cd_S20333C9;
extern VTBL_ENTRY _ZTI8S20333C9[];
extern  VTBL_ENTRY _ZTV8S20333C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C9[];
extern Class_Descriptor cd_S20333C6;
extern VTBL_ENTRY _ZTI8S20333C6[];
extern  VTBL_ENTRY _ZTV8S20333C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C6[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C11;
extern VTBL_ENTRY _ZTI9S20333C11[];
extern  VTBL_ENTRY _ZTV9S20333C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C11[];
extern Class_Descriptor cd_S20333C10;
extern VTBL_ENTRY _ZTI9S20333C10[];
extern  VTBL_ENTRY _ZTV9S20333C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C10[];
extern Class_Descriptor cd_S20333C7;
extern VTBL_ENTRY _ZTI8S20333C7[];
extern  VTBL_ENTRY _ZTV8S20333C7[];
extern Class_Descriptor cd_S20333C9;
extern VTBL_ENTRY _ZTI8S20333C9[];
extern  VTBL_ENTRY _ZTV8S20333C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C9[];
extern Class_Descriptor cd_S20333C3;
extern VTBL_ENTRY _ZTI8S20333C3[];
extern  VTBL_ENTRY _ZTV8S20333C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C3[];
extern Class_Descriptor cd_S20333C13;
extern VTBL_ENTRY _ZTI9S20333C13[];
extern  VTBL_ENTRY _ZTV9S20333C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20333C13[];
static Base_Class bases_S20333C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20333C2,    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_S20333C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20333C4,    ABISELECT(48,24), //bcp->offset
    55, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20333C5,    ABISELECT(440,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20333C7,    ABISELECT(208,112), //bcp->offset
    142, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20333C8,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20333C7,    ABISELECT(160,88), //bcp->offset
    135, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(288,148), //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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(288,148), //bcp->offset
    186, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20333C12,    ABISELECT(240,128), //bcp->offset
    154, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20333C9,    ABISELECT(112,68), //bcp->offset
    115, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20333C6,    ABISELECT(80,40), //bcp->offset
    75, //bcp->virtual_function_table_offset
    32, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20333C7,    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
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20333C11,    ABISELECT(352,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20333C10,    ABISELECT(352,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20333C7,    ABISELECT(400,196), //bcp->offset
    238, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20333C9,    ABISELECT(352,176), //bcp->offset
    198, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20333C3,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20333C13,    ABISELECT(440,216), //bcp->offset
    245, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20333C1[];
extern void _ZN8S20333C22v6Ev();
extern void _ZN8S20333C1D1Ev();
extern void _ZN8S20333C1D0Ev();
extern void _ZN8S20333C12v1Ev();
extern void _ZN8S20333C12v2Ev();
extern void _ZN8S20333C12v3Ev();
extern void _ZN8S20333C12v4Ev();
extern void _ZN8S20333C12v5Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void ABISELECT(_ZTv0_n112_N8S20333C1D1Ev,_ZTv0_n56_N8S20333C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20333C1D1Ev,_ZThn8_N8S20333C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S20333C1D0Ev,_ZTv0_n56_N8S20333C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20333C1D0Ev,_ZThn8_N8S20333C1D0Ev)() __attribute__((weak));
extern void _ZN8S20333C33v48Ev();
extern void _ZN8S20333C33v49Ev();
extern void _ZN8S20333C33v50Ev();
extern void _ZN8S20333C33v51Ev();
extern void _ZN8S20333C33v52Ev();
extern void _ZN8S20333C33v53Ev();
extern void _ZN8S20333C33v54Ev();
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C43v10Ev();
extern void _ZN8S20333C43v11Ev();
extern void _ZN8S20333C43v12Ev();
extern void _ZN8S20333C43v13Ev();
extern void _ZN8S20333C43v14Ev();
extern void _ZN8S20333C43v15Ev();
extern void ABISELECT(_ZTv0_n56_N8S20333C1D1Ev,_ZTv0_n28_N8S20333C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20333C1D1Ev,_ZThn40_N8S20333C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20333C1D0Ev,_ZTv0_n28_N8S20333C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20333C1D0Ev,_ZThn40_N8S20333C1D0Ev)() __attribute__((weak));
extern void _ZN8S20333C83v21Ev();
extern void _ZN8S20333C83v22Ev();
extern void _ZN8S20333C83v23Ev();
extern void _ZN8S20333C83v24Ev();
extern void _ZN8S20333C83v25Ev();
extern void _ZN8S20333C63v47Ev();
extern void ABISELECT(_ZTvn32_n56_N8S20333C1D1Ev,_ZTvn28_n28_N8S20333C1D1Ev)();
extern void ABISELECT(_ZTvn32_n56_N8S20333C1D0Ev,_ZTvn28_n28_N8S20333C1D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void ABISELECT(_ZTv0_n32_N8S20333C1D1Ev,_ZTv0_n16_N8S20333C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S20333C1D1Ev,_ZThn128_N8S20333C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C1D0Ev,_ZTv0_n16_N8S20333C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S20333C1D0Ev,_ZThn128_N8S20333C1D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20333C1D1Ev,_ZTvn20_n16_N8S20333C1D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C1D0Ev,_ZTvn20_n16_N8S20333C1D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void ABISELECT(_ZTv0_n40_N8S20333C1D1Ev,_ZTv0_n20_N8S20333C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S20333C1D1Ev,_ZThn176_N8S20333C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20333C1D0Ev,_ZTv0_n20_N8S20333C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S20333C1D0Ev,_ZThn176_N8S20333C1D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN9S20333C133v55Ev();
extern void _ZN9S20333C133v56Ev();
extern void _ZN9S20333C133v57Ev();
extern void _ZN9S20333C133v58Ev();
extern void _ZN9S20333C133v59Ev();
extern void _ZN9S20333C133v60Ev();
extern void _ZN9S20333C133v61Ev();
extern void ABISELECT(_ZTv0_n160_N8S20333C1D1Ev,_ZTv0_n80_N8S20333C1D1Ev)();
extern void ABISELECT(_ZThn440_N8S20333C1D1Ev,_ZThn216_N8S20333C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n160_N8S20333C1D0Ev,_ZTv0_n80_N8S20333C1D0Ev)();
extern void ABISELECT(_ZThn440_N8S20333C1D0Ev,_ZThn216_N8S20333C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20333C1[] = {
  ABISELECT(440,216),
  ABISELECT(352,176),
  ABISELECT(240,128),
  ABISELECT(208,112),
  ABISELECT(80,40),
  ABISELECT(440,216),
  ABISELECT(48,24),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&_ZN8S20333C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20333C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20333C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20333C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20333C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20333C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20333C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(336,168),
  ABISELECT(224,120),
  ABISELECT(192,104),
  ABISELECT(64,32),
  ABISELECT(424,208),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20333C1D1Ev,_ZTv0_n56_N8S20333C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20333C1D0Ev,_ZTv0_n56_N8S20333C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20333C33v48Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v49Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v50Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v51Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v52Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v53Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v54Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v15Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-40),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(360,176),
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20333C1D1Ev,_ZTv0_n28_N8S20333C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20333C1D0Ev,_ZTv0_n28_N8S20333C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20333C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20333C63v47Ev,
  ABISELECT(128,60),
  ABISELECT(96,44),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20333C1D1Ev,_ZTvn28_n28_N8S20333C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20333C1D0Ev,_ZTvn28_n28_N8S20333C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-128),
  ABISELECT(-32,-16),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C1D1Ev,_ZTv0_n16_N8S20333C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C1D0Ev,_ZTv0_n16_N8S20333C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
  ABISELECT(-80,-36),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C1D1Ev,_ZTvn20_n16_N8S20333C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C1D0Ev,_ZTvn20_n16_N8S20333C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-176),
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  ABISELECT(-352,-176),
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20333C1D1Ev,_ZTv0_n20_N8S20333C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20333C1D0Ev,_ZTv0_n20_N8S20333C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
  ABISELECT(-400,-196),
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  ABISELECT(-440,-216),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-40),
  ABISELECT(-200,-88),
  ABISELECT(-232,-104),
  ABISELECT(-360,-176),
  0,
  ABISELECT(-392,-192),
  ABISELECT(-424,-208),
  0,
  0,
  0,
  ABISELECT(-440,-216),
  (VTBL_ENTRY)&(_ZTI8S20333C1[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v55Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v56Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v57Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v58Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v59Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v60Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v61Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S20333C1D1Ev,_ZTv0_n80_N8S20333C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S20333C1D0Ev,_ZTv0_n80_N8S20333C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20333C1[];
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void _ZN8S20333C3D1Ev();
extern void _ZN8S20333C3D0Ev();
extern void _ZN8S20333C33v48Ev();
extern void _ZN8S20333C33v49Ev();
extern void _ZN8S20333C33v50Ev();
extern void _ZN8S20333C33v51Ev();
extern void _ZN8S20333C33v52Ev();
extern void _ZN8S20333C33v53Ev();
extern void _ZN8S20333C33v54Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C3__8S20333C1[] = {
  ABISELECT(336,168),
  ABISELECT(224,120),
  ABISELECT(192,104),
  ABISELECT(64,32),
  ABISELECT(424,208),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20333C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v48Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v49Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v50Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v51Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v52Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v53Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v54Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C43v10Ev();
extern void _ZN8S20333C43v11Ev();
extern void _ZN8S20333C43v12Ev();
extern void _ZN8S20333C43v13Ev();
extern void _ZN8S20333C43v14Ev();
extern void _ZN8S20333C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C4__8S20333C3__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v15Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C5__A1__8S20333C3__8S20333C1[] = {
  0,
  0,
  0,
  ABISELECT(-424,-208),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20333C3D1Ev,_ZTv0_n28_N8S20333C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S20333C3D1Ev,_ZThn32_N8S20333C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20333C3D0Ev,_ZTv0_n28_N8S20333C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S20333C3D0Ev,_ZThn32_N8S20333C3D0Ev)() __attribute__((weak));
extern void _ZN8S20333C83v21Ev();
extern void _ZN8S20333C83v22Ev();
extern void _ZN8S20333C83v23Ev();
extern void _ZN8S20333C83v24Ev();
extern void _ZN8S20333C83v25Ev();
extern void _ZN8S20333C63v47Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C6__8S20333C3__8S20333C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(360,176),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20333C3D1Ev,_ZTv0_n28_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20333C3D0Ev,_ZTv0_n28_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20333C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20333C63v47Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C3__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTvn32_n56_N8S20333C3D1Ev,_ZTvn28_n28_N8S20333C3D1Ev)();
extern void ABISELECT(_ZTvn32_n56_N8S20333C3D0Ev,_ZTvn28_n28_N8S20333C3D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C98S20333C6__8S20333C3__8S20333C1[] = {
  ABISELECT(128,60),
  ABISELECT(96,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20333C3D1Ev,_ZTvn28_n28_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20333C3D0Ev,_ZTvn28_n28_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C78S20333C98S20333C6__A1__8S20333C3__8S20333C1[] = {
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C3D1Ev,_ZTv0_n16_N8S20333C3D1Ev)();
extern void ABISELECT(_ZThn224_N8S20333C3D1Ev,_ZThn120_N8S20333C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C3D0Ev,_ZTv0_n16_N8S20333C3D0Ev)();
extern void ABISELECT(_ZThn224_N8S20333C3D0Ev,_ZThn120_N8S20333C3D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C3__8S20333C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-120),
  ABISELECT(-32,-16),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C3D1Ev,_ZTv0_n16_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C3D0Ev,_ZTv0_n16_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C3D1Ev,_ZTvn20_n16_N8S20333C3D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C3D0Ev,_ZTvn20_n16_N8S20333C3D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C3__8S20333C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(-272,-140),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C3D1Ev,_ZTvn20_n16_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C3D0Ev,_ZTvn20_n16_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S20333C3D1Ev,_ZTv0_n20_N8S20333C3D1Ev)();
extern void ABISELECT(_ZThn336_N8S20333C3D1Ev,_ZThn168_N8S20333C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20333C3D0Ev,_ZTv0_n20_N8S20333C3D0Ev)();
extern void ABISELECT(_ZThn336_N8S20333C3D0Ev,_ZThn168_N8S20333C3D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C9__A1__8S20333C3__8S20333C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-168),
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20333C3D1Ev,_ZTv0_n20_N8S20333C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20333C3D0Ev,_ZTv0_n20_N8S20333C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C78S20333C9__A3__8S20333C3__8S20333C1[] = {
  ABISELECT(-384,-188),
  (VTBL_ENTRY)&(_ZTI8S20333C3[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C6D1Ev();
extern void _ZN8S20333C6D0Ev();
extern void _ZN8S20333C83v21Ev();
extern void _ZN8S20333C83v22Ev();
extern void _ZN8S20333C83v23Ev();
extern void _ZN8S20333C83v24Ev();
extern void _ZN8S20333C83v25Ev();
extern void _ZN8S20333C63v47Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C6__8S20333C1[] = {
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(360,176),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20333C63v47Ev,
};
extern void _ZN8S20333C9D1Ev();
extern void _ZN8S20333C9D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C98S20333C6__8S20333C1[] = {
  ABISELECT(128,60),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C108S20333C98S20333C6__8S20333C1[] = {
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C108S20333C98S20333C6__8S20333C1[] = {
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C108S20333C98S20333C6__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C108S20333C98S20333C6__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C98S20333C6__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S20333C9D1Ev,_ZThn60_N8S20333C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S20333C9D0Ev,_ZThn60_N8S20333C9D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C98S20333C6__8S20333C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-60),
  ABISELECT(-32,-16),
  ABISELECT(-128,-60),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C98S20333C6__8S20333C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(-176,-80),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C43v10Ev();
extern void _ZN8S20333C43v11Ev();
extern void _ZN8S20333C43v12Ev();
extern void _ZN8S20333C43v13Ev();
extern void _ZN8S20333C43v14Ev();
extern void _ZN8S20333C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C4__8S20333C6__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v15Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C5__A1__8S20333C6__8S20333C1[] = {
  0,
  0,
  0,
  ABISELECT(-360,-176),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C6__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZThn32_N8S20333C6D1Ev,_ZThn28_N8S20333C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S20333C6D0Ev,_ZThn28_N8S20333C6D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C9__8S20333C6__8S20333C1[] = {
  ABISELECT(128,60),
  ABISELECT(96,44),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20333C6D1Ev,_ZThn28_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20333C6D0Ev,_ZThn28_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20333C6D1Ev,_ZThn88_N8S20333C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20333C6D0Ev,_ZThn88_N8S20333C6D0Ev)() __attribute__((weak));
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C6__8S20333C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-88),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C6D1Ev,_ZTvn20_n16_N8S20333C6D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C6D0Ev,_ZTvn20_n16_N8S20333C6D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C6__8S20333C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S20333C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C6D1Ev,_ZTvn20_n16_N8S20333C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C6D0Ev,_ZTvn20_n16_N8S20333C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C12D1Ev();
extern void _ZN9S20333C12D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN9S20333C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C12__A1__8S20333C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C12__A1__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C1[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C109S20333C12__A2__8S20333C1[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C109S20333C12__A2__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C109S20333C12__A1__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C12__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C10__9S20333C12__8S20333C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20333C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D1Ev,_ZThn20_N9S20333C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20333C12D0Ev,_ZThn20_N9S20333C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN8S20333C9D1Ev();
extern void _ZN8S20333C9D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C9__A1__8S20333C1[] = {
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20333C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN9S20333C10D1Ev();
extern void _ZN9S20333C10D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C108S20333C9__A2__8S20333C1[] = {
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN9S20333C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN9S20333C11D1Ev();
extern void _ZN9S20333C11D0Ev();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C119S20333C108S20333C9__A3__8S20333C1[] = {
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN9S20333C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C119S20333C108S20333C9__A3__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI9S20333C11[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C108S20333C9__A2__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI9S20333C10[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__8S20333C9__A1__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__8S20333C9__A1__8S20333C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,48),
  ABISELECT(-32,-16),
  ABISELECT(112,48),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__8S20333C9__A1__8S20333C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(64,28),
  (VTBL_ENTRY)&(_ZTI8S20333C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D1Ev,_ZTvn20_n16_N8S20333C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20333C9D0Ev,_ZTvn20_n16_N8S20333C9D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN9S20333C133v55Ev();
extern void _ZN9S20333C133v56Ev();
extern void _ZN9S20333C133v57Ev();
extern void _ZN9S20333C133v58Ev();
extern void _ZN9S20333C133v59Ev();
extern void _ZN9S20333C133v60Ev();
extern void _ZN9S20333C133v61Ev();
extern void _ZN9S20333C13D1Ev();
extern void _ZN9S20333C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C13__8S20333C1[] = {
  ABISELECT(-88,-40),
  ABISELECT(-200,-88),
  ABISELECT(-232,-104),
  ABISELECT(-360,-176),
  0,
  ABISELECT(-392,-192),
  ABISELECT(-424,-208),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v55Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v56Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v57Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v58Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v59Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v60Ev,
  (VTBL_ENTRY)&_ZN9S20333C133v61Ev,
  (VTBL_ENTRY)&_ZN9S20333C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20333C13D0Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
extern void ABISELECT(_ZTv0_n112_N9S20333C13D1Ev,_ZTv0_n56_N9S20333C13D1Ev)();
extern void ABISELECT(_ZTv0_n112_N9S20333C13D0Ev,_ZTv0_n56_N9S20333C13D0Ev)();
extern void _ZN8S20333C33v48Ev();
extern void _ZN8S20333C33v49Ev();
extern void _ZN8S20333C33v50Ev();
extern void _ZN8S20333C33v51Ev();
extern void _ZN8S20333C33v52Ev();
extern void _ZN8S20333C33v53Ev();
extern void _ZN8S20333C33v54Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C3__9S20333C13__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(424,208),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(336,168),
  ABISELECT(224,120),
  ABISELECT(192,104),
  ABISELECT(64,32),
  ABISELECT(424,208),
  ABISELECT(32,16),
  ABISELECT(424,208),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20333C13D1Ev,_ZTv0_n56_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20333C13D0Ev,_ZTv0_n56_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20333C33v48Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v49Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v50Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v51Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v52Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v53Ev,
  (VTBL_ENTRY)&_ZN8S20333C33v54Ev,
};
extern void _ZN8S20333C52v7Ev();
extern void _ZN8S20333C52v8Ev();
extern void _ZN8S20333C52v9Ev();
extern void _ZN8S20333C43v10Ev();
extern void _ZN8S20333C43v11Ev();
extern void _ZN8S20333C43v12Ev();
extern void _ZN8S20333C43v13Ev();
extern void _ZN8S20333C43v14Ev();
extern void _ZN8S20333C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C4__9S20333C13__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(392,192),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20333C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20333C43v15Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S20333C13D1Ev,_ZTv0_n28_N9S20333C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20333C13D0Ev,_ZTv0_n28_N9S20333C13D0Ev)();
extern void _ZN8S20333C83v21Ev();
extern void _ZN8S20333C83v22Ev();
extern void _ZN8S20333C83v23Ev();
extern void _ZN8S20333C83v24Ev();
extern void _ZN8S20333C83v25Ev();
extern void _ZN8S20333C63v47Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C6__9S20333C13__8S20333C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(360,176),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(360,176),
  ABISELECT(-32,-16),
  ABISELECT(360,176),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20333C13D1Ev,_ZTv0_n28_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20333C13D0Ev,_ZTv0_n28_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20333C83v21Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v22Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v23Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v24Ev,
  (VTBL_ENTRY)&_ZN8S20333C83v25Ev,
  (VTBL_ENTRY)&_ZN8S20333C63v47Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C7__9S20333C13__8S20333C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(232,104),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTvn32_n56_N9S20333C13D1Ev,_ZTvn28_n28_N9S20333C13D1Ev)();
extern void ABISELECT(_ZTvn32_n56_N9S20333C13D0Ev,_ZTvn28_n28_N9S20333C13D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C98S20333C6__9S20333C13__8S20333C1[] = {
  ABISELECT(128,60),
  ABISELECT(96,44),
  ABISELECT(328,148),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N9S20333C13D1Ev,_ZTvn28_n28_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N9S20333C13D0Ev,_ZTvn28_n28_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C78S20333C98S20333C6__A1__9S20333C13__8S20333C1[] = {
  ABISELECT(280,128),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20333C13D1Ev,_ZTv0_n16_N9S20333C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20333C13D0Ev,_ZTv0_n16_N9S20333C13D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C123v33Ev();
extern void _ZN9S20333C123v34Ev();
extern void _ZN9S20333C123v35Ev();
extern void _ZN9S20333C123v36Ev();
extern void _ZN9S20333C123v37Ev();
extern void _ZN9S20333C123v38Ev();
extern void _ZN9S20333C123v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C12__9S20333C13__8S20333C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(200,88),
  ABISELECT(-32,-16),
  ABISELECT(200,88),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20333C13D1Ev,_ZTv0_n16_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20333C13D0Ev,_ZTv0_n16_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v33Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v34Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v35Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v36Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v37Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v38Ev,
  (VTBL_ENTRY)&_ZN9S20333C123v39Ev,
};
extern void ABISELECT(_ZTvn48_n32_N9S20333C13D1Ev,_ZTvn20_n16_N9S20333C13D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N9S20333C13D0Ev,_ZTvn20_n16_N9S20333C13D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20333C109S20333C12__A1__9S20333C13__8S20333C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(152,68),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20333C13D1Ev,_ZTvn20_n16_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20333C13D0Ev,_ZTvn20_n16_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S20333C13D1Ev,_ZTv0_n20_N9S20333C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20333C13D0Ev,_ZTv0_n20_N9S20333C13D0Ev)();
extern void _ZN9S20333C113v26Ev();
extern void _ZN9S20333C113v27Ev();
extern void _ZN9S20333C113v28Ev();
extern void _ZN9S20333C113v29Ev();
extern void _ZN9S20333C113v30Ev();
extern void _ZN9S20333C103v31Ev();
extern void _ZN9S20333C103v32Ev();
extern void _ZN8S20333C93v40Ev();
extern void _ZN8S20333C93v41Ev();
extern void _ZN8S20333C93v42Ev();
extern void _ZN8S20333C93v43Ev();
extern void _ZN8S20333C93v44Ev();
extern void _ZN8S20333C93v45Ev();
extern void _ZN8S20333C93v46Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C9__A1__9S20333C13__8S20333C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,40),
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  ABISELECT(88,40),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20333C13D1Ev,_ZTv0_n20_N9S20333C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20333C13D0Ev,_ZTv0_n20_N9S20333C13D0Ev),
  (VTBL_ENTRY)&_ZN9S20333C113v26Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v27Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v28Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v29Ev,
  (VTBL_ENTRY)&_ZN9S20333C113v30Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20333C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v40Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v41Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v42Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v43Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v44Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v45Ev,
  (VTBL_ENTRY)&_ZN8S20333C93v46Ev,
};
extern void _ZN8S20333C73v16Ev();
extern void _ZN8S20333C73v17Ev();
extern void _ZN8S20333C73v18Ev();
extern void _ZN8S20333C73v19Ev();
extern void _ZN8S20333C73v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20333C78S20333C9__A3__9S20333C13__8S20333C1[] = {
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20333C13[0]),
  (VTBL_ENTRY)&_ZN8S20333C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20333C73v20Ev,
};
static  VTT_ENTRY vtt_S20333C1[] = {
  {&(_ZTV8S20333C1[12]),  12,277},
  {&(_ZTV8S20333C1[12]),  12,277},
  {&(_ZTV8S20333C1[41]),  41,277},
  {&(_ZTV8S20333C1[66]),  66,277},
  {&(_ZTV8S20333C1[265]),  265,277},
  {&(_ZTV8S20333C1[107]),  107,277},
  {&(_ZTV8S20333C1[149]),  149,277},
  {&(_ZTV8S20333C1[119]),  119,277},
  {&(_ZTV8S20333C1[137]),  137,277},
  {&(_ZTV8S20333C1[172]),  172,277},
  {&(_ZTV8S20333C1[189]),  189,277},
  {&(_ZTV8S20333C1[222]),  222,277},
  {&(_ZTV8S20333C1[240]),  240,277},
  {&(_ZTV8S20333C1[265]),  265,277},
  {&(_tg__ZTV8S20333C3__8S20333C1[8]),  8,22},
  {&(_tg__ZTV8S20333C4__8S20333C3__8S20333C1[11]),  11,20},
  {&(_tg__ZTV8S20333C5__A1__8S20333C3__8S20333C1[5]),  5,8},
  {&(_tg__ZTV8S20333C6__8S20333C3__8S20333C1[32]),  32,40},
  {&(_tg__ZTV8S20333C7__8S20333C3__8S20333C1[7]),  7,12},
  {&(_tg__ZTV8S20333C98S20333C6__8S20333C3__8S20333C1[4]),  4,20},
  {&(_tg__ZTV8S20333C78S20333C98S20333C6__A1__8S20333C3__8S20333C1[2]),  2,7},
  {&(_tg__ZTV9S20333C12__8S20333C3__8S20333C1[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C3__8S20333C1[3]),  3,12},
  {&(_tg__ZTV8S20333C9__A1__8S20333C3__8S20333C1[24]),  24,40},
  {&(_tg__ZTV8S20333C78S20333C9__A3__8S20333C3__8S20333C1[2]),  2,7},
  {&(_tg__ZTV8S20333C6__8S20333C1[6]),  6,14},
  {&(_tg__ZTV8S20333C98S20333C6__8S20333C1[4]),  4,20},
  {&(_tg__ZTV9S20333C108S20333C98S20333C6__8S20333C1[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C108S20333C98S20333C6__8S20333C1[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C108S20333C98S20333C6__8S20333C1[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C108S20333C98S20333C6__8S20333C1[7]),  7,12},
  {&(_tg__ZTV8S20333C7__8S20333C98S20333C6__8S20333C1[7]),  7,12},
  {&(_tg__ZTV9S20333C12__8S20333C98S20333C6__8S20333C1[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C98S20333C6__8S20333C1[3]),  3,12},
  {&(_tg__ZTV8S20333C4__8S20333C6__8S20333C1[11]),  11,20},
  {&(_tg__ZTV8S20333C5__A1__8S20333C6__8S20333C1[5]),  5,8},
  {&(_tg__ZTV8S20333C7__8S20333C6__8S20333C1[7]),  7,12},
  {&(_tg__ZTV8S20333C9__8S20333C6__8S20333C1[4]),  4,20},
  {&(_tg__ZTV9S20333C12__8S20333C6__8S20333C1[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C6__8S20333C1[3]),  3,12},
  {&(_tg__ZTV9S20333C12__8S20333C1[3]),  3,17},
  {&(_tg__ZTV9S20333C119S20333C12__A1__8S20333C1[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C12__A1__8S20333C1[7]),  7,12},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C1[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C109S20333C12__A2__8S20333C1[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C109S20333C12__A2__8S20333C1[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C109S20333C12__A1__8S20333C1[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C12__8S20333C1[7]),  7,12},
  {&(_tg__ZTV9S20333C10__9S20333C12__8S20333C1[3]),  3,12},
  {&(_tg__ZTV8S20333C9__A1__8S20333C1[4]),  4,20},
  {&(_tg__ZTV9S20333C108S20333C9__A2__8S20333C1[3]),  3,12},
  {&(_tg__ZTV9S20333C119S20333C108S20333C9__A3__8S20333C1[3]),  3,10},
  {&(_tg__ZTV8S20333C7__9S20333C119S20333C108S20333C9__A3__8S20333C1[7]),  7,12},
  {&(_tg__ZTV8S20333C7__9S20333C108S20333C9__A2__8S20333C1[7]),  7,12},
  {&(_tg__ZTV8S20333C7__8S20333C9__A1__8S20333C1[7]),  7,12},
  {&(_tg__ZTV9S20333C12__8S20333C9__A1__8S20333C1[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__8S20333C9__A1__8S20333C1[3]),  3,12},
  {&(_tg__ZTV9S20333C13__8S20333C1[12]),  12,24},
  {&(_tg__ZTV8S20333C3__9S20333C13__8S20333C1[21]),  21,35},
  {&(_tg__ZTV8S20333C4__9S20333C13__8S20333C1[11]),  11,20},
  {&(_tg__ZTV9S20333C13__8S20333C1[12]),  12,24},
  {&(_tg__ZTV8S20333C6__9S20333C13__8S20333C1[32]),  32,40},
  {&(_tg__ZTV8S20333C7__9S20333C13__8S20333C1[7]),  7,12},
  {&(_tg__ZTV8S20333C98S20333C6__9S20333C13__8S20333C1[4]),  4,20},
  {&(_tg__ZTV8S20333C78S20333C98S20333C6__A1__9S20333C13__8S20333C1[2]),  2,7},
  {&(_tg__ZTV9S20333C12__9S20333C13__8S20333C1[18]),  18,32},
  {&(_tg__ZTV9S20333C109S20333C12__A1__9S20333C13__8S20333C1[3]),  3,12},
  {&(_tg__ZTV8S20333C9__A1__9S20333C13__8S20333C1[24]),  24,40},
  {&(_tg__ZTV8S20333C78S20333C9__A3__9S20333C13__8S20333C1[2]),  2,7},
};
extern VTBL_ENTRY _ZTI8S20333C1[];
extern  VTBL_ENTRY _ZTV8S20333C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20333C1[];
static VTBL_ENTRY alt_thunk_names140[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C6D0Ev,_ZTv0_n16_N8S20333C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20333C6D0Ev,_ZThn88_N8S20333C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C6D1Ev,_ZTv0_n16_N8S20333C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20333C6D1Ev,_ZThn88_N8S20333C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C9D0Ev,_ZTv0_n16_N8S20333C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20333C9D0Ev,_ZThn60_N8S20333C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C9D1Ev,_ZTv0_n16_N8S20333C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20333C9D1Ev,_ZThn60_N8S20333C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20333C3D0Ev,_ZTv0_n20_N8S20333C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20333C3D0Ev,_ZThn168_N8S20333C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20333C3D1Ev,_ZTv0_n20_N8S20333C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20333C3D1Ev,_ZThn168_N8S20333C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C3D0Ev,_ZTv0_n16_N8S20333C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20333C3D0Ev,_ZThn120_N8S20333C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C3D1Ev,_ZTv0_n16_N8S20333C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20333C3D1Ev,_ZThn120_N8S20333C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20333C3D0Ev,_ZTv0_n28_N8S20333C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20333C3D0Ev,_ZThn32_N8S20333C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20333C3D1Ev,_ZTv0_n28_N8S20333C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20333C3D1Ev,_ZThn32_N8S20333C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S20333C1D0Ev,_ZTv0_n80_N8S20333C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S20333C1D0Ev,_ZThn216_N8S20333C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S20333C1D1Ev,_ZTv0_n80_N8S20333C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S20333C1D1Ev,_ZThn216_N8S20333C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20333C1D0Ev,_ZTv0_n20_N8S20333C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20333C1D0Ev,_ZThn176_N8S20333C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20333C1D1Ev,_ZTv0_n20_N8S20333C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20333C1D1Ev,_ZThn176_N8S20333C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C1D0Ev,_ZTv0_n16_N8S20333C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20333C1D0Ev,_ZThn128_N8S20333C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20333C1D1Ev,_ZTv0_n16_N8S20333C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20333C1D1Ev,_ZThn128_N8S20333C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20333C1D0Ev,_ZTv0_n28_N8S20333C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20333C1D0Ev,_ZThn40_N8S20333C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20333C1D1Ev,_ZTv0_n28_N8S20333C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20333C1D1Ev,_ZThn40_N8S20333C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20333C1D0Ev,_ZTv0_n56_N8S20333C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20333C1D0Ev,_ZThn8_N8S20333C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20333C1D1Ev,_ZTv0_n56_N8S20333C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20333C1D1Ev,_ZThn8_N8S20333C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20333C1 = {  "S20333C1", // class name
  bases_S20333C1, 22,
  &(vtc_S20333C1[0]), // expected_vtbl_contents
  &(vtt_S20333C1[0]), // expected_vtt_contents
  ABISELECT(464,228), // object size
  NSPAIRA(_ZTI8S20333C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20333C1),277, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20333C1),69, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names140,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11609C1  {
  ::S11608C2 s11609c1f0;
  ::S11608C4 s11609c1f1;
  ::S11608C19 s11609c1f2;
  int s11609c1f3;
  __tsi64 s11609c1f4;
  int s11609c1f5;
};
//SIG(1 S11609C1) C1{ FC2{ Fi[3] FC3{ Fp Fi}} FU4{ Fi FC5{ Fi FC6{ Fi} Fi FC7{ Fi Fi Fi Fp Fi} FC8{ FL FL FL FL FL FL} Fi Fi Fi} FC9{ FC5 FC10{ FL FL FL FL Fs Fs Fs Fs}} FC11{ FC5 Fp} FU12{ FC13{ FC5 Fi Fi Fp FC14{ FL FC10}[2]} FC15{ FC13 FC16{ Fi Fi} FC16} FC17{ FC13 FC16 Fi FC16 Fi}}} FC18{ FC16 FC16 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC19{ FC16 FC16} FC20{ FC21{ FC22{ Fp Fp} Fi Fi Fi Fi Fp Fp} Fc[28] FC16[56]}} Fi FL Fi}



static void Test_S11609C1()
{
  {
    init_simple_test("S11609C1");
    static S11609C1 lv;
    check2(sizeof(lv), ABISELECT(872,804), "sizeof(S11609C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11609C1)");
    check_field_offset(lv, s11609c1f0, 0, "S11609C1.s11609c1f0");
    check_field_offset(lv, s11609c1f1, ABISELECT(32,20), "S11609C1.s11609c1f1");
    check_field_offset(lv, s11609c1f2, ABISELECT(280,244), "S11609C1.s11609c1f2");
    check_field_offset(lv, s11609c1f3, ABISELECT(848,788), "S11609C1.s11609c1f3");
    check_field_offset(lv, s11609c1f4, ABISELECT(856,792), "S11609C1.s11609c1f4");
    check_field_offset(lv, s11609c1f5, ABISELECT(864,800), "S11609C1.s11609c1f5");
  }
}
static Arrange_To_Call_Me vS11609C1(Test_S11609C1, "S11609C1", ABISELECT(872,804));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11607C1  {
  ::S11608C2 s11607c1f0;
  ::S11608C4 s11607c1f1;
  ::S11606C19 s11607c1f2;
  int s11607c1f3;
  __tsi64 s11607c1f4;
  int s11607c1f5;
};
//SIG(1 S11607C1) C1{ FC2{ Fi[3] FC3{ Fp Fi}} FU4{ Fi FC5{ Fi FC6{ Fi} Fi FC7{ Fi Fi Fi Fp Fi} FC8{ FL FL FL FL FL FL} Fi Fi Fi} FC9{ FC5 FC10{ FL FL FL FL Fs Fs Fs Fs}} FC11{ FC5 Fp} FU12{ FC13{ FC5 Fi Fi Fp FC14{ FL FC10}[2]} FC15{ FC13 FC16{ Fi Fi} FC16} FC17{ FC13 FC16 Fi FC16 Fi}}} FC18{ FC16 FC16 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC19{ FC16 FC16} FC20{ FC21{ FC22{ Fp Fp} Fi Fi Fi Fi Fp Fp} Fc[27] FC16[54]}} Fi FL Fi}



static void Test_S11607C1()
{
  {
    init_simple_test("S11607C1");
    static S11607C1 lv;
    check2(sizeof(lv), ABISELECT(856,788), "sizeof(S11607C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11607C1)");
    check_field_offset(lv, s11607c1f0, 0, "S11607C1.s11607c1f0");
    check_field_offset(lv, s11607c1f1, ABISELECT(32,20), "S11607C1.s11607c1f1");
    check_field_offset(lv, s11607c1f2, ABISELECT(280,244), "S11607C1.s11607c1f2");
    check_field_offset(lv, s11607c1f3, ABISELECT(832,772), "S11607C1.s11607c1f3");
    check_field_offset(lv, s11607c1f4, ABISELECT(840,776), "S11607C1.s11607c1f4");
    check_field_offset(lv, s11607c1f5, ABISELECT(848,784), "S11607C1.s11607c1f5");
  }
}
static Arrange_To_Call_Me vS11607C1(Test_S11607C1, "S11607C1", ABISELECT(856,788));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6845C2  {
  int s6845c2f0;
  __tsi64 s6845c2f1;
  void *s6845c2f2[4];
  int s6845c2f3[2];
  void *s6845c2f4;
  ::S1604C5_nt s6845c2f5;
  void *s6845c2f6[2];
  virtual  ~S6845C2(); // _ZN7S6845C2D1Ev
  virtual void  v4(); // _ZN7S6845C22v4Ev
  virtual void  v5(); // _ZN7S6845C22v5Ev
  virtual void  v6(); // _ZN7S6845C22v6Ev
  virtual void  v7(); // _ZN7S6845C22v7Ev
  virtual void  v8(); // _ZN7S6845C22v8Ev
  virtual void  v9(); // _ZN7S6845C22v9Ev
  virtual void  v10(); // _ZN7S6845C23v10Ev
  virtual void  v11(); // _ZN7S6845C23v11Ev
  virtual void  v12(); // _ZN7S6845C23v12Ev
  virtual void  v13(); // _ZN7S6845C23v13Ev
  virtual void  v14(); // _ZN7S6845C23v14Ev
  virtual void  v15(); // _ZN7S6845C23v15Ev
  virtual void  v16(); // _ZN7S6845C23v16Ev
  virtual void  v17(); // _ZN7S6845C23v17Ev
  virtual void  v18(); // _ZN7S6845C23v18Ev
  virtual void  v19(); // _ZN7S6845C23v19Ev
  virtual void  v20(); // _ZN7S6845C23v20Ev
  virtual void  v21(); // _ZN7S6845C23v21Ev
  virtual void  v22(); // _ZN7S6845C23v22Ev
  virtual void  v23(); // _ZN7S6845C23v23Ev
  virtual void  v24(); // _ZN7S6845C23v24Ev
  virtual void  v25(); // _ZN7S6845C23v25Ev
  virtual void  v26(); // _ZN7S6845C23v26Ev
  virtual void  v27(); // _ZN7S6845C23v27Ev
  virtual void  v28(); // _ZN7S6845C23v28Ev
  virtual void  v29(); // _ZN7S6845C23v29Ev
  virtual void  v30(); // _ZN7S6845C23v30Ev
  virtual void  v31(); // _ZN7S6845C23v31Ev
  virtual void  v32(); // _ZN7S6845C23v32Ev
  virtual void  v33(); // _ZN7S6845C23v33Ev
  virtual void  v34(); // _ZN7S6845C23v34Ev
  virtual void  v35(); // _ZN7S6845C23v35Ev
  virtual void  v36(); // _ZN7S6845C23v36Ev
  virtual void  v37(); // _ZN7S6845C23v37Ev
  virtual void  v38(); // _ZN7S6845C23v38Ev
  virtual void  v39(); // _ZN7S6845C23v39Ev
  virtual void  v40(); // _ZN7S6845C23v40Ev
  virtual void  v41(); // _ZN7S6845C23v41Ev
  virtual void  v42(); // _ZN7S6845C23v42Ev
  virtual void  v43(); // _ZN7S6845C23v43Ev
  virtual void  v44(); // _ZN7S6845C23v44Ev
  virtual void  v45(); // _ZN7S6845C23v45Ev
  virtual void  v46(); // _ZN7S6845C23v46Ev
  virtual void  v47(); // _ZN7S6845C23v47Ev
  virtual void  v48(); // _ZN7S6845C23v48Ev
  virtual void  v49(); // _ZN7S6845C23v49Ev
  virtual void  v50(); // _ZN7S6845C23v50Ev
  virtual void  v51(); // _ZN7S6845C23v51Ev
  virtual void  v52(); // _ZN7S6845C23v52Ev
  virtual void  v53(); // _ZN7S6845C23v53Ev
  virtual void  v54(); // _ZN7S6845C23v54Ev
  virtual void  v55(); // _ZN7S6845C23v55Ev
  virtual void  v56(); // _ZN7S6845C23v56Ev
  virtual void  v57(); // _ZN7S6845C23v57Ev
  virtual void  v58(); // _ZN7S6845C23v58Ev
  virtual void  v59(); // _ZN7S6845C23v59Ev
  virtual void  v60(); // _ZN7S6845C23v60Ev
  virtual void  v61(); // _ZN7S6845C23v61Ev
  virtual void  v62(); // _ZN7S6845C23v62Ev
  virtual void  v63(); // _ZN7S6845C23v63Ev
  virtual void  v64(); // _ZN7S6845C23v64Ev
  virtual void  v65(); // _ZN7S6845C23v65Ev
  virtual void  v66(); // _ZN7S6845C23v66Ev
  virtual void  v67(); // _ZN7S6845C23v67Ev
  S6845C2(); // tgen
};
//SIG(-1 S6845C2) 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]}


 S6845C2 ::~S6845C2(){ note_dtor("S6845C2", this);}
void  S6845C2 ::v4(){vfunc_called(this, "_ZN7S6845C22v4Ev");}
void  S6845C2 ::v5(){vfunc_called(this, "_ZN7S6845C22v5Ev");}
void  S6845C2 ::v6(){vfunc_called(this, "_ZN7S6845C22v6Ev");}
void  S6845C2 ::v7(){vfunc_called(this, "_ZN7S6845C22v7Ev");}
void  S6845C2 ::v8(){vfunc_called(this, "_ZN7S6845C22v8Ev");}
void  S6845C2 ::v9(){vfunc_called(this, "_ZN7S6845C22v9Ev");}
void  S6845C2 ::v10(){vfunc_called(this, "_ZN7S6845C23v10Ev");}
void  S6845C2 ::v11(){vfunc_called(this, "_ZN7S6845C23v11Ev");}
void  S6845C2 ::v12(){vfunc_called(this, "_ZN7S6845C23v12Ev");}
void  S6845C2 ::v13(){vfunc_called(this, "_ZN7S6845C23v13Ev");}
void  S6845C2 ::v14(){vfunc_called(this, "_ZN7S6845C23v14Ev");}
void  S6845C2 ::v15(){vfunc_called(this, "_ZN7S6845C23v15Ev");}
void  S6845C2 ::v16(){vfunc_called(this, "_ZN7S6845C23v16Ev");}
void  S6845C2 ::v17(){vfunc_called(this, "_ZN7S6845C23v17Ev");}
void  S6845C2 ::v18(){vfunc_called(this, "_ZN7S6845C23v18Ev");}
void  S6845C2 ::v19(){vfunc_called(this, "_ZN7S6845C23v19Ev");}
void  S6845C2 ::v20(){vfunc_called(this, "_ZN7S6845C23v20Ev");}
void  S6845C2 ::v21(){vfunc_called(this, "_ZN7S6845C23v21Ev");}
void  S6845C2 ::v22(){vfunc_called(this, "_ZN7S6845C23v22Ev");}
void  S6845C2 ::v23(){vfunc_called(this, "_ZN7S6845C23v23Ev");}
void  S6845C2 ::v24(){vfunc_called(this, "_ZN7S6845C23v24Ev");}
void  S6845C2 ::v25(){vfunc_called(this, "_ZN7S6845C23v25Ev");}
void  S6845C2 ::v26(){vfunc_called(this, "_ZN7S6845C23v26Ev");}
void  S6845C2 ::v27(){vfunc_called(this, "_ZN7S6845C23v27Ev");}
void  S6845C2 ::v28(){vfunc_called(this, "_ZN7S6845C23v28Ev");}
void  S6845C2 ::v29(){vfunc_called(this, "_ZN7S6845C23v29Ev");}
void  S6845C2 ::v30(){vfunc_called(this, "_ZN7S6845C23v30Ev");}
void  S6845C2 ::v31(){vfunc_called(this, "_ZN7S6845C23v31Ev");}
void  S6845C2 ::v32(){vfunc_called(this, "_ZN7S6845C23v32Ev");}
void  S6845C2 ::v33(){vfunc_called(this, "_ZN7S6845C23v33Ev");}
void  S6845C2 ::v34(){vfunc_called(this, "_ZN7S6845C23v34Ev");}
void  S6845C2 ::v35(){vfunc_called(this, "_ZN7S6845C23v35Ev");}
void  S6845C2 ::v36(){vfunc_called(this, "_ZN7S6845C23v36Ev");}
void  S6845C2 ::v37(){vfunc_called(this, "_ZN7S6845C23v37Ev");}
void  S6845C2 ::v38(){vfunc_called(this, "_ZN7S6845C23v38Ev");}
void  S6845C2 ::v39(){vfunc_called(this, "_ZN7S6845C23v39Ev");}
void  S6845C2 ::v40(){vfunc_called(this, "_ZN7S6845C23v40Ev");}
void  S6845C2 ::v41(){vfunc_called(this, "_ZN7S6845C23v41Ev");}
void  S6845C2 ::v42(){vfunc_called(this, "_ZN7S6845C23v42Ev");}
void  S6845C2 ::v43(){vfunc_called(this, "_ZN7S6845C23v43Ev");}
void  S6845C2 ::v44(){vfunc_called(this, "_ZN7S6845C23v44Ev");}
void  S6845C2 ::v45(){vfunc_called(this, "_ZN7S6845C23v45Ev");}
void  S6845C2 ::v46(){vfunc_called(this, "_ZN7S6845C23v46Ev");}
void  S6845C2 ::v47(){vfunc_called(this, "_ZN7S6845C23v47Ev");}
void  S6845C2 ::v48(){vfunc_called(this, "_ZN7S6845C23v48Ev");}
void  S6845C2 ::v49(){vfunc_called(this, "_ZN7S6845C23v49Ev");}
void  S6845C2 ::v50(){vfunc_called(this, "_ZN7S6845C23v50Ev");}
void  S6845C2 ::v51(){vfunc_called(this, "_ZN7S6845C23v51Ev");}
void  S6845C2 ::v52(){vfunc_called(this, "_ZN7S6845C23v52Ev");}
void  S6845C2 ::v53(){vfunc_called(this, "_ZN7S6845C23v53Ev");}
void  S6845C2 ::v54(){vfunc_called(this, "_ZN7S6845C23v54Ev");}
void  S6845C2 ::v55(){vfunc_called(this, "_ZN7S6845C23v55Ev");}
void  S6845C2 ::v56(){vfunc_called(this, "_ZN7S6845C23v56Ev");}
void  S6845C2 ::v57(){vfunc_called(this, "_ZN7S6845C23v57Ev");}
void  S6845C2 ::v58(){vfunc_called(this, "_ZN7S6845C23v58Ev");}
void  S6845C2 ::v59(){vfunc_called(this, "_ZN7S6845C23v59Ev");}
void  S6845C2 ::v60(){vfunc_called(this, "_ZN7S6845C23v60Ev");}
void  S6845C2 ::v61(){vfunc_called(this, "_ZN7S6845C23v61Ev");}
void  S6845C2 ::v62(){vfunc_called(this, "_ZN7S6845C23v62Ev");}
void  S6845C2 ::v63(){vfunc_called(this, "_ZN7S6845C23v63Ev");}
void  S6845C2 ::v64(){vfunc_called(this, "_ZN7S6845C23v64Ev");}
void  S6845C2 ::v65(){vfunc_called(this, "_ZN7S6845C23v65Ev");}
void  S6845C2 ::v66(){vfunc_called(this, "_ZN7S6845C23v66Ev");}
void  S6845C2 ::v67(){vfunc_called(this, "_ZN7S6845C23v67Ev");}
S6845C2 ::S6845C2(){ note_ctor("S6845C2", this);} // tgen

static void Test_S6845C2()
{
  extern Class_Descriptor cd_S6845C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6845C2, buf);
    S6845C2 *dp, &lv = *(dp=new (buf) S6845C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6845C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6845C2)");
    check_field_offset(lv, s6845c2f0, ABISELECT(8,4), "S6845C2.s6845c2f0");
    check_field_offset(lv, s6845c2f1, ABISELECT(16,8), "S6845C2.s6845c2f1");
    check_field_offset(lv, s6845c2f2, ABISELECT(24,16), "S6845C2.s6845c2f2");
    check_field_offset(lv, s6845c2f3, ABISELECT(56,32), "S6845C2.s6845c2f3");
    check_field_offset(lv, s6845c2f4, ABISELECT(64,40), "S6845C2.s6845c2f4");
    check_field_offset(lv, s6845c2f5, ABISELECT(72,44), "S6845C2.s6845c2f5");
    check_field_offset(lv, s6845c2f6, ABISELECT(80,52), "S6845C2.s6845c2f6");
    test_class_info(&lv, &cd_S6845C2);
    dp->~S6845C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6845C2(Test_S6845C2, "S6845C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6845C2C1Ev();
extern void _ZN7S6845C2D1Ev();
Name_Map name_map_S6845C2[] = {
  NSPAIR(_ZN7S6845C2C1Ev),
  NSPAIR(_ZN7S6845C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6845C2[];
extern void _ZN7S6845C2D1Ev();
extern void _ZN7S6845C2D0Ev();
extern void _ZN7S6845C22v4Ev();
extern void _ZN7S6845C22v5Ev();
extern void _ZN7S6845C22v6Ev();
extern void _ZN7S6845C22v7Ev();
extern void _ZN7S6845C22v8Ev();
extern void _ZN7S6845C22v9Ev();
extern void _ZN7S6845C23v10Ev();
extern void _ZN7S6845C23v11Ev();
extern void _ZN7S6845C23v12Ev();
extern void _ZN7S6845C23v13Ev();
extern void _ZN7S6845C23v14Ev();
extern void _ZN7S6845C23v15Ev();
extern void _ZN7S6845C23v16Ev();
extern void _ZN7S6845C23v17Ev();
extern void _ZN7S6845C23v18Ev();
extern void _ZN7S6845C23v19Ev();
extern void _ZN7S6845C23v20Ev();
extern void _ZN7S6845C23v21Ev();
extern void _ZN7S6845C23v22Ev();
extern void _ZN7S6845C23v23Ev();
extern void _ZN7S6845C23v24Ev();
extern void _ZN7S6845C23v25Ev();
extern void _ZN7S6845C23v26Ev();
extern void _ZN7S6845C23v27Ev();
extern void _ZN7S6845C23v28Ev();
extern void _ZN7S6845C23v29Ev();
extern void _ZN7S6845C23v30Ev();
extern void _ZN7S6845C23v31Ev();
extern void _ZN7S6845C23v32Ev();
extern void _ZN7S6845C23v33Ev();
extern void _ZN7S6845C23v34Ev();
extern void _ZN7S6845C23v35Ev();
extern void _ZN7S6845C23v36Ev();
extern void _ZN7S6845C23v37Ev();
extern void _ZN7S6845C23v38Ev();
extern void _ZN7S6845C23v39Ev();
extern void _ZN7S6845C23v40Ev();
extern void _ZN7S6845C23v41Ev();
extern void _ZN7S6845C23v42Ev();
extern void _ZN7S6845C23v43Ev();
extern void _ZN7S6845C23v44Ev();
extern void _ZN7S6845C23v45Ev();
extern void _ZN7S6845C23v46Ev();
extern void _ZN7S6845C23v47Ev();
extern void _ZN7S6845C23v48Ev();
extern void _ZN7S6845C23v49Ev();
extern void _ZN7S6845C23v50Ev();
extern void _ZN7S6845C23v51Ev();
extern void _ZN7S6845C23v52Ev();
extern void _ZN7S6845C23v53Ev();
extern void _ZN7S6845C23v54Ev();
extern void _ZN7S6845C23v55Ev();
extern void _ZN7S6845C23v56Ev();
extern void _ZN7S6845C23v57Ev();
extern void _ZN7S6845C23v58Ev();
extern void _ZN7S6845C23v59Ev();
extern void _ZN7S6845C23v60Ev();
extern void _ZN7S6845C23v61Ev();
extern void _ZN7S6845C23v62Ev();
extern void _ZN7S6845C23v63Ev();
extern void _ZN7S6845C23v64Ev();
extern void _ZN7S6845C23v65Ev();
extern void _ZN7S6845C23v66Ev();
extern void _ZN7S6845C23v67Ev();
static  VTBL_ENTRY vtc_S6845C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6845C2[0]),
  (VTBL_ENTRY)&_ZN7S6845C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6845C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v67Ev,
};
extern VTBL_ENTRY _ZTI7S6845C2[];
extern  VTBL_ENTRY _ZTV7S6845C2[];
Class_Descriptor cd_S6845C2 = {  "S6845C2", // class name
  0,0,//no base classes
  &(vtc_S6845C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6845C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6845C2),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  S6845C5_nt  {
  ::S6508C14 s6845c5f0;
  void *s6845c5f1;
  int s6845c5f2;
  void  mf6845c5(); // _ZN10S6845C5_nt8mf6845c5Ev
};
//SIG(-1 S6845C5_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fp Fi}


void  S6845C5_nt ::mf6845c5(){}

//skip512 S6845C5_nt

#else // __cplusplus

Class_Descriptor cd_S6845C5_nt = {  "S6845C5_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  S6845C4_nt  : S6845C5_nt {
};
//SIG(-1 S6845C4_nt) C1{ BC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp Fi}}



//skip512 S6845C4_nt

#else // __cplusplus

extern Class_Descriptor cd_S6845C5_nt;
static Base_Class bases_S6845C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6845C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S6845C1  : S6845C2 {
  ::S6845C4_nt s6845c1f0;
  ::S3243C6 s6845c1f1;
  virtual  ~S6845C1(); // _ZN7S6845C1D1Ev
  virtual void  v1(); // _ZN7S6845C12v1Ev
  virtual void  v2(); // _ZN7S6845C12v2Ev
  virtual void  v3(); // _ZN7S6845C12v3Ev
  S6845C1(); // tgen
};
//SIG(1 S6845C1) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} FC8{ BC9{ BC7}}}


 S6845C1 ::~S6845C1(){ note_dtor("S6845C1", this);}
void  S6845C1 ::v1(){vfunc_called(this, "_ZN7S6845C12v1Ev");}
void  S6845C1 ::v2(){vfunc_called(this, "_ZN7S6845C12v2Ev");}
void  S6845C1 ::v3(){vfunc_called(this, "_ZN7S6845C12v3Ev");}
S6845C1 ::S6845C1(){ note_ctor("S6845C1", this);} // tgen

static void Test_S6845C1()
{
  extern Class_Descriptor cd_S6845C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,24)];
    init_test(&cd_S6845C1, buf);
    S6845C1 *dp, &lv = *(dp=new (buf) S6845C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,92), "sizeof(S6845C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6845C1)");
    check_base_class_offset(lv, (S6845C2*), 0, "S6845C1");
    check_field_offset(lv, s6845c1f0, ABISELECT(96,60), "S6845C1.s6845c1f0");
    check_field_offset(lv, s6845c1f1, ABISELECT(128,80), "S6845C1.s6845c1f1");
    test_class_info(&lv, &cd_S6845C1);
    dp->~S6845C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6845C1(Test_S6845C1, "S6845C1", ABISELECT(144,92));

#else // __cplusplus

extern void _ZN7S6845C1C1Ev();
extern void _ZN7S6845C1D1Ev();
Name_Map name_map_S6845C1[] = {
  NSPAIR(_ZN7S6845C1C1Ev),
  NSPAIR(_ZN7S6845C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6845C2;
extern VTBL_ENTRY _ZTI7S6845C2[];
extern  VTBL_ENTRY _ZTV7S6845C2[];
static Base_Class bases_S6845C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6845C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6845C1[];
extern void _ZN7S6845C1D1Ev();
extern void _ZN7S6845C1D0Ev();
extern void _ZN7S6845C22v4Ev();
extern void _ZN7S6845C22v5Ev();
extern void _ZN7S6845C22v6Ev();
extern void _ZN7S6845C22v7Ev();
extern void _ZN7S6845C22v8Ev();
extern void _ZN7S6845C22v9Ev();
extern void _ZN7S6845C23v10Ev();
extern void _ZN7S6845C23v11Ev();
extern void _ZN7S6845C23v12Ev();
extern void _ZN7S6845C23v13Ev();
extern void _ZN7S6845C23v14Ev();
extern void _ZN7S6845C23v15Ev();
extern void _ZN7S6845C23v16Ev();
extern void _ZN7S6845C23v17Ev();
extern void _ZN7S6845C23v18Ev();
extern void _ZN7S6845C23v19Ev();
extern void _ZN7S6845C23v20Ev();
extern void _ZN7S6845C23v21Ev();
extern void _ZN7S6845C23v22Ev();
extern void _ZN7S6845C23v23Ev();
extern void _ZN7S6845C23v24Ev();
extern void _ZN7S6845C23v25Ev();
extern void _ZN7S6845C23v26Ev();
extern void _ZN7S6845C23v27Ev();
extern void _ZN7S6845C23v28Ev();
extern void _ZN7S6845C23v29Ev();
extern void _ZN7S6845C23v30Ev();
extern void _ZN7S6845C23v31Ev();
extern void _ZN7S6845C23v32Ev();
extern void _ZN7S6845C23v33Ev();
extern void _ZN7S6845C23v34Ev();
extern void _ZN7S6845C23v35Ev();
extern void _ZN7S6845C23v36Ev();
extern void _ZN7S6845C23v37Ev();
extern void _ZN7S6845C23v38Ev();
extern void _ZN7S6845C23v39Ev();
extern void _ZN7S6845C23v40Ev();
extern void _ZN7S6845C23v41Ev();
extern void _ZN7S6845C23v42Ev();
extern void _ZN7S6845C23v43Ev();
extern void _ZN7S6845C23v44Ev();
extern void _ZN7S6845C23v45Ev();
extern void _ZN7S6845C23v46Ev();
extern void _ZN7S6845C23v47Ev();
extern void _ZN7S6845C23v48Ev();
extern void _ZN7S6845C23v49Ev();
extern void _ZN7S6845C23v50Ev();
extern void _ZN7S6845C23v51Ev();
extern void _ZN7S6845C23v52Ev();
extern void _ZN7S6845C23v53Ev();
extern void _ZN7S6845C23v54Ev();
extern void _ZN7S6845C23v55Ev();
extern void _ZN7S6845C23v56Ev();
extern void _ZN7S6845C23v57Ev();
extern void _ZN7S6845C23v58Ev();
extern void _ZN7S6845C23v59Ev();
extern void _ZN7S6845C23v60Ev();
extern void _ZN7S6845C23v61Ev();
extern void _ZN7S6845C23v62Ev();
extern void _ZN7S6845C23v63Ev();
extern void _ZN7S6845C23v64Ev();
extern void _ZN7S6845C23v65Ev();
extern void _ZN7S6845C23v66Ev();
extern void _ZN7S6845C23v67Ev();
extern void _ZN7S6845C12v1Ev();
extern void _ZN7S6845C12v2Ev();
extern void _ZN7S6845C12v3Ev();
static  VTBL_ENTRY vtc_S6845C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6845C1[0]),
  (VTBL_ENTRY)&_ZN7S6845C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6845C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6845C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6845C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6845C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6845C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6845C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S6845C1[];
extern  VTBL_ENTRY _ZTV7S6845C1[];
Class_Descriptor cd_S6845C1 = {  "S6845C1", // class name
  bases_S6845C1, 1,
  &(vtc_S6845C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,92), // object size
  NSPAIRA(_ZTI7S6845C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6845C1),71, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20537C4  {
  virtual void  v3(); // _ZN8S20537C42v3Ev
  virtual void  v4(); // _ZN8S20537C42v4Ev
  virtual void  v5(); // _ZN8S20537C42v5Ev
  ~S20537C4(); // tgen
  S20537C4(); // tgen
};
//SIG(-1 S20537C4) C1{ v1 v2 v3}


void  S20537C4 ::v3(){vfunc_called(this, "_ZN8S20537C42v3Ev");}
void  S20537C4 ::v4(){vfunc_called(this, "_ZN8S20537C42v4Ev");}
void  S20537C4 ::v5(){vfunc_called(this, "_ZN8S20537C42v5Ev");}
S20537C4 ::~S20537C4(){ note_dtor("S20537C4", this);} // tgen
S20537C4 ::S20537C4(){ note_ctor("S20537C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20537C4C1Ev();
extern void _ZN8S20537C4D1Ev();
Name_Map name_map_S20537C4[] = {
  NSPAIR(_ZN8S20537C4C1Ev),
  NSPAIR(_ZN8S20537C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20537C4[];
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
static  VTBL_ENTRY vtc_S20537C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C4[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
};
extern VTBL_ENTRY _ZTI8S20537C4[];
extern  VTBL_ENTRY _ZTV8S20537C4[];
Class_Descriptor cd_S20537C4 = {  "S20537C4", // class name
  0,0,//no base classes
  &(vtc_S20537C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20537C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20537C4),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  S20537C3  : S20537C4 {
  int s20537c3f0[3];
  virtual void  v6(); // _ZN8S20537C32v6Ev
  virtual void  v7(); // _ZN8S20537C32v7Ev
  virtual void  v8(); // _ZN8S20537C32v8Ev
  virtual void  v9(); // _ZN8S20537C32v9Ev
  virtual void  v10(); // _ZN8S20537C33v10Ev
  virtual void  v11(); // _ZN8S20537C33v11Ev
  ~S20537C3(); // tgen
  S20537C3(); // tgen
};
//SIG(-1 S20537C3) C1{ BC2{ v7 v8 v9} v1 v2 v3 v4 v5 v6 Fi[3]}


void  S20537C3 ::v6(){vfunc_called(this, "_ZN8S20537C32v6Ev");}
void  S20537C3 ::v7(){vfunc_called(this, "_ZN8S20537C32v7Ev");}
void  S20537C3 ::v8(){vfunc_called(this, "_ZN8S20537C32v8Ev");}
void  S20537C3 ::v9(){vfunc_called(this, "_ZN8S20537C32v9Ev");}
void  S20537C3 ::v10(){vfunc_called(this, "_ZN8S20537C33v10Ev");}
void  S20537C3 ::v11(){vfunc_called(this, "_ZN8S20537C33v11Ev");}
S20537C3 ::~S20537C3(){ note_dtor("S20537C3", this);} // tgen
S20537C3 ::S20537C3(){ note_ctor("S20537C3", this);} // tgen

static void Test_S20537C3()
{
  extern Class_Descriptor cd_S20537C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20537C3, buf);
    S20537C3 *dp, &lv = *(dp=new (buf) S20537C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20537C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20537C3)");
    check_base_class_offset(lv, (S20537C4*), 0, "S20537C3");
    check_field_offset(lv, s20537c3f0, ABISELECT(8,4), "S20537C3.s20537c3f0");
    test_class_info(&lv, &cd_S20537C3);
    dp->~S20537C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20537C3(Test_S20537C3, "S20537C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20537C3C1Ev();
extern void _ZN8S20537C3D1Ev();
Name_Map name_map_S20537C3[] = {
  NSPAIR(_ZN8S20537C3C1Ev),
  NSPAIR(_ZN8S20537C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20537C4;
extern VTBL_ENTRY _ZTI8S20537C4[];
extern  VTBL_ENTRY _ZTV8S20537C4[];
static Base_Class bases_S20537C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20537C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20537C3[];
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
extern void _ZN8S20537C32v6Ev();
extern void _ZN8S20537C32v7Ev();
extern void _ZN8S20537C32v8Ev();
extern void _ZN8S20537C32v9Ev();
extern void _ZN8S20537C33v10Ev();
extern void _ZN8S20537C33v11Ev();
static  VTBL_ENTRY vtc_S20537C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C3[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v11Ev,
};
extern VTBL_ENTRY _ZTI8S20537C3[];
extern  VTBL_ENTRY _ZTV8S20537C3[];
Class_Descriptor cd_S20537C3 = {  "S20537C3", // class name
  bases_S20537C3, 1,
  &(vtc_S20537C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20537C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20537C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20537C5  {
  long double s20537c5f0;
  virtual void  v12(); // _ZN8S20537C53v12Ev
  virtual void  v13(); // _ZN8S20537C53v13Ev
  virtual void  v14(); // _ZN8S20537C53v14Ev
  virtual void  v15(); // _ZN8S20537C53v15Ev
  virtual void  v16(); // _ZN8S20537C53v16Ev
  ~S20537C5(); // tgen
  S20537C5(); // tgen
};
//SIG(-1 S20537C5) C1{ v1 v2 v3 v4 v5 FD}


void  S20537C5 ::v12(){vfunc_called(this, "_ZN8S20537C53v12Ev");}
void  S20537C5 ::v13(){vfunc_called(this, "_ZN8S20537C53v13Ev");}
void  S20537C5 ::v14(){vfunc_called(this, "_ZN8S20537C53v14Ev");}
void  S20537C5 ::v15(){vfunc_called(this, "_ZN8S20537C53v15Ev");}
void  S20537C5 ::v16(){vfunc_called(this, "_ZN8S20537C53v16Ev");}
S20537C5 ::~S20537C5(){ note_dtor("S20537C5", this);} // tgen
S20537C5 ::S20537C5(){ note_ctor("S20537C5", this);} // tgen

static void Test_S20537C5()
{
  extern Class_Descriptor cd_S20537C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S20537C5, buf);
    S20537C5 *dp, &lv = *(dp=new (buf) S20537C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20537C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20537C5)");
    check_field_offset(lv, s20537c5f0, ABISELECT(16,4), "S20537C5.s20537c5f0");
    test_class_info(&lv, &cd_S20537C5);
    dp->~S20537C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20537C5(Test_S20537C5, "S20537C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20537C5C1Ev();
extern void _ZN8S20537C5D1Ev();
Name_Map name_map_S20537C5[] = {
  NSPAIR(_ZN8S20537C5C1Ev),
  NSPAIR(_ZN8S20537C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20537C5[];
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY vtc_S20537C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C5[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
Class_Descriptor cd_S20537C5 = {  "S20537C5", // class name
  0,0,//no base classes
  &(vtc_S20537C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20537C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20537C5),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20537C6  {
  __tsi64 s20537c6f0[3];
  virtual  ~S20537C6(); // _ZN8S20537C6D1Ev
  virtual void  v17(); // _ZN8S20537C63v17Ev
  virtual void  v18(); // _ZN8S20537C63v18Ev
  virtual void  v19(); // _ZN8S20537C63v19Ev
  virtual void  v20(); // _ZN8S20537C63v20Ev
  virtual void  v21(); // _ZN8S20537C63v21Ev
  S20537C6(); // tgen
};
//SIG(-1 S20537C6) C1{ vd v1 v2 v3 v4 v5 FL[3]}


 S20537C6 ::~S20537C6(){ note_dtor("S20537C6", this);}
void  S20537C6 ::v17(){vfunc_called(this, "_ZN8S20537C63v17Ev");}
void  S20537C6 ::v18(){vfunc_called(this, "_ZN8S20537C63v18Ev");}
void  S20537C6 ::v19(){vfunc_called(this, "_ZN8S20537C63v19Ev");}
void  S20537C6 ::v20(){vfunc_called(this, "_ZN8S20537C63v20Ev");}
void  S20537C6 ::v21(){vfunc_called(this, "_ZN8S20537C63v21Ev");}
S20537C6 ::S20537C6(){ note_ctor("S20537C6", this);} // tgen

static void Test_S20537C6()
{
  extern Class_Descriptor cd_S20537C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S20537C6, buf);
    S20537C6 *dp, &lv = *(dp=new (buf) S20537C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S20537C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20537C6)");
    check_field_offset(lv, s20537c6f0, ABISELECT(8,4), "S20537C6.s20537c6f0");
    test_class_info(&lv, &cd_S20537C6);
    dp->~S20537C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20537C6(Test_S20537C6, "S20537C6", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN8S20537C6C1Ev();
extern void _ZN8S20537C6D1Ev();
Name_Map name_map_S20537C6[] = {
  NSPAIR(_ZN8S20537C6C1Ev),
  NSPAIR(_ZN8S20537C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20537C6[];
extern void _ZN8S20537C6D1Ev();
extern void _ZN8S20537C6D0Ev();
extern void _ZN8S20537C63v17Ev();
extern void _ZN8S20537C63v18Ev();
extern void _ZN8S20537C63v19Ev();
extern void _ZN8S20537C63v20Ev();
extern void _ZN8S20537C63v21Ev();
static  VTBL_ENTRY vtc_S20537C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C6[0]),
  (VTBL_ENTRY)&_ZN8S20537C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v21Ev,
};
extern VTBL_ENTRY _ZTI8S20537C6[];
extern  VTBL_ENTRY _ZTV8S20537C6[];
Class_Descriptor cd_S20537C6 = {  "S20537C6", // class name
  0,0,//no base classes
  &(vtc_S20537C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI8S20537C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20537C6),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  S20537C9  : virtual S20537C5 {
  ::S20537C5 s20537c9f0;
  virtual  ~S20537C9(); // _ZN8S20537C9D2Ev
  virtual void  v22(); // _ZN8S20537C93v22Ev
  virtual void  v23(); // _ZN8S20537C93v23Ev
  virtual void  v24(); // _ZN8S20537C93v24Ev
  virtual void  v25(); // _ZN8S20537C93v25Ev
  virtual void  v26(); // _ZN8S20537C93v26Ev
  S20537C9(); // tgen
};
//SIG(-1 S20537C9) C1{ VBC2{ v6 v7 v8 v9 v10 FD} vd v1 v2 v3 v4 v5 FC2}


 S20537C9 ::~S20537C9(){ note_dtor("S20537C9", this);}
void  S20537C9 ::v22(){vfunc_called(this, "_ZN8S20537C93v22Ev");}
void  S20537C9 ::v23(){vfunc_called(this, "_ZN8S20537C93v23Ev");}
void  S20537C9 ::v24(){vfunc_called(this, "_ZN8S20537C93v24Ev");}
void  S20537C9 ::v25(){vfunc_called(this, "_ZN8S20537C93v25Ev");}
void  S20537C9 ::v26(){vfunc_called(this, "_ZN8S20537C93v26Ev");}
S20537C9 ::S20537C9(){ note_ctor("S20537C9", this);} // tgen

static void Test_S20537C9()
{
  extern Class_Descriptor cd_S20537C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20537C9, buf);
    S20537C9 *dp, &lv = *(dp=new (buf) S20537C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20537C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20537C9)");
    check_base_class_offset(lv, (S20537C5*), ABISELECT(48,20), "S20537C9");
    check_field_offset(lv, s20537c9f0, ABISELECT(16,4), "S20537C9.s20537c9f0");
    test_class_info(&lv, &cd_S20537C9);
    dp->~S20537C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20537C9(Test_S20537C9, "S20537C9", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S20537C9C1Ev();
extern void _ZN8S20537C9D2Ev();
Name_Map name_map_S20537C9[] = {
  NSPAIR(_ZN8S20537C9C1Ev),
  NSPAIR(_ZN8S20537C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
static Base_Class bases_S20537C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20537C5,    ABISELECT(48,20), //bcp->offset
    10, //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 _ZTI8S20537C9[];
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY vtc_S20537C9[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern VTBL_ENTRY _ZTV8S20537C9[];
static  VTT_ENTRY vtt_S20537C9[] = {
  {&(_ZTV8S20537C9[3]),  3,22},
  {&(_ZTV8S20537C9[17]),  17,22},
};
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
Class_Descriptor cd_S20537C9 = {  "S20537C9", // class name
  bases_S20537C9, 1,
  &(vtc_S20537C9[0]), // expected_vtbl_contents
  &(vtt_S20537C9[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S20537C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20537C9),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20537C9),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  S20537C8  : S20537C9 {
  virtual void  v27(); // _ZN8S20537C83v27Ev
  virtual void  v28(); // _ZN8S20537C83v28Ev
  ~S20537C8(); // tgen
  S20537C8(); // tgen
};
//SIG(-1 S20537C8) C1{ BC2{ VBC3{ v3 v4 v5 v6 v7 FD} vd v8 v9 v10 v11 v12 FC3} v1 v2}


void  S20537C8 ::v27(){vfunc_called(this, "_ZN8S20537C83v27Ev");}
void  S20537C8 ::v28(){vfunc_called(this, "_ZN8S20537C83v28Ev");}
S20537C8 ::~S20537C8(){ note_dtor("S20537C8", this);} // tgen
S20537C8 ::S20537C8(){ note_ctor("S20537C8", this);} // tgen

static void Test_S20537C8()
{
  extern Class_Descriptor cd_S20537C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20537C8, buf);
    S20537C8 *dp, &lv = *(dp=new (buf) S20537C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20537C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20537C8)");
    check_base_class_offset(lv, (S20537C5*)(S20537C9*), ABISELECT(48,20), "S20537C8");
    check_base_class_offset(lv, (S20537C9*), 0, "S20537C8");
    test_class_info(&lv, &cd_S20537C8);
    dp->~S20537C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20537C8(Test_S20537C8, "S20537C8", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S20537C8C1Ev();
extern void _ZN8S20537C8D1Ev();
Name_Map name_map_S20537C8[] = {
  NSPAIR(_ZN8S20537C8C1Ev),
  NSPAIR(_ZN8S20537C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
static Base_Class bases_S20537C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20537C5,    ABISELECT(48,20), //bcp->offset
    12, //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_S20537C9,    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 _ZTI8S20537C8[];
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY vtc_S20537C8[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern VTBL_ENTRY _ZTV8S20537C8[];
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C9__8S20537C8[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C9__8S20537C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
static  VTT_ENTRY vtt_S20537C8[] = {
  {&(_ZTV8S20537C8[3]),  3,24},
  {&(_tg__ZTV8S20537C9__8S20537C8[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C9__8S20537C8[7]),  7,12},
  {&(_ZTV8S20537C8[19]),  19,24},
};
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
Class_Descriptor cd_S20537C8 = {  "S20537C8", // class name
  bases_S20537C8, 2,
  &(vtc_S20537C8[0]), // expected_vtbl_contents
  &(vtt_S20537C8[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S20537C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20537C8),24, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20537C8),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  S20537C10  : virtual S20537C5 , S20537C9 , S20537C8 {
  char s20537c10f0[8];
  virtual void  v29(); // _ZN9S20537C103v29Ev
  virtual void  v30(); // _ZN9S20537C103v30Ev
  virtual void  v31(); // _ZN9S20537C103v31Ev
  virtual void  v32(); // _ZN9S20537C103v32Ev
  virtual void  v33(); // _ZN9S20537C103v33Ev
  virtual void  v34(); // _ZN9S20537C103v34Ev
  virtual void  v35(); // _ZN9S20537C103v35Ev
  ~S20537C10(); // tgen
  S20537C10(); // tgen
};
//SIG(-1 S20537C10) C1{ VBC2{ v8 v9 v10 v11 v12 FD} BC3{ VBC2 vd v13 v14 v15 v16 v17 FC2} BC4{ BC3 v18 v19} v1 v2 v3 v4 v5 v6 v7 Fc[8]}


void  S20537C10 ::v29(){vfunc_called(this, "_ZN9S20537C103v29Ev");}
void  S20537C10 ::v30(){vfunc_called(this, "_ZN9S20537C103v30Ev");}
void  S20537C10 ::v31(){vfunc_called(this, "_ZN9S20537C103v31Ev");}
void  S20537C10 ::v32(){vfunc_called(this, "_ZN9S20537C103v32Ev");}
void  S20537C10 ::v33(){vfunc_called(this, "_ZN9S20537C103v33Ev");}
void  S20537C10 ::v34(){vfunc_called(this, "_ZN9S20537C103v34Ev");}
void  S20537C10 ::v35(){vfunc_called(this, "_ZN9S20537C103v35Ev");}
S20537C10 ::~S20537C10(){ note_dtor("S20537C10", this);} // tgen
S20537C10 ::S20537C10(){ note_ctor("S20537C10", this);} // tgen

static void Test_S20537C10()
{
  extern Class_Descriptor cd_S20537C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,17)];
    init_test(&cd_S20537C10, buf);
    S20537C10 *dp, &lv = *(dp=new (buf) S20537C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,64), "sizeof(S20537C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20537C10)");
    check_base_class_offset(lv, (S20537C5*), ABISELECT(112,48), "S20537C10");
    /*is_ambiguous_... S20537C10::S20537C9 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C9*), ABISELECT(112,48), "S20537C10");
    check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C8*), ABISELECT(112,48), "S20537C10");
    /*is_ambiguous_... S20537C10::S20537C9 */ AMB_check_base_class_offset(lv, (S20537C9*), 0, "S20537C10");
    check_base_class_offset(lv, (S20537C9*)(S20537C8*), ABISELECT(48,20), "S20537C10");
    check_base_class_offset(lv, (S20537C8*), ABISELECT(48,20), "S20537C10");
    check_field_offset(lv, s20537c10f0, ABISELECT(96,40), "S20537C10.s20537c10f0");
    test_class_info(&lv, &cd_S20537C10);
    dp->~S20537C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20537C10(Test_S20537C10, "S20537C10", ABISELECT(144,64));

#else // __cplusplus

extern void _ZN9S20537C10C1Ev();
extern void _ZN9S20537C10D1Ev();
Name_Map name_map_S20537C10[] = {
  NSPAIR(_ZN9S20537C10C1Ev),
  NSPAIR(_ZN9S20537C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C8;
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
static Base_Class bases_S20537C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20537C5,    ABISELECT(112,48), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20537C9,    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_S20537C9,    ABISELECT(48,20), //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_S20537C8,    ABISELECT(48,20), //bcp->offset
    17, //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 _ZTI9S20537C10[];
extern void _ZN9S20537C10D1Ev();
extern void _ZN9S20537C10D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
extern void ABISELECT(_ZThn48_N9S20537C10D1Ev,_ZThn20_N9S20537C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20537C10D0Ev,_ZThn20_N9S20537C10D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY vtc_S20537C10[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&_ZN9S20537C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20537C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
  ABISELECT(64,28),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20537C10D1Ev,_ZThn20_N9S20537C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20537C10D0Ev,_ZThn20_N9S20537C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern VTBL_ENTRY _ZTV9S20537C10[];
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C9__9S20537C10[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C9__9S20537C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C8__9S20537C10[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C98S20537C8__A1__9S20537C10[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C98S20537C8__A1__9S20537C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C8__9S20537C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
static  VTT_ENTRY vtt_S20537C10[] = {
  {&(_ZTV9S20537C10[3]),  3,41},
  {&(_tg__ZTV8S20537C9__9S20537C10[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C9__9S20537C10[7]),  7,12},
  {&(_tg__ZTV8S20537C8__9S20537C10[3]),  3,12},
  {&(_tg__ZTV8S20537C98S20537C8__A1__9S20537C10[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C98S20537C8__A1__9S20537C10[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C8__9S20537C10[7]),  7,12},
  {&(_ZTV9S20537C10[36]),  36,41},
  {&(_ZTV9S20537C10[20]),  20,41},
};
extern VTBL_ENTRY _ZTI9S20537C10[];
extern  VTBL_ENTRY _ZTV9S20537C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20537C10[];
Class_Descriptor cd_S20537C10 = {  "S20537C10", // class name
  bases_S20537C10, 4,
  &(vtc_S20537C10[0]), // expected_vtbl_contents
  &(vtt_S20537C10[0]), // expected_vtt_contents
  ABISELECT(144,64), // object size
  NSPAIRA(_ZTI9S20537C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20537C10),41, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20537C10),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20537C7  : S20537C8 , S20537C5 , virtual S20537C10 {
  int s20537c7f0;
  virtual void  v36(); // _ZN8S20537C73v36Ev
  virtual void  v37(); // _ZN8S20537C73v37Ev
  virtual void  v38(); // _ZN8S20537C73v38Ev
  virtual void  v39(); // _ZN8S20537C73v39Ev
  virtual void  v40(); // _ZN8S20537C73v40Ev
  virtual void  v41(); // _ZN8S20537C73v41Ev
  virtual void  v42(); // _ZN8S20537C73v42Ev
  ~S20537C7(); // tgen
  S20537C7(); // tgen
};
//SIG(-1 S20537C7) C1{ BC2{ BC3{ VBC4{ v8 v9 v10 v11 v12 FD} vd v13 v14 v15 v16 v17 FC4} v18 v19} BC4 VBC5{ VBC4 BC3 BC2 v20 v21 v22 v23 v24 v25 v26 Fc[8]} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S20537C7 ::v36(){vfunc_called(this, "_ZN8S20537C73v36Ev");}
void  S20537C7 ::v37(){vfunc_called(this, "_ZN8S20537C73v37Ev");}
void  S20537C7 ::v38(){vfunc_called(this, "_ZN8S20537C73v38Ev");}
void  S20537C7 ::v39(){vfunc_called(this, "_ZN8S20537C73v39Ev");}
void  S20537C7 ::v40(){vfunc_called(this, "_ZN8S20537C73v40Ev");}
void  S20537C7 ::v41(){vfunc_called(this, "_ZN8S20537C73v41Ev");}
void  S20537C7 ::v42(){vfunc_called(this, "_ZN8S20537C73v42Ev");}
S20537C7 ::~S20537C7(){ note_dtor("S20537C7", this);} // tgen
S20537C7 ::S20537C7(){ note_ctor("S20537C7", this);} // tgen

static void Test_S20537C7()
{
  extern Class_Descriptor cd_S20537C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,27)];
    init_test(&cd_S20537C7, buf);
    S20537C7 *dp, &lv = *(dp=new (buf) S20537C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,104), "sizeof(S20537C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20537C7)");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C8*), ABISELECT(96,40), "S20537C7");
    check_base_class_offset(lv, (S20537C5*)(S20537C10*), ABISELECT(96,40), "S20537C7");
    /*is_ambiguous_... S20537C10::S20537C9 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C10*), ABISELECT(96,40), "S20537C7");
    check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C8*)(S20537C10*), ABISELECT(96,40), "S20537C7");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C9*)(S20537C8*), 0, "S20537C7");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C8*), 0, "S20537C7");
    /*is_ambiguous_... S20537C7::S20537C5 */ AMB_check_base_class_offset(lv, (S20537C5*), ABISELECT(48,20), "S20537C7");
    /*is_ambiguous_... S20537C10::S20537C9 */ AMB_check_base_class_offset(lv, (S20537C9*)(S20537C10*), ABISELECT(128,56), "S20537C7");
    check_base_class_offset(lv, (S20537C9*)(S20537C8*)(S20537C10*), ABISELECT(176,76), "S20537C7");
    check_base_class_offset(lv, (S20537C8*)(S20537C10*), ABISELECT(176,76), "S20537C7");
    check_base_class_offset(lv, (S20537C10*), ABISELECT(128,56), "S20537C7");
    check_field_offset(lv, s20537c7f0, ABISELECT(80,36), "S20537C7.s20537c7f0");
    test_class_info(&lv, &cd_S20537C7);
    dp->~S20537C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20537C7(Test_S20537C7, "S20537C7", ABISELECT(240,104));

#else // __cplusplus

extern void _ZN8S20537C7C1Ev();
extern void _ZN8S20537C7D1Ev();
Name_Map name_map_S20537C7[] = {
  NSPAIR(_ZN8S20537C7C1Ev),
  NSPAIR(_ZN8S20537C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C8;
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C8;
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
extern Class_Descriptor cd_S20537C10;
extern VTBL_ENTRY _ZTI9S20537C10[];
extern  VTBL_ENTRY _ZTV9S20537C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20537C10[];
static Base_Class bases_S20537C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20537C5,    ABISELECT(96,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20537C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20537C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20537C5,    ABISELECT(48,20), //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_S20537C9,    ABISELECT(128,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20537C9,    ABISELECT(176,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20537C8,    ABISELECT(176,76), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20537C10,    ABISELECT(128,56), //bcp->offset
    39, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20537C7[];
extern void _ZN8S20537C7D1Ev();
extern void _ZN8S20537C7D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZThn128_N8S20537C7D1Ev,_ZThn56_N8S20537C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev)();
extern void ABISELECT(_ZThn128_N8S20537C7D0Ev,_ZThn56_N8S20537C7D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY vtc_S20537C7[] = {
  ABISELECT(128,56),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-56),
  ABISELECT(-32,-16),
  ABISELECT(-128,-56),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
  ABISELECT(-80,-36),
  ABISELECT(-176,-76),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern VTBL_ENTRY _ZTV8S20537C7[];
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C8__8S20537C7[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C98S20537C8__8S20537C7[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C98S20537C8__8S20537C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C8__8S20537C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN9S20537C10D1Ev();
extern void _ZN9S20537C10D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__8S20537C7[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&_ZN9S20537C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20537C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C99S20537C10__A1__8S20537C7[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C99S20537C10__A1__8S20537C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__8S20537C7[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C98S20537C89S20537C10__A2__8S20537C7[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C98S20537C89S20537C10__A2__8S20537C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C89S20537C10__A1__8S20537C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__9S20537C10__8S20537C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZThn48_N9S20537C10D1Ev,_ZThn20_N9S20537C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20537C10D0Ev,_ZThn20_N9S20537C10D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C8__9S20537C10__8S20537C7[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20537C10D1Ev,_ZThn20_N9S20537C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20537C10D0Ev,_ZThn20_N9S20537C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
static  VTT_ENTRY vtt_S20537C7[] = {
  {&(_ZTV8S20537C7[4]),  4,83},
  {&(_tg__ZTV8S20537C8__8S20537C7[3]),  3,12},
  {&(_tg__ZTV8S20537C98S20537C8__8S20537C7[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C98S20537C8__8S20537C7[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C8__8S20537C7[7]),  7,12},
  {&(_ZTV8S20537C7[34]),  34,83},
  {&(_ZTV8S20537C7[57]),  57,83},
  {&(_ZTV8S20537C7[74]),  74,83},
  {&(_tg__ZTV9S20537C10__8S20537C7[3]),  3,17},
  {&(_tg__ZTV8S20537C99S20537C10__A1__8S20537C7[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C99S20537C10__A1__8S20537C7[7]),  7,12},
  {&(_tg__ZTV8S20537C89S20537C10__A1__8S20537C7[3]),  3,12},
  {&(_tg__ZTV8S20537C98S20537C89S20537C10__A2__8S20537C7[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C98S20537C89S20537C10__A2__8S20537C7[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C89S20537C10__A1__8S20537C7[7]),  7,12},
  {&(_tg__ZTV8S20537C5__9S20537C10__8S20537C7[7]),  7,12},
  {&(_tg__ZTV8S20537C8__9S20537C10__8S20537C7[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20537C7[];
extern  VTBL_ENTRY _ZTV8S20537C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C7[];
static VTBL_ENTRY alt_thunk_names141[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20537C7D0Ev,_ZThn56_N8S20537C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20537C7D1Ev,_ZThn56_N8S20537C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20537C7 = {  "S20537C7", // class name
  bases_S20537C7, 8,
  &(vtc_S20537C7[0]), // expected_vtbl_contents
  &(vtt_S20537C7[0]), // expected_vtt_contents
  ABISELECT(240,104), // object size
  NSPAIRA(_ZTI8S20537C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20537C7),83, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20537C7),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names141,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20537C2  : virtual S20537C3 , virtual S20537C4 , virtual S20537C5 , S20537C6 , S20537C7 {
  void *s20537c2f0;
  virtual  ~S20537C2(); // _ZN8S20537C2D2Ev
  virtual void  v43(); // _ZN8S20537C23v43Ev
  S20537C2(); // tgen
};
//SIG(-1 S20537C2) C1{ VBC2{ BC3{ v2 v3 v4} v5 v6 v7 v8 v9 v10 Fi[3]} VBC3 VBC4{ v11 v12 v13 v14 v15 FD} BC5{ vd v16 v17 v18 v19 v20 FL[3]} BC6{ BC7{ BC8{ VBC4 vd v21 v22 v23 v24 v25 FC4} v26 v27} BC4 VBC9{ VBC4 BC8 BC7 v28 v29 v30 v31 v32 v33 v34 Fc[8]} v35 v36 v37 v38 v39 v40 v41 Fi} vd v1 Fp}


 S20537C2 ::~S20537C2(){ note_dtor("S20537C2", this);}
void  S20537C2 ::v43(){vfunc_called(this, "_ZN8S20537C23v43Ev");}
S20537C2 ::S20537C2(){ note_ctor("S20537C2", this);} // tgen

static void Test_S20537C2()
{
  extern Class_Descriptor cd_S20537C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,40)];
    init_test(&cd_S20537C2, buf);
    S20537C2 *dp, &lv = *(dp=new (buf) S20537C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,156), "sizeof(S20537C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20537C2)");
    check_base_class_offset(lv, (S20537C4*)(S20537C3*), ABISELECT(128,72), "S20537C2");
    check_base_class_offset(lv, (S20537C3*), ABISELECT(128,72), "S20537C2");
    /*is_ambiguous_... S20537C2::S20537C4 */ AMB_check_base_class_offset(lv, (S20537C4*), ABISELECT(152,88), "S20537C2");
    /*is_ambiguous_... S20537C2::S20537C5 */ AMB_check_base_class_offset(lv, (S20537C5*), ABISELECT(160,92), "S20537C2");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C8*)(S20537C7*), ABISELECT(160,92), "S20537C2");
    check_base_class_offset(lv, (S20537C5*)(S20537C10*), ABISELECT(160,92), "S20537C2");
    /*is_ambiguous_... S20537C10::S20537C9 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C10*), ABISELECT(160,92), "S20537C2");
    check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C8*)(S20537C10*), ABISELECT(160,92), "S20537C2");
    check_base_class_offset(lv, (S20537C6*), 0, "S20537C2");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C9*)(S20537C8*)(S20537C7*), ABISELECT(32,28), "S20537C2");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C8*)(S20537C7*), ABISELECT(32,28), "S20537C2");
    /*is_ambiguous_... S20537C7::S20537C5 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C7*), ABISELECT(80,48), "S20537C2");
    /*is_ambiguous_... S20537C10::S20537C9 */ AMB_check_base_class_offset(lv, (S20537C9*)(S20537C10*), ABISELECT(192,108), "S20537C2");
    check_base_class_offset(lv, (S20537C9*)(S20537C8*)(S20537C10*), ABISELECT(240,128), "S20537C2");
    check_base_class_offset(lv, (S20537C8*)(S20537C10*), ABISELECT(240,128), "S20537C2");
    check_base_class_offset(lv, (S20537C10*)(S20537C7*), ABISELECT(192,108), "S20537C2");
    check_base_class_offset(lv, (S20537C7*), ABISELECT(32,28), "S20537C2");
    check_field_offset(lv, s20537c2f0, ABISELECT(120,68), "S20537C2.s20537c2f0");
    test_class_info(&lv, &cd_S20537C2);
    dp->~S20537C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20537C2(Test_S20537C2, "S20537C2", ABISELECT(304,156));

#else // __cplusplus

extern void _ZN8S20537C2C1Ev();
extern void _ZN8S20537C2D2Ev();
Name_Map name_map_S20537C2[] = {
  NSPAIR(_ZN8S20537C2C1Ev),
  NSPAIR(_ZN8S20537C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20537C4;
extern VTBL_ENTRY _ZTI8S20537C4[];
extern  VTBL_ENTRY _ZTV8S20537C4[];
extern Class_Descriptor cd_S20537C3;
extern VTBL_ENTRY _ZTI8S20537C3[];
extern  VTBL_ENTRY _ZTV8S20537C3[];
extern Class_Descriptor cd_S20537C4;
extern VTBL_ENTRY _ZTI8S20537C4[];
extern  VTBL_ENTRY _ZTV8S20537C4[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C6;
extern VTBL_ENTRY _ZTI8S20537C6[];
extern  VTBL_ENTRY _ZTV8S20537C6[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C8;
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C8;
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
extern Class_Descriptor cd_S20537C10;
extern VTBL_ENTRY _ZTI9S20537C10[];
extern  VTBL_ENTRY _ZTV9S20537C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20537C10[];
extern Class_Descriptor cd_S20537C7;
extern VTBL_ENTRY _ZTI8S20537C7[];
extern  VTBL_ENTRY _ZTV8S20537C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C7[];
static Base_Class bases_S20537C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20537C4,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20537C3,    ABISELECT(128,72), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20537C4,    ABISELECT(152,88), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20537C5,    ABISELECT(160,92), //bcp->offset
    69, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20537C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20537C9,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20537C8,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20537C5,    ABISELECT(80,48), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20537C9,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20537C9,    ABISELECT(240,128), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20537C8,    ABISELECT(240,128), //bcp->offset
    113, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20537C10,    ABISELECT(192,108), //bcp->offset
    81, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20537C7,    ABISELECT(32,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI8S20537C2[];
extern void _ZN8S20537C2D1Ev();
extern void _ZN8S20537C2D0Ev();
extern void _ZN8S20537C63v17Ev();
extern void _ZN8S20537C63v18Ev();
extern void _ZN8S20537C63v19Ev();
extern void _ZN8S20537C63v20Ev();
extern void _ZN8S20537C63v21Ev();
extern void _ZN8S20537C23v43Ev();
extern void ABISELECT(_ZThn32_N8S20537C2D1Ev,_ZThn28_N8S20537C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S20537C2D0Ev,_ZThn28_N8S20537C2D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
extern void _ZN8S20537C32v6Ev();
extern void _ZN8S20537C32v7Ev();
extern void _ZN8S20537C32v8Ev();
extern void _ZN8S20537C32v9Ev();
extern void _ZN8S20537C33v10Ev();
extern void _ZN8S20537C33v11Ev();
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void ABISELECT(_ZTv0_n32_N8S20537C2D1Ev,_ZTv0_n16_N8S20537C2D1Ev)();
extern void ABISELECT(_ZThn192_N8S20537C2D1Ev,_ZThn108_N8S20537C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20537C2D0Ev,_ZTv0_n16_N8S20537C2D0Ev)();
extern void ABISELECT(_ZThn192_N8S20537C2D0Ev,_ZThn108_N8S20537C2D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20537C2D1Ev,_ZTvn20_n16_N8S20537C2D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20537C2D0Ev,_ZTvn20_n16_N8S20537C2D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY vtc_S20537C2[] = {
  ABISELECT(192,108),
  ABISELECT(160,92),
  ABISELECT(152,88),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20537C23v43Ev,
  ABISELECT(160,80),
  ABISELECT(128,64),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20537C2D1Ev,_ZThn28_N8S20537C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20537C2D0Ev,_ZThn28_N8S20537C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v11Ev,
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C2D1Ev,_ZTv0_n16_N8S20537C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C2D0Ev,_ZTv0_n16_N8S20537C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
  ABISELECT(-80,-36),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C2D1Ev,_ZTvn20_n16_N8S20537C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C2D0Ev,_ZTvn20_n16_N8S20537C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern VTBL_ENTRY _ZTV8S20537C2[];
extern void _ZN8S20537C7D1Ev();
extern void _ZN8S20537C7D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C7__8S20537C2[] = {
  ABISELECT(160,80),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
};
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C88S20537C7__8S20537C2[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C98S20537C88S20537C7__8S20537C2[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C98S20537C88S20537C7__8S20537C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C88S20537C7__8S20537C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C7__8S20537C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZThn160_N8S20537C7D1Ev,_ZThn80_N8S20537C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev)();
extern void ABISELECT(_ZThn160_N8S20537C7D0Ev,_ZThn80_N8S20537C7D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__8S20537C7__8S20537C2[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  ABISELECT(-32,-16),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__8S20537C7__8S20537C2[] = {
  ABISELECT(-80,-36),
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN9S20537C10D1Ev();
extern void _ZN9S20537C10D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__8S20537C2[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&_ZN9S20537C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20537C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C99S20537C10__A1__8S20537C2[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C99S20537C10__A1__8S20537C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__8S20537C2[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C98S20537C89S20537C10__A2__8S20537C2[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C98S20537C89S20537C10__A2__8S20537C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C89S20537C10__A1__8S20537C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__9S20537C10__8S20537C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZThn48_N9S20537C10D1Ev,_ZThn20_N9S20537C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20537C10D0Ev,_ZThn20_N9S20537C10D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C8__9S20537C10__8S20537C2[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20537C10D1Ev,_ZThn20_N9S20537C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20537C10D0Ev,_ZThn20_N9S20537C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
static  VTT_ENTRY vtt_S20537C2[] = {
  {&(_ZTV8S20537C2[6]),  6,125},
  {&(_tg__ZTV8S20537C7__8S20537C2[4]),  4,20},
  {&(_tg__ZTV8S20537C88S20537C7__8S20537C2[3]),  3,12},
  {&(_tg__ZTV8S20537C98S20537C88S20537C7__8S20537C2[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C98S20537C88S20537C7__8S20537C2[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C88S20537C7__8S20537C2[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C7__8S20537C2[7]),  7,12},
  {&(_tg__ZTV9S20537C10__8S20537C7__8S20537C2[18]),  18,32},
  {&(_tg__ZTV8S20537C89S20537C10__A1__8S20537C7__8S20537C2[3]),  3,12},
  {&(_ZTV8S20537C2[52]),  52,125},
  {&(_ZTV8S20537C2[66]),  66,125},
  {&(_ZTV8S20537C2[76]),  76,125},
  {&(_ZTV8S20537C2[18]),  18,125},
  {&(_ZTV8S20537C2[99]),  99,125},
  {&(_ZTV8S20537C2[116]),  116,125},
  {&(_tg__ZTV9S20537C10__8S20537C2[3]),  3,17},
  {&(_tg__ZTV8S20537C99S20537C10__A1__8S20537C2[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C99S20537C10__A1__8S20537C2[7]),  7,12},
  {&(_tg__ZTV8S20537C89S20537C10__A1__8S20537C2[3]),  3,12},
  {&(_tg__ZTV8S20537C98S20537C89S20537C10__A2__8S20537C2[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C98S20537C89S20537C10__A2__8S20537C2[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C89S20537C10__A1__8S20537C2[7]),  7,12},
  {&(_tg__ZTV8S20537C5__9S20537C10__8S20537C2[7]),  7,12},
  {&(_tg__ZTV8S20537C8__9S20537C10__8S20537C2[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20537C2[];
extern  VTBL_ENTRY _ZTV8S20537C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C2[];
static VTBL_ENTRY alt_thunk_names142[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20537C7D0Ev,_ZThn80_N8S20537C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20537C7D1Ev,_ZThn80_N8S20537C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C2D0Ev,_ZTv0_n16_N8S20537C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20537C2D0Ev,_ZThn108_N8S20537C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C2D1Ev,_ZTv0_n16_N8S20537C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20537C2D1Ev,_ZThn108_N8S20537C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20537C2 = {  "S20537C2", // class name
  bases_S20537C2, 13,
  &(vtc_S20537C2[0]), // expected_vtbl_contents
  &(vtt_S20537C2[0]), // expected_vtt_contents
  ABISELECT(304,156), // object size
  NSPAIRA(_ZTI8S20537C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20537C2),125, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20537C2),24, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names142,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20537C11  : virtual S20537C3 , virtual S20537C4 , virtual S20537C2 , S20537C5 , virtual S20537C7 {
  virtual  ~S20537C11(); // _ZN9S20537C11D2Ev
  virtual void  v44(); // _ZN9S20537C113v44Ev
  virtual void  v45(); // _ZN9S20537C113v45Ev
  virtual void  v46(); // _ZN9S20537C113v46Ev
  virtual void  v47(); // _ZN9S20537C113v47Ev
  virtual void  v48(); // _ZN9S20537C113v48Ev
  virtual void  v49(); // _ZN9S20537C113v49Ev
  virtual void  v50(); // _ZN9S20537C113v50Ev
  S20537C11(); // tgen
};
//SIG(-1 S20537C11) C1{ VBC2{ BC3{ v8 v9 v10} v11 v12 v13 v14 v15 v16 Fi[3]} VBC3 VBC4{ VBC2 VBC3 VBC5{ v17 v18 v19 v20 v21 FD} BC6{ vd v22 v23 v24 v25 v26 FL[3]} BC7{ BC8{ BC9{ VBC5 vd v27 v28 v29 v30 v31 FC5} v32 v33} BC5 VBC10{ VBC5 BC9 BC8 v34 v35 v36 v37 v38 v39 v40 Fc[8]} v41 v42 v43 v44 v45 v46 v47 Fi} vd v48 Fp} BC5 VBC7 vd v1 v2 v3 v4 v5 v6 v7}


 S20537C11 ::~S20537C11(){ note_dtor("S20537C11", this);}
void  S20537C11 ::v44(){vfunc_called(this, "_ZN9S20537C113v44Ev");}
void  S20537C11 ::v45(){vfunc_called(this, "_ZN9S20537C113v45Ev");}
void  S20537C11 ::v46(){vfunc_called(this, "_ZN9S20537C113v46Ev");}
void  S20537C11 ::v47(){vfunc_called(this, "_ZN9S20537C113v47Ev");}
void  S20537C11 ::v48(){vfunc_called(this, "_ZN9S20537C113v48Ev");}
void  S20537C11 ::v49(){vfunc_called(this, "_ZN9S20537C113v49Ev");}
void  S20537C11 ::v50(){vfunc_called(this, "_ZN9S20537C113v50Ev");}
S20537C11 ::S20537C11(){ note_ctor("S20537C11", this);} // tgen

static void Test_S20537C11()
{
  extern Class_Descriptor cd_S20537C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,54)];
    init_test(&cd_S20537C11, buf);
    S20537C11 *dp, &lv = *(dp=new (buf) S20537C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,212), "sizeof(S20537C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20537C11)");
    check_base_class_offset(lv, (S20537C4*)(S20537C3*), ABISELECT(32,16), "S20537C11");
    check_base_class_offset(lv, (S20537C3*), ABISELECT(32,16), "S20537C11");
    check_base_class_offset(lv, (S20537C3*)(S20537C2*), ABISELECT(32,16), "S20537C11");
    /*is_ambiguous_... S20537C11::S20537C4 */ AMB_check_base_class_offset(lv, (S20537C4*), ABISELECT(56,32), "S20537C11");
    /*is_ambiguous_... S20537C2::S20537C4 */ AMB_check_base_class_offset(lv, (S20537C4*)(S20537C2*), ABISELECT(56,32), "S20537C11");
    /*is_ambiguous_... S20537C2::S20537C5 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C2*), ABISELECT(192,108), "S20537C11");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C8*)(S20537C7*)(S20537C2*), ABISELECT(192,108), "S20537C11");
    check_base_class_offset(lv, (S20537C5*)(S20537C10*), ABISELECT(192,108), "S20537C11");
    /*is_ambiguous_... S20537C10::S20537C9 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C10*), ABISELECT(192,108), "S20537C11");
    check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C8*)(S20537C10*), ABISELECT(192,108), "S20537C11");
    /*is_ambiguous_... S20537C11::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C8*)(S20537C7*), ABISELECT(192,108), "S20537C11");
    check_base_class_offset(lv, (S20537C6*)(S20537C2*), ABISELECT(64,36), "S20537C11");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C9*)(S20537C8*)(S20537C7*)(S20537C2*), ABISELECT(96,64), "S20537C11");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C8*)(S20537C7*)(S20537C2*), ABISELECT(96,64), "S20537C11");
    /*is_ambiguous_... S20537C7::S20537C5 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C7*)(S20537C2*), ABISELECT(144,84), "S20537C11");
    /*is_ambiguous_... S20537C10::S20537C9 */ AMB_check_base_class_offset(lv, (S20537C9*)(S20537C10*), ABISELECT(224,124), "S20537C11");
    check_base_class_offset(lv, (S20537C9*)(S20537C8*)(S20537C10*), ABISELECT(272,144), "S20537C11");
    check_base_class_offset(lv, (S20537C8*)(S20537C10*), ABISELECT(272,144), "S20537C11");
    check_base_class_offset(lv, (S20537C10*)(S20537C7*)(S20537C2*), ABISELECT(224,124), "S20537C11");
    /*is_ambiguous_... S20537C11::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C10*)(S20537C7*), ABISELECT(224,124), "S20537C11");
    check_base_class_offset(lv, (S20537C7*)(S20537C2*), ABISELECT(96,64), "S20537C11");
    check_base_class_offset(lv, (S20537C2*), ABISELECT(64,36), "S20537C11");
    /*is_ambiguous_... S20537C11::S20537C5 */ AMB_check_base_class_offset(lv, (S20537C5*), 0, "S20537C11");
    /*is_ambiguous_... S20537C11::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C9*)(S20537C8*)(S20537C7*), ABISELECT(336,172), "S20537C11");
    /*is_ambiguous_... S20537C11::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C8*)(S20537C7*), ABISELECT(336,172), "S20537C11");
    /*is_ambiguous_... S20537C11::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C7*), ABISELECT(384,192), "S20537C11");
    /*is_ambiguous_... S20537C11::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C7*), ABISELECT(336,172), "S20537C11");
    test_class_info(&lv, &cd_S20537C11);
    dp->~S20537C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20537C11(Test_S20537C11, "S20537C11", ABISELECT(432,212));

#else // __cplusplus

extern void _ZN9S20537C11C1Ev();
extern void _ZN9S20537C11D2Ev();
Name_Map name_map_S20537C11[] = {
  NSPAIR(_ZN9S20537C11C1Ev),
  NSPAIR(_ZN9S20537C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20537C4;
extern VTBL_ENTRY _ZTI8S20537C4[];
extern  VTBL_ENTRY _ZTV8S20537C4[];
extern Class_Descriptor cd_S20537C3;
extern VTBL_ENTRY _ZTI8S20537C3[];
extern  VTBL_ENTRY _ZTV8S20537C3[];
extern Class_Descriptor cd_S20537C4;
extern VTBL_ENTRY _ZTI8S20537C4[];
extern  VTBL_ENTRY _ZTV8S20537C4[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C6;
extern VTBL_ENTRY _ZTI8S20537C6[];
extern  VTBL_ENTRY _ZTV8S20537C6[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C8;
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C8;
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
extern Class_Descriptor cd_S20537C10;
extern VTBL_ENTRY _ZTI9S20537C10[];
extern  VTBL_ENTRY _ZTV9S20537C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20537C10[];
extern Class_Descriptor cd_S20537C7;
extern VTBL_ENTRY _ZTI8S20537C7[];
extern  VTBL_ENTRY _ZTV8S20537C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C7[];
extern Class_Descriptor cd_S20537C2;
extern VTBL_ENTRY _ZTI8S20537C2[];
extern  VTBL_ENTRY _ZTV8S20537C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C2[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C8;
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C7;
extern VTBL_ENTRY _ZTI8S20537C7[];
extern  VTBL_ENTRY _ZTV8S20537C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C7[];
static Base_Class bases_S20537C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20537C4,    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_S20537C3,    ABISELECT(32,16), //bcp->offset
    22, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20537C4,    ABISELECT(56,32), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20537C5,    ABISELECT(192,108), //bcp->offset
    117, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20537C6,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20537C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20537C8,    ABISELECT(96,64), //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
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20537C5,    ABISELECT(144,84), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20537C9,    ABISELECT(224,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20537C9,    ABISELECT(272,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20537C8,    ABISELECT(272,144), //bcp->offset
    161, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20537C10,    ABISELECT(224,124), //bcp->offset
    129, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20537C7,    ABISELECT(96,64), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20537C2,    ABISELECT(64,36), //bcp->offset
    50, //bcp->virtual_function_table_offset
    32, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20537C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20537C9,    ABISELECT(336,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20537C8,    ABISELECT(336,172), //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
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20537C5,    ABISELECT(384,192), //bcp->offset
    213, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20537C7,    ABISELECT(336,172), //bcp->offset
    173, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20537C11[];
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void _ZN9S20537C11D1Ev();
extern void _ZN9S20537C11D0Ev();
extern void _ZN9S20537C113v44Ev();
extern void _ZN9S20537C113v45Ev();
extern void _ZN9S20537C113v46Ev();
extern void _ZN9S20537C113v47Ev();
extern void _ZN9S20537C113v48Ev();
extern void _ZN9S20537C113v49Ev();
extern void _ZN9S20537C113v50Ev();
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
extern void _ZN8S20537C32v6Ev();
extern void _ZN8S20537C32v7Ev();
extern void _ZN8S20537C32v8Ev();
extern void _ZN8S20537C32v9Ev();
extern void _ZN8S20537C33v10Ev();
extern void _ZN8S20537C33v11Ev();
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
extern void ABISELECT(_ZTv0_n56_N9S20537C11D1Ev,_ZTv0_n28_N9S20537C11D1Ev)();
extern void ABISELECT(_ZThn64_N9S20537C11D1Ev,_ZThn36_N9S20537C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20537C11D0Ev,_ZTv0_n28_N9S20537C11D0Ev)();
extern void ABISELECT(_ZThn64_N9S20537C11D0Ev,_ZThn36_N9S20537C11D0Ev)() __attribute__((weak));
extern void _ZN8S20537C63v17Ev();
extern void _ZN8S20537C63v18Ev();
extern void _ZN8S20537C63v19Ev();
extern void _ZN8S20537C63v20Ev();
extern void _ZN8S20537C63v21Ev();
extern void _ZN8S20537C23v43Ev();
extern void ABISELECT(_ZTvn32_n56_N9S20537C11D1Ev,_ZTvn28_n28_N9S20537C11D1Ev)();
extern void ABISELECT(_ZTvn32_n56_N9S20537C11D0Ev,_ZTvn28_n28_N9S20537C11D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void ABISELECT(_ZTv0_n32_N9S20537C11D1Ev,_ZTv0_n16_N9S20537C11D1Ev)();
extern void ABISELECT(_ZThn224_N9S20537C11D1Ev,_ZThn124_N9S20537C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20537C11D0Ev,_ZTv0_n16_N9S20537C11D0Ev)();
extern void ABISELECT(_ZThn224_N9S20537C11D0Ev,_ZThn124_N9S20537C11D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
extern void ABISELECT(_ZTvn48_n32_N9S20537C11D1Ev,_ZTvn20_n16_N9S20537C11D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N9S20537C11D0Ev,_ZTvn20_n16_N9S20537C11D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void ABISELECT(_ZTv0_n40_N9S20537C11D1Ev,_ZTv0_n20_N9S20537C11D1Ev)();
extern void ABISELECT(_ZThn336_N9S20537C11D1Ev,_ZThn172_N9S20537C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20537C11D0Ev,_ZTv0_n20_N9S20537C11D0Ev)();
extern void ABISELECT(_ZThn336_N9S20537C11D0Ev,_ZThn172_N9S20537C11D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY vtc_S20537C11[] = {
  ABISELECT(336,172),
  ABISELECT(224,124),
  ABISELECT(192,108),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  (VTBL_ENTRY)&_ZN9S20537C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20537C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v44Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v45Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v46Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v47Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v48Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v49Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v50Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v11Ev,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(-8,-4),
  ABISELECT(-32,-20),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20537C11D1Ev,_ZTv0_n28_N9S20537C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20537C11D0Ev,_ZTv0_n28_N9S20537C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20537C23v43Ev,
  ABISELECT(128,60),
  ABISELECT(96,44),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N9S20537C11D1Ev,_ZTvn28_n28_N9S20537C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N9S20537C11D0Ev,_ZTvn28_n28_N9S20537C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-124),
  ABISELECT(-32,-16),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20537C11D1Ev,_ZTv0_n16_N9S20537C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20537C11D0Ev,_ZTv0_n16_N9S20537C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
  ABISELECT(-80,-36),
  ABISELECT(-272,-144),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20537C11D1Ev,_ZTvn20_n16_N9S20537C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20537C11D0Ev,_ZTvn20_n16_N9S20537C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-172),
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  ABISELECT(-336,-172),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20537C11D1Ev,_ZTv0_n20_N9S20537C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20537C11D0Ev,_ZTv0_n20_N9S20537C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
  ABISELECT(-384,-192),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern VTBL_ENTRY _ZTV9S20537C11[];
extern void _ZN8S20537C2D1Ev();
extern void _ZN8S20537C2D0Ev();
extern void _ZN8S20537C63v17Ev();
extern void _ZN8S20537C63v18Ev();
extern void _ZN8S20537C63v19Ev();
extern void _ZN8S20537C63v20Ev();
extern void _ZN8S20537C63v21Ev();
extern void _ZN8S20537C23v43Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C2__9S20537C11[] = {
  ABISELECT(160,88),
  ABISELECT(128,72),
  ABISELECT(-8,-4),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20537C23v43Ev,
};
extern void _ZN8S20537C7D1Ev();
extern void _ZN8S20537C7D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C78S20537C2__9S20537C11[] = {
  ABISELECT(128,60),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
};
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C88S20537C78S20537C2__9S20537C11[] = {
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C98S20537C88S20537C78S20537C2__9S20537C11[] = {
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C98S20537C88S20537C78S20537C2__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C88S20537C78S20537C2__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C78S20537C2__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZThn128_N8S20537C7D1Ev,_ZThn60_N8S20537C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev)();
extern void ABISELECT(_ZThn128_N8S20537C7D0Ev,_ZThn60_N8S20537C7D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__8S20537C78S20537C2__9S20537C11[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-60),
  ABISELECT(-32,-16),
  ABISELECT(-128,-60),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__8S20537C78S20537C2__9S20537C11[] = {
  ABISELECT(-80,-36),
  ABISELECT(-176,-80),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
extern void _ZN8S20537C32v6Ev();
extern void _ZN8S20537C32v7Ev();
extern void _ZN8S20537C32v8Ev();
extern void _ZN8S20537C32v9Ev();
extern void _ZN8S20537C33v10Ev();
extern void _ZN8S20537C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C3__8S20537C2__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v11Ev,
};
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C4__A1__8S20537C2__9S20537C11[] = {
  0,
  0,
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C2__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZThn32_N8S20537C2D1Ev,_ZThn28_N8S20537C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S20537C2D0Ev,_ZThn28_N8S20537C2D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C7__8S20537C2__9S20537C11[] = {
  ABISELECT(128,60),
  ABISELECT(96,44),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20537C2D1Ev,_ZThn28_N8S20537C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20537C2D0Ev,_ZThn28_N8S20537C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20537C2D1Ev,_ZTv0_n16_N8S20537C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S20537C2D1Ev,_ZThn88_N8S20537C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20537C2D0Ev,_ZTv0_n16_N8S20537C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S20537C2D0Ev,_ZThn88_N8S20537C2D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__8S20537C2__9S20537C11[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-88),
  ABISELECT(-32,-16),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C2D1Ev,_ZTv0_n16_N8S20537C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C2D0Ev,_ZTv0_n16_N8S20537C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20537C2D1Ev,_ZTvn20_n16_N8S20537C2D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20537C2D0Ev,_ZTvn20_n16_N8S20537C2D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__8S20537C2__9S20537C11[] = {
  ABISELECT(-80,-36),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C2D1Ev,_ZTvn20_n16_N8S20537C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C2D0Ev,_ZTvn20_n16_N8S20537C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN9S20537C10D1Ev();
extern void _ZN9S20537C10D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__9S20537C11[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&_ZN9S20537C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20537C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C99S20537C10__A1__9S20537C11[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C99S20537C10__A1__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__9S20537C11[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C98S20537C89S20537C10__A2__9S20537C11[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C98S20537C89S20537C10__A2__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C89S20537C10__A1__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__9S20537C10__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZThn48_N9S20537C10D1Ev,_ZThn20_N9S20537C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20537C10D0Ev,_ZThn20_N9S20537C10D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C8__9S20537C10__9S20537C11[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20537C10D1Ev,_ZThn20_N9S20537C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20537C10D0Ev,_ZThn20_N9S20537C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C7D1Ev();
extern void _ZN8S20537C7D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C7__A1__9S20537C11[] = {
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
};
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C88S20537C7__A2__9S20537C11[] = {
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C98S20537C88S20537C7__A3__9S20537C11[] = {
  ABISELECT(-144,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C98S20537C88S20537C7__A3__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C88S20537C7__A2__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C7__A1__9S20537C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__8S20537C7__A1__9S20537C11[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,48),
  ABISELECT(-32,-16),
  ABISELECT(112,48),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__8S20537C7__A1__9S20537C11[] = {
  ABISELECT(-80,-36),
  ABISELECT(64,28),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
static  VTT_ENTRY vtt_S20537C11[] = {
  {&(_ZTV9S20537C11[8]),  8,220},
  {&(_ZTV9S20537C11[33]),  33,220},
  {&(_ZTV9S20537C11[47]),  47,220},
  {&(_ZTV9S20537C11[82]),  82,220},
  {&(_ZTV9S20537C11[124]),  124,220},
  {&(_ZTV9S20537C11[94]),  94,220},
  {&(_ZTV9S20537C11[112]),  112,220},
  {&(_ZTV9S20537C11[147]),  147,220},
  {&(_ZTV9S20537C11[164]),  164,220},
  {&(_ZTV9S20537C11[197]),  197,220},
  {&(_ZTV9S20537C11[215]),  215,220},
  {&(_tg__ZTV8S20537C2__9S20537C11[6]),  6,14},
  {&(_tg__ZTV8S20537C78S20537C2__9S20537C11[4]),  4,20},
  {&(_tg__ZTV8S20537C88S20537C78S20537C2__9S20537C11[3]),  3,12},
  {&(_tg__ZTV8S20537C98S20537C88S20537C78S20537C2__9S20537C11[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C98S20537C88S20537C78S20537C2__9S20537C11[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C88S20537C78S20537C2__9S20537C11[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C78S20537C2__9S20537C11[7]),  7,12},
  {&(_tg__ZTV9S20537C10__8S20537C78S20537C2__9S20537C11[18]),  18,32},
  {&(_tg__ZTV8S20537C89S20537C10__A1__8S20537C78S20537C2__9S20537C11[3]),  3,12},
  {&(_tg__ZTV8S20537C3__8S20537C2__9S20537C11[11]),  11,20},
  {&(_tg__ZTV8S20537C4__A1__8S20537C2__9S20537C11[5]),  5,8},
  {&(_tg__ZTV8S20537C5__8S20537C2__9S20537C11[7]),  7,12},
  {&(_tg__ZTV8S20537C7__8S20537C2__9S20537C11[4]),  4,20},
  {&(_tg__ZTV9S20537C10__8S20537C2__9S20537C11[18]),  18,32},
  {&(_tg__ZTV8S20537C89S20537C10__A1__8S20537C2__9S20537C11[3]),  3,12},
  {&(_tg__ZTV9S20537C10__9S20537C11[3]),  3,17},
  {&(_tg__ZTV8S20537C99S20537C10__A1__9S20537C11[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C99S20537C10__A1__9S20537C11[7]),  7,12},
  {&(_tg__ZTV8S20537C89S20537C10__A1__9S20537C11[3]),  3,12},
  {&(_tg__ZTV8S20537C98S20537C89S20537C10__A2__9S20537C11[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C98S20537C89S20537C10__A2__9S20537C11[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C89S20537C10__A1__9S20537C11[7]),  7,12},
  {&(_tg__ZTV8S20537C5__9S20537C10__9S20537C11[7]),  7,12},
  {&(_tg__ZTV8S20537C8__9S20537C10__9S20537C11[3]),  3,12},
  {&(_tg__ZTV8S20537C7__A1__9S20537C11[4]),  4,20},
  {&(_tg__ZTV8S20537C88S20537C7__A2__9S20537C11[3]),  3,12},
  {&(_tg__ZTV8S20537C98S20537C88S20537C7__A3__9S20537C11[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C98S20537C88S20537C7__A3__9S20537C11[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C88S20537C7__A2__9S20537C11[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C7__A1__9S20537C11[7]),  7,12},
  {&(_tg__ZTV9S20537C10__8S20537C7__A1__9S20537C11[18]),  18,32},
  {&(_tg__ZTV8S20537C89S20537C10__A1__8S20537C7__A1__9S20537C11[3]),  3,12},
};
extern VTBL_ENTRY _ZTI9S20537C11[];
extern  VTBL_ENTRY _ZTV9S20537C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20537C11[];
static VTBL_ENTRY alt_thunk_names143[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C2D0Ev,_ZTv0_n16_N8S20537C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20537C2D0Ev,_ZThn88_N8S20537C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C2D1Ev,_ZTv0_n16_N8S20537C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20537C2D1Ev,_ZThn88_N8S20537C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20537C7D0Ev,_ZThn60_N8S20537C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20537C7D1Ev,_ZThn60_N8S20537C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20537C11D0Ev,_ZTv0_n20_N9S20537C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20537C11D0Ev,_ZThn172_N9S20537C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20537C11D1Ev,_ZTv0_n20_N9S20537C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20537C11D1Ev,_ZThn172_N9S20537C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20537C11D0Ev,_ZTv0_n16_N9S20537C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20537C11D0Ev,_ZThn124_N9S20537C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20537C11D1Ev,_ZTv0_n16_N9S20537C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20537C11D1Ev,_ZThn124_N9S20537C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20537C11D0Ev,_ZTv0_n28_N9S20537C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20537C11D0Ev,_ZThn36_N9S20537C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20537C11D1Ev,_ZTv0_n28_N9S20537C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20537C11D1Ev,_ZThn36_N9S20537C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20537C11 = {  "S20537C11", // class name
  bases_S20537C11, 19,
  &(vtc_S20537C11[0]), // expected_vtbl_contents
  &(vtt_S20537C11[0]), // expected_vtt_contents
  ABISELECT(432,212), // object size
  NSPAIRA(_ZTI9S20537C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20537C11),220, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20537C11),43, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names143,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20537C12  {
  virtual void  v51(); // _ZN9S20537C123v51Ev
  ~S20537C12(); // tgen
  S20537C12(); // tgen
};
//SIG(-1 S20537C12) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN9S20537C12C1Ev();
extern void _ZN9S20537C12D1Ev();
Name_Map name_map_S20537C12[] = {
  NSPAIR(_ZN9S20537C12C1Ev),
  NSPAIR(_ZN9S20537C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20537C12[];
extern void _ZN9S20537C123v51Ev();
static  VTBL_ENTRY vtc_S20537C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20537C12[0]),
  (VTBL_ENTRY)&_ZN9S20537C123v51Ev,
};
extern VTBL_ENTRY _ZTI9S20537C12[];
extern  VTBL_ENTRY _ZTV9S20537C12[];
Class_Descriptor cd_S20537C12 = {  "S20537C12", // class name
  0,0,//no base classes
  &(vtc_S20537C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20537C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20537C12),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  S20537C1  : virtual S20537C2 , virtual S20537C11 , S20537C5 , S20537C4 , virtual S20537C12 {
  short s20537c1f0;
  int s20537c1f1;
  virtual void  v1(); // _ZN8S20537C12v1Ev
  virtual void  v2(); // _ZN8S20537C12v2Ev
  ~S20537C1(); // tgen
  S20537C1(); // tgen
};
//SIG(1 S20537C1) C1{ VBC2{ VBC3{ BC4{ v3 v4 v5} v6 v7 v8 v9 v10 v11 Fi[3]} VBC4 VBC5{ v12 v13 v14 v15 v16 FD} BC6{ vd v17 v18 v19 v20 v21 FL[3]} BC7{ BC8{ BC9{ VBC5 vd v22 v23 v24 v25 v26 FC5} v27 v28} BC5 VBC10{ VBC5 BC9 BC8 v29 v30 v31 v32 v33 v34 v35 Fc[8]} v36 v37 v38 v39 v40 v41 v42 Fi} vd v43 Fp} VBC11{ VBC3 VBC4 VBC2 BC5 VBC7 vd v44 v45 v46 v47 v48 v49 v50} BC5 BC4 VBC12{ v51} v1 v2 Fs Fi}


void  S20537C1 ::v1(){vfunc_called(this, "_ZN8S20537C12v1Ev");}
void  S20537C1 ::v2(){vfunc_called(this, "_ZN8S20537C12v2Ev");}
S20537C1 ::~S20537C1(){ note_dtor("S20537C1", this);} // tgen
S20537C1 ::S20537C1(){ note_ctor("S20537C1", this);} // tgen

static void Test_S20537C1()
{
  extern Class_Descriptor cd_S20537C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,62)];
    init_test(&cd_S20537C1, buf);
    S20537C1 *dp, &lv = *(dp=new (buf) S20537C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,244), "sizeof(S20537C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20537C1)");
    check_base_class_offset(lv, (S20537C4*)(S20537C3*), ABISELECT(176,100), "S20537C1");
    check_base_class_offset(lv, (S20537C3*)(S20537C2*), ABISELECT(176,100), "S20537C1");
    check_base_class_offset(lv, (S20537C3*)(S20537C11*), ABISELECT(176,100), "S20537C1");
    /*is_ambiguous_... S20537C2::S20537C4 */ AMB_check_base_class_offset(lv, (S20537C4*)(S20537C2*), ABISELECT(200,116), "S20537C1");
    /*is_ambiguous_... S20537C11::S20537C4 */ AMB_check_base_class_offset(lv, (S20537C4*)(S20537C11*), ABISELECT(200,116), "S20537C1");
    /*is_ambiguous_... S20537C2::S20537C5 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C2*), ABISELECT(208,120), "S20537C1");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C8*)(S20537C7*)(S20537C2*), ABISELECT(208,120), "S20537C1");
    check_base_class_offset(lv, (S20537C5*)(S20537C10*), ABISELECT(208,120), "S20537C1");
    /*is_ambiguous_... S20537C10::S20537C9 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C10*), ABISELECT(208,120), "S20537C1");
    check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C8*)(S20537C10*), ABISELECT(208,120), "S20537C1");
    /*is_ambiguous_... S20537C1::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C9*)(S20537C8*)(S20537C7*), ABISELECT(208,120), "S20537C1");
    check_base_class_offset(lv, (S20537C6*)(S20537C2*), ABISELECT(48,28), "S20537C1");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C9*)(S20537C8*)(S20537C7*)(S20537C2*), ABISELECT(80,56), "S20537C1");
    /*is_ambiguous_... S20537C7::S20537C8 */ AMB_check_base_class_offset(lv, (S20537C8*)(S20537C7*)(S20537C2*), ABISELECT(80,56), "S20537C1");
    /*is_ambiguous_... S20537C7::S20537C5 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C7*)(S20537C2*), ABISELECT(128,76), "S20537C1");
    /*is_ambiguous_... S20537C10::S20537C9 */ AMB_check_base_class_offset(lv, (S20537C9*)(S20537C10*), ABISELECT(240,136), "S20537C1");
    check_base_class_offset(lv, (S20537C9*)(S20537C8*)(S20537C10*), ABISELECT(288,156), "S20537C1");
    check_base_class_offset(lv, (S20537C8*)(S20537C10*), ABISELECT(288,156), "S20537C1");
    check_base_class_offset(lv, (S20537C10*)(S20537C7*)(S20537C2*), ABISELECT(240,136), "S20537C1");
    /*is_ambiguous_... S20537C1::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C10*)(S20537C7*), ABISELECT(240,136), "S20537C1");
    check_base_class_offset(lv, (S20537C7*)(S20537C2*), ABISELECT(80,56), "S20537C1");
    check_base_class_offset(lv, (S20537C2*), ABISELECT(48,28), "S20537C1");
    check_base_class_offset(lv, (S20537C2*)(S20537C11*), ABISELECT(48,28), "S20537C1");
    /*is_ambiguous_... S20537C11::S20537C5 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C11*), ABISELECT(352,184), "S20537C1");
    /*is_ambiguous_... S20537C1::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C9*)(S20537C8*)(S20537C7*), ABISELECT(384,200), "S20537C1");
    /*is_ambiguous_... S20537C1::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C8*)(S20537C7*), ABISELECT(384,200), "S20537C1");
    /*is_ambiguous_... S20537C1::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C5*)(S20537C7*), ABISELECT(432,220), "S20537C1");
    /*is_ambiguous_... S20537C11::S20537C7 */ AMB_check_base_class_offset(lv, (S20537C7*)(S20537C11*), ABISELECT(384,200), "S20537C1");
    check_base_class_offset(lv, (S20537C11*), ABISELECT(352,184), "S20537C1");
    /*is_ambiguous_... S20537C1::S20537C5 */ AMB_check_base_class_offset(lv, (S20537C5*), 0, "S20537C1");
    /*is_ambiguous_... S20537C1::S20537C4 */ AMB_check_base_class_offset(lv, (S20537C4*), ABISELECT(32,16), "S20537C1");
    check_base_class_offset(lv, (S20537C12*), ABISELECT(472,240), "S20537C1");
    check_field_offset(lv, s20537c1f0, ABISELECT(40,20), "S20537C1.s20537c1f0");
    check_field_offset(lv, s20537c1f1, ABISELECT(44,24), "S20537C1.s20537c1f1");
    test_class_info(&lv, &cd_S20537C1);
    dp->~S20537C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20537C1(Test_S20537C1, "S20537C1", ABISELECT(480,244));

#else // __cplusplus

extern void _ZN8S20537C1C1Ev();
extern void _ZN8S20537C1D1Ev();
Name_Map name_map_S20537C1[] = {
  NSPAIR(_ZN8S20537C1C1Ev),
  NSPAIR(_ZN8S20537C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20537C4;
extern VTBL_ENTRY _ZTI8S20537C4[];
extern  VTBL_ENTRY _ZTV8S20537C4[];
extern Class_Descriptor cd_S20537C3;
extern VTBL_ENTRY _ZTI8S20537C3[];
extern  VTBL_ENTRY _ZTV8S20537C3[];
extern Class_Descriptor cd_S20537C4;
extern VTBL_ENTRY _ZTI8S20537C4[];
extern  VTBL_ENTRY _ZTV8S20537C4[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C6;
extern VTBL_ENTRY _ZTI8S20537C6[];
extern  VTBL_ENTRY _ZTV8S20537C6[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C8;
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C8;
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
extern Class_Descriptor cd_S20537C10;
extern VTBL_ENTRY _ZTI9S20537C10[];
extern  VTBL_ENTRY _ZTV9S20537C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20537C10[];
extern Class_Descriptor cd_S20537C7;
extern VTBL_ENTRY _ZTI8S20537C7[];
extern  VTBL_ENTRY _ZTV8S20537C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C7[];
extern Class_Descriptor cd_S20537C2;
extern VTBL_ENTRY _ZTI8S20537C2[];
extern  VTBL_ENTRY _ZTV8S20537C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C2[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C9;
extern VTBL_ENTRY _ZTI8S20537C9[];
extern  VTBL_ENTRY _ZTV8S20537C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C9[];
extern Class_Descriptor cd_S20537C8;
extern VTBL_ENTRY _ZTI8S20537C8[];
extern  VTBL_ENTRY _ZTV8S20537C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C8[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C7;
extern VTBL_ENTRY _ZTI8S20537C7[];
extern  VTBL_ENTRY _ZTV8S20537C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C7[];
extern Class_Descriptor cd_S20537C11;
extern VTBL_ENTRY _ZTI9S20537C11[];
extern  VTBL_ENTRY _ZTV9S20537C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20537C11[];
extern Class_Descriptor cd_S20537C5;
extern VTBL_ENTRY _ZTI8S20537C5[];
extern  VTBL_ENTRY _ZTV8S20537C5[];
extern Class_Descriptor cd_S20537C4;
extern VTBL_ENTRY _ZTI8S20537C4[];
extern  VTBL_ENTRY _ZTV8S20537C4[];
extern Class_Descriptor cd_S20537C12;
extern VTBL_ENTRY _ZTI9S20537C12[];
extern  VTBL_ENTRY _ZTV9S20537C12[];
static Base_Class bases_S20537C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20537C4,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20537C3,    ABISELECT(176,100), //bcp->offset
    91, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20537C4,    ABISELECT(200,116), //bcp->offset
    111, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20537C5,    ABISELECT(208,120), //bcp->offset
    119, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20537C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20537C9,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20537C8,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20537C5,    ABISELECT(128,76), //bcp->offset
    84, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20537C9,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20537C9,    ABISELECT(288,156), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20537C8,    ABISELECT(288,156), //bcp->offset
    163, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20537C10,    ABISELECT(240,136), //bcp->offset
    131, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20537C7,    ABISELECT(80,56), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20537C2,    ABISELECT(48,28), //bcp->offset
    24, //bcp->virtual_function_table_offset
    32, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20537C5,    ABISELECT(352,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
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20537C9,    ABISELECT(384,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20537C8,    ABISELECT(384,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20537C5,    ABISELECT(432,220), //bcp->offset
    250, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20537C7,    ABISELECT(384,200), //bcp->offset
    210, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20537C11,    ABISELECT(352,184), //bcp->offset
    175, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20537C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20537C4,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20537C12,    ABISELECT(472,240), //bcp->offset
    257, //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
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20537C1[];
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void _ZN8S20537C12v1Ev();
extern void _ZN8S20537C12v2Ev();
extern void _ZN8S20537C1D1Ev();
extern void _ZN8S20537C1D0Ev();
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
extern void ABISELECT(_ZTv0_n56_N8S20537C1D1Ev,_ZTv0_n28_N8S20537C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S20537C1D1Ev,_ZThn28_N8S20537C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20537C1D0Ev,_ZTv0_n28_N8S20537C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S20537C1D0Ev,_ZThn28_N8S20537C1D0Ev)() __attribute__((weak));
extern void _ZN8S20537C63v17Ev();
extern void _ZN8S20537C63v18Ev();
extern void _ZN8S20537C63v19Ev();
extern void _ZN8S20537C63v20Ev();
extern void _ZN8S20537C63v21Ev();
extern void _ZN8S20537C23v43Ev();
extern void ABISELECT(_ZTvn32_n56_N8S20537C1D1Ev,_ZTvn28_n28_N8S20537C1D1Ev)();
extern void ABISELECT(_ZTvn32_n56_N8S20537C1D0Ev,_ZTvn28_n28_N8S20537C1D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
extern void _ZN8S20537C32v6Ev();
extern void _ZN8S20537C32v7Ev();
extern void _ZN8S20537C32v8Ev();
extern void _ZN8S20537C32v9Ev();
extern void _ZN8S20537C33v10Ev();
extern void _ZN8S20537C33v11Ev();
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void ABISELECT(_ZTv0_n32_N8S20537C1D1Ev,_ZTv0_n16_N8S20537C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S20537C1D1Ev,_ZThn136_N8S20537C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20537C1D0Ev,_ZTv0_n16_N8S20537C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S20537C1D0Ev,_ZThn136_N8S20537C1D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20537C1D1Ev,_ZTvn20_n16_N8S20537C1D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20537C1D0Ev,_ZTvn20_n16_N8S20537C1D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void ABISELECT(_ZTv0_n112_N8S20537C1D1Ev,_ZTv0_n56_N8S20537C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S20537C1D1Ev,_ZThn184_N8S20537C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S20537C1D0Ev,_ZTv0_n56_N8S20537C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S20537C1D0Ev,_ZThn184_N8S20537C1D0Ev)() __attribute__((weak));
extern void _ZN9S20537C113v44Ev();
extern void _ZN9S20537C113v45Ev();
extern void _ZN9S20537C113v46Ev();
extern void _ZN9S20537C113v47Ev();
extern void _ZN9S20537C113v48Ev();
extern void _ZN9S20537C113v49Ev();
extern void _ZN9S20537C113v50Ev();
extern void ABISELECT(_ZTv0_n40_N8S20537C1D1Ev,_ZTv0_n20_N8S20537C1D1Ev)();
extern void ABISELECT(_ZThn384_N8S20537C1D1Ev,_ZThn200_N8S20537C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20537C1D0Ev,_ZTv0_n20_N8S20537C1D0Ev)();
extern void ABISELECT(_ZThn384_N8S20537C1D0Ev,_ZThn200_N8S20537C1D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void _ZN9S20537C123v51Ev();
static  VTBL_ENTRY vtc_S20537C1[] = {
  ABISELECT(472,240),
  ABISELECT(384,200),
  ABISELECT(352,184),
  ABISELECT(240,136),
  ABISELECT(208,120),
  ABISELECT(200,116),
  ABISELECT(176,100),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  (VTBL_ENTRY)&_ZN8S20537C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20537C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20537C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C1D0Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  ABISELECT(160,92),
  ABISELECT(152,88),
  ABISELECT(128,72),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20537C1D1Ev,_ZTv0_n28_N8S20537C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20537C1D0Ev,_ZTv0_n28_N8S20537C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20537C23v43Ev,
  ABISELECT(160,80),
  ABISELECT(128,64),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20537C1D1Ev,_ZTvn28_n28_N8S20537C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20537C1D0Ev,_ZTvn28_n28_N8S20537C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v11Ev,
  0,
  0,
  0,
  ABISELECT(-200,-116),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-32,-16),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C1D1Ev,_ZTv0_n16_N8S20537C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C1D0Ev,_ZTv0_n16_N8S20537C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
  ABISELECT(-80,-36),
  ABISELECT(-288,-156),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C1D1Ev,_ZTvn20_n16_N8S20537C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C1D0Ev,_ZTvn20_n16_N8S20537C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-184),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  ABISELECT(-304,-156),
  ABISELECT(-152,-68),
  ABISELECT(-176,-84),
  ABISELECT(-352,-184),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20537C1D1Ev,_ZTv0_n56_N8S20537C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20537C1D0Ev,_ZTv0_n56_N8S20537C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20537C113v44Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v45Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v46Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v47Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v48Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v49Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v50Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-200),
  ABISELECT(-144,-64),
  ABISELECT(-176,-80),
  ABISELECT(-384,-200),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20537C1D1Ev,_ZTv0_n20_N8S20537C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20537C1D0Ev,_ZTv0_n20_N8S20537C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
  ABISELECT(-432,-220),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  0,
  ABISELECT(-472,-240),
  (VTBL_ENTRY)&(_ZTI8S20537C1[0]),
  (VTBL_ENTRY)&_ZN9S20537C123v51Ev,
};
extern VTBL_ENTRY _ZTV8S20537C1[];
extern void _ZN8S20537C2D1Ev();
extern void _ZN8S20537C2D0Ev();
extern void _ZN8S20537C63v17Ev();
extern void _ZN8S20537C63v18Ev();
extern void _ZN8S20537C63v19Ev();
extern void _ZN8S20537C63v20Ev();
extern void _ZN8S20537C63v21Ev();
extern void _ZN8S20537C23v43Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C2__8S20537C1[] = {
  ABISELECT(192,108),
  ABISELECT(160,92),
  ABISELECT(152,88),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20537C23v43Ev,
};
extern void _ZN8S20537C7D1Ev();
extern void _ZN8S20537C7D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C78S20537C2__8S20537C1[] = {
  ABISELECT(160,80),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
};
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C88S20537C78S20537C2__8S20537C1[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C98S20537C88S20537C78S20537C2__8S20537C1[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C98S20537C88S20537C78S20537C2__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C88S20537C78S20537C2__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C78S20537C2__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZThn160_N8S20537C7D1Ev,_ZThn80_N8S20537C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev)();
extern void ABISELECT(_ZThn160_N8S20537C7D0Ev,_ZThn80_N8S20537C7D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__8S20537C78S20537C2__8S20537C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  ABISELECT(-32,-16),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__8S20537C78S20537C2__8S20537C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
extern void _ZN8S20537C32v6Ev();
extern void _ZN8S20537C32v7Ev();
extern void _ZN8S20537C32v8Ev();
extern void _ZN8S20537C32v9Ev();
extern void _ZN8S20537C33v10Ev();
extern void _ZN8S20537C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C3__8S20537C2__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v11Ev,
};
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C4__A1__8S20537C2__8S20537C1[] = {
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C2__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZThn32_N8S20537C2D1Ev,_ZThn28_N8S20537C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S20537C2D0Ev,_ZThn28_N8S20537C2D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C7__8S20537C2__8S20537C1[] = {
  ABISELECT(160,80),
  ABISELECT(128,64),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20537C2D1Ev,_ZThn28_N8S20537C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20537C2D0Ev,_ZThn28_N8S20537C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20537C2D1Ev,_ZTv0_n16_N8S20537C2D1Ev)();
extern void ABISELECT(_ZThn192_N8S20537C2D1Ev,_ZThn108_N8S20537C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20537C2D0Ev,_ZTv0_n16_N8S20537C2D0Ev)();
extern void ABISELECT(_ZThn192_N8S20537C2D0Ev,_ZThn108_N8S20537C2D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__8S20537C2__8S20537C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C2D1Ev,_ZTv0_n16_N8S20537C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C2D0Ev,_ZTv0_n16_N8S20537C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20537C2D1Ev,_ZTvn20_n16_N8S20537C2D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20537C2D0Ev,_ZTvn20_n16_N8S20537C2D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__8S20537C2__8S20537C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI8S20537C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C2D1Ev,_ZTvn20_n16_N8S20537C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C2D0Ev,_ZTvn20_n16_N8S20537C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN9S20537C10D1Ev();
extern void _ZN9S20537C10D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__8S20537C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&_ZN9S20537C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20537C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C99S20537C10__A1__8S20537C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C99S20537C10__A1__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__8S20537C1[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C98S20537C89S20537C10__A2__8S20537C1[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C98S20537C89S20537C10__A2__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C89S20537C10__A1__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__9S20537C10__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZThn48_N9S20537C10D1Ev,_ZThn20_N9S20537C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20537C10D0Ev,_ZThn20_N9S20537C10D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C8__9S20537C10__8S20537C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20537C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20537C10D1Ev,_ZThn20_N9S20537C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20537C10D0Ev,_ZThn20_N9S20537C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
extern void _ZN9S20537C11D1Ev();
extern void _ZN9S20537C11D0Ev();
extern void _ZN9S20537C113v44Ev();
extern void _ZN9S20537C113v45Ev();
extern void _ZN9S20537C113v46Ev();
extern void _ZN9S20537C113v47Ev();
extern void _ZN9S20537C113v48Ev();
extern void _ZN9S20537C113v49Ev();
extern void _ZN9S20537C113v50Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C11__8S20537C1[] = {
  ABISELECT(32,16),
  ABISELECT(-112,-48),
  ABISELECT(-144,-64),
  ABISELECT(-304,-156),
  ABISELECT(-152,-68),
  ABISELECT(-176,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
  (VTBL_ENTRY)&_ZN9S20537C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20537C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v44Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v45Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v46Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v47Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v48Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v49Ev,
  (VTBL_ENTRY)&_ZN9S20537C113v50Ev,
};
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
extern void _ZN8S20537C32v6Ev();
extern void _ZN8S20537C32v7Ev();
extern void _ZN8S20537C32v8Ev();
extern void _ZN8S20537C32v9Ev();
extern void _ZN8S20537C33v10Ev();
extern void _ZN8S20537C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C3__9S20537C11__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,84),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20537C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20537C33v11Ev,
};
extern void _ZN8S20537C42v3Ev();
extern void _ZN8S20537C42v4Ev();
extern void _ZN8S20537C42v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C4__A1__9S20537C11__8S20537C1[] = {
  0,
  0,
  0,
  ABISELECT(152,68),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20537C42v5Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S20537C11D1Ev,_ZTv0_n28_N9S20537C11D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20537C11D0Ev,_ZTv0_n28_N9S20537C11D0Ev)();
extern void _ZN8S20537C63v17Ev();
extern void _ZN8S20537C63v18Ev();
extern void _ZN8S20537C63v19Ev();
extern void _ZN8S20537C63v20Ev();
extern void _ZN8S20537C63v21Ev();
extern void _ZN8S20537C23v43Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C2__9S20537C11__8S20537C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(304,156),
  ABISELECT(192,108),
  ABISELECT(160,92),
  ABISELECT(152,88),
  ABISELECT(128,72),
  ABISELECT(304,156),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20537C11D1Ev,_ZTv0_n28_N9S20537C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20537C11D0Ev,_ZTv0_n28_N9S20537C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20537C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20537C23v43Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__9S20537C11__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZTvn32_n56_N9S20537C11D1Ev,_ZTvn28_n28_N9S20537C11D1Ev)();
extern void ABISELECT(_ZTvn32_n56_N9S20537C11D0Ev,_ZTvn28_n28_N9S20537C11D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C78S20537C2__9S20537C11__8S20537C1[] = {
  ABISELECT(160,80),
  ABISELECT(128,64),
  ABISELECT(272,128),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N9S20537C11D1Ev,_ZTvn28_n28_N9S20537C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N9S20537C11D0Ev,_ZTvn28_n28_N9S20537C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C58S20537C78S20537C2__A1__9S20537C11__8S20537C1[] = {
  ABISELECT(224,108),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20537C11D1Ev,_ZTv0_n16_N9S20537C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20537C11D0Ev,_ZTv0_n16_N9S20537C11D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__9S20537C11__8S20537C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,48),
  ABISELECT(-32,-16),
  ABISELECT(112,48),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20537C11D1Ev,_ZTv0_n16_N9S20537C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20537C11D0Ev,_ZTv0_n16_N9S20537C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void ABISELECT(_ZTvn48_n32_N9S20537C11D1Ev,_ZTvn20_n16_N9S20537C11D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N9S20537C11D0Ev,_ZTvn20_n16_N9S20537C11D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__9S20537C11__8S20537C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(64,28),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20537C11D1Ev,_ZTvn20_n16_N9S20537C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N9S20537C11D0Ev,_ZTvn20_n16_N9S20537C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S20537C11D1Ev,_ZTv0_n20_N9S20537C11D1Ev)();
extern void ABISELECT(_ZThn32_N9S20537C11D1Ev,_ZThn16_N9S20537C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20537C11D0Ev,_ZTv0_n20_N9S20537C11D0Ev)();
extern void ABISELECT(_ZThn32_N9S20537C11D0Ev,_ZThn16_N9S20537C11D0Ev)() __attribute__((weak));
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C7__A1__9S20537C11__8S20537C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  ABISELECT(-144,-64),
  ABISELECT(-176,-80),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20537C11D1Ev,_ZTv0_n20_N9S20537C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20537C11D0Ev,_ZTv0_n20_N9S20537C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C58S20537C7__A3__9S20537C11__8S20537C1[] = {
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI9S20537C11[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C7D1Ev();
extern void _ZN8S20537C7D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
extern void _ZN8S20537C73v36Ev();
extern void _ZN8S20537C73v37Ev();
extern void _ZN8S20537C73v38Ev();
extern void _ZN8S20537C73v39Ev();
extern void _ZN8S20537C73v40Ev();
extern void _ZN8S20537C73v41Ev();
extern void _ZN8S20537C73v42Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C7__A1__8S20537C1[] = {
  ABISELECT(-144,-64),
  ABISELECT(-176,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v36Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v37Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v38Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v39Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v40Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v41Ev,
  (VTBL_ENTRY)&_ZN8S20537C73v42Ev,
};
extern void _ZN8S20537C8D1Ev();
extern void _ZN8S20537C8D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C88S20537C7__A2__8S20537C1[] = {
  ABISELECT(-176,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
extern void _ZN8S20537C9D1Ev();
extern void _ZN8S20537C9D0Ev();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C98S20537C88S20537C7__A3__8S20537C1[] = {
  ABISELECT(-176,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20537C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C98S20537C88S20537C7__A3__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,80),
  (VTBL_ENTRY)&(_ZTI8S20537C9[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C88S20537C7__A2__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,80),
  (VTBL_ENTRY)&(_ZTI8S20537C8[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void _ZN8S20537C53v12Ev();
extern void _ZN8S20537C53v13Ev();
extern void _ZN8S20537C53v14Ev();
extern void _ZN8S20537C53v15Ev();
extern void _ZN8S20537C53v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C5__8S20537C7__A1__8S20537C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,80),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&_ZN8S20537C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20537C53v16Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN9S20537C103v29Ev();
extern void _ZN9S20537C103v30Ev();
extern void _ZN9S20537C103v31Ev();
extern void _ZN9S20537C103v32Ev();
extern void _ZN9S20537C103v33Ev();
extern void _ZN9S20537C103v34Ev();
extern void _ZN9S20537C103v35Ev();
static  VTBL_ENTRY _tg__ZTV9S20537C10__8S20537C7__A1__8S20537C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,64),
  ABISELECT(-32,-16),
  ABISELECT(144,64),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v33Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v34Ev,
  (VTBL_ENTRY)&_ZN9S20537C103v35Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev)();
extern void _ZN8S20537C93v22Ev();
extern void _ZN8S20537C93v23Ev();
extern void _ZN8S20537C93v24Ev();
extern void _ZN8S20537C93v25Ev();
extern void _ZN8S20537C93v26Ev();
extern void _ZN8S20537C83v27Ev();
extern void _ZN8S20537C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S20537C89S20537C10__A1__8S20537C7__A1__8S20537C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(96,44),
  (VTBL_ENTRY)&(_ZTI8S20537C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D1Ev,_ZTvn20_n16_N8S20537C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20537C7D0Ev,_ZTvn20_n16_N8S20537C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20537C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v23Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v24Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20537C93v26Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v27Ev,
  (VTBL_ENTRY)&_ZN8S20537C83v28Ev,
};
static  VTT_ENTRY vtt_S20537C1[] = {
  {&(_ZTV8S20537C1[10]),  10,261},
  {&(_ZTV8S20537C1[56]),  56,261},
  {&(_ZTV8S20537C1[102]),  102,261},
  {&(_ZTV8S20537C1[116]),  116,261},
  {&(_ZTV8S20537C1[126]),  126,261},
  {&(_ZTV8S20537C1[68]),  68,261},
  {&(_ZTV8S20537C1[86]),  86,261},
  {&(_ZTV8S20537C1[149]),  149,261},
  {&(_ZTV8S20537C1[166]),  166,261},
  {&(_ZTV8S20537C1[196]),  196,261},
  {&(_ZTV8S20537C1[234]),  234,261},
  {&(_ZTV8S20537C1[252]),  252,261},
  {&(_ZTV8S20537C1[260]),  260,261},
  {&(_tg__ZTV8S20537C2__8S20537C1[6]),  6,14},
  {&(_tg__ZTV8S20537C78S20537C2__8S20537C1[4]),  4,20},
  {&(_tg__ZTV8S20537C88S20537C78S20537C2__8S20537C1[3]),  3,12},
  {&(_tg__ZTV8S20537C98S20537C88S20537C78S20537C2__8S20537C1[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C98S20537C88S20537C78S20537C2__8S20537C1[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C88S20537C78S20537C2__8S20537C1[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C78S20537C2__8S20537C1[7]),  7,12},
  {&(_tg__ZTV9S20537C10__8S20537C78S20537C2__8S20537C1[18]),  18,32},
  {&(_tg__ZTV8S20537C89S20537C10__A1__8S20537C78S20537C2__8S20537C1[3]),  3,12},
  {&(_tg__ZTV8S20537C3__8S20537C2__8S20537C1[11]),  11,20},
  {&(_tg__ZTV8S20537C4__A1__8S20537C2__8S20537C1[5]),  5,8},
  {&(_tg__ZTV8S20537C5__8S20537C2__8S20537C1[7]),  7,12},
  {&(_tg__ZTV8S20537C7__8S20537C2__8S20537C1[4]),  4,20},
  {&(_tg__ZTV9S20537C10__8S20537C2__8S20537C1[18]),  18,32},
  {&(_tg__ZTV8S20537C89S20537C10__A1__8S20537C2__8S20537C1[3]),  3,12},
  {&(_tg__ZTV9S20537C10__8S20537C1[3]),  3,17},
  {&(_tg__ZTV8S20537C99S20537C10__A1__8S20537C1[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C99S20537C10__A1__8S20537C1[7]),  7,12},
  {&(_tg__ZTV8S20537C89S20537C10__A1__8S20537C1[3]),  3,12},
  {&(_tg__ZTV8S20537C98S20537C89S20537C10__A2__8S20537C1[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C98S20537C89S20537C10__A2__8S20537C1[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C89S20537C10__A1__8S20537C1[7]),  7,12},
  {&(_tg__ZTV8S20537C5__9S20537C10__8S20537C1[7]),  7,12},
  {&(_tg__ZTV8S20537C8__9S20537C10__8S20537C1[3]),  3,12},
  {&(_tg__ZTV9S20537C11__8S20537C1[8]),  8,22},
  {&(_tg__ZTV8S20537C3__9S20537C11__8S20537C1[11]),  11,20},
  {&(_tg__ZTV8S20537C4__A1__9S20537C11__8S20537C1[5]),  5,8},
  {&(_tg__ZTV8S20537C2__9S20537C11__8S20537C1[32]),  32,40},
  {&(_tg__ZTV8S20537C5__9S20537C11__8S20537C1[7]),  7,12},
  {&(_tg__ZTV8S20537C78S20537C2__9S20537C11__8S20537C1[4]),  4,20},
  {&(_tg__ZTV8S20537C58S20537C78S20537C2__A1__9S20537C11__8S20537C1[2]),  2,7},
  {&(_tg__ZTV9S20537C10__9S20537C11__8S20537C1[18]),  18,32},
  {&(_tg__ZTV8S20537C89S20537C10__A1__9S20537C11__8S20537C1[3]),  3,12},
  {&(_tg__ZTV8S20537C7__A1__9S20537C11__8S20537C1[24]),  24,40},
  {&(_tg__ZTV8S20537C58S20537C7__A3__9S20537C11__8S20537C1[2]),  2,7},
  {&(_tg__ZTV8S20537C7__A1__8S20537C1[4]),  4,20},
  {&(_tg__ZTV8S20537C88S20537C7__A2__8S20537C1[3]),  3,12},
  {&(_tg__ZTV8S20537C98S20537C88S20537C7__A3__8S20537C1[3]),  3,10},
  {&(_tg__ZTV8S20537C5__8S20537C98S20537C88S20537C7__A3__8S20537C1[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C88S20537C7__A2__8S20537C1[7]),  7,12},
  {&(_tg__ZTV8S20537C5__8S20537C7__A1__8S20537C1[7]),  7,12},
  {&(_tg__ZTV9S20537C10__8S20537C7__A1__8S20537C1[18]),  18,32},
  {&(_tg__ZTV8S20537C89S20537C10__A1__8S20537C7__A1__8S20537C1[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20537C1[];
extern  VTBL_ENTRY _ZTV8S20537C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20537C1[];
static VTBL_ENTRY alt_thunk_names144[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20537C11D0Ev,_ZTv0_n20_N9S20537C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20537C11D0Ev,_ZThn16_N9S20537C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20537C11D1Ev,_ZTv0_n20_N9S20537C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20537C11D1Ev,_ZThn16_N9S20537C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C2D0Ev,_ZTv0_n16_N8S20537C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20537C2D0Ev,_ZThn108_N8S20537C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C2D1Ev,_ZTv0_n16_N8S20537C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20537C2D1Ev,_ZThn108_N8S20537C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C7D0Ev,_ZTv0_n16_N8S20537C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20537C7D0Ev,_ZThn80_N8S20537C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C7D1Ev,_ZTv0_n16_N8S20537C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20537C7D1Ev,_ZThn80_N8S20537C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20537C1D0Ev,_ZTv0_n20_N8S20537C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20537C1D0Ev,_ZThn200_N8S20537C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20537C1D1Ev,_ZTv0_n20_N8S20537C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20537C1D1Ev,_ZThn200_N8S20537C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20537C1D0Ev,_ZTv0_n56_N8S20537C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20537C1D0Ev,_ZThn184_N8S20537C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20537C1D1Ev,_ZTv0_n56_N8S20537C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20537C1D1Ev,_ZThn184_N8S20537C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C1D0Ev,_ZTv0_n16_N8S20537C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20537C1D0Ev,_ZThn136_N8S20537C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20537C1D1Ev,_ZTv0_n16_N8S20537C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20537C1D1Ev,_ZThn136_N8S20537C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20537C1D0Ev,_ZTv0_n28_N8S20537C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20537C1D0Ev,_ZThn28_N8S20537C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20537C1D1Ev,_ZTv0_n28_N8S20537C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20537C1D1Ev,_ZThn28_N8S20537C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20537C1 = {  "S20537C1", // class name
  bases_S20537C1, 23,
  &(vtc_S20537C1[0]), // expected_vtbl_contents
  &(vtt_S20537C1[0]), // expected_vtt_contents
  ABISELECT(480,244), // object size
  NSPAIRA(_ZTI8S20537C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20537C1),261, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20537C1),56, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names144,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7337C8  {
  virtual void  v7(); // _ZN7S7337C82v7Ev
  ~S7337C8(); // tgen
  S7337C8(); // tgen
};
//SIG(-1 S7337C8) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S7337C8C1Ev();
extern void _ZN7S7337C8D1Ev();
Name_Map name_map_S7337C8[] = {
  NSPAIR(_ZN7S7337C8C1Ev),
  NSPAIR(_ZN7S7337C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7337C8[];
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY vtc_S7337C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C8[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern VTBL_ENTRY _ZTI7S7337C8[];
extern  VTBL_ENTRY _ZTV7S7337C8[];
Class_Descriptor cd_S7337C8 = {  "S7337C8", // class name
  0,0,//no base classes
  &(vtc_S7337C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7337C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7337C8),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  S7337C9  {
  void *s7337c9f0;
  ::S7337C8 s7337c9f1;
  virtual void  v8(); // _ZN7S7337C92v8Ev
  virtual void  v9(); // _ZN7S7337C92v9Ev
  virtual void  v10(); // _ZN7S7337C93v10Ev
  virtual void  v11(); // _ZN7S7337C93v11Ev
  virtual void  v12(); // _ZN7S7337C93v12Ev
  ~S7337C9(); // tgen
  S7337C9(); // tgen
};
//SIG(-1 S7337C9) C1{ v1 v2 v3 v4 v5 Fp FC2{ v6}}


void  S7337C9 ::v8(){vfunc_called(this, "_ZN7S7337C92v8Ev");}
void  S7337C9 ::v9(){vfunc_called(this, "_ZN7S7337C92v9Ev");}
void  S7337C9 ::v10(){vfunc_called(this, "_ZN7S7337C93v10Ev");}
void  S7337C9 ::v11(){vfunc_called(this, "_ZN7S7337C93v11Ev");}
void  S7337C9 ::v12(){vfunc_called(this, "_ZN7S7337C93v12Ev");}
S7337C9 ::~S7337C9(){ note_dtor("S7337C9", this);} // tgen
S7337C9 ::S7337C9(){ note_ctor("S7337C9", this);} // tgen

static void Test_S7337C9()
{
  extern Class_Descriptor cd_S7337C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7337C9, buf);
    S7337C9 *dp, &lv = *(dp=new (buf) S7337C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7337C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7337C9)");
    check_field_offset(lv, s7337c9f0, ABISELECT(8,4), "S7337C9.s7337c9f0");
    check_field_offset(lv, s7337c9f1, ABISELECT(16,8), "S7337C9.s7337c9f1");
    test_class_info(&lv, &cd_S7337C9);
    dp->~S7337C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C9(Test_S7337C9, "S7337C9", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7337C9C1Ev();
extern void _ZN7S7337C9D1Ev();
Name_Map name_map_S7337C9[] = {
  NSPAIR(_ZN7S7337C9C1Ev),
  NSPAIR(_ZN7S7337C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7337C9[];
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY vtc_S7337C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C9[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern VTBL_ENTRY _ZTI7S7337C9[];
extern  VTBL_ENTRY _ZTV7S7337C9[];
Class_Descriptor cd_S7337C9 = {  "S7337C9", // class name
  0,0,//no base classes
  &(vtc_S7337C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7337C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7337C9),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  S7337C7  : virtual S7337C8 , virtual S7337C9 {
  void *s7337c7f0[6];
  virtual  ~S7337C7(); // _ZN7S7337C7D2Ev
  virtual void  v13(); // _ZN7S7337C73v13Ev
  virtual void  v14(); // _ZN7S7337C73v14Ev
  virtual void  v15(); // _ZN7S7337C73v15Ev
  S7337C7(); // tgen
};
//SIG(-1 S7337C7) C1{ VBC2{ v4} VBC3{ v5 v6 v7 v8 v9 Fp FC2} vd v1 v2 v3 Fp[6]}


 S7337C7 ::~S7337C7(){ note_dtor("S7337C7", this);}
void  S7337C7 ::v13(){vfunc_called(this, "_ZN7S7337C73v13Ev");}
void  S7337C7 ::v14(){vfunc_called(this, "_ZN7S7337C73v14Ev");}
void  S7337C7 ::v15(){vfunc_called(this, "_ZN7S7337C73v15Ev");}
S7337C7 ::S7337C7(){ note_ctor("S7337C7", this);} // tgen

static void Test_S7337C7()
{
  extern Class_Descriptor cd_S7337C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S7337C7, buf);
    S7337C7 *dp, &lv = *(dp=new (buf) S7337C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S7337C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7337C7)");
    check_base_class_offset(lv, (S7337C8*), 0, "S7337C7");
    check_base_class_offset(lv, (S7337C9*), ABISELECT(56,28), "S7337C7");
    check_field_offset(lv, s7337c7f0, ABISELECT(8,4), "S7337C7.s7337c7f0");
    test_class_info(&lv, &cd_S7337C7);
    dp->~S7337C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C7(Test_S7337C7, "S7337C7", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S7337C7C1Ev();
extern void _ZN7S7337C7D2Ev();
Name_Map name_map_S7337C7[] = {
  NSPAIR(_ZN7S7337C7C1Ev),
  NSPAIR(_ZN7S7337C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7337C8;
extern VTBL_ENTRY _ZTI7S7337C8[];
extern  VTBL_ENTRY _ZTV7S7337C8[];
extern Class_Descriptor cd_S7337C9;
extern VTBL_ENTRY _ZTI7S7337C9[];
extern  VTBL_ENTRY _ZTV7S7337C9[];
static Base_Class bases_S7337C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7337C8,    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_S7337C9,    ABISELECT(56,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7337C7[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C7D1Ev();
extern void _ZN7S7337C7D0Ev();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY vtc_S7337C7[] = {
  ABISELECT(56,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern VTBL_ENTRY _ZTV7S7337C7[];
static  VTT_ENTRY vtt_S7337C7[] = {
  {&(_ZTV7S7337C7[5]),  5,23},
  {&(_ZTV7S7337C7[5]),  5,23},
  {&(_ZTV7S7337C7[18]),  18,23},
};
extern VTBL_ENTRY _ZTI7S7337C7[];
extern  VTBL_ENTRY _ZTV7S7337C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C7[];
Class_Descriptor cd_S7337C7 = {  "S7337C7", // class name
  bases_S7337C7, 2,
  &(vtc_S7337C7[0]), // expected_vtbl_contents
  &(vtt_S7337C7[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S7337C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7337C7),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7337C7),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  S7337C6  : virtual S7337C7 {
  __tsi64 s7337c6f0;
  virtual void  v16(); // _ZN7S7337C63v16Ev
  virtual void  v17(); // _ZN7S7337C63v17Ev
  virtual void  v18(); // _ZN7S7337C63v18Ev
  ~S7337C6(); // tgen
  S7337C6(); // tgen
};
//SIG(-1 S7337C6) C1{ VBC2{ VBC3{ v4} VBC4{ v5 v6 v7 v8 v9 Fp FC3} vd v10 v11 v12 Fp[6]} v1 v2 v3 FL}


void  S7337C6 ::v16(){vfunc_called(this, "_ZN7S7337C63v16Ev");}
void  S7337C6 ::v17(){vfunc_called(this, "_ZN7S7337C63v17Ev");}
void  S7337C6 ::v18(){vfunc_called(this, "_ZN7S7337C63v18Ev");}
S7337C6 ::~S7337C6(){ note_dtor("S7337C6", this);} // tgen
S7337C6 ::S7337C6(){ note_ctor("S7337C6", this);} // tgen

static void Test_S7337C6()
{
  extern Class_Descriptor cd_S7337C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S7337C6, buf);
    S7337C6 *dp, &lv = *(dp=new (buf) S7337C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S7337C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7337C6)");
    check_base_class_offset(lv, (S7337C8*)(S7337C7*), 0, "S7337C6");
    check_base_class_offset(lv, (S7337C9*)(S7337C7*), ABISELECT(72,40), "S7337C6");
    check_base_class_offset(lv, (S7337C7*), ABISELECT(16,12), "S7337C6");
    check_field_offset(lv, s7337c6f0, ABISELECT(8,4), "S7337C6.s7337c6f0");
    test_class_info(&lv, &cd_S7337C6);
    dp->~S7337C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C6(Test_S7337C6, "S7337C6", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S7337C6C1Ev();
extern void _ZN7S7337C6D1Ev();
Name_Map name_map_S7337C6[] = {
  NSPAIR(_ZN7S7337C6C1Ev),
  NSPAIR(_ZN7S7337C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7337C8;
extern VTBL_ENTRY _ZTI7S7337C8[];
extern  VTBL_ENTRY _ZTV7S7337C8[];
extern Class_Descriptor cd_S7337C9;
extern VTBL_ENTRY _ZTI7S7337C9[];
extern  VTBL_ENTRY _ZTV7S7337C9[];
extern Class_Descriptor cd_S7337C7;
extern VTBL_ENTRY _ZTI7S7337C7[];
extern  VTBL_ENTRY _ZTV7S7337C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C7[];
static Base_Class bases_S7337C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7337C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C9,    ABISELECT(72,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C7,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7337C6[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7337C6D1Ev,_ZThn12_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S7337C6D0Ev,_ZThn12_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY vtc_S7337C6[] = {
  ABISELECT(72,40),
  0,
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern VTBL_ENTRY _ZTV7S7337C6[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C7D1Ev();
extern void _ZN7S7337C7D0Ev();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C6[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C7__7S7337C6[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C7__7S7337C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
static  VTT_ENTRY vtt_S7337C6[] = {
  {&(_ZTV7S7337C6[6]),  6,39},
  {&(_ZTV7S7337C6[21]),  21,39},
  {&(_ZTV7S7337C6[6]),  6,39},
  {&(_ZTV7S7337C6[34]),  34,39},
  {&(_tg__ZTV7S7337C7__7S7337C6[5]),  5,11},
  {&(_tg__ZTV7S7337C8__7S7337C7__7S7337C6[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C7__7S7337C6[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
static VTBL_ENTRY alt_thunk_names145[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7337C6D0Ev,_ZThn12_N7S7337C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7337C6D1Ev,_ZThn12_N7S7337C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7337C6 = {  "S7337C6", // class name
  bases_S7337C6, 3,
  &(vtc_S7337C6[0]), // expected_vtbl_contents
  &(vtt_S7337C6[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S7337C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7337C6),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7337C6),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names145,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7337C10  {
  void *s7337c10f0;
  short s7337c10f1;
  virtual void  v44(); // _ZN8S7337C103v44Ev
  virtual void  v45(); // _ZN8S7337C103v45Ev
  virtual void  v46(); // _ZN8S7337C103v46Ev
  virtual void  v47(); // _ZN8S7337C103v47Ev
  virtual void  v48(); // _ZN8S7337C103v48Ev
  virtual void  v49(); // _ZN8S7337C103v49Ev
  ~S7337C10(); // tgen
  S7337C10(); // tgen
};
//SIG(-1 S7337C10) C1{ v1 v2 v3 v4 v5 v6 Fp Fs}


void  S7337C10 ::v44(){vfunc_called(this, "_ZN8S7337C103v44Ev");}
void  S7337C10 ::v45(){vfunc_called(this, "_ZN8S7337C103v45Ev");}
void  S7337C10 ::v46(){vfunc_called(this, "_ZN8S7337C103v46Ev");}
void  S7337C10 ::v47(){vfunc_called(this, "_ZN8S7337C103v47Ev");}
void  S7337C10 ::v48(){vfunc_called(this, "_ZN8S7337C103v48Ev");}
void  S7337C10 ::v49(){vfunc_called(this, "_ZN8S7337C103v49Ev");}
S7337C10 ::~S7337C10(){ note_dtor("S7337C10", this);} // tgen
S7337C10 ::S7337C10(){ note_ctor("S7337C10", this);} // tgen

static void Test_S7337C10()
{
  extern Class_Descriptor cd_S7337C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7337C10, buf);
    S7337C10 *dp, &lv = *(dp=new (buf) S7337C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7337C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7337C10)");
    check_field_offset(lv, s7337c10f0, ABISELECT(8,4), "S7337C10.s7337c10f0");
    check_field_offset(lv, s7337c10f1, ABISELECT(16,8), "S7337C10.s7337c10f1");
    test_class_info(&lv, &cd_S7337C10);
    dp->~S7337C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C10(Test_S7337C10, "S7337C10", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S7337C10C1Ev();
extern void _ZN8S7337C10D1Ev();
Name_Map name_map_S7337C10[] = {
  NSPAIR(_ZN8S7337C10C1Ev),
  NSPAIR(_ZN8S7337C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7337C10[];
extern void _ZN8S7337C103v44Ev();
extern void _ZN8S7337C103v45Ev();
extern void _ZN8S7337C103v46Ev();
extern void _ZN8S7337C103v47Ev();
extern void _ZN8S7337C103v48Ev();
extern void _ZN8S7337C103v49Ev();
static  VTBL_ENTRY vtc_S7337C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C10[0]),
  (VTBL_ENTRY)&_ZN8S7337C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7337C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7337C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7337C103v47Ev,
  (VTBL_ENTRY)&_ZN8S7337C103v48Ev,
  (VTBL_ENTRY)&_ZN8S7337C103v49Ev,
};
extern VTBL_ENTRY _ZTI8S7337C10[];
extern  VTBL_ENTRY _ZTV8S7337C10[];
Class_Descriptor cd_S7337C10 = {  "S7337C10", // class name
  0,0,//no base classes
  &(vtc_S7337C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S7337C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7337C10),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  S7337C5  : S7337C6 {
  ::S7337C10 s7337c5f0[4];
  virtual  ~S7337C5(); // _ZN7S7337C5D2Ev
  virtual void  v19(); // _ZN7S7337C53v19Ev
  virtual void  v20(); // _ZN7S7337C53v20Ev
  virtual void  v21(); // _ZN7S7337C53v21Ev
  virtual void  v22(); // _ZN7S7337C53v22Ev
  virtual void  v23(); // _ZN7S7337C53v23Ev
  S7337C5(); // tgen
};
//SIG(-1 S7337C5) C1{ BC2{ VBC3{ VBC4{ v6} VBC5{ v7 v8 v9 v10 v11 Fp FC4} vd v12 v13 v14 Fp[6]} v15 v16 v17 FL} vd v1 v2 v3 v4 v5 FC6{ v18 v19 v20 v21 v22 v23 Fp Fs}[4]}


 S7337C5 ::~S7337C5(){ note_dtor("S7337C5", this);}
void  S7337C5 ::v19(){vfunc_called(this, "_ZN7S7337C53v19Ev");}
void  S7337C5 ::v20(){vfunc_called(this, "_ZN7S7337C53v20Ev");}
void  S7337C5 ::v21(){vfunc_called(this, "_ZN7S7337C53v21Ev");}
void  S7337C5 ::v22(){vfunc_called(this, "_ZN7S7337C53v22Ev");}
void  S7337C5 ::v23(){vfunc_called(this, "_ZN7S7337C53v23Ev");}
S7337C5 ::S7337C5(){ note_ctor("S7337C5", this);} // tgen

static void Test_S7337C5()
{
  extern Class_Descriptor cd_S7337C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,26)];
    init_test(&cd_S7337C5, buf);
    S7337C5 *dp, &lv = *(dp=new (buf) S7337C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S7337C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7337C5)");
    check_base_class_offset(lv, (S7337C8*)(S7337C7*), 0, "S7337C5");
    check_base_class_offset(lv, (S7337C9*)(S7337C7*), ABISELECT(168,88), "S7337C5");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*), ABISELECT(112,60), "S7337C5");
    check_base_class_offset(lv, (S7337C6*), 0, "S7337C5");
    check_field_offset(lv, s7337c5f0, ABISELECT(16,12), "S7337C5.s7337c5f0");
    test_class_info(&lv, &cd_S7337C5);
    dp->~S7337C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C5(Test_S7337C5, "S7337C5", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN7S7337C5C1Ev();
extern void _ZN7S7337C5D2Ev();
Name_Map name_map_S7337C5[] = {
  NSPAIR(_ZN7S7337C5C1Ev),
  NSPAIR(_ZN7S7337C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7337C8;
extern VTBL_ENTRY _ZTI7S7337C8[];
extern  VTBL_ENTRY _ZTV7S7337C8[];
extern Class_Descriptor cd_S7337C9;
extern VTBL_ENTRY _ZTI7S7337C9[];
extern  VTBL_ENTRY _ZTV7S7337C9[];
extern Class_Descriptor cd_S7337C7;
extern VTBL_ENTRY _ZTI7S7337C7[];
extern  VTBL_ENTRY _ZTV7S7337C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C7[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
static Base_Class bases_S7337C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7337C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C9,    ABISELECT(168,88), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C7,    ABISELECT(112,60), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7337C6,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7337C5[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C5D1Ev();
extern void _ZN7S7337C5D0Ev();
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY vtc_S7337C5[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern VTBL_ENTRY _ZTV7S7337C5[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C6__7S7337C5[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C6__7S7337C5[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C6__7S7337C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C7D1Ev();
extern void _ZN7S7337C7D0Ev();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C5[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C7__7S7337C5[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C7__7S7337C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
static  VTT_ENTRY vtt_S7337C5[] = {
  {&(_ZTV7S7337C5[6]),  6,44},
  {&(_tg__ZTV7S7337C6__7S7337C5[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C6__7S7337C5[9]),  9,15},
  {&(_tg__ZTV7S7337C6__7S7337C5[6]),  6,12},
  {&(_tg__ZTV7S7337C9__7S7337C6__7S7337C5[7]),  7,12},
  {&(_ZTV7S7337C5[26]),  26,44},
  {&(_ZTV7S7337C5[6]),  6,44},
  {&(_ZTV7S7337C5[39]),  39,44},
  {&(_tg__ZTV7S7337C7__7S7337C5[5]),  5,11},
  {&(_tg__ZTV7S7337C8__7S7337C7__7S7337C5[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C7__7S7337C5[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7337C5[];
extern  VTBL_ENTRY _ZTV7S7337C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C5[];
static VTBL_ENTRY alt_thunk_names146[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7337C5 = {  "S7337C5", // class name
  bases_S7337C5, 4,
  &(vtc_S7337C5[0]), // expected_vtbl_contents
  &(vtt_S7337C5[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI7S7337C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7337C5),44, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7337C5),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names146,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7337C12  : virtual S7337C8 {
  __tsi64 s7337c12f0;
  void *s7337c12f1;
  virtual void  v24(); // _ZN8S7337C123v24Ev
  virtual void  v25(); // _ZN8S7337C123v25Ev
  virtual void  v26(); // _ZN8S7337C123v26Ev
  ~S7337C12(); // tgen
  S7337C12(); // tgen
};
//SIG(-1 S7337C12) C1{ VBC2{ v4} v1 v2 v3 FL Fp}


void  S7337C12 ::v24(){vfunc_called(this, "_ZN8S7337C123v24Ev");}
void  S7337C12 ::v25(){vfunc_called(this, "_ZN8S7337C123v25Ev");}
void  S7337C12 ::v26(){vfunc_called(this, "_ZN8S7337C123v26Ev");}
S7337C12 ::~S7337C12(){ note_dtor("S7337C12", this);} // tgen
S7337C12 ::S7337C12(){ note_ctor("S7337C12", this);} // tgen

static void Test_S7337C12()
{
  extern Class_Descriptor cd_S7337C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7337C12, buf);
    S7337C12 *dp, &lv = *(dp=new (buf) S7337C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7337C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7337C12)");
    check_base_class_offset(lv, (S7337C8*), 0, "S7337C12");
    check_field_offset(lv, s7337c12f0, ABISELECT(8,4), "S7337C12.s7337c12f0");
    check_field_offset(lv, s7337c12f1, ABISELECT(16,12), "S7337C12.s7337c12f1");
    test_class_info(&lv, &cd_S7337C12);
    dp->~S7337C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C12(Test_S7337C12, "S7337C12", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S7337C12C1Ev();
extern void _ZN8S7337C12D1Ev();
Name_Map name_map_S7337C12[] = {
  NSPAIR(_ZN8S7337C12C1Ev),
  NSPAIR(_ZN8S7337C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7337C8;
extern VTBL_ENTRY _ZTI7S7337C8[];
extern  VTBL_ENTRY _ZTV7S7337C8[];
static Base_Class bases_S7337C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7337C8,    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 _ZTI8S7337C12[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY vtc_S7337C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern VTBL_ENTRY _ZTV8S7337C12[];
static  VTT_ENTRY vtt_S7337C12[] = {
  {&(_ZTV8S7337C12[4]),  4,8},
  {&(_ZTV8S7337C12[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S7337C12[];
extern  VTBL_ENTRY _ZTV8S7337C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C12[];
Class_Descriptor cd_S7337C12 = {  "S7337C12", // class name
  bases_S7337C12, 1,
  &(vtc_S7337C12[0]), // expected_vtbl_contents
  &(vtt_S7337C12[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S7337C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7337C12),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7337C12),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  S7337C11  : S7337C6 , S7337C12 {
  ::S7337C9 s7337c11f0;
  virtual  ~S7337C11(); // _ZN8S7337C11D2Ev
  virtual void  v27(); // _ZN8S7337C113v27Ev
  virtual void  v28(); // _ZN8S7337C113v28Ev
  virtual void  v29(); // _ZN8S7337C113v29Ev
  virtual void  v30(); // _ZN8S7337C113v30Ev
  S7337C11(); // tgen
};
//SIG(-1 S7337C11) C1{ BC2{ VBC3{ VBC4{ v5} VBC5{ v6 v7 v8 v9 v10 Fp FC4} vd v11 v12 v13 Fp[6]} v14 v15 v16 FL} BC6{ VBC4 v17 v18 v19 FL Fp} vd v1 v2 v3 v4 FC5}


 S7337C11 ::~S7337C11(){ note_dtor("S7337C11", this);}
void  S7337C11 ::v27(){vfunc_called(this, "_ZN8S7337C113v27Ev");}
void  S7337C11 ::v28(){vfunc_called(this, "_ZN8S7337C113v28Ev");}
void  S7337C11 ::v29(){vfunc_called(this, "_ZN8S7337C113v29Ev");}
void  S7337C11 ::v30(){vfunc_called(this, "_ZN8S7337C113v30Ev");}
S7337C11 ::S7337C11(){ note_ctor("S7337C11", this);} // tgen

static void Test_S7337C11()
{
  extern Class_Descriptor cd_S7337C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,21)];
    init_test(&cd_S7337C11, buf);
    S7337C11 *dp, &lv = *(dp=new (buf) S7337C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,80), "sizeof(S7337C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7337C11)");
    check_base_class_offset(lv, (S7337C8*)(S7337C7*), 0, "S7337C11");
    check_base_class_offset(lv, (S7337C8*)(S7337C12*), 0, "S7337C11");
    check_base_class_offset(lv, (S7337C9*)(S7337C7*), ABISELECT(120,68), "S7337C11");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*), ABISELECT(64,40), "S7337C11");
    check_base_class_offset(lv, (S7337C6*), 0, "S7337C11");
    check_base_class_offset(lv, (S7337C12*), ABISELECT(16,12), "S7337C11");
    check_field_offset(lv, s7337c11f0, ABISELECT(40,28), "S7337C11.s7337c11f0");
    test_class_info(&lv, &cd_S7337C11);
    dp->~S7337C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C11(Test_S7337C11, "S7337C11", ABISELECT(144,80));

#else // __cplusplus

extern void _ZN8S7337C11C1Ev();
extern void _ZN8S7337C11D2Ev();
Name_Map name_map_S7337C11[] = {
  NSPAIR(_ZN8S7337C11C1Ev),
  NSPAIR(_ZN8S7337C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7337C8;
extern VTBL_ENTRY _ZTI7S7337C8[];
extern  VTBL_ENTRY _ZTV7S7337C8[];
extern Class_Descriptor cd_S7337C9;
extern VTBL_ENTRY _ZTI7S7337C9[];
extern  VTBL_ENTRY _ZTV7S7337C9[];
extern Class_Descriptor cd_S7337C7;
extern VTBL_ENTRY _ZTI7S7337C7[];
extern  VTBL_ENTRY _ZTV7S7337C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C7[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C12;
extern VTBL_ENTRY _ZTI8S7337C12[];
extern  VTBL_ENTRY _ZTV8S7337C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C12[];
static Base_Class bases_S7337C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7337C8,    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
    2, //immediately_derived
  0, 1},
  {&cd_S7337C9,    ABISELECT(120,68), //bcp->offset
    39, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C7,    ABISELECT(64,40), //bcp->offset
    24, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7337C6,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7337C12,    ABISELECT(16,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //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 _ZTI8S7337C11[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN8S7337C11D1Ev();
extern void _ZN8S7337C11D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S7337C11D1Ev,_ZThn40_N8S7337C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S7337C11D0Ev,_ZThn40_N8S7337C11D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY vtc_S7337C11[] = {
  ABISELECT(120,68),
  0,
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  ABISELECT(56,28),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern VTBL_ENTRY _ZTV8S7337C11[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C6__8S7337C11[] = {
  ABISELECT(120,68),
  0,
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S7337C6D1Ev,_ZThn40_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S7337C6D0Ev,_ZThn40_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C6__8S7337C11[] = {
  0,
  0,
  0,
  ABISELECT(-64,-40),
  ABISELECT(56,28),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C6__8S7337C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C12__8S7337C11[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C12__8S7337C11[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C7D1Ev();
extern void _ZN7S7337C7D0Ev();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__8S7337C11[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C7__8S7337C11[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C7__8S7337C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
static  VTT_ENTRY vtt_S7337C11[] = {
  {&(_ZTV8S7337C11[6]),  6,51},
  {&(_tg__ZTV7S7337C6__8S7337C11[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C6__8S7337C11[9]),  9,15},
  {&(_tg__ZTV7S7337C6__8S7337C11[6]),  6,12},
  {&(_tg__ZTV7S7337C9__7S7337C6__8S7337C11[7]),  7,12},
  {&(_tg__ZTV8S7337C12__8S7337C11[4]),  4,8},
  {&(_tg__ZTV7S7337C8__8S7337C12__8S7337C11[3]),  3,4},
  {&(_ZTV8S7337C11[33]),  33,51},
  {&(_ZTV8S7337C11[6]),  6,51},
  {&(_ZTV8S7337C11[46]),  46,51},
  {&(_ZTV8S7337C11[20]),  20,51},
  {&(_tg__ZTV7S7337C7__8S7337C11[5]),  5,11},
  {&(_tg__ZTV7S7337C8__7S7337C7__8S7337C11[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C7__8S7337C11[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S7337C11[];
extern  VTBL_ENTRY _ZTV8S7337C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C11[];
static VTBL_ENTRY alt_thunk_names147[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C6D0Ev,_ZThn40_N7S7337C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C6D1Ev,_ZThn40_N7S7337C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7337C11D0Ev,_ZThn40_N8S7337C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7337C11D1Ev,_ZThn40_N8S7337C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7337C11 = {  "S7337C11", // class name
  bases_S7337C11, 5,
  &(vtc_S7337C11[0]), // expected_vtbl_contents
  &(vtt_S7337C11[0]), // expected_vtt_contents
  ABISELECT(144,80), // object size
  NSPAIRA(_ZTI8S7337C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7337C11),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7337C11),14, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names147,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7337C4  : virtual S7337C5 , S7337C11 {
  virtual  ~S7337C4(); // _ZN7S7337C4D2Ev
  virtual void  v31(); // _ZN7S7337C43v31Ev
  virtual void  v32(); // _ZN7S7337C43v32Ev
  virtual void  v33(); // _ZN7S7337C43v33Ev
  virtual void  v34(); // _ZN7S7337C43v34Ev
  virtual void  v35(); // _ZN7S7337C43v35Ev
  virtual void  v36(); // _ZN7S7337C43v36Ev
  S7337C4(); // tgen
};
//SIG(-1 S7337C4) C1{ VBC2{ BC3{ VBC4{ VBC5{ v7} VBC6{ v8 v9 v10 v11 v12 Fp FC5} vd v13 v14 v15 Fp[6]} v16 v17 v18 FL} vd v19 v20 v21 v22 v23 FC7{ v31 v32 v33 v34 v35 v36 Fp Fs}[4]} BC8{ BC3 BC9{ VBC5 v24 v25 v26 FL Fp} vd v27 v28 v29 v30 FC6} vd v1 v2 v3 v4 v5 v6}


 S7337C4 ::~S7337C4(){ note_dtor("S7337C4", this);}
void  S7337C4 ::v31(){vfunc_called(this, "_ZN7S7337C43v31Ev");}
void  S7337C4 ::v32(){vfunc_called(this, "_ZN7S7337C43v32Ev");}
void  S7337C4 ::v33(){vfunc_called(this, "_ZN7S7337C43v33Ev");}
void  S7337C4 ::v34(){vfunc_called(this, "_ZN7S7337C43v34Ev");}
void  S7337C4 ::v35(){vfunc_called(this, "_ZN7S7337C43v35Ev");}
void  S7337C4 ::v36(){vfunc_called(this, "_ZN7S7337C43v36Ev");}
S7337C4 ::S7337C4(){ note_ctor("S7337C4", this);} // tgen

static void Test_S7337C4()
{
  extern Class_Descriptor cd_S7337C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,36)];
    init_test(&cd_S7337C4, buf);
    S7337C4 *dp, &lv = *(dp=new (buf) S7337C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,140), "sizeof(S7337C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7337C4)");
    check_base_class_offset(lv, (S7337C8*)(S7337C7*), ABISELECT(64,40), "S7337C4");
    check_base_class_offset(lv, (S7337C8*)(S7337C12*)(S7337C11*), ABISELECT(64,40), "S7337C4");
    check_base_class_offset(lv, (S7337C9*)(S7337C7*), ABISELECT(232,128), "S7337C4");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*)(S7337C5*), ABISELECT(176,100), "S7337C4");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*)(S7337C11*), ABISELECT(176,100), "S7337C4");
    check_base_class_offset(lv, (S7337C6*)(S7337C5*), ABISELECT(64,40), "S7337C4");
    check_base_class_offset(lv, (S7337C5*), ABISELECT(64,40), "S7337C4");
    check_base_class_offset(lv, (S7337C6*)(S7337C11*), 0, "S7337C4");
    check_base_class_offset(lv, (S7337C12*)(S7337C11*), ABISELECT(16,12), "S7337C4");
    check_base_class_offset(lv, (S7337C11*), 0, "S7337C4");
    test_class_info(&lv, &cd_S7337C4);
    dp->~S7337C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C4(Test_S7337C4, "S7337C4", ABISELECT(256,140));

#else // __cplusplus

extern void _ZN7S7337C4C1Ev();
extern void _ZN7S7337C4D2Ev();
Name_Map name_map_S7337C4[] = {
  NSPAIR(_ZN7S7337C4C1Ev),
  NSPAIR(_ZN7S7337C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7337C8;
extern VTBL_ENTRY _ZTI7S7337C8[];
extern  VTBL_ENTRY _ZTV7S7337C8[];
extern Class_Descriptor cd_S7337C9;
extern VTBL_ENTRY _ZTI7S7337C9[];
extern  VTBL_ENTRY _ZTV7S7337C9[];
extern Class_Descriptor cd_S7337C7;
extern VTBL_ENTRY _ZTI7S7337C7[];
extern  VTBL_ENTRY _ZTV7S7337C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C7[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C5;
extern VTBL_ENTRY _ZTI7S7337C5[];
extern  VTBL_ENTRY _ZTV7S7337C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C5[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C12;
extern VTBL_ENTRY _ZTI8S7337C12[];
extern  VTBL_ENTRY _ZTV8S7337C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C12[];
extern Class_Descriptor cd_S7337C11;
extern VTBL_ENTRY _ZTI8S7337C11[];
extern  VTBL_ENTRY _ZTV8S7337C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C11[];
static Base_Class bases_S7337C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7337C8,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C9,    ABISELECT(232,128), //bcp->offset
    72, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C7,    ABISELECT(176,100), //bcp->offset
    57, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7337C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7337C5,    ABISELECT(64,40), //bcp->offset
    31, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7337C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7337C12,    ABISELECT(16,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7337C11,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7337C4[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C4D1Ev();
extern void _ZN7S7337C4D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7337C4D1Ev,_ZThn40_N7S7337C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7337C4D0Ev,_ZThn40_N7S7337C4D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev)();
extern void ABISELECT(_ZThn176_N7S7337C4D1Ev,_ZThn100_N7S7337C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev)();
extern void ABISELECT(_ZThn176_N7S7337C4D0Ev,_ZThn100_N7S7337C4D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY vtc_S7337C4[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern VTBL_ENTRY _ZTV7S7337C4[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN8S7337C11D1Ev();
extern void _ZN8S7337C11D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C11__7S7337C4[] = {
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C68S7337C11__A1__7S7337C4[] = {
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S7337C6D1Ev,_ZThn100_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S7337C6D0Ev,_ZThn100_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C68S7337C11__A1__7S7337C4[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C68S7337C11__A1__7S7337C4[] = {
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C68S7337C11__A1__7S7337C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C11__7S7337C4[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C128S7337C11__7S7337C4[] = {
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev)();
extern void ABISELECT(_ZThn176_N8S7337C11D1Ev,_ZThn100_N8S7337C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev)();
extern void ABISELECT(_ZThn176_N8S7337C11D0Ev,_ZThn100_N8S7337C11D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__8S7337C11__7S7337C4[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C11__7S7337C4[] = {
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__8S7337C11__7S7337C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C12__8S7337C11__7S7337C4[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C5D1Ev();
extern void _ZN7S7337C5D0Ev();
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C4[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C67S7337C5__7S7337C4[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C67S7337C5__7S7337C4[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C67S7337C5__7S7337C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C5__7S7337C4[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C5__7S7337C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C7D1Ev();
extern void _ZN7S7337C7D0Ev();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C4[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C7__7S7337C4[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C7__7S7337C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
static  VTT_ENTRY vtt_S7337C4[] = {
  {&(_ZTV7S7337C4[7]),  7,84},
  {&(_tg__ZTV8S7337C11__7S7337C4[6]),  6,16},
  {&(_tg__ZTV7S7337C68S7337C11__A1__7S7337C4[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C68S7337C11__A1__7S7337C4[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C68S7337C11__A1__7S7337C4[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C68S7337C11__A1__7S7337C4[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C11__7S7337C4[4]),  4,8},
  {&(_tg__ZTV7S7337C8__8S7337C128S7337C11__7S7337C4[3]),  3,4},
  {&(_tg__ZTV7S7337C7__8S7337C11__7S7337C4[9]),  9,15},
  {&(_tg__ZTV7S7337C8__8S7337C11__7S7337C4[3]),  3,4},
  {&(_tg__ZTV7S7337C9__8S7337C11__7S7337C4[7]),  7,12},
  {&(_tg__ZTV8S7337C12__8S7337C11__7S7337C4[4]),  4,8},
  {&(_ZTV7S7337C4[46]),  46,84},
  {&(_ZTV7S7337C4[66]),  66,84},
  {&(_ZTV7S7337C4[46]),  46,84},
  {&(_ZTV7S7337C4[79]),  79,84},
  {&(_ZTV7S7337C4[27]),  27,84},
  {&(_tg__ZTV7S7337C5__7S7337C4[6]),  6,17},
  {&(_tg__ZTV7S7337C67S7337C5__7S7337C4[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C67S7337C5__7S7337C4[9]),  9,15},
  {&(_tg__ZTV7S7337C67S7337C5__7S7337C4[6]),  6,12},
  {&(_tg__ZTV7S7337C9__7S7337C67S7337C5__7S7337C4[7]),  7,12},
  {&(_tg__ZTV7S7337C7__7S7337C5__7S7337C4[9]),  9,15},
  {&(_tg__ZTV7S7337C5__7S7337C4[6]),  6,17},
  {&(_tg__ZTV7S7337C9__7S7337C5__7S7337C4[7]),  7,12},
  {&(_tg__ZTV7S7337C7__7S7337C4[5]),  5,11},
  {&(_tg__ZTV7S7337C8__7S7337C7__7S7337C4[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C7__7S7337C4[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7337C4[];
extern  VTBL_ENTRY _ZTV7S7337C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C4[];
static VTBL_ENTRY alt_thunk_names148[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7337C11D0Ev,_ZThn100_N8S7337C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7337C11D1Ev,_ZThn100_N8S7337C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C6D0Ev,_ZThn100_N7S7337C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C6D1Ev,_ZThn100_N7S7337C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C4D0Ev,_ZThn100_N7S7337C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C4D1Ev,_ZThn100_N7S7337C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C4D0Ev,_ZThn40_N7S7337C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C4D1Ev,_ZThn40_N7S7337C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7337C4 = {  "S7337C4", // class name
  bases_S7337C4, 8,
  &(vtc_S7337C4[0]), // expected_vtbl_contents
  &(vtt_S7337C4[0]), // expected_vtt_contents
  ABISELECT(256,140), // object size
  NSPAIRA(_ZTI7S7337C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7337C4),84, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7337C4),28, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names148,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7337C3  : S7337C4 {
  virtual  ~S7337C3(); // _ZN7S7337C3D2Ev
  virtual void  v37(); // _ZN7S7337C33v37Ev
  virtual void  v38(); // _ZN7S7337C33v38Ev
  virtual void  v39(); // _ZN7S7337C33v39Ev
  virtual void  v40(); // _ZN7S7337C33v40Ev
  virtual void  v41(); // _ZN7S7337C33v41Ev
  S7337C3(); // tgen
};
//SIG(-1 S7337C3) C1{ BC2{ VBC3{ BC4{ VBC5{ VBC6{ v6} VBC7{ v7 v8 v9 v10 v11 Fp FC6} vd v12 v13 v14 Fp[6]} v15 v16 v17 FL} vd v18 v19 v20 v21 v22 FC8{ v36 v37 v38 v39 v40 v41 Fp Fs}[4]} BC9{ BC4 BC10{ VBC6 v23 v24 v25 FL Fp} vd v26 v27 v28 v29 FC7} vd v30 v31 v32 v33 v34 v35} vd v1 v2 v3 v4 v5}


 S7337C3 ::~S7337C3(){ note_dtor("S7337C3", this);}
void  S7337C3 ::v37(){vfunc_called(this, "_ZN7S7337C33v37Ev");}
void  S7337C3 ::v38(){vfunc_called(this, "_ZN7S7337C33v38Ev");}
void  S7337C3 ::v39(){vfunc_called(this, "_ZN7S7337C33v39Ev");}
void  S7337C3 ::v40(){vfunc_called(this, "_ZN7S7337C33v40Ev");}
void  S7337C3 ::v41(){vfunc_called(this, "_ZN7S7337C33v41Ev");}
S7337C3 ::S7337C3(){ note_ctor("S7337C3", this);} // tgen

static void Test_S7337C3()
{
  extern Class_Descriptor cd_S7337C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,36)];
    init_test(&cd_S7337C3, buf);
    S7337C3 *dp, &lv = *(dp=new (buf) S7337C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,140), "sizeof(S7337C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7337C3)");
    check_base_class_offset(lv, (S7337C8*)(S7337C7*), ABISELECT(64,40), "S7337C3");
    check_base_class_offset(lv, (S7337C8*)(S7337C12*)(S7337C11*)(S7337C4*), ABISELECT(64,40), "S7337C3");
    check_base_class_offset(lv, (S7337C9*)(S7337C7*), ABISELECT(232,128), "S7337C3");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*)(S7337C5*), ABISELECT(176,100), "S7337C3");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*)(S7337C11*)(S7337C4*), ABISELECT(176,100), "S7337C3");
    check_base_class_offset(lv, (S7337C6*)(S7337C5*), ABISELECT(64,40), "S7337C3");
    check_base_class_offset(lv, (S7337C5*)(S7337C4*), ABISELECT(64,40), "S7337C3");
    check_base_class_offset(lv, (S7337C6*)(S7337C11*)(S7337C4*), 0, "S7337C3");
    check_base_class_offset(lv, (S7337C12*)(S7337C11*)(S7337C4*), ABISELECT(16,12), "S7337C3");
    check_base_class_offset(lv, (S7337C11*)(S7337C4*), 0, "S7337C3");
    check_base_class_offset(lv, (S7337C4*), 0, "S7337C3");
    test_class_info(&lv, &cd_S7337C3);
    dp->~S7337C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C3(Test_S7337C3, "S7337C3", ABISELECT(256,140));

#else // __cplusplus

extern void _ZN7S7337C3C1Ev();
extern void _ZN7S7337C3D2Ev();
Name_Map name_map_S7337C3[] = {
  NSPAIR(_ZN7S7337C3C1Ev),
  NSPAIR(_ZN7S7337C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7337C8;
extern VTBL_ENTRY _ZTI7S7337C8[];
extern  VTBL_ENTRY _ZTV7S7337C8[];
extern Class_Descriptor cd_S7337C9;
extern VTBL_ENTRY _ZTI7S7337C9[];
extern  VTBL_ENTRY _ZTV7S7337C9[];
extern Class_Descriptor cd_S7337C7;
extern VTBL_ENTRY _ZTI7S7337C7[];
extern  VTBL_ENTRY _ZTV7S7337C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C7[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C5;
extern VTBL_ENTRY _ZTI7S7337C5[];
extern  VTBL_ENTRY _ZTV7S7337C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C5[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C12;
extern VTBL_ENTRY _ZTI8S7337C12[];
extern  VTBL_ENTRY _ZTV8S7337C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C12[];
extern Class_Descriptor cd_S7337C11;
extern VTBL_ENTRY _ZTI8S7337C11[];
extern  VTBL_ENTRY _ZTV8S7337C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C11[];
extern Class_Descriptor cd_S7337C4;
extern VTBL_ENTRY _ZTI7S7337C4[];
extern  VTBL_ENTRY _ZTV7S7337C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C4[];
static Base_Class bases_S7337C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7337C8,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C9,    ABISELECT(232,128), //bcp->offset
    77, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C7,    ABISELECT(176,100), //bcp->offset
    62, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7337C6,    ABISELECT(64,40), //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7337C5,    ABISELECT(64,40), //bcp->offset
    36, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7337C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7337C12,    ABISELECT(16,12), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7337C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7337C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7337C3[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C3D1Ev();
extern void _ZN7S7337C3D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
extern void _ZN7S7337C33v37Ev();
extern void _ZN7S7337C33v38Ev();
extern void _ZN7S7337C33v39Ev();
extern void _ZN7S7337C33v40Ev();
extern void _ZN7S7337C33v41Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C3D1Ev,_ZTv0_n40_N7S7337C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7337C3D1Ev,_ZThn40_N7S7337C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C3D0Ev,_ZTv0_n40_N7S7337C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7337C3D0Ev,_ZThn40_N7S7337C3D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C3D1Ev,_ZTv0_n24_N7S7337C3D1Ev)();
extern void ABISELECT(_ZThn176_N7S7337C3D1Ev,_ZThn100_N7S7337C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C3D0Ev,_ZTv0_n24_N7S7337C3D0Ev)();
extern void ABISELECT(_ZThn176_N7S7337C3D0Ev,_ZThn100_N7S7337C3D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY vtc_S7337C3[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C3D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v37Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v38Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v39Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v40Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v41Ev,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C3D1Ev,_ZTv0_n40_N7S7337C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C3D0Ev,_ZTv0_n40_N7S7337C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C3D1Ev,_ZTv0_n24_N7S7337C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C3D0Ev,_ZTv0_n24_N7S7337C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern VTBL_ENTRY _ZTV7S7337C3[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C4D1Ev();
extern void _ZN7S7337C4D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C4__7S7337C3[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN8S7337C11D1Ev();
extern void _ZN8S7337C11D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C117S7337C4__7S7337C3[] = {
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C68S7337C117S7337C4__A1__7S7337C3[] = {
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S7337C6D1Ev,_ZThn100_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S7337C6D0Ev,_ZThn100_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C68S7337C117S7337C4__A1__7S7337C3[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C68S7337C117S7337C4__A1__7S7337C3[] = {
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C68S7337C117S7337C4__A1__7S7337C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C117S7337C4__7S7337C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C128S7337C117S7337C4__7S7337C3[] = {
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev)();
extern void ABISELECT(_ZThn176_N8S7337C11D1Ev,_ZThn100_N8S7337C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev)();
extern void ABISELECT(_ZThn176_N8S7337C11D0Ev,_ZThn100_N8S7337C11D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__8S7337C117S7337C4__7S7337C3[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C117S7337C4__7S7337C3[] = {
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__8S7337C117S7337C4__7S7337C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C12__8S7337C117S7337C4__7S7337C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7337C4D1Ev,_ZThn40_N7S7337C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7337C4D0Ev,_ZThn40_N7S7337C4D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C4__7S7337C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev)();
extern void ABISELECT(_ZThn176_N7S7337C4D1Ev,_ZThn100_N7S7337C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev)();
extern void ABISELECT(_ZThn176_N7S7337C4D0Ev,_ZThn100_N7S7337C4D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C4__7S7337C3[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C4__7S7337C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C11__7S7337C4__7S7337C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C5D1Ev();
extern void _ZN7S7337C5D0Ev();
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C3[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C67S7337C5__7S7337C3[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C67S7337C5__7S7337C3[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C67S7337C5__7S7337C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C5__7S7337C3[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C5__7S7337C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C7D1Ev();
extern void _ZN7S7337C7D0Ev();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C3[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C7__7S7337C3[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C7__7S7337C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
static  VTT_ENTRY vtt_S7337C3[] = {
  {&(_ZTV7S7337C3[7]),  7,89},
  {&(_tg__ZTV7S7337C4__7S7337C3[7]),  7,23},
  {&(_tg__ZTV8S7337C117S7337C4__7S7337C3[6]),  6,16},
  {&(_tg__ZTV7S7337C68S7337C117S7337C4__A1__7S7337C3[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C68S7337C117S7337C4__A1__7S7337C3[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C68S7337C117S7337C4__A1__7S7337C3[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C68S7337C117S7337C4__A1__7S7337C3[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C117S7337C4__7S7337C3[4]),  4,8},
  {&(_tg__ZTV7S7337C8__8S7337C128S7337C117S7337C4__7S7337C3[3]),  3,4},
  {&(_tg__ZTV7S7337C7__8S7337C117S7337C4__7S7337C3[9]),  9,15},
  {&(_tg__ZTV7S7337C8__8S7337C117S7337C4__7S7337C3[3]),  3,4},
  {&(_tg__ZTV7S7337C9__8S7337C117S7337C4__7S7337C3[7]),  7,12},
  {&(_tg__ZTV8S7337C12__8S7337C117S7337C4__7S7337C3[4]),  4,8},
  {&(_tg__ZTV7S7337C5__7S7337C4__7S7337C3[15]),  15,26},
  {&(_tg__ZTV7S7337C7__7S7337C4__7S7337C3[9]),  9,15},
  {&(_tg__ZTV7S7337C5__7S7337C4__7S7337C3[15]),  15,26},
  {&(_tg__ZTV7S7337C9__7S7337C4__7S7337C3[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C11__7S7337C4__7S7337C3[4]),  4,8},
  {&(_ZTV7S7337C3[51]),  51,89},
  {&(_ZTV7S7337C3[71]),  71,89},
  {&(_ZTV7S7337C3[51]),  51,89},
  {&(_ZTV7S7337C3[84]),  84,89},
  {&(_ZTV7S7337C3[32]),  32,89},
  {&(_tg__ZTV7S7337C5__7S7337C3[6]),  6,17},
  {&(_tg__ZTV7S7337C67S7337C5__7S7337C3[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C67S7337C5__7S7337C3[9]),  9,15},
  {&(_tg__ZTV7S7337C67S7337C5__7S7337C3[6]),  6,12},
  {&(_tg__ZTV7S7337C9__7S7337C67S7337C5__7S7337C3[7]),  7,12},
  {&(_tg__ZTV7S7337C7__7S7337C5__7S7337C3[9]),  9,15},
  {&(_tg__ZTV7S7337C5__7S7337C3[6]),  6,17},
  {&(_tg__ZTV7S7337C9__7S7337C5__7S7337C3[7]),  7,12},
  {&(_tg__ZTV7S7337C7__7S7337C3[5]),  5,11},
  {&(_tg__ZTV7S7337C8__7S7337C7__7S7337C3[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C7__7S7337C3[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7337C3[];
extern  VTBL_ENTRY _ZTV7S7337C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C3[];
static VTBL_ENTRY alt_thunk_names149[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C4D0Ev,_ZThn100_N7S7337C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C4D1Ev,_ZThn100_N7S7337C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C4D0Ev,_ZThn40_N7S7337C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C4D1Ev,_ZThn40_N7S7337C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7337C11D0Ev,_ZThn100_N8S7337C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7337C11D1Ev,_ZThn100_N8S7337C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C6D0Ev,_ZThn100_N7S7337C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C6D1Ev,_ZThn100_N7S7337C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C3D0Ev,_ZTv0_n24_N7S7337C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C3D0Ev,_ZThn100_N7S7337C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C3D1Ev,_ZTv0_n24_N7S7337C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C3D1Ev,_ZThn100_N7S7337C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C3D0Ev,_ZTv0_n40_N7S7337C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C3D0Ev,_ZThn40_N7S7337C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C3D1Ev,_ZTv0_n40_N7S7337C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C3D1Ev,_ZThn40_N7S7337C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7337C3 = {  "S7337C3", // class name
  bases_S7337C3, 9,
  &(vtc_S7337C3[0]), // expected_vtbl_contents
  &(vtt_S7337C3[0]), // expected_vtt_contents
  ABISELECT(256,140), // object size
  NSPAIRA(_ZTI7S7337C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7337C3),89, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7337C3),34, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names149,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7337C2  : virtual S7337C3 , virtual S7337C6 {
  virtual  ~S7337C2(); // _ZN7S7337C2D2Ev
  virtual void  v42(); // _ZN7S7337C23v42Ev
  S7337C2(); // tgen
};
//SIG(-1 S7337C2) C1{ VBC2{ BC3{ VBC4{ BC5{ VBC6{ VBC7{ v2} VBC8{ v3 v4 v5 v6 v7 Fp FC7} vd v8 v9 v10 Fp[6]} v11 v12 v13 FL} vd v14 v15 v16 v17 v18 FC9{ v37 v38 v39 v40 v41 v42 Fp Fs}[4]} BC10{ BC5 BC11{ VBC7 v19 v20 v21 FL Fp} vd v22 v23 v24 v25 FC8} vd v26 v27 v28 v29 v30 v31} vd v32 v33 v34 v35 v36} VBC5 vd v1}


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

static void Test_S7337C2()
{
  extern Class_Descriptor cd_S7337C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,40)];
    init_test(&cd_S7337C2, buf);
    S7337C2 *dp, &lv = *(dp=new (buf) S7337C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,156), "sizeof(S7337C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7337C2)");
    check_base_class_offset(lv, (S7337C8*)(S7337C7*), 0, "S7337C2");
    check_base_class_offset(lv, (S7337C8*)(S7337C12*)(S7337C11*)(S7337C4*)(S7337C3*), 0, "S7337C2");
    check_base_class_offset(lv, (S7337C9*)(S7337C7*), ABISELECT(240,132), "S7337C2");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*)(S7337C5*), ABISELECT(184,104), "S7337C2");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*)(S7337C11*)(S7337C4*)(S7337C3*), ABISELECT(184,104), "S7337C2");
    /*is_ambiguous_... S7337C2::S7337C6 */ AMB_check_base_class_offset(lv, (S7337C7*)(S7337C6*), ABISELECT(184,104), "S7337C2");
    check_base_class_offset(lv, (S7337C6*)(S7337C5*), ABISELECT(72,44), "S7337C2");
    check_base_class_offset(lv, (S7337C5*)(S7337C4*)(S7337C3*), ABISELECT(72,44), "S7337C2");
    check_base_class_offset(lv, (S7337C6*)(S7337C11*)(S7337C4*)(S7337C3*), ABISELECT(8,4), "S7337C2");
    check_base_class_offset(lv, (S7337C12*)(S7337C11*)(S7337C4*)(S7337C3*), ABISELECT(24,16), "S7337C2");
    check_base_class_offset(lv, (S7337C11*)(S7337C4*)(S7337C3*), ABISELECT(8,4), "S7337C2");
    check_base_class_offset(lv, (S7337C4*)(S7337C3*), ABISELECT(8,4), "S7337C2");
    check_base_class_offset(lv, (S7337C3*), ABISELECT(8,4), "S7337C2");
    /*is_ambiguous_... S7337C2::S7337C6 */ AMB_check_base_class_offset(lv, (S7337C6*), ABISELECT(264,144), "S7337C2");
    test_class_info(&lv, &cd_S7337C2);
    dp->~S7337C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C2(Test_S7337C2, "S7337C2", ABISELECT(280,156));

#else // __cplusplus

extern void _ZN7S7337C2C1Ev();
extern void _ZN7S7337C2D2Ev();
Name_Map name_map_S7337C2[] = {
  NSPAIR(_ZN7S7337C2C1Ev),
  NSPAIR(_ZN7S7337C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7337C8;
extern VTBL_ENTRY _ZTI7S7337C8[];
extern  VTBL_ENTRY _ZTV7S7337C8[];
extern Class_Descriptor cd_S7337C9;
extern VTBL_ENTRY _ZTI7S7337C9[];
extern  VTBL_ENTRY _ZTV7S7337C9[];
extern Class_Descriptor cd_S7337C7;
extern VTBL_ENTRY _ZTI7S7337C7[];
extern  VTBL_ENTRY _ZTV7S7337C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C7[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C5;
extern VTBL_ENTRY _ZTI7S7337C5[];
extern  VTBL_ENTRY _ZTV7S7337C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C5[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C12;
extern VTBL_ENTRY _ZTI8S7337C12[];
extern  VTBL_ENTRY _ZTV8S7337C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C12[];
extern Class_Descriptor cd_S7337C11;
extern VTBL_ENTRY _ZTI8S7337C11[];
extern  VTBL_ENTRY _ZTV8S7337C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C11[];
extern Class_Descriptor cd_S7337C4;
extern VTBL_ENTRY _ZTI7S7337C4[];
extern  VTBL_ENTRY _ZTV7S7337C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C4[];
extern Class_Descriptor cd_S7337C3;
extern VTBL_ENTRY _ZTI7S7337C3[];
extern  VTBL_ENTRY _ZTV7S7337C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C3[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
static Base_Class bases_S7337C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7337C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C9,    ABISELECT(240,132), //bcp->offset
    112, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C7,    ABISELECT(184,104), //bcp->offset
    97, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7337C6,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7337C5,    ABISELECT(72,44), //bcp->offset
    71, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7337C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7337C12,    ABISELECT(24,16), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7337C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7337C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7337C3,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    29, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7337C6,    ABISELECT(264,144), //bcp->offset
    124, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7337C2[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C2D1Ev();
extern void _ZN7S7337C2D0Ev();
extern void _ZN7S7337C23v42Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n88_N7S7337C2D1Ev,_ZTv0_n44_N7S7337C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7337C2D1Ev,_ZThn4_N7S7337C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7337C2D0Ev,_ZTv0_n44_N7S7337C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7337C2D0Ev,_ZThn4_N7S7337C2D0Ev)() __attribute__((weak));
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
extern void _ZN7S7337C33v37Ev();
extern void _ZN7S7337C33v38Ev();
extern void _ZN7S7337C33v39Ev();
extern void _ZN7S7337C33v40Ev();
extern void _ZN7S7337C33v41Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C2D1Ev,_ZTv0_n40_N7S7337C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7337C2D1Ev,_ZThn44_N7S7337C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C2D0Ev,_ZTv0_n40_N7S7337C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7337C2D0Ev,_ZThn44_N7S7337C2D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C2D1Ev,_ZTv0_n24_N7S7337C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S7337C2D1Ev,_ZThn104_N7S7337C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C2D0Ev,_ZTv0_n24_N7S7337C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S7337C2D0Ev,_ZThn104_N7S7337C2D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C2D1Ev,_ZTv0_n40_N7S7337C2D1Ev)();
extern void ABISELECT(_ZThn264_N7S7337C2D1Ev,_ZThn144_N7S7337C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C2D0Ev,_ZTv0_n40_N7S7337C2D0Ev)();
extern void ABISELECT(_ZThn264_N7S7337C2D0Ev,_ZThn144_N7S7337C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7337C2[] = {
  ABISELECT(264,144),
  ABISELECT(240,132),
  0,
  ABISELECT(184,104),
  ABISELECT(72,44),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C23v42Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(-8,-4),
  ABISELECT(176,100),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7337C2D1Ev,_ZTv0_n44_N7S7337C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7337C2D0Ev,_ZTv0_n44_N7S7337C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v37Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v38Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v39Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v40Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v41Ev,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-72,-44),
  ABISELECT(112,60),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C2D1Ev,_ZTv0_n40_N7S7337C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C2D0Ev,_ZTv0_n40_N7S7337C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
  0,
  0,
  0,
  ABISELECT(-184,-104),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C2D1Ev,_ZTv0_n24_N7S7337C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C2D0Ev,_ZTv0_n24_N7S7337C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
  ABISELECT(-264,-144),
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-264,-144),
  ABISELECT(-80,-40),
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C2D1Ev,_ZTv0_n40_N7S7337C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C2D0Ev,_ZTv0_n40_N7S7337C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7337C2[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C3D1Ev();
extern void _ZN7S7337C3D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
extern void _ZN7S7337C33v37Ev();
extern void _ZN7S7337C33v38Ev();
extern void _ZN7S7337C33v39Ev();
extern void _ZN7S7337C33v40Ev();
extern void _ZN7S7337C33v41Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C3__7S7337C2[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(-8,-4),
  ABISELECT(176,100),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C3D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v37Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v38Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v39Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v40Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v41Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C4D1Ev();
extern void _ZN7S7337C4D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C47S7337C3__7S7337C2[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(-8,-4),
  ABISELECT(176,100),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN8S7337C11D1Ev();
extern void _ZN8S7337C11D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C117S7337C47S7337C3__7S7337C2[] = {
  ABISELECT(232,128),
  ABISELECT(-8,-4),
  ABISELECT(176,100),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C2[] = {
  ABISELECT(232,128),
  ABISELECT(-8,-4),
  ABISELECT(176,100),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S7337C6D1Ev,_ZThn100_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S7337C6D0Ev,_ZThn100_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C2[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C2[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C117S7337C47S7337C3__7S7337C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C128S7337C117S7337C47S7337C3__7S7337C2[] = {
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev)();
extern void ABISELECT(_ZThn176_N8S7337C11D1Ev,_ZThn100_N8S7337C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev)();
extern void ABISELECT(_ZThn176_N8S7337C11D0Ev,_ZThn100_N8S7337C11D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__8S7337C117S7337C47S7337C3__7S7337C2[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C117S7337C47S7337C3__7S7337C2[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__8S7337C117S7337C47S7337C3__7S7337C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C12__8S7337C117S7337C47S7337C3__7S7337C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7337C4D1Ev,_ZThn40_N7S7337C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7337C4D0Ev,_ZThn40_N7S7337C4D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C47S7337C3__7S7337C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-72,-44),
  ABISELECT(112,60),
  ABISELECT(-72,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev)();
extern void ABISELECT(_ZThn176_N7S7337C4D1Ev,_ZThn100_N7S7337C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev)();
extern void ABISELECT(_ZThn176_N7S7337C4D0Ev,_ZThn100_N7S7337C4D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C47S7337C3__7S7337C2[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C47S7337C3__7S7337C2[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C47S7337C3__7S7337C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C11__7S7337C47S7337C3__7S7337C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C3D1Ev,_ZTv0_n40_N7S7337C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7337C3D1Ev,_ZThn40_N7S7337C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C3D0Ev,_ZTv0_n40_N7S7337C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7337C3D0Ev,_ZThn40_N7S7337C3D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C3__7S7337C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-72,-44),
  ABISELECT(112,60),
  ABISELECT(-72,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C3D1Ev,_ZTv0_n40_N7S7337C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C3D0Ev,_ZTv0_n40_N7S7337C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C3D1Ev,_ZTv0_n24_N7S7337C3D1Ev)();
extern void ABISELECT(_ZThn176_N7S7337C3D1Ev,_ZThn100_N7S7337C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C3D0Ev,_ZTv0_n24_N7S7337C3D0Ev)();
extern void ABISELECT(_ZThn176_N7S7337C3D0Ev,_ZThn100_N7S7337C3D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C3__7S7337C2[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C3D1Ev,_ZTv0_n24_N7S7337C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C3D0Ev,_ZTv0_n24_N7S7337C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C3__7S7337C2[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C3__7S7337C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C117S7337C4__7S7337C3__7S7337C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C5D1Ev();
extern void _ZN7S7337C5D0Ev();
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C2[] = {
  ABISELECT(168,88),
  ABISELECT(-72,-44),
  ABISELECT(112,60),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C67S7337C5__7S7337C2[] = {
  ABISELECT(168,88),
  ABISELECT(-72,-44),
  ABISELECT(112,60),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C67S7337C5__7S7337C2[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C67S7337C5__7S7337C2[] = {
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C67S7337C5__7S7337C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C5__7S7337C2[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C5__7S7337C2[] = {
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C5__7S7337C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C7D1Ev();
extern void _ZN7S7337C7D0Ev();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C2[] = {
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C7__7S7337C2[] = {
  0,
  ABISELECT(184,104),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C7__7S7337C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C6__A2__7S7337C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-264,-144),
  ABISELECT(-80,-40),
  ABISELECT(-264,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C6__A2__7S7337C2[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C6__A2__7S7337C2[] = {
  0,
  ABISELECT(264,144),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C6__A2__7S7337C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
static  VTT_ENTRY vtt_S7337C2[] = {
  {&(_ZTV7S7337C2[9]),  9,140},
  {&(_ZTV7S7337C2[42]),  42,140},
  {&(_ZTV7S7337C2[86]),  86,140},
  {&(_ZTV7S7337C2[106]),  106,140},
  {&(_ZTV7S7337C2[9]),  9,140},
  {&(_ZTV7S7337C2[119]),  119,140},
  {&(_ZTV7S7337C2[67]),  67,140},
  {&(_ZTV7S7337C2[134]),  134,140},
  {&(_tg__ZTV7S7337C3__7S7337C2[7]),  7,28},
  {&(_tg__ZTV7S7337C47S7337C3__7S7337C2[7]),  7,23},
  {&(_tg__ZTV8S7337C117S7337C47S7337C3__7S7337C2[6]),  6,16},
  {&(_tg__ZTV7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C2[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C2[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C2[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C2[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C117S7337C47S7337C3__7S7337C2[4]),  4,8},
  {&(_tg__ZTV7S7337C8__8S7337C128S7337C117S7337C47S7337C3__7S7337C2[3]),  3,4},
  {&(_tg__ZTV7S7337C7__8S7337C117S7337C47S7337C3__7S7337C2[9]),  9,15},
  {&(_tg__ZTV7S7337C8__8S7337C117S7337C47S7337C3__7S7337C2[3]),  3,4},
  {&(_tg__ZTV7S7337C9__8S7337C117S7337C47S7337C3__7S7337C2[7]),  7,12},
  {&(_tg__ZTV8S7337C12__8S7337C117S7337C47S7337C3__7S7337C2[4]),  4,8},
  {&(_tg__ZTV7S7337C5__7S7337C47S7337C3__7S7337C2[15]),  15,26},
  {&(_tg__ZTV7S7337C7__7S7337C47S7337C3__7S7337C2[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C47S7337C3__7S7337C2[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C47S7337C3__7S7337C2[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C11__7S7337C47S7337C3__7S7337C2[4]),  4,8},
  {&(_tg__ZTV7S7337C5__7S7337C3__7S7337C2[15]),  15,26},
  {&(_tg__ZTV7S7337C7__7S7337C3__7S7337C2[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C3__7S7337C2[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C3__7S7337C2[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C117S7337C4__7S7337C3__7S7337C2[4]),  4,8},
  {&(_tg__ZTV7S7337C5__7S7337C2[6]),  6,17},
  {&(_tg__ZTV7S7337C67S7337C5__7S7337C2[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C67S7337C5__7S7337C2[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C67S7337C5__7S7337C2[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C67S7337C5__7S7337C2[7]),  7,12},
  {&(_tg__ZTV7S7337C7__7S7337C5__7S7337C2[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C5__7S7337C2[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C5__7S7337C2[7]),  7,12},
  {&(_tg__ZTV7S7337C7__7S7337C2[5]),  5,11},
  {&(_tg__ZTV7S7337C8__7S7337C7__7S7337C2[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C7__7S7337C2[7]),  7,12},
  {&(_tg__ZTV7S7337C6__A2__7S7337C2[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C6__A2__7S7337C2[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C6__A2__7S7337C2[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C6__A2__7S7337C2[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7337C2[];
extern  VTBL_ENTRY _ZTV7S7337C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C2[];
static VTBL_ENTRY alt_thunk_names150[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C3D0Ev,_ZTv0_n24_N7S7337C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C3D0Ev,_ZThn100_N7S7337C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C3D1Ev,_ZTv0_n24_N7S7337C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C3D1Ev,_ZThn100_N7S7337C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C3D0Ev,_ZTv0_n40_N7S7337C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C3D0Ev,_ZThn40_N7S7337C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C3D1Ev,_ZTv0_n40_N7S7337C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C3D1Ev,_ZThn40_N7S7337C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C4D0Ev,_ZThn100_N7S7337C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C4D1Ev,_ZThn100_N7S7337C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C4D0Ev,_ZThn40_N7S7337C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C4D1Ev,_ZThn40_N7S7337C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7337C11D0Ev,_ZThn100_N8S7337C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7337C11D1Ev,_ZThn100_N8S7337C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C6D0Ev,_ZThn100_N7S7337C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C6D1Ev,_ZThn100_N7S7337C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C2D0Ev,_ZTv0_n24_N7S7337C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7337C2D0Ev,_ZThn104_N7S7337C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C2D1Ev,_ZTv0_n24_N7S7337C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7337C2D1Ev,_ZThn104_N7S7337C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C2D0Ev,_ZTv0_n40_N7S7337C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7337C2D0Ev,_ZThn144_N7S7337C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7337C2D0Ev,_ZThn44_N7S7337C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C2D1Ev,_ZTv0_n40_N7S7337C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7337C2D1Ev,_ZThn144_N7S7337C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7337C2D1Ev,_ZThn44_N7S7337C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7337C2D0Ev,_ZTv0_n44_N7S7337C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7337C2D0Ev,_ZThn4_N7S7337C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7337C2D1Ev,_ZTv0_n44_N7S7337C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7337C2D1Ev,_ZThn4_N7S7337C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7337C2 = {  "S7337C2", // class name
  bases_S7337C2, 11,
  &(vtc_S7337C2[0]), // expected_vtbl_contents
  &(vtt_S7337C2[0]), // expected_vtt_contents
  ABISELECT(280,156), // object size
  NSPAIRA(_ZTI7S7337C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7337C2),140, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7337C2),46, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names150,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7337C13  : virtual S7337C5 , virtual S7337C4 {
  ::S7337C8 s7337c13f0;
  virtual  ~S7337C13(); // _ZN8S7337C13D2Ev
  virtual void  v43(); // _ZN8S7337C133v43Ev
  S7337C13(); // tgen
};
//SIG(-1 S7337C13) C1{ VBC2{ BC3{ VBC4{ VBC5{ v2} VBC6{ v3 v4 v5 v6 v7 Fp FC5} vd v8 v9 v10 Fp[6]} v11 v12 v13 FL} vd v14 v15 v16 v17 v18 FC7{ v32 v33 v34 v35 v36 v37 Fp Fs}[4]} VBC8{ VBC2 BC9{ BC3 BC10{ VBC5 v19 v20 v21 FL Fp} vd v22 v23 v24 v25 FC6} vd v26 v27 v28 v29 v30 v31} vd v1 FC5}


 S7337C13 ::~S7337C13(){ note_dtor("S7337C13", this);}
void  S7337C13 ::v43(){vfunc_called(this, "_ZN8S7337C133v43Ev");}
S7337C13 ::S7337C13(){ note_ctor("S7337C13", this);} // tgen

static void Test_S7337C13()
{
  extern Class_Descriptor cd_S7337C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,38)];
    init_test(&cd_S7337C13, buf);
    S7337C13 *dp, &lv = *(dp=new (buf) S7337C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,148), "sizeof(S7337C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7337C13)");
    check_base_class_offset(lv, (S7337C8*)(S7337C7*), 0, "S7337C13");
    check_base_class_offset(lv, (S7337C8*)(S7337C12*)(S7337C11*)(S7337C4*), 0, "S7337C13");
    check_base_class_offset(lv, (S7337C9*)(S7337C7*), ABISELECT(184,96), "S7337C13");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*)(S7337C5*), ABISELECT(128,68), "S7337C13");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*)(S7337C11*)(S7337C4*), ABISELECT(128,68), "S7337C13");
    check_base_class_offset(lv, (S7337C6*)(S7337C5*), ABISELECT(16,8), "S7337C13");
    check_base_class_offset(lv, (S7337C5*), ABISELECT(16,8), "S7337C13");
    check_base_class_offset(lv, (S7337C5*)(S7337C4*), ABISELECT(16,8), "S7337C13");
    check_base_class_offset(lv, (S7337C6*)(S7337C11*)(S7337C4*), ABISELECT(208,108), "S7337C13");
    check_base_class_offset(lv, (S7337C12*)(S7337C11*)(S7337C4*), ABISELECT(224,120), "S7337C13");
    check_base_class_offset(lv, (S7337C11*)(S7337C4*), ABISELECT(208,108), "S7337C13");
    check_base_class_offset(lv, (S7337C4*), ABISELECT(208,108), "S7337C13");
    check_field_offset(lv, s7337c13f0, ABISELECT(8,4), "S7337C13.s7337c13f0");
    test_class_info(&lv, &cd_S7337C13);
    dp->~S7337C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C13(Test_S7337C13, "S7337C13", ABISELECT(272,148));

#else // __cplusplus

extern void _ZN8S7337C13C1Ev();
extern void _ZN8S7337C13D2Ev();
Name_Map name_map_S7337C13[] = {
  NSPAIR(_ZN8S7337C13C1Ev),
  NSPAIR(_ZN8S7337C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7337C8;
extern VTBL_ENTRY _ZTI7S7337C8[];
extern  VTBL_ENTRY _ZTV7S7337C8[];
extern Class_Descriptor cd_S7337C9;
extern VTBL_ENTRY _ZTI7S7337C9[];
extern  VTBL_ENTRY _ZTV7S7337C9[];
extern Class_Descriptor cd_S7337C7;
extern VTBL_ENTRY _ZTI7S7337C7[];
extern  VTBL_ENTRY _ZTV7S7337C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C7[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C5;
extern VTBL_ENTRY _ZTI7S7337C5[];
extern  VTBL_ENTRY _ZTV7S7337C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C5[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C12;
extern VTBL_ENTRY _ZTI8S7337C12[];
extern  VTBL_ENTRY _ZTV8S7337C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C12[];
extern Class_Descriptor cd_S7337C11;
extern VTBL_ENTRY _ZTI8S7337C11[];
extern  VTBL_ENTRY _ZTV8S7337C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C11[];
extern Class_Descriptor cd_S7337C4;
extern VTBL_ENTRY _ZTI7S7337C4[];
extern  VTBL_ENTRY _ZTV7S7337C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C4[];
static Base_Class bases_S7337C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7337C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C9,    ABISELECT(184,96), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C7,    ABISELECT(128,68), //bcp->offset
    38, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7337C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7337C5,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7337C6,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7337C12,    ABISELECT(224,120), //bcp->offset
    105, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7337C11,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 0},
  {&cd_S7337C4,    ABISELECT(208,108), //bcp->offset
    65, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7337C13[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C13D1Ev();
extern void _ZN8S7337C13D0Ev();
extern void _ZN8S7337C133v43Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N8S7337C13D1Ev,_ZTv0_n40_N8S7337C13D1Ev)();
extern void ABISELECT(_ZThn16_N8S7337C13D1Ev,_ZThn8_N8S7337C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7337C13D0Ev,_ZTv0_n40_N8S7337C13D0Ev)();
extern void ABISELECT(_ZThn16_N8S7337C13D0Ev,_ZThn8_N8S7337C13D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S7337C13D1Ev,_ZTv0_n24_N8S7337C13D1Ev)();
extern void ABISELECT(_ZThn128_N8S7337C13D1Ev,_ZThn68_N8S7337C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7337C13D0Ev,_ZTv0_n24_N8S7337C13D0Ev)();
extern void ABISELECT(_ZThn128_N8S7337C13D0Ev,_ZThn68_N8S7337C13D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n88_N8S7337C13D1Ev,_ZTv0_n44_N8S7337C13D1Ev)();
extern void ABISELECT(_ZThn208_N8S7337C13D1Ev,_ZThn108_N8S7337C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7337C13D0Ev,_ZTv0_n44_N8S7337C13D0Ev)();
extern void ABISELECT(_ZThn208_N8S7337C13D0Ev,_ZThn108_N8S7337C13D0Ev)() __attribute__((weak));
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY vtc_S7337C13[] = {
  ABISELECT(208,108),
  ABISELECT(184,96),
  0,
  ABISELECT(128,68),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7337C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C133v43Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(112,60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7337C13D1Ev,_ZTv0_n40_N8S7337C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7337C13D0Ev,_ZTv0_n40_N8S7337C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C13D1Ev,_ZTv0_n24_N8S7337C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C13D0Ev,_ZTv0_n24_N8S7337C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-208,-108),
  0,
  0,
  0,
  ABISELECT(-192,-100),
  ABISELECT(-24,-12),
  ABISELECT(-208,-108),
  ABISELECT(-80,-40),
  ABISELECT(-208,-108),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7337C13D1Ev,_ZTv0_n44_N8S7337C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7337C13D0Ev,_ZTv0_n44_N8S7337C13D0Ev),
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern VTBL_ENTRY _ZTV8S7337C13[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C5D1Ev();
extern void _ZN7S7337C5D0Ev();
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__8S7337C13[] = {
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(112,60),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C67S7337C5__8S7337C13[] = {
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(112,60),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C67S7337C5__8S7337C13[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C67S7337C5__8S7337C13[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C67S7337C5__8S7337C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C5__8S7337C13[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C5__8S7337C13[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C5__8S7337C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C7D1Ev();
extern void _ZN7S7337C7D0Ev();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__8S7337C13[] = {
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C7__8S7337C13[] = {
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C7__8S7337C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C4D1Ev();
extern void _ZN7S7337C4D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C4__8S7337C13[] = {
  ABISELECT(-192,-100),
  ABISELECT(-24,-12),
  ABISELECT(-208,-108),
  ABISELECT(-80,-40),
  ABISELECT(-208,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN8S7337C11D1Ev();
extern void _ZN8S7337C11D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C117S7337C4__8S7337C13[] = {
  ABISELECT(-24,-12),
  ABISELECT(-208,-108),
  ABISELECT(-80,-40),
  ABISELECT(-208,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C68S7337C117S7337C4__A1__8S7337C13[] = {
  ABISELECT(-24,-12),
  ABISELECT(-208,-108),
  ABISELECT(-80,-40),
  ABISELECT(-208,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C68S7337C117S7337C4__A1__8S7337C13[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C68S7337C117S7337C4__A1__8S7337C13[] = {
  0,
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C68S7337C117S7337C4__A1__8S7337C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C117S7337C4__8S7337C13[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C128S7337C117S7337C4__8S7337C13[] = {
  0,
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev)();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__8S7337C117S7337C4__8S7337C13[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C117S7337C4__8S7337C13[] = {
  0,
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__8S7337C117S7337C4__8S7337C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C12__8S7337C117S7337C4__8S7337C13[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev)();
extern void ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev)();
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C4__8S7337C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(192,100),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(112,60),
  ABISELECT(-16,-8),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev)();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C4__8S7337C13[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C4__8S7337C13[] = {
  0,
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C4__8S7337C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C11__7S7337C4__8S7337C13[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
static  VTT_ENTRY vtt_S7337C13[] = {
  {&(_ZTV8S7337C13[8]),  8,113},
  {&(_ZTV8S7337C13[27]),  27,113},
  {&(_ZTV8S7337C13[47]),  47,113},
  {&(_ZTV8S7337C13[8]),  8,113},
  {&(_ZTV8S7337C13[60]),  60,113},
  {&(_ZTV8S7337C13[89]),  89,113},
  {&(_ZTV8S7337C13[109]),  109,113},
  {&(_tg__ZTV7S7337C5__8S7337C13[6]),  6,17},
  {&(_tg__ZTV7S7337C67S7337C5__8S7337C13[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C67S7337C5__8S7337C13[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C67S7337C5__8S7337C13[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C67S7337C5__8S7337C13[7]),  7,12},
  {&(_tg__ZTV7S7337C7__7S7337C5__8S7337C13[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C5__8S7337C13[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C5__8S7337C13[7]),  7,12},
  {&(_tg__ZTV7S7337C7__8S7337C13[5]),  5,11},
  {&(_tg__ZTV7S7337C8__7S7337C7__8S7337C13[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C7__8S7337C13[7]),  7,12},
  {&(_tg__ZTV7S7337C4__8S7337C13[7]),  7,23},
  {&(_tg__ZTV8S7337C117S7337C4__8S7337C13[6]),  6,16},
  {&(_tg__ZTV7S7337C68S7337C117S7337C4__A1__8S7337C13[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C68S7337C117S7337C4__A1__8S7337C13[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C68S7337C117S7337C4__A1__8S7337C13[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C68S7337C117S7337C4__A1__8S7337C13[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C117S7337C4__8S7337C13[4]),  4,8},
  {&(_tg__ZTV7S7337C8__8S7337C128S7337C117S7337C4__8S7337C13[3]),  3,4},
  {&(_tg__ZTV7S7337C7__8S7337C117S7337C4__8S7337C13[9]),  9,15},
  {&(_tg__ZTV7S7337C8__8S7337C117S7337C4__8S7337C13[3]),  3,4},
  {&(_tg__ZTV7S7337C9__8S7337C117S7337C4__8S7337C13[7]),  7,12},
  {&(_tg__ZTV8S7337C12__8S7337C117S7337C4__8S7337C13[4]),  4,8},
  {&(_tg__ZTV7S7337C5__7S7337C4__8S7337C13[15]),  15,26},
  {&(_tg__ZTV7S7337C7__7S7337C4__8S7337C13[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C4__8S7337C13[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C4__8S7337C13[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C11__7S7337C4__8S7337C13[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S7337C13[];
extern  VTBL_ENTRY _ZTV8S7337C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C13[];
static VTBL_ENTRY alt_thunk_names151[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7337C13D0Ev,_ZTv0_n44_N8S7337C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7337C13D0Ev,_ZThn108_N8S7337C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7337C13D1Ev,_ZTv0_n44_N8S7337C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7337C13D1Ev,_ZThn108_N8S7337C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C13D0Ev,_ZTv0_n24_N8S7337C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7337C13D0Ev,_ZThn68_N8S7337C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C13D1Ev,_ZTv0_n24_N8S7337C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7337C13D1Ev,_ZThn68_N8S7337C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7337C13D0Ev,_ZTv0_n40_N8S7337C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7337C13D0Ev,_ZThn8_N8S7337C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7337C13D1Ev,_ZTv0_n40_N8S7337C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7337C13D1Ev,_ZThn8_N8S7337C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7337C13 = {  "S7337C13", // class name
  bases_S7337C13, 9,
  &(vtc_S7337C13[0]), // expected_vtbl_contents
  &(vtt_S7337C13[0]), // expected_vtt_contents
  ABISELECT(272,148), // object size
  NSPAIRA(_ZTI8S7337C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7337C13),113, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7337C13),35, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names151,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7337C1  : S7337C2 , S7337C13 {
  void *s7337c1f0[2];
  long double s7337c1f1[10];
  virtual  ~S7337C1(); // _ZN7S7337C1D2Ev
  virtual void  v1(); // _ZN7S7337C12v1Ev
  virtual void  v2(); // _ZN7S7337C12v2Ev
  virtual void  v3(); // _ZN7S7337C12v3Ev
  virtual void  v4(); // _ZN7S7337C12v4Ev
  virtual void  v5(); // _ZN7S7337C12v5Ev
  virtual void  v6(); // _ZN7S7337C12v6Ev
  S7337C1(); // tgen
};
//SIG(1 S7337C1) C1{ BC2{ VBC3{ BC4{ VBC5{ BC6{ VBC7{ VBC8{ v7} VBC9{ v8 v9 v10 v11 v12 Fp FC8} vd v13 v14 v15 Fp[6]} v16 v17 v18 FL} vd v19 v20 v21 v22 v23 FC10{ v44 v45 v46 v47 v48 v49 Fp Fs}[4]} BC11{ BC6 BC12{ VBC8 v24 v25 v26 FL Fp} vd v27 v28 v29 v30 FC9} vd v31 v32 v33 v34 v35 v36} vd v37 v38 v39 v40 v41} VBC6 vd v42} BC13{ VBC5 VBC4 vd v43 FC8} vd v1 v2 v3 v4 v5 v6 Fp[2] FD[10]}


 S7337C1 ::~S7337C1(){ note_dtor("S7337C1", this);}
void  S7337C1 ::v1(){vfunc_called(this, "_ZN7S7337C12v1Ev");}
void  S7337C1 ::v2(){vfunc_called(this, "_ZN7S7337C12v2Ev");}
void  S7337C1 ::v3(){vfunc_called(this, "_ZN7S7337C12v3Ev");}
void  S7337C1 ::v4(){vfunc_called(this, "_ZN7S7337C12v4Ev");}
void  S7337C1 ::v5(){vfunc_called(this, "_ZN7S7337C12v5Ev");}
void  S7337C1 ::v6(){vfunc_called(this, "_ZN7S7337C12v6Ev");}
S7337C1 ::S7337C1(){ note_ctor("S7337C1", this);} // tgen

static void Test_S7337C1()
{
  extern Class_Descriptor cd_S7337C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(35,84)];
    init_test(&cd_S7337C1, buf);
    S7337C1 *dp, &lv = *(dp=new (buf) S7337C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(544,332), "sizeof(S7337C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7337C1)");
    check_base_class_offset(lv, (S7337C8*)(S7337C7*), 0, "S7337C1");
    check_base_class_offset(lv, (S7337C8*)(S7337C12*)(S7337C11*)(S7337C4*)(S7337C3*), 0, "S7337C1");
    /*is_ambiguous_... S7337C1::S7337C4 */ AMB_check_base_class_offset(lv, (S7337C8*)(S7337C12*)(S7337C11*)(S7337C4*), 0, "S7337C1");
    check_base_class_offset(lv, (S7337C9*)(S7337C7*), ABISELECT(440,268), "S7337C1");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*)(S7337C5*), ABISELECT(384,240), "S7337C1");
    check_base_class_offset(lv, (S7337C7*)(S7337C6*)(S7337C11*)(S7337C4*)(S7337C3*), ABISELECT(384,240), "S7337C1");
    /*is_ambiguous_... S7337C1::S7337C6 */ AMB_check_base_class_offset(lv, (S7337C7*)(S7337C6*), ABISELECT(384,240), "S7337C1");
    /*is_ambiguous_... S7337C1::S7337C4 */ AMB_check_base_class_offset(lv, (S7337C7*)(S7337C6*)(S7337C11*)(S7337C4*), ABISELECT(384,240), "S7337C1");
    check_base_class_offset(lv, (S7337C6*)(S7337C5*), ABISELECT(272,180), "S7337C1");
    check_base_class_offset(lv, (S7337C5*)(S7337C4*)(S7337C3*), ABISELECT(272,180), "S7337C1");
    check_base_class_offset(lv, (S7337C5*)(S7337C13*), ABISELECT(272,180), "S7337C1");
    /*is_ambiguous_... S7337C1::S7337C4 */ AMB_check_base_class_offset(lv, (S7337C5*)(S7337C4*), ABISELECT(272,180), "S7337C1");
    check_base_class_offset(lv, (S7337C6*)(S7337C11*)(S7337C4*)(S7337C3*), ABISELECT(208,140), "S7337C1");
    check_base_class_offset(lv, (S7337C12*)(S7337C11*)(S7337C4*)(S7337C3*), ABISELECT(224,152), "S7337C1");
    check_base_class_offset(lv, (S7337C11*)(S7337C4*)(S7337C3*), ABISELECT(208,140), "S7337C1");
    check_base_class_offset(lv, (S7337C4*)(S7337C3*), ABISELECT(208,140), "S7337C1");
    check_base_class_offset(lv, (S7337C3*)(S7337C2*), ABISELECT(208,140), "S7337C1");
    /*is_ambiguous_... S7337C2::S7337C6 */ AMB_check_base_class_offset(lv, (S7337C6*)(S7337C2*), ABISELECT(464,280), "S7337C1");
    check_base_class_offset(lv, (S7337C2*), 0, "S7337C1");
    /*is_ambiguous_... S7337C1::S7337C4 */ AMB_check_base_class_offset(lv, (S7337C6*)(S7337C11*)(S7337C4*), ABISELECT(480,292), "S7337C1");
    /*is_ambiguous_... S7337C1::S7337C4 */ AMB_check_base_class_offset(lv, (S7337C12*)(S7337C11*)(S7337C4*), ABISELECT(496,304), "S7337C1");
    /*is_ambiguous_... S7337C1::S7337C4 */ AMB_check_base_class_offset(lv, (S7337C11*)(S7337C4*), ABISELECT(480,292), "S7337C1");
    check_base_class_offset(lv, (S7337C4*)(S7337C13*), ABISELECT(480,292), "S7337C1");
    check_base_class_offset(lv, (S7337C13*), ABISELECT(8,4), "S7337C1");
    check_field_offset(lv, s7337c1f0, ABISELECT(24,12), "S7337C1.s7337c1f0");
    check_field_offset(lv, s7337c1f1, ABISELECT(48,20), "S7337C1.s7337c1f1");
    test_class_info(&lv, &cd_S7337C1);
    dp->~S7337C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7337C1(Test_S7337C1, "S7337C1", ABISELECT(544,332));

#else // __cplusplus

extern void _ZN7S7337C1C1Ev();
extern void _ZN7S7337C1D2Ev();
Name_Map name_map_S7337C1[] = {
  NSPAIR(_ZN7S7337C1C1Ev),
  NSPAIR(_ZN7S7337C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7337C8;
extern VTBL_ENTRY _ZTI7S7337C8[];
extern  VTBL_ENTRY _ZTV7S7337C8[];
extern Class_Descriptor cd_S7337C9;
extern VTBL_ENTRY _ZTI7S7337C9[];
extern  VTBL_ENTRY _ZTV7S7337C9[];
extern Class_Descriptor cd_S7337C7;
extern VTBL_ENTRY _ZTI7S7337C7[];
extern  VTBL_ENTRY _ZTV7S7337C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C7[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C5;
extern VTBL_ENTRY _ZTI7S7337C5[];
extern  VTBL_ENTRY _ZTV7S7337C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C5[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C12;
extern VTBL_ENTRY _ZTI8S7337C12[];
extern  VTBL_ENTRY _ZTV8S7337C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C12[];
extern Class_Descriptor cd_S7337C11;
extern VTBL_ENTRY _ZTI8S7337C11[];
extern  VTBL_ENTRY _ZTV8S7337C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C11[];
extern Class_Descriptor cd_S7337C4;
extern VTBL_ENTRY _ZTI7S7337C4[];
extern  VTBL_ENTRY _ZTV7S7337C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C4[];
extern Class_Descriptor cd_S7337C3;
extern VTBL_ENTRY _ZTI7S7337C3[];
extern  VTBL_ENTRY _ZTV7S7337C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C3[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C2;
extern VTBL_ENTRY _ZTI7S7337C2[];
extern  VTBL_ENTRY _ZTV7S7337C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C2[];
extern Class_Descriptor cd_S7337C6;
extern VTBL_ENTRY _ZTI7S7337C6[];
extern  VTBL_ENTRY _ZTV7S7337C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C6[];
extern Class_Descriptor cd_S7337C12;
extern VTBL_ENTRY _ZTI8S7337C12[];
extern  VTBL_ENTRY _ZTV8S7337C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C12[];
extern Class_Descriptor cd_S7337C11;
extern VTBL_ENTRY _ZTI8S7337C11[];
extern  VTBL_ENTRY _ZTV8S7337C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C11[];
extern Class_Descriptor cd_S7337C4;
extern VTBL_ENTRY _ZTI7S7337C4[];
extern  VTBL_ENTRY _ZTV7S7337C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C4[];
extern Class_Descriptor cd_S7337C13;
extern VTBL_ENTRY _ZTI8S7337C13[];
extern  VTBL_ENTRY _ZTV8S7337C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7337C13[];
static Base_Class bases_S7337C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7337C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C9,    ABISELECT(440,268), //bcp->offset
    131, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7337C7,    ABISELECT(384,240), //bcp->offset
    116, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7337C6,    ABISELECT(272,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7337C5,    ABISELECT(272,180), //bcp->offset
    90, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7337C6,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7337C12,    ABISELECT(224,152), //bcp->offset
    82, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7337C11,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7337C4,    ABISELECT(208,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7337C3,    ABISELECT(208,140), //bcp->offset
    32, //bcp->virtual_function_table_offset
    29, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7337C6,    ABISELECT(464,280), //bcp->offset
    143, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7337C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7337C6,    ABISELECT(480,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7337C12,    ABISELECT(496,304), //bcp->offset
    199, //bcp->virtual_function_table_offset
    4, //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
    14, //immediately_derived
  0, 0},
  {&cd_S7337C11,    ABISELECT(480,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7337C4,    ABISELECT(480,292), //bcp->offset
    159, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7337C13,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7337C1[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C1D1Ev();
extern void _ZN7S7337C1D0Ev();
extern void _ZN7S7337C23v42Ev();
extern void _ZN7S7337C12v1Ev();
extern void _ZN7S7337C12v2Ev();
extern void _ZN7S7337C12v3Ev();
extern void _ZN7S7337C12v4Ev();
extern void _ZN7S7337C12v5Ev();
extern void _ZN7S7337C12v6Ev();
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZThn8_N7S7337C1D1Ev,_ZThn4_N7S7337C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7337C1D0Ev,_ZThn4_N7S7337C1D0Ev)();
extern void _ZN8S7337C133v43Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n88_N7S7337C1D1Ev,_ZTv0_n44_N7S7337C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S7337C1D1Ev,_ZThn140_N7S7337C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7337C1D0Ev,_ZTv0_n44_N7S7337C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S7337C1D0Ev,_ZThn140_N7S7337C1D0Ev)() __attribute__((weak));
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
extern void _ZN7S7337C33v37Ev();
extern void _ZN7S7337C33v38Ev();
extern void _ZN7S7337C33v39Ev();
extern void _ZN7S7337C33v40Ev();
extern void _ZN7S7337C33v41Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C1D1Ev,_ZTv0_n40_N7S7337C1D1Ev)();
extern void ABISELECT(_ZThn272_N7S7337C1D1Ev,_ZThn180_N7S7337C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C1D0Ev,_ZTv0_n40_N7S7337C1D0Ev)();
extern void ABISELECT(_ZThn272_N7S7337C1D0Ev,_ZThn180_N7S7337C1D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C1D1Ev,_ZTv0_n24_N7S7337C1D1Ev)();
extern void ABISELECT(_ZThn384_N7S7337C1D1Ev,_ZThn240_N7S7337C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C1D0Ev,_ZTv0_n24_N7S7337C1D0Ev)();
extern void ABISELECT(_ZThn384_N7S7337C1D0Ev,_ZThn240_N7S7337C1D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C1D1Ev,_ZTv0_n40_N7S7337C1D1Ev)();
extern void ABISELECT(_ZThn464_N7S7337C1D1Ev,_ZThn280_N7S7337C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C1D0Ev,_ZTv0_n40_N7S7337C1D0Ev)();
extern void ABISELECT(_ZThn464_N7S7337C1D0Ev,_ZThn280_N7S7337C1D0Ev)() __attribute__((weak));
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n88_N7S7337C1D1Ev,_ZTv0_n44_N7S7337C1D1Ev)();
extern void ABISELECT(_ZThn480_N7S7337C1D1Ev,_ZThn292_N7S7337C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7337C1D0Ev,_ZTv0_n44_N7S7337C1D0Ev)();
extern void ABISELECT(_ZThn480_N7S7337C1D0Ev,_ZThn292_N7S7337C1D0Ev)() __attribute__((weak));
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY vtc_S7337C1[] = {
  ABISELECT(480,292),
  ABISELECT(464,280),
  ABISELECT(440,268),
  0,
  ABISELECT(384,240),
  ABISELECT(272,180),
  ABISELECT(208,140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C1[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C23v42Ev,
  (VTBL_ENTRY)&_ZN7S7337C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7337C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7337C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7337C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7337C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7337C12v6Ev,
  ABISELECT(472,288),
  ABISELECT(432,264),
  ABISELECT(-8,-4),
  ABISELECT(376,236),
  ABISELECT(264,176),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7337C1[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7337C1D1Ev,_ZThn4_N7S7337C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7337C1D0Ev,_ZThn4_N7S7337C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7337C133v43Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-208,-140),
  0,
  0,
  0,
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(-208,-140),
  ABISELECT(176,100),
  ABISELECT(-208,-140),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI7S7337C1[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7337C1D1Ev,_ZTv0_n44_N7S7337C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7337C1D0Ev,_ZTv0_n44_N7S7337C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v37Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v38Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v39Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v40Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v41Ev,
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI7S7337C1[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-272,-180),
  ABISELECT(112,60),
  ABISELECT(-272,-180),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI7S7337C1[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C1D1Ev,_ZTv0_n40_N7S7337C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C1D0Ev,_ZTv0_n40_N7S7337C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
  0,
  0,
  0,
  ABISELECT(-384,-240),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  (VTBL_ENTRY)&(_ZTI7S7337C1[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C1D1Ev,_ZTv0_n24_N7S7337C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C1D0Ev,_ZTv0_n24_N7S7337C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI7S7337C1[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
  ABISELECT(-464,-280),
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-464,-280),
  ABISELECT(-80,-40),
  ABISELECT(-464,-280),
  ABISELECT(-464,-280),
  (VTBL_ENTRY)&(_ZTI7S7337C1[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C1D1Ev,_ZTv0_n40_N7S7337C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C1D0Ev,_ZTv0_n40_N7S7337C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-480,-292),
  0,
  0,
  0,
  ABISELECT(-208,-112),
  ABISELECT(-40,-24),
  ABISELECT(-480,-292),
  ABISELECT(-96,-52),
  ABISELECT(-480,-292),
  ABISELECT(-480,-292),
  (VTBL_ENTRY)&(_ZTI7S7337C1[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7337C1D1Ev,_ZTv0_n44_N7S7337C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7337C1D0Ev,_ZTv0_n44_N7S7337C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI7S7337C1[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern VTBL_ENTRY _ZTV7S7337C1[];
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C2D1Ev();
extern void _ZN7S7337C2D0Ev();
extern void _ZN7S7337C23v42Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C2__7S7337C1[] = {
  ABISELECT(464,280),
  ABISELECT(440,268),
  0,
  ABISELECT(384,240),
  ABISELECT(272,180),
  ABISELECT(208,140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C23v42Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n88_N7S7337C2D1Ev,_ZTv0_n44_N7S7337C2D1Ev)();
extern void ABISELECT(_ZThn208_N7S7337C2D1Ev,_ZThn140_N7S7337C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7337C2D0Ev,_ZTv0_n44_N7S7337C2D0Ev)();
extern void ABISELECT(_ZThn208_N7S7337C2D0Ev,_ZThn140_N7S7337C2D0Ev)() __attribute__((weak));
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
extern void _ZN7S7337C33v37Ev();
extern void _ZN7S7337C33v38Ev();
extern void _ZN7S7337C33v39Ev();
extern void _ZN7S7337C33v40Ev();
extern void _ZN7S7337C33v41Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C3__7S7337C2__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-208,-140),
  0,
  0,
  0,
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(-208,-140),
  ABISELECT(176,100),
  ABISELECT(-208,-140),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7337C2D1Ev,_ZTv0_n44_N7S7337C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7337C2D0Ev,_ZTv0_n44_N7S7337C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v37Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v38Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v39Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v40Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v41Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C2D1Ev,_ZTv0_n40_N7S7337C2D1Ev)();
extern void ABISELECT(_ZThn272_N7S7337C2D1Ev,_ZThn180_N7S7337C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C2D0Ev,_ZTv0_n40_N7S7337C2D0Ev)();
extern void ABISELECT(_ZThn272_N7S7337C2D0Ev,_ZThn180_N7S7337C2D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C2__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-272,-180),
  ABISELECT(112,60),
  ABISELECT(-272,-180),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C2D1Ev,_ZTv0_n40_N7S7337C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C2D0Ev,_ZTv0_n40_N7S7337C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C2D1Ev,_ZTv0_n24_N7S7337C2D1Ev)();
extern void ABISELECT(_ZThn384_N7S7337C2D1Ev,_ZThn240_N7S7337C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C2D0Ev,_ZTv0_n24_N7S7337C2D0Ev)();
extern void ABISELECT(_ZThn384_N7S7337C2D0Ev,_ZThn240_N7S7337C2D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C2__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(-384,-240),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C2D1Ev,_ZTv0_n24_N7S7337C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C2D0Ev,_ZTv0_n24_N7S7337C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C2__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C117S7337C47S7337C3__7S7337C2__7S7337C1[] = {
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C2D1Ev,_ZTv0_n40_N7S7337C2D1Ev)();
extern void ABISELECT(_ZThn464_N7S7337C2D1Ev,_ZThn280_N7S7337C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C2D0Ev,_ZTv0_n40_N7S7337C2D0Ev)();
extern void ABISELECT(_ZThn464_N7S7337C2D0Ev,_ZThn280_N7S7337C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7337C6__A2__7S7337C2__7S7337C1[] = {
  ABISELECT(-464,-280),
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-464,-280),
  ABISELECT(-80,-40),
  ABISELECT(-464,-280),
  ABISELECT(-464,-280),
  (VTBL_ENTRY)&(_ZTI7S7337C2[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C2D1Ev,_ZTv0_n40_N7S7337C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C2D0Ev,_ZTv0_n40_N7S7337C2D0Ev),
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C13D1Ev();
extern void _ZN8S7337C13D0Ev();
extern void _ZN8S7337C133v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C13__7S7337C1[] = {
  ABISELECT(472,288),
  ABISELECT(432,264),
  ABISELECT(-8,-4),
  ABISELECT(376,236),
  ABISELECT(264,176),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7337C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C133v43Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N8S7337C13D1Ev,_ZTv0_n40_N8S7337C13D1Ev)();
extern void ABISELECT(_ZThn264_N8S7337C13D1Ev,_ZThn176_N8S7337C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S7337C13D0Ev,_ZTv0_n40_N8S7337C13D0Ev)();
extern void ABISELECT(_ZThn264_N8S7337C13D0Ev,_ZThn176_N8S7337C13D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__8S7337C13__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-264,-176),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-272,-180),
  ABISELECT(112,60),
  ABISELECT(-272,-180),
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7337C13D1Ev,_ZTv0_n40_N8S7337C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S7337C13D0Ev,_ZTv0_n40_N8S7337C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S7337C13D1Ev,_ZTv0_n24_N8S7337C13D1Ev)();
extern void ABISELECT(_ZThn376_N8S7337C13D1Ev,_ZThn236_N8S7337C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7337C13D0Ev,_ZTv0_n24_N8S7337C13D0Ev)();
extern void ABISELECT(_ZThn376_N8S7337C13D0Ev,_ZThn236_N8S7337C13D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__8S7337C13__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(-376,-236),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(-376,-236),
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C13D1Ev,_ZTv0_n24_N8S7337C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C13D0Ev,_ZTv0_n24_N8S7337C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C13__7S7337C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__8S7337C13__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-264),
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n88_N8S7337C13D1Ev,_ZTv0_n44_N8S7337C13D1Ev)();
extern void ABISELECT(_ZThn472_N8S7337C13D1Ev,_ZThn288_N8S7337C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7337C13D0Ev,_ZTv0_n44_N8S7337C13D0Ev)();
extern void ABISELECT(_ZThn472_N8S7337C13D0Ev,_ZThn288_N8S7337C13D0Ev)() __attribute__((weak));
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C4__8S7337C13__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-472,-288),
  0,
  0,
  0,
  ABISELECT(-208,-112),
  ABISELECT(-40,-24),
  ABISELECT(-480,-292),
  ABISELECT(-96,-52),
  ABISELECT(-480,-292),
  ABISELECT(-472,-288),
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7337C13D1Ev,_ZTv0_n44_N8S7337C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7337C13D0Ev,_ZTv0_n44_N8S7337C13D0Ev),
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C117S7337C4__8S7337C13__7S7337C1[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  ABISELECT(-488,-300),
  (VTBL_ENTRY)&(_ZTI8S7337C13[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C3D1Ev();
extern void _ZN7S7337C3D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
extern void _ZN7S7337C33v37Ev();
extern void _ZN7S7337C33v38Ev();
extern void _ZN7S7337C33v39Ev();
extern void _ZN7S7337C33v40Ev();
extern void _ZN7S7337C33v41Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C3__7S7337C1[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(-208,-140),
  ABISELECT(176,100),
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C3D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v37Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v38Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v39Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v40Ev,
  (VTBL_ENTRY)&_ZN7S7337C33v41Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C4D1Ev();
extern void _ZN7S7337C4D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C47S7337C3__7S7337C1[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(-208,-140),
  ABISELECT(176,100),
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN8S7337C11D1Ev();
extern void _ZN8S7337C11D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C117S7337C47S7337C3__7S7337C1[] = {
  ABISELECT(232,128),
  ABISELECT(-208,-140),
  ABISELECT(176,100),
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C1[] = {
  ABISELECT(232,128),
  ABISELECT(-208,-140),
  ABISELECT(176,100),
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S7337C6D1Ev,_ZThn100_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S7337C6D0Ev,_ZThn100_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C1[] = {
  0,
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C117S7337C47S7337C3__7S7337C1[] = {
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C128S7337C117S7337C47S7337C3__7S7337C1[] = {
  0,
  ABISELECT(224,152),
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev)();
extern void ABISELECT(_ZThn176_N8S7337C11D1Ev,_ZThn100_N8S7337C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev)();
extern void ABISELECT(_ZThn176_N8S7337C11D0Ev,_ZThn100_N8S7337C11D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__8S7337C117S7337C47S7337C3__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C117S7337C47S7337C3__7S7337C1[] = {
  0,
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__8S7337C117S7337C47S7337C3__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C12__8S7337C117S7337C47S7337C3__7S7337C1[] = {
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7337C4D1Ev,_ZThn40_N7S7337C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7337C4D0Ev,_ZThn40_N7S7337C4D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C47S7337C3__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-272,-180),
  ABISELECT(112,60),
  ABISELECT(-272,-180),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev)();
extern void ABISELECT(_ZThn176_N7S7337C4D1Ev,_ZThn100_N7S7337C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev)();
extern void ABISELECT(_ZThn176_N7S7337C4D0Ev,_ZThn100_N7S7337C4D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C47S7337C3__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C47S7337C3__7S7337C1[] = {
  0,
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C47S7337C3__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C11__7S7337C47S7337C3__7S7337C1[] = {
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C3D1Ev,_ZTv0_n40_N7S7337C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7337C3D1Ev,_ZThn40_N7S7337C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7337C3D0Ev,_ZTv0_n40_N7S7337C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7337C3D0Ev,_ZThn40_N7S7337C3D0Ev)() __attribute__((weak));
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C3__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-272,-180),
  ABISELECT(112,60),
  ABISELECT(-272,-180),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C3D1Ev,_ZTv0_n40_N7S7337C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C3D0Ev,_ZTv0_n40_N7S7337C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C3D1Ev,_ZTv0_n24_N7S7337C3D1Ev)();
extern void ABISELECT(_ZThn176_N7S7337C3D1Ev,_ZThn100_N7S7337C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C3D0Ev,_ZTv0_n24_N7S7337C3D0Ev)();
extern void ABISELECT(_ZThn176_N7S7337C3D0Ev,_ZThn100_N7S7337C3D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C3__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C3D1Ev,_ZTv0_n24_N7S7337C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C3D0Ev,_ZTv0_n24_N7S7337C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C3__7S7337C1[] = {
  0,
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C3__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C117S7337C4__7S7337C3__7S7337C1[] = {
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7337C3[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C5D1Ev();
extern void _ZN7S7337C5D0Ev();
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C1[] = {
  ABISELECT(168,88),
  ABISELECT(-272,-180),
  ABISELECT(112,60),
  ABISELECT(-272,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C67S7337C5__7S7337C1[] = {
  ABISELECT(168,88),
  ABISELECT(-272,-180),
  ABISELECT(112,60),
  ABISELECT(-272,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C67S7337C5__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C67S7337C5__7S7337C1[] = {
  0,
  ABISELECT(272,180),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C67S7337C5__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev)() __attribute__((weak));
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C5__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C5__7S7337C1[] = {
  0,
  ABISELECT(272,180),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C5__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7337C5[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C7D1Ev();
extern void _ZN7S7337C7D0Ev();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C1[] = {
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C7__7S7337C1[] = {
  0,
  ABISELECT(384,240),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C7__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7337C7[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C6__A2__7S7337C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-464,-280),
  ABISELECT(-80,-40),
  ABISELECT(-464,-280),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C6__A2__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C6__A2__7S7337C1[] = {
  0,
  ABISELECT(464,280),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C6__A2__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C4D1Ev();
extern void _ZN7S7337C4D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
extern void _ZN7S7337C43v31Ev();
extern void _ZN7S7337C43v32Ev();
extern void _ZN7S7337C43v33Ev();
extern void _ZN7S7337C43v34Ev();
extern void _ZN7S7337C43v35Ev();
extern void _ZN7S7337C43v36Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C4__A1__7S7337C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-40,-24),
  ABISELECT(-480,-292),
  ABISELECT(-96,-52),
  ABISELECT(-480,-292),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C4D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v31Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v32Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v33Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v34Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v35Ev,
  (VTBL_ENTRY)&_ZN7S7337C43v36Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN8S7337C11D1Ev();
extern void _ZN8S7337C11D0Ev();
extern void _ZN8S7337C113v27Ev();
extern void _ZN8S7337C113v28Ev();
extern void _ZN8S7337C113v29Ev();
extern void _ZN8S7337C113v30Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C117S7337C4__A1__7S7337C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-480,-292),
  ABISELECT(-96,-52),
  ABISELECT(-480,-292),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7337C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v28Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v29Ev,
  (VTBL_ENTRY)&_ZN8S7337C113v30Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void _ZN7S7337C6D1Ev();
extern void _ZN7S7337C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C68S7337C117S7337C4__A3__7S7337C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-480,-292),
  ABISELECT(-96,-52),
  ABISELECT(-480,-292),
  0,
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7337C6D0Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev)();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C68S7337C117S7337C4__A3__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(96,52),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C68S7337C117S7337C4__A3__7S7337C1[] = {
  0,
  ABISELECT(480,292),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C68S7337C117S7337C4__A3__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7337C6[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C117S7337C4__A1__7S7337C1[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C128S7337C117S7337C4__A1__7S7337C1[] = {
  0,
  ABISELECT(496,304),
  (VTBL_ENTRY)&(_ZTI8S7337C12[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev)();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__8S7337C117S7337C4__A1__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(96,52),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__8S7337C117S7337C4__A1__7S7337C1[] = {
  0,
  ABISELECT(480,292),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__8S7337C117S7337C4__A1__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C12__8S7337C117S7337C4__A1__7S7337C1[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7337C11[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN7S7337C63v16Ev();
extern void _ZN7S7337C63v17Ev();
extern void _ZN7S7337C63v18Ev();
extern void ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev)();
extern void ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev)();
extern void _ZN7S7337C53v19Ev();
extern void _ZN7S7337C53v20Ev();
extern void _ZN7S7337C53v21Ev();
extern void _ZN7S7337C53v22Ev();
extern void _ZN7S7337C53v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C5__7S7337C4__A1__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,112),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-272,-180),
  ABISELECT(112,60),
  ABISELECT(-272,-180),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7337C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v20Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7337C53v23Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev)();
extern void _ZN7S7337C73v13Ev();
extern void _ZN7S7337C73v14Ev();
extern void _ZN7S7337C73v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C7__7S7337C4__A1__7S7337C1[] = {
  0,
  0,
  0,
  ABISELECT(96,52),
  ABISELECT(56,28),
  ABISELECT(-384,-240),
  ABISELECT(-384,-240),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7337C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7337C73v15Ev,
};
extern void _ZN7S7337C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C8__7S7337C4__A1__7S7337C1[] = {
  0,
  ABISELECT(480,292),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
};
extern void _ZN7S7337C92v8Ev();
extern void _ZN7S7337C92v9Ev();
extern void _ZN7S7337C93v10Ev();
extern void _ZN7S7337C93v11Ev();
extern void _ZN7S7337C93v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7337C9__7S7337C4__A1__7S7337C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7337C92v9Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v10Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v11Ev,
  (VTBL_ENTRY)&_ZN7S7337C93v12Ev,
};
extern void _ZN7S7337C82v7Ev();
extern void _ZN8S7337C123v24Ev();
extern void _ZN8S7337C123v25Ev();
extern void _ZN8S7337C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7337C128S7337C11__7S7337C4__A1__7S7337C1[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7337C4[0]),
  (VTBL_ENTRY)&_ZN7S7337C82v7Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7337C123v26Ev,
};
static  VTT_ENTRY vtt_S7337C1[] = {
  {&(_ZTV7S7337C1[10]),  10,207},
  {&(_tg__ZTV7S7337C2__7S7337C1[9]),  9,13},
  {&(_tg__ZTV7S7337C3__7S7337C2__7S7337C1[29]),  29,50},
  {&(_tg__ZTV7S7337C5__7S7337C2__7S7337C1[15]),  15,26},
  {&(_tg__ZTV7S7337C7__7S7337C2__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C2__7S7337C1[9]),  9,13},
  {&(_tg__ZTV7S7337C9__7S7337C2__7S7337C1[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C117S7337C47S7337C3__7S7337C2__7S7337C1[4]),  4,8},
  {&(_tg__ZTV7S7337C6__A2__7S7337C2__7S7337C1[10]),  10,16},
  {&(_tg__ZTV8S7337C13__7S7337C1[8]),  8,12},
  {&(_tg__ZTV7S7337C5__8S7337C13__7S7337C1[15]),  15,26},
  {&(_tg__ZTV7S7337C7__8S7337C13__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C8__8S7337C13__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__8S7337C13__7S7337C1[7]),  7,12},
  {&(_tg__ZTV7S7337C4__8S7337C13__7S7337C1[24]),  24,40},
  {&(_tg__ZTV8S7337C128S7337C117S7337C4__8S7337C13__7S7337C1[4]),  4,8},
  {&(_ZTV7S7337C1[61]),  61,207},
  {&(_ZTV7S7337C1[105]),  105,207},
  {&(_ZTV7S7337C1[125]),  125,207},
  {&(_ZTV7S7337C1[10]),  10,207},
  {&(_ZTV7S7337C1[138]),  138,207},
  {&(_ZTV7S7337C1[86]),  86,207},
  {&(_ZTV7S7337C1[153]),  153,207},
  {&(_ZTV7S7337C1[28]),  28,207},
  {&(_ZTV7S7337C1[183]),  183,207},
  {&(_ZTV7S7337C1[203]),  203,207},
  {&(_tg__ZTV7S7337C3__7S7337C1[7]),  7,28},
  {&(_tg__ZTV7S7337C47S7337C3__7S7337C1[7]),  7,23},
  {&(_tg__ZTV8S7337C117S7337C47S7337C3__7S7337C1[6]),  6,16},
  {&(_tg__ZTV7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C1[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C68S7337C117S7337C47S7337C3__A1__7S7337C1[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C117S7337C47S7337C3__7S7337C1[4]),  4,8},
  {&(_tg__ZTV7S7337C8__8S7337C128S7337C117S7337C47S7337C3__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C7__8S7337C117S7337C47S7337C3__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C8__8S7337C117S7337C47S7337C3__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__8S7337C117S7337C47S7337C3__7S7337C1[7]),  7,12},
  {&(_tg__ZTV8S7337C12__8S7337C117S7337C47S7337C3__7S7337C1[4]),  4,8},
  {&(_tg__ZTV7S7337C5__7S7337C47S7337C3__7S7337C1[15]),  15,26},
  {&(_tg__ZTV7S7337C7__7S7337C47S7337C3__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C47S7337C3__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C47S7337C3__7S7337C1[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C11__7S7337C47S7337C3__7S7337C1[4]),  4,8},
  {&(_tg__ZTV7S7337C5__7S7337C3__7S7337C1[15]),  15,26},
  {&(_tg__ZTV7S7337C7__7S7337C3__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C3__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C3__7S7337C1[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C117S7337C4__7S7337C3__7S7337C1[4]),  4,8},
  {&(_tg__ZTV7S7337C5__7S7337C1[6]),  6,17},
  {&(_tg__ZTV7S7337C67S7337C5__7S7337C1[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C67S7337C5__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C67S7337C5__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C67S7337C5__7S7337C1[7]),  7,12},
  {&(_tg__ZTV7S7337C7__7S7337C5__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C5__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C5__7S7337C1[7]),  7,12},
  {&(_tg__ZTV7S7337C7__7S7337C1[5]),  5,11},
  {&(_tg__ZTV7S7337C8__7S7337C7__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C7__7S7337C1[7]),  7,12},
  {&(_tg__ZTV7S7337C6__A2__7S7337C1[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C6__A2__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C6__A2__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C6__A2__7S7337C1[7]),  7,12},
  {&(_tg__ZTV7S7337C4__A1__7S7337C1[7]),  7,23},
  {&(_tg__ZTV8S7337C117S7337C4__A1__7S7337C1[6]),  6,16},
  {&(_tg__ZTV7S7337C68S7337C117S7337C4__A3__7S7337C1[6]),  6,12},
  {&(_tg__ZTV7S7337C7__7S7337C68S7337C117S7337C4__A3__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C68S7337C117S7337C4__A3__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C68S7337C117S7337C4__A3__7S7337C1[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C117S7337C4__A1__7S7337C1[4]),  4,8},
  {&(_tg__ZTV7S7337C8__8S7337C128S7337C117S7337C4__A1__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C7__8S7337C117S7337C4__A1__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C8__8S7337C117S7337C4__A1__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__8S7337C117S7337C4__A1__7S7337C1[7]),  7,12},
  {&(_tg__ZTV8S7337C12__8S7337C117S7337C4__A1__7S7337C1[4]),  4,8},
  {&(_tg__ZTV7S7337C5__7S7337C4__A1__7S7337C1[15]),  15,26},
  {&(_tg__ZTV7S7337C7__7S7337C4__A1__7S7337C1[9]),  9,15},
  {&(_tg__ZTV7S7337C8__7S7337C4__A1__7S7337C1[3]),  3,4},
  {&(_tg__ZTV7S7337C9__7S7337C4__A1__7S7337C1[7]),  7,12},
  {&(_tg__ZTV8S7337C128S7337C11__7S7337C4__A1__7S7337C1[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S7337C1[];
extern  VTBL_ENTRY _ZTV7S7337C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7337C1[];
static VTBL_ENTRY alt_thunk_names152[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D0Ev,_ZTv0_n24_N7S7337C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D0Ev,_ZThn60_N7S7337C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C5D1Ev,_ZTv0_n24_N7S7337C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C5D1Ev,_ZThn60_N7S7337C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C3D0Ev,_ZTv0_n24_N7S7337C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C3D0Ev,_ZThn100_N7S7337C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C3D1Ev,_ZTv0_n24_N7S7337C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C3D1Ev,_ZThn100_N7S7337C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C3D0Ev,_ZTv0_n40_N7S7337C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C3D0Ev,_ZThn40_N7S7337C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C3D1Ev,_ZTv0_n40_N7S7337C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C3D1Ev,_ZThn40_N7S7337C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C4D0Ev,_ZTv0_n24_N7S7337C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C4D0Ev,_ZThn100_N7S7337C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C4D1Ev,_ZTv0_n24_N7S7337C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C4D1Ev,_ZThn100_N7S7337C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C4D0Ev,_ZTv0_n40_N7S7337C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C4D0Ev,_ZThn40_N7S7337C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C4D1Ev,_ZTv0_n40_N7S7337C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7337C4D1Ev,_ZThn40_N7S7337C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C11D0Ev,_ZTv0_n24_N8S7337C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7337C11D0Ev,_ZThn100_N8S7337C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C11D1Ev,_ZTv0_n24_N8S7337C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7337C11D1Ev,_ZThn100_N8S7337C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D0Ev,_ZTv0_n24_N7S7337C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D0Ev,_ZThn60_N7S7337C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C6D0Ev,_ZThn100_N7S7337C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C6D1Ev,_ZTv0_n24_N7S7337C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7337C6D1Ev,_ZThn60_N7S7337C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7337C6D1Ev,_ZThn100_N7S7337C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7337C13D0Ev,_ZTv0_n44_N8S7337C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S7337C13D0Ev,_ZThn288_N8S7337C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7337C13D1Ev,_ZTv0_n44_N8S7337C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S7337C13D1Ev,_ZThn288_N8S7337C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C13D0Ev,_ZTv0_n24_N8S7337C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S7337C13D0Ev,_ZThn236_N8S7337C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7337C13D1Ev,_ZTv0_n24_N8S7337C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S7337C13D1Ev,_ZThn236_N8S7337C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7337C13D0Ev,_ZTv0_n40_N8S7337C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7337C13D0Ev,_ZThn176_N8S7337C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S7337C13D1Ev,_ZTv0_n40_N8S7337C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7337C13D1Ev,_ZThn176_N8S7337C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C2D0Ev,_ZTv0_n24_N7S7337C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7337C2D0Ev,_ZThn240_N7S7337C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C2D1Ev,_ZTv0_n24_N7S7337C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7337C2D1Ev,_ZThn240_N7S7337C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C2D0Ev,_ZTv0_n40_N7S7337C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7337C2D0Ev,_ZThn280_N7S7337C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7337C2D0Ev,_ZThn180_N7S7337C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C2D1Ev,_ZTv0_n40_N7S7337C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7337C2D1Ev,_ZThn280_N7S7337C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7337C2D1Ev,_ZThn180_N7S7337C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7337C2D0Ev,_ZTv0_n44_N7S7337C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7337C2D0Ev,_ZThn140_N7S7337C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7337C2D1Ev,_ZTv0_n44_N7S7337C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7337C2D1Ev,_ZThn140_N7S7337C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C1D0Ev,_ZTv0_n24_N7S7337C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7337C1D0Ev,_ZThn240_N7S7337C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7337C1D1Ev,_ZTv0_n24_N7S7337C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7337C1D1Ev,_ZThn240_N7S7337C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C1D0Ev,_ZTv0_n40_N7S7337C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7337C1D0Ev,_ZThn280_N7S7337C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7337C1D0Ev,_ZThn180_N7S7337C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7337C1D1Ev,_ZTv0_n40_N7S7337C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7337C1D1Ev,_ZThn280_N7S7337C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7337C1D1Ev,_ZThn180_N7S7337C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7337C1D0Ev,_ZTv0_n44_N7S7337C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7337C1D0Ev,_ZThn292_N7S7337C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7337C1D0Ev,_ZThn140_N7S7337C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7337C1D1Ev,_ZTv0_n44_N7S7337C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7337C1D1Ev,_ZThn292_N7S7337C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7337C1D1Ev,_ZThn140_N7S7337C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7337C1 = {  "S7337C1", // class name
  bases_S7337C1, 17,
  &(vtc_S7337C1[0]), // expected_vtbl_contents
  &(vtt_S7337C1[0]), // expected_vtt_contents
  ABISELECT(544,332), // object size
  NSPAIRA(_ZTI7S7337C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7337C1),207, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7337C1),81, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names152,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21361C2_nt  {
  int s21361c2f0;
  ::S11608C3_nt s21361c2f1;
};
//SIG(-1 S21361C2_nt) C1{ Fi FC2{ Fp Fi}}



//skip512 S21361C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21361C4_nt  {
  int s21361c4f0[3];
};
//SIG(-1 S21361C4_nt) C1{ Fi[3]}



//skip512 S21361C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21361C5  {
  ::S2333C27_nt s21361c5f0;
  ::S2333C27_nt s21361c5f1;
  ::S11608C3_nt s21361c5f2;
  ::S11608C3_nt s21361c5f3;
  ::S11608C3_nt s21361c5f4;
  int s21361c5f5[2];
};
//SIG(-1 S21361C5) C1{ FC2{ Fi[2]} FC2 FC3{ Fp Fi} FC3 FC3 Fi[2]}



static void Test_S21361C5()
{
  {
    init_simple_test("S21361C5");
    S21361C5 lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S21361C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21361C5)");
    check_field_offset(lv, s21361c5f0, 0, "S21361C5.s21361c5f0");
    check_field_offset(lv, s21361c5f1, 8, "S21361C5.s21361c5f1");
    check_field_offset(lv, s21361c5f2, 16, "S21361C5.s21361c5f2");
    check_field_offset(lv, s21361c5f3, ABISELECT(32,24), "S21361C5.s21361c5f3");
    check_field_offset(lv, s21361c5f4, ABISELECT(48,32), "S21361C5.s21361c5f4");
    check_field_offset(lv, s21361c5f5, ABISELECT(64,40), "S21361C5.s21361c5f5");
  }
}
static Arrange_To_Call_Me vS21361C5(Test_S21361C5, "S21361C5", ABISELECT(72,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21361C10_nt  {
  char s21361c10f0;
  char s21361c10f1;
  char s21361c10f2[14];
};
//SIG(1 S21361C10_nt) C1{ Fc[16]}



//skip512 S21361C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S21361C9_nt  {
  char s21361c9f0[16];
  ::S21361C10_nt s21361c9f1;
};
//SIG(1 S21361C9_nt) U1{ Fc[16] FC2{ Fc Fc Fc[14]}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S21361C8_nt  {
  int s21361c8f0[10];
  ::S21361C9_nt s21361c8f1;
  void *s21361c8f2[2];
};
//SIG(-1 S21361C8_nt) C1{ Fi[10] FU2{ Fc[16] FC3{ Fc Fc Fc[14]}} Fp[2]}



//skip512 S21361C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21361C11  {
  int s21361c11f0;
  int s21361c11f1;
  char s21361c11f2;
  char s21361c11f3;
  short s21361c11f4;
  short s21361c11f5;
  char s21361c11f6;
  char s21361c11f7;
  char s21361c11f8;
  char s21361c11f9;
  char s21361c11f10[3];
  char s21361c11f11[3];
  ::S2333C27_nt s21361c11f12;
};
//SIG(-1 S21361C11) C1{ Fi[2] Fc[2] Fs[2] Fc[10] FC2{ Fi[2]}}



static void Test_S21361C11()
{
  {
    init_simple_test("S21361C11");
    S21361C11 lv;
    check2(sizeof(lv), 32, "sizeof(S21361C11)");
    check2(__alignof__(lv), 4, "__alignof__(S21361C11)");
    check_field_offset(lv, s21361c11f0, 0, "S21361C11.s21361c11f0");
    check_field_offset(lv, s21361c11f1, 4, "S21361C11.s21361c11f1");
    check_field_offset(lv, s21361c11f2, 8, "S21361C11.s21361c11f2");
    check_field_offset(lv, s21361c11f3, 9, "S21361C11.s21361c11f3");
    check_field_offset(lv, s21361c11f4, 10, "S21361C11.s21361c11f4");
    check_field_offset(lv, s21361c11f5, 12, "S21361C11.s21361c11f5");
    check_field_offset(lv, s21361c11f6, 14, "S21361C11.s21361c11f6");
    check_field_offset(lv, s21361c11f7, 15, "S21361C11.s21361c11f7");
    check_field_offset(lv, s21361c11f8, 16, "S21361C11.s21361c11f8");
    check_field_offset(lv, s21361c11f9, 17, "S21361C11.s21361c11f9");
    check_field_offset(lv, s21361c11f10, 18, "S21361C11.s21361c11f10");
    check_field_offset(lv, s21361c11f11, 21, "S21361C11.s21361c11f11");
    check_field_offset(lv, s21361c11f12, 24, "S21361C11.s21361c11f12");
  }
}
static Arrange_To_Call_Me vS21361C11(Test_S21361C11, "S21361C11", 32);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21361C7  {
  int s21361c7f0;
  ::S21361C8_nt s21361c7f1;
  ::S21361C11 s21361c7f2;
};
//SIG(-1 S21361C7) C1{ Fi FC2{ Fi[10] FU3{ Fc[16] FC4{ Fc Fc Fc[14]}} Fp[2]} FC5{ Fi Fi Fc Fc Fs Fs Fc Fc Fc Fc Fc[3] Fc[3] FC6{ Fi[2]}}}



static void Test_S21361C7()
{
  {
    init_simple_test("S21361C7");
    S21361C7 lv;
    check2(sizeof(lv), ABISELECT(112,100), "sizeof(S21361C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21361C7)");
    check_field_offset(lv, s21361c7f0, 0, "S21361C7.s21361c7f0");
    check_field_offset(lv, s21361c7f1, ABISELECT(8,4), "S21361C7.s21361c7f1");
    check_field_offset(lv, s21361c7f2, ABISELECT(80,68), "S21361C7.s21361c7f2");
  }
}
static Arrange_To_Call_Me vS21361C7(Test_S21361C7, "S21361C7", ABISELECT(112,100));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21361C12_nt  {
  int s21361c12f0;
  int s21361c12f1;
  void *s21361c12f2;
};
//SIG(-1 S21361C12_nt) C1{ Fi[2] Fp}



//skip512 S21361C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21361C14  {
  int s21361c14f0;
  int s21361c14f1;
  char s21361c14f2;
  char s21361c14f3;
  short s21361c14f4;
  short s21361c14f5;
  char s21361c14f6;
  char s21361c14f7;
  char s21361c14f8;
  char s21361c14f9;
  char s21361c14f10[2];
  char s21361c14f11;
  char s21361c14f12[3];
  ::S2333C27_nt s21361c14f13;
};
//SIG(-1 S21361C14) C1{ Fi[2] Fc[2] Fs[2] Fc[10] FC2{ Fi[2]}}



static void Test_S21361C14()
{
  {
    init_simple_test("S21361C14");
    S21361C14 lv;
    check2(sizeof(lv), 32, "sizeof(S21361C14)");
    check2(__alignof__(lv), 4, "__alignof__(S21361C14)");
    check_field_offset(lv, s21361c14f0, 0, "S21361C14.s21361c14f0");
    check_field_offset(lv, s21361c14f1, 4, "S21361C14.s21361c14f1");
    check_field_offset(lv, s21361c14f2, 8, "S21361C14.s21361c14f2");
    check_field_offset(lv, s21361c14f3, 9, "S21361C14.s21361c14f3");
    check_field_offset(lv, s21361c14f4, 10, "S21361C14.s21361c14f4");
    check_field_offset(lv, s21361c14f5, 12, "S21361C14.s21361c14f5");
    check_field_offset(lv, s21361c14f6, 14, "S21361C14.s21361c14f6");
    check_field_offset(lv, s21361c14f7, 15, "S21361C14.s21361c14f7");
    check_field_offset(lv, s21361c14f8, 16, "S21361C14.s21361c14f8");
    check_field_offset(lv, s21361c14f9, 17, "S21361C14.s21361c14f9");
    check_field_offset(lv, s21361c14f10, 18, "S21361C14.s21361c14f10");
    check_field_offset(lv, s21361c14f11, 20, "S21361C14.s21361c14f11");
    check_field_offset(lv, s21361c14f12, 21, "S21361C14.s21361c14f12");
    check_field_offset(lv, s21361c14f13, 24, "S21361C14.s21361c14f13");
  }
}
static Arrange_To_Call_Me vS21361C14(Test_S21361C14, "S21361C14", 32);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21361C13  {
  int s21361c13f0;
  ::S21361C8_nt s21361c13f1;
  ::S21361C14 s21361c13f2;
};
//SIG(-1 S21361C13) C1{ Fi FC2{ Fi[10] FU3{ Fc[16] FC4{ Fc Fc Fc[14]}} Fp[2]} FC5{ Fi Fi Fc Fc Fs Fs Fc Fc Fc Fc Fc[2] Fc Fc[3] FC6{ Fi[2]}}}



static void Test_S21361C13()
{
  {
    init_simple_test("S21361C13");
    S21361C13 lv;
    check2(sizeof(lv), ABISELECT(112,100), "sizeof(S21361C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21361C13)");
    check_field_offset(lv, s21361c13f0, 0, "S21361C13.s21361c13f0");
    check_field_offset(lv, s21361c13f1, ABISELECT(8,4), "S21361C13.s21361c13f1");
    check_field_offset(lv, s21361c13f2, ABISELECT(80,68), "S21361C13.s21361c13f2");
  }
}
static Arrange_To_Call_Me vS21361C13(Test_S21361C13, "S21361C13", ABISELECT(112,100));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21361C15_nt  {
  ::S2333C27_nt s21361c15f0;
  ::S2333C27_nt s21361c15f1;
  ::S11608C3_nt s21361c15f2;
};
//SIG(-1 S21361C15_nt) C1{ FC2{ Fi[2]} FC2 FC3{ Fp Fi}}



//skip512 S21361C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21361C1  {
  ::S21361C2_nt s21361c1f0;
  ::S21361C4_nt s21361c1f1;
  ::S21361C5 s21361c1f2;
  ::S21361C7 s21361c1f3;
  ::S21361C7 s21361c1f4;
  void *s21361c1f5[2];
  ::S21361C12_nt s21361c1f6;
  ::S21361C13 s21361c1f7;
  void *s21361c1f8;
  ::S21361C12_nt s21361c1f9;
  int s21361c1f10;
  int s21361c1f11;
  void *s21361c1f12;
  __tsi64 s21361c1f13;
  __tsi64 s21361c1f14;
  int s21361c1f15;
  int s21361c1f16;
  int s21361c1f17;
  int s21361c1f18;
  int s21361c1f19;
  void *s21361c1f20;
  void *s21361c1f21;
  void *s21361c1f22;
  char s21361c1f23;
  char s21361c1f24;
  ::S21361C15_nt s21361c1f25;
  void  mf21361c1(); // _ZN8S21361C19mf21361c1Ev
  virtual  ~S21361C1(); // _ZN8S21361C1D1Ev
  S21361C1(); // tgen
};
//SIG(1 S21361C1) C1{ vd m FC2{ Fi FC3{ Fp Fi}} FC4{ Fi[3]} FC5{ FC6{ Fi[2]} FC6 FC3 FC3 FC3 Fi[2]} FC7{ Fi FC8{ Fi[10] FU9{ Fc[16] FC10{ Fc Fc Fc[14]}} Fp[2]} FC11{ Fi Fi Fc Fc Fs Fs Fc Fc Fc Fc Fc[3] Fc[3] FC6}} FC7 Fp[2] FC12{ Fi Fi Fp} FC13{ Fi FC8 FC14{ Fi Fi Fc Fc Fs Fs Fc Fc Fc Fc Fc[2] Fc Fc[3] FC6}} Fp FC12 Fi Fi Fp FL FL Fi Fi Fi Fi Fi Fp Fp Fp Fc Fc FC15{ FC6 FC6 FC3}}


void  S21361C1 ::mf21361c1(){}
 S21361C1 ::~S21361C1(){ note_dtor("S21361C1", this);}
S21361C1 ::S21361C1(){ note_ctor("S21361C1", this);} // tgen

static void Test_S21361C1()
{
  extern Class_Descriptor cd_S21361C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(80,126)];
    init_test(&cd_S21361C1, buf);
    S21361C1 *dp, &lv = *(dp=new (buf) S21361C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(632,500), "sizeof(S21361C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21361C1)");
    check_field_offset(lv, s21361c1f0, ABISELECT(8,4), "S21361C1.s21361c1f0");
    check_field_offset(lv, s21361c1f1, ABISELECT(32,16), "S21361C1.s21361c1f1");
    check_field_offset(lv, s21361c1f2, ABISELECT(48,28), "S21361C1.s21361c1f2");
    check_field_offset(lv, s21361c1f3, ABISELECT(120,76), "S21361C1.s21361c1f3");
    check_field_offset(lv, s21361c1f4, ABISELECT(232,176), "S21361C1.s21361c1f4");
    check_field_offset(lv, s21361c1f5, ABISELECT(344,276), "S21361C1.s21361c1f5");
    check_field_offset(lv, s21361c1f6, ABISELECT(360,284), "S21361C1.s21361c1f6");
    check_field_offset(lv, s21361c1f7, ABISELECT(376,296), "S21361C1.s21361c1f7");
    check_field_offset(lv, s21361c1f8, ABISELECT(488,396), "S21361C1.s21361c1f8");
    check_field_offset(lv, s21361c1f9, ABISELECT(496,400), "S21361C1.s21361c1f9");
    check_field_offset(lv, s21361c1f10, ABISELECT(512,412), "S21361C1.s21361c1f10");
    check_field_offset(lv, s21361c1f11, ABISELECT(516,416), "S21361C1.s21361c1f11");
    check_field_offset(lv, s21361c1f12, ABISELECT(520,420), "S21361C1.s21361c1f12");
    check_field_offset(lv, s21361c1f13, ABISELECT(528,424), "S21361C1.s21361c1f13");
    check_field_offset(lv, s21361c1f14, ABISELECT(536,432), "S21361C1.s21361c1f14");
    check_field_offset(lv, s21361c1f15, ABISELECT(544,440), "S21361C1.s21361c1f15");
    check_field_offset(lv, s21361c1f16, ABISELECT(548,444), "S21361C1.s21361c1f16");
    check_field_offset(lv, s21361c1f17, ABISELECT(552,448), "S21361C1.s21361c1f17");
    check_field_offset(lv, s21361c1f18, ABISELECT(556,452), "S21361C1.s21361c1f18");
    check_field_offset(lv, s21361c1f19, ABISELECT(560,456), "S21361C1.s21361c1f19");
    check_field_offset(lv, s21361c1f20, ABISELECT(568,460), "S21361C1.s21361c1f20");
    check_field_offset(lv, s21361c1f21, ABISELECT(576,464), "S21361C1.s21361c1f21");
    check_field_offset(lv, s21361c1f22, ABISELECT(584,468), "S21361C1.s21361c1f22");
    check_field_offset(lv, s21361c1f23, ABISELECT(592,472), "S21361C1.s21361c1f23");
    check_field_offset(lv, s21361c1f24, ABISELECT(593,473), "S21361C1.s21361c1f24");
    check_field_offset(lv, s21361c1f25, ABISELECT(600,476), "S21361C1.s21361c1f25");
    test_class_info(&lv, &cd_S21361C1);
    dp->~S21361C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21361C1(Test_S21361C1, "S21361C1", ABISELECT(632,500));

#else // __cplusplus

extern void _ZN8S21361C1C1Ev();
extern void _ZN8S21361C1D1Ev();
Name_Map name_map_S21361C1[] = {
  NSPAIR(_ZN8S21361C1C1Ev),
  NSPAIR(_ZN8S21361C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21361C1[];
extern void _ZN8S21361C1D1Ev();
extern void _ZN8S21361C1D0Ev();
static  VTBL_ENTRY vtc_S21361C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21361C1[0]),
  (VTBL_ENTRY)&_ZN8S21361C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21361C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21361C1[];
extern  VTBL_ENTRY _ZTV8S21361C1[];
Class_Descriptor cd_S21361C1 = {  "S21361C1", // class name
  0,0,//no base classes
  &(vtc_S21361C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(632,500), // object size
  NSPAIRA(_ZTI8S21361C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21361C1),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  S6874C2  {
  virtual void  v4(); // _ZN7S6874C22v4Ev
  ~S6874C2(); // tgen
  S6874C2(); // tgen
};
//SIG(-1 S6874C2) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S6874C2C1Ev();
extern void _ZN7S6874C2D1Ev();
Name_Map name_map_S6874C2[] = {
  NSPAIR(_ZN7S6874C2C1Ev),
  NSPAIR(_ZN7S6874C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6874C2[];
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY vtc_S6874C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C2[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6874C2[];
extern  VTBL_ENTRY _ZTV7S6874C2[];
Class_Descriptor cd_S6874C2 = {  "S6874C2", // class name
  0,0,//no base classes
  &(vtc_S6874C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6874C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6874C2),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  S6874C8  {
  void *s6874c8f0;
  ::S6874C2 s6874c8f1;
  virtual void  v5(); // _ZN7S6874C82v5Ev
  virtual void  v6(); // _ZN7S6874C82v6Ev
  virtual void  v7(); // _ZN7S6874C82v7Ev
  virtual void  v8(); // _ZN7S6874C82v8Ev
  virtual void  v9(); // _ZN7S6874C82v9Ev
  ~S6874C8(); // tgen
  S6874C8(); // tgen
};
//SIG(-1 S6874C8) C1{ v1 v2 v3 v4 v5 Fp FC2{ v6}}


void  S6874C8 ::v5(){vfunc_called(this, "_ZN7S6874C82v5Ev");}
void  S6874C8 ::v6(){vfunc_called(this, "_ZN7S6874C82v6Ev");}
void  S6874C8 ::v7(){vfunc_called(this, "_ZN7S6874C82v7Ev");}
void  S6874C8 ::v8(){vfunc_called(this, "_ZN7S6874C82v8Ev");}
void  S6874C8 ::v9(){vfunc_called(this, "_ZN7S6874C82v9Ev");}
S6874C8 ::~S6874C8(){ note_dtor("S6874C8", this);} // tgen
S6874C8 ::S6874C8(){ note_ctor("S6874C8", this);} // tgen

static void Test_S6874C8()
{
  extern Class_Descriptor cd_S6874C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6874C8, buf);
    S6874C8 *dp, &lv = *(dp=new (buf) S6874C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6874C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6874C8)");
    check_field_offset(lv, s6874c8f0, ABISELECT(8,4), "S6874C8.s6874c8f0");
    check_field_offset(lv, s6874c8f1, ABISELECT(16,8), "S6874C8.s6874c8f1");
    test_class_info(&lv, &cd_S6874C8);
    dp->~S6874C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6874C8(Test_S6874C8, "S6874C8", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6874C8C1Ev();
extern void _ZN7S6874C8D1Ev();
Name_Map name_map_S6874C8[] = {
  NSPAIR(_ZN7S6874C8C1Ev),
  NSPAIR(_ZN7S6874C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6874C8[];
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY vtc_S6874C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C8[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern VTBL_ENTRY _ZTI7S6874C8[];
extern  VTBL_ENTRY _ZTV7S6874C8[];
Class_Descriptor cd_S6874C8 = {  "S6874C8", // class name
  0,0,//no base classes
  &(vtc_S6874C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6874C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6874C8),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  S6874C7  : virtual S6874C2 , virtual S6874C8 {
  void *s6874c7f0[6];
  virtual  ~S6874C7(); // _ZN7S6874C7D2Ev
  virtual void  v10(); // _ZN7S6874C73v10Ev
  virtual void  v11(); // _ZN7S6874C73v11Ev
  virtual void  v12(); // _ZN7S6874C73v12Ev
  S6874C7(); // tgen
};
//SIG(-1 S6874C7) C1{ VBC2{ v4} VBC3{ v5 v6 v7 v8 v9 Fp FC2} vd v1 v2 v3 Fp[6]}


 S6874C7 ::~S6874C7(){ note_dtor("S6874C7", this);}
void  S6874C7 ::v10(){vfunc_called(this, "_ZN7S6874C73v10Ev");}
void  S6874C7 ::v11(){vfunc_called(this, "_ZN7S6874C73v11Ev");}
void  S6874C7 ::v12(){vfunc_called(this, "_ZN7S6874C73v12Ev");}
S6874C7 ::S6874C7(){ note_ctor("S6874C7", this);} // tgen

static void Test_S6874C7()
{
  extern Class_Descriptor cd_S6874C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S6874C7, buf);
    S6874C7 *dp, &lv = *(dp=new (buf) S6874C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S6874C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6874C7)");
    check_base_class_offset(lv, (S6874C2*), 0, "S6874C7");
    check_base_class_offset(lv, (S6874C8*), ABISELECT(56,28), "S6874C7");
    check_field_offset(lv, s6874c7f0, ABISELECT(8,4), "S6874C7.s6874c7f0");
    test_class_info(&lv, &cd_S6874C7);
    dp->~S6874C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6874C7(Test_S6874C7, "S6874C7", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S6874C7C1Ev();
extern void _ZN7S6874C7D2Ev();
Name_Map name_map_S6874C7[] = {
  NSPAIR(_ZN7S6874C7C1Ev),
  NSPAIR(_ZN7S6874C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6874C2;
extern VTBL_ENTRY _ZTI7S6874C2[];
extern  VTBL_ENTRY _ZTV7S6874C2[];
extern Class_Descriptor cd_S6874C8;
extern VTBL_ENTRY _ZTI7S6874C8[];
extern  VTBL_ENTRY _ZTV7S6874C8[];
static Base_Class bases_S6874C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6874C2,    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_S6874C8,    ABISELECT(56,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6874C7[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C7D1Ev();
extern void _ZN7S6874C7D0Ev();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY vtc_S6874C7[] = {
  ABISELECT(56,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern VTBL_ENTRY _ZTV7S6874C7[];
static  VTT_ENTRY vtt_S6874C7[] = {
  {&(_ZTV7S6874C7[5]),  5,23},
  {&(_ZTV7S6874C7[5]),  5,23},
  {&(_ZTV7S6874C7[18]),  18,23},
};
extern VTBL_ENTRY _ZTI7S6874C7[];
extern  VTBL_ENTRY _ZTV7S6874C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C7[];
Class_Descriptor cd_S6874C7 = {  "S6874C7", // class name
  bases_S6874C7, 2,
  &(vtc_S6874C7[0]), // expected_vtbl_contents
  &(vtt_S6874C7[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S6874C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6874C7),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6874C7),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  S6874C6  : virtual S6874C7 {
  __tsi64 s6874c6f0;
  virtual void  v13(); // _ZN7S6874C63v13Ev
  virtual void  v14(); // _ZN7S6874C63v14Ev
  virtual void  v15(); // _ZN7S6874C63v15Ev
  ~S6874C6(); // tgen
  S6874C6(); // tgen
};
//SIG(-1 S6874C6) C1{ VBC2{ VBC3{ v4} VBC4{ v5 v6 v7 v8 v9 Fp FC3} vd v10 v11 v12 Fp[6]} v1 v2 v3 FL}


void  S6874C6 ::v13(){vfunc_called(this, "_ZN7S6874C63v13Ev");}
void  S6874C6 ::v14(){vfunc_called(this, "_ZN7S6874C63v14Ev");}
void  S6874C6 ::v15(){vfunc_called(this, "_ZN7S6874C63v15Ev");}
S6874C6 ::~S6874C6(){ note_dtor("S6874C6", this);} // tgen
S6874C6 ::S6874C6(){ note_ctor("S6874C6", this);} // tgen

static void Test_S6874C6()
{
  extern Class_Descriptor cd_S6874C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S6874C6, buf);
    S6874C6 *dp, &lv = *(dp=new (buf) S6874C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S6874C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6874C6)");
    check_base_class_offset(lv, (S6874C2*)(S6874C7*), 0, "S6874C6");
    check_base_class_offset(lv, (S6874C8*)(S6874C7*), ABISELECT(72,40), "S6874C6");
    check_base_class_offset(lv, (S6874C7*), ABISELECT(16,12), "S6874C6");
    check_field_offset(lv, s6874c6f0, ABISELECT(8,4), "S6874C6.s6874c6f0");
    test_class_info(&lv, &cd_S6874C6);
    dp->~S6874C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6874C6(Test_S6874C6, "S6874C6", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S6874C6C1Ev();
extern void _ZN7S6874C6D1Ev();
Name_Map name_map_S6874C6[] = {
  NSPAIR(_ZN7S6874C6C1Ev),
  NSPAIR(_ZN7S6874C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6874C2;
extern VTBL_ENTRY _ZTI7S6874C2[];
extern  VTBL_ENTRY _ZTV7S6874C2[];
extern Class_Descriptor cd_S6874C8;
extern VTBL_ENTRY _ZTI7S6874C8[];
extern  VTBL_ENTRY _ZTV7S6874C8[];
extern Class_Descriptor cd_S6874C7;
extern VTBL_ENTRY _ZTI7S6874C7[];
extern  VTBL_ENTRY _ZTV7S6874C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C7[];
static Base_Class bases_S6874C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6874C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6874C8,    ABISELECT(72,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6874C7,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6874C6[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C6D1Ev();
extern void _ZN7S6874C6D0Ev();
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S6874C6D1Ev,_ZThn12_N7S6874C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S6874C6D0Ev,_ZThn12_N7S6874C6D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY vtc_S6874C6[] = {
  ABISELECT(72,40),
  0,
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D0Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern VTBL_ENTRY _ZTV7S6874C6[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C7D1Ev();
extern void _ZN7S6874C7D0Ev();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C6[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C7__7S6874C6[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C7__7S6874C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
static  VTT_ENTRY vtt_S6874C6[] = {
  {&(_ZTV7S6874C6[6]),  6,39},
  {&(_ZTV7S6874C6[21]),  21,39},
  {&(_ZTV7S6874C6[6]),  6,39},
  {&(_ZTV7S6874C6[34]),  34,39},
  {&(_tg__ZTV7S6874C7__7S6874C6[5]),  5,11},
  {&(_tg__ZTV7S6874C2__7S6874C7__7S6874C6[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C7__7S6874C6[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S6874C6[];
extern  VTBL_ENTRY _ZTV7S6874C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C6[];
static VTBL_ENTRY alt_thunk_names153[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6874C6D0Ev,_ZThn12_N7S6874C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6874C6D1Ev,_ZThn12_N7S6874C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6874C6 = {  "S6874C6", // class name
  bases_S6874C6, 3,
  &(vtc_S6874C6[0]), // expected_vtbl_contents
  &(vtt_S6874C6[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S6874C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6874C6),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6874C6),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names153,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6874C5  : S6874C6 {
  ::S7337C10 s6874c5f0[4];
  virtual  ~S6874C5(); // _ZN7S6874C5D2Ev
  virtual void  v16(); // _ZN7S6874C53v16Ev
  virtual void  v17(); // _ZN7S6874C53v17Ev
  virtual void  v18(); // _ZN7S6874C53v18Ev
  virtual void  v19(); // _ZN7S6874C53v19Ev
  virtual void  v20(); // _ZN7S6874C53v20Ev
  S6874C5(); // tgen
};
//SIG(-1 S6874C5) C1{ BC2{ VBC3{ VBC4{ v6} VBC5{ v7 v8 v9 v10 v11 Fp FC4} vd v12 v13 v14 Fp[6]} v15 v16 v17 FL} vd v1 v2 v3 v4 v5 FC6{ v18 v19 v20 v21 v22 v23 Fp Fs}[4]}


 S6874C5 ::~S6874C5(){ note_dtor("S6874C5", this);}
void  S6874C5 ::v16(){vfunc_called(this, "_ZN7S6874C53v16Ev");}
void  S6874C5 ::v17(){vfunc_called(this, "_ZN7S6874C53v17Ev");}
void  S6874C5 ::v18(){vfunc_called(this, "_ZN7S6874C53v18Ev");}
void  S6874C5 ::v19(){vfunc_called(this, "_ZN7S6874C53v19Ev");}
void  S6874C5 ::v20(){vfunc_called(this, "_ZN7S6874C53v20Ev");}
S6874C5 ::S6874C5(){ note_ctor("S6874C5", this);} // tgen

static void Test_S6874C5()
{
  extern Class_Descriptor cd_S6874C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,26)];
    init_test(&cd_S6874C5, buf);
    S6874C5 *dp, &lv = *(dp=new (buf) S6874C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S6874C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6874C5)");
    check_base_class_offset(lv, (S6874C2*)(S6874C7*), 0, "S6874C5");
    check_base_class_offset(lv, (S6874C8*)(S6874C7*), ABISELECT(168,88), "S6874C5");
    check_base_class_offset(lv, (S6874C7*)(S6874C6*), ABISELECT(112,60), "S6874C5");
    check_base_class_offset(lv, (S6874C6*), 0, "S6874C5");
    check_field_offset(lv, s6874c5f0, ABISELECT(16,12), "S6874C5.s6874c5f0");
    test_class_info(&lv, &cd_S6874C5);
    dp->~S6874C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6874C5(Test_S6874C5, "S6874C5", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN7S6874C5C1Ev();
extern void _ZN7S6874C5D2Ev();
Name_Map name_map_S6874C5[] = {
  NSPAIR(_ZN7S6874C5C1Ev),
  NSPAIR(_ZN7S6874C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6874C2;
extern VTBL_ENTRY _ZTI7S6874C2[];
extern  VTBL_ENTRY _ZTV7S6874C2[];
extern Class_Descriptor cd_S6874C8;
extern VTBL_ENTRY _ZTI7S6874C8[];
extern  VTBL_ENTRY _ZTV7S6874C8[];
extern Class_Descriptor cd_S6874C7;
extern VTBL_ENTRY _ZTI7S6874C7[];
extern  VTBL_ENTRY _ZTV7S6874C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C7[];
extern Class_Descriptor cd_S6874C6;
extern VTBL_ENTRY _ZTI7S6874C6[];
extern  VTBL_ENTRY _ZTV7S6874C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C6[];
static Base_Class bases_S6874C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6874C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6874C8,    ABISELECT(168,88), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6874C7,    ABISELECT(112,60), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6874C6,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6874C5[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C5D1Ev();
extern void _ZN7S6874C5D0Ev();
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S6874C5D1Ev,_ZThn60_N7S6874C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S6874C5D0Ev,_ZThn60_N7S6874C5D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY vtc_S6874C5[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern VTBL_ENTRY _ZTV7S6874C5[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C6D1Ev();
extern void _ZN7S6874C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C6__7S6874C5[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D0Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S6874C6D1Ev,_ZThn60_N7S6874C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S6874C6D0Ev,_ZThn60_N7S6874C6D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C6__7S6874C5[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C6__7S6874C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C7D1Ev();
extern void _ZN7S6874C7D0Ev();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C5[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C7__7S6874C5[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C7__7S6874C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
static  VTT_ENTRY vtt_S6874C5[] = {
  {&(_ZTV7S6874C5[6]),  6,44},
  {&(_tg__ZTV7S6874C6__7S6874C5[6]),  6,12},
  {&(_tg__ZTV7S6874C7__7S6874C6__7S6874C5[9]),  9,15},
  {&(_tg__ZTV7S6874C6__7S6874C5[6]),  6,12},
  {&(_tg__ZTV7S6874C8__7S6874C6__7S6874C5[7]),  7,12},
  {&(_ZTV7S6874C5[26]),  26,44},
  {&(_ZTV7S6874C5[6]),  6,44},
  {&(_ZTV7S6874C5[39]),  39,44},
  {&(_tg__ZTV7S6874C7__7S6874C5[5]),  5,11},
  {&(_tg__ZTV7S6874C2__7S6874C7__7S6874C5[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C7__7S6874C5[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S6874C5[];
extern  VTBL_ENTRY _ZTV7S6874C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C5[];
static VTBL_ENTRY alt_thunk_names154[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C6D0Ev,_ZThn60_N7S6874C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C6D1Ev,_ZThn60_N7S6874C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C5D0Ev,_ZThn60_N7S6874C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C5D1Ev,_ZThn60_N7S6874C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6874C5 = {  "S6874C5", // class name
  bases_S6874C5, 4,
  &(vtc_S6874C5[0]), // expected_vtbl_contents
  &(vtt_S6874C5[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI7S6874C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6874C5),44, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6874C5),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names154,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6874C12  : virtual S6874C2 {
  __tsi64 s6874c12f0;
  void *s6874c12f1;
  virtual void  v21(); // _ZN8S6874C123v21Ev
  virtual void  v22(); // _ZN8S6874C123v22Ev
  virtual void  v23(); // _ZN8S6874C123v23Ev
  ~S6874C12(); // tgen
  S6874C12(); // tgen
};
//SIG(-1 S6874C12) C1{ VBC2{ v4} v1 v2 v3 FL Fp}


void  S6874C12 ::v21(){vfunc_called(this, "_ZN8S6874C123v21Ev");}
void  S6874C12 ::v22(){vfunc_called(this, "_ZN8S6874C123v22Ev");}
void  S6874C12 ::v23(){vfunc_called(this, "_ZN8S6874C123v23Ev");}
S6874C12 ::~S6874C12(){ note_dtor("S6874C12", this);} // tgen
S6874C12 ::S6874C12(){ note_ctor("S6874C12", this);} // tgen

static void Test_S6874C12()
{
  extern Class_Descriptor cd_S6874C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6874C12, buf);
    S6874C12 *dp, &lv = *(dp=new (buf) S6874C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6874C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6874C12)");
    check_base_class_offset(lv, (S6874C2*), 0, "S6874C12");
    check_field_offset(lv, s6874c12f0, ABISELECT(8,4), "S6874C12.s6874c12f0");
    check_field_offset(lv, s6874c12f1, ABISELECT(16,12), "S6874C12.s6874c12f1");
    test_class_info(&lv, &cd_S6874C12);
    dp->~S6874C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6874C12(Test_S6874C12, "S6874C12", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S6874C12C1Ev();
extern void _ZN8S6874C12D1Ev();
Name_Map name_map_S6874C12[] = {
  NSPAIR(_ZN8S6874C12C1Ev),
  NSPAIR(_ZN8S6874C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6874C2;
extern VTBL_ENTRY _ZTI7S6874C2[];
extern  VTBL_ENTRY _ZTV7S6874C2[];
static Base_Class bases_S6874C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6874C2,    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 _ZTI8S6874C12[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY vtc_S6874C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C12[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern VTBL_ENTRY _ZTV8S6874C12[];
static  VTT_ENTRY vtt_S6874C12[] = {
  {&(_ZTV8S6874C12[4]),  4,8},
  {&(_ZTV8S6874C12[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S6874C12[];
extern  VTBL_ENTRY _ZTV8S6874C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C12[];
Class_Descriptor cd_S6874C12 = {  "S6874C12", // class name
  bases_S6874C12, 1,
  &(vtc_S6874C12[0]), // expected_vtbl_contents
  &(vtt_S6874C12[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S6874C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6874C12),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6874C12),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  S6874C11  : S6874C6 , S6874C12 {
  ::S6874C8 s6874c11f0;
  virtual  ~S6874C11(); // _ZN8S6874C11D2Ev
  virtual void  v24(); // _ZN8S6874C113v24Ev
  virtual void  v25(); // _ZN8S6874C113v25Ev
  virtual void  v26(); // _ZN8S6874C113v26Ev
  virtual void  v27(); // _ZN8S6874C113v27Ev
  S6874C11(); // tgen
};
//SIG(-1 S6874C11) C1{ BC2{ VBC3{ VBC4{ v5} VBC5{ v6 v7 v8 v9 v10 Fp FC4} vd v11 v12 v13 Fp[6]} v14 v15 v16 FL} BC6{ VBC4 v17 v18 v19 FL Fp} vd v1 v2 v3 v4 FC5}


 S6874C11 ::~S6874C11(){ note_dtor("S6874C11", this);}
void  S6874C11 ::v24(){vfunc_called(this, "_ZN8S6874C113v24Ev");}
void  S6874C11 ::v25(){vfunc_called(this, "_ZN8S6874C113v25Ev");}
void  S6874C11 ::v26(){vfunc_called(this, "_ZN8S6874C113v26Ev");}
void  S6874C11 ::v27(){vfunc_called(this, "_ZN8S6874C113v27Ev");}
S6874C11 ::S6874C11(){ note_ctor("S6874C11", this);} // tgen

static void Test_S6874C11()
{
  extern Class_Descriptor cd_S6874C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,21)];
    init_test(&cd_S6874C11, buf);
    S6874C11 *dp, &lv = *(dp=new (buf) S6874C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,80), "sizeof(S6874C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6874C11)");
    check_base_class_offset(lv, (S6874C2*)(S6874C7*), 0, "S6874C11");
    check_base_class_offset(lv, (S6874C2*)(S6874C12*), 0, "S6874C11");
    check_base_class_offset(lv, (S6874C8*)(S6874C7*), ABISELECT(120,68), "S6874C11");
    check_base_class_offset(lv, (S6874C7*)(S6874C6*), ABISELECT(64,40), "S6874C11");
    check_base_class_offset(lv, (S6874C6*), 0, "S6874C11");
    check_base_class_offset(lv, (S6874C12*), ABISELECT(16,12), "S6874C11");
    check_field_offset(lv, s6874c11f0, ABISELECT(40,28), "S6874C11.s6874c11f0");
    test_class_info(&lv, &cd_S6874C11);
    dp->~S6874C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6874C11(Test_S6874C11, "S6874C11", ABISELECT(144,80));

#else // __cplusplus

extern void _ZN8S6874C11C1Ev();
extern void _ZN8S6874C11D2Ev();
Name_Map name_map_S6874C11[] = {
  NSPAIR(_ZN8S6874C11C1Ev),
  NSPAIR(_ZN8S6874C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6874C2;
extern VTBL_ENTRY _ZTI7S6874C2[];
extern  VTBL_ENTRY _ZTV7S6874C2[];
extern Class_Descriptor cd_S6874C8;
extern VTBL_ENTRY _ZTI7S6874C8[];
extern  VTBL_ENTRY _ZTV7S6874C8[];
extern Class_Descriptor cd_S6874C7;
extern VTBL_ENTRY _ZTI7S6874C7[];
extern  VTBL_ENTRY _ZTV7S6874C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C7[];
extern Class_Descriptor cd_S6874C6;
extern VTBL_ENTRY _ZTI7S6874C6[];
extern  VTBL_ENTRY _ZTV7S6874C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C6[];
extern Class_Descriptor cd_S6874C12;
extern VTBL_ENTRY _ZTI8S6874C12[];
extern  VTBL_ENTRY _ZTV8S6874C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C12[];
static Base_Class bases_S6874C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6874C2,    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
    2, //immediately_derived
  0, 1},
  {&cd_S6874C8,    ABISELECT(120,68), //bcp->offset
    39, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6874C7,    ABISELECT(64,40), //bcp->offset
    24, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6874C6,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6874C12,    ABISELECT(16,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //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 _ZTI8S6874C11[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN8S6874C11D1Ev();
extern void _ZN8S6874C11D0Ev();
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S6874C11D1Ev,_ZThn40_N8S6874C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S6874C11D0Ev,_ZThn40_N8S6874C11D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY vtc_S6874C11[] = {
  ABISELECT(120,68),
  0,
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN8S6874C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6874C11D0Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  ABISELECT(56,28),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern VTBL_ENTRY _ZTV8S6874C11[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C6D1Ev();
extern void _ZN7S6874C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C6__8S6874C11[] = {
  ABISELECT(120,68),
  0,
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D0Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S6874C6D1Ev,_ZThn40_N7S6874C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S6874C6D0Ev,_ZThn40_N7S6874C6D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C6__8S6874C11[] = {
  0,
  0,
  0,
  ABISELECT(-64,-40),
  ABISELECT(56,28),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C6__8S6874C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C12__8S6874C11[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C12[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C12__8S6874C11[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6874C12[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C7D1Ev();
extern void _ZN7S6874C7D0Ev();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__8S6874C11[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C7__8S6874C11[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C7__8S6874C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
static  VTT_ENTRY vtt_S6874C11[] = {
  {&(_ZTV8S6874C11[6]),  6,51},
  {&(_tg__ZTV7S6874C6__8S6874C11[6]),  6,12},
  {&(_tg__ZTV7S6874C7__7S6874C6__8S6874C11[9]),  9,15},
  {&(_tg__ZTV7S6874C6__8S6874C11[6]),  6,12},
  {&(_tg__ZTV7S6874C8__7S6874C6__8S6874C11[7]),  7,12},
  {&(_tg__ZTV8S6874C12__8S6874C11[4]),  4,8},
  {&(_tg__ZTV7S6874C2__8S6874C12__8S6874C11[3]),  3,4},
  {&(_ZTV8S6874C11[33]),  33,51},
  {&(_ZTV8S6874C11[6]),  6,51},
  {&(_ZTV8S6874C11[46]),  46,51},
  {&(_ZTV8S6874C11[20]),  20,51},
  {&(_tg__ZTV7S6874C7__8S6874C11[5]),  5,11},
  {&(_tg__ZTV7S6874C2__7S6874C7__8S6874C11[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C7__8S6874C11[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S6874C11[];
extern  VTBL_ENTRY _ZTV8S6874C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C11[];
static VTBL_ENTRY alt_thunk_names155[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6874C6D0Ev,_ZThn40_N7S6874C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S6874C6D1Ev,_ZThn40_N7S6874C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6874C11D0Ev,_ZThn40_N8S6874C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6874C11D1Ev,_ZThn40_N8S6874C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6874C11 = {  "S6874C11", // class name
  bases_S6874C11, 5,
  &(vtc_S6874C11[0]), // expected_vtbl_contents
  &(vtt_S6874C11[0]), // expected_vtt_contents
  ABISELECT(144,80), // object size
  NSPAIRA(_ZTI8S6874C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6874C11),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6874C11),14, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names155,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6874C10  : virtual S6874C5 , S6874C11 {
  virtual  ~S6874C10(); // _ZN8S6874C10D2Ev
  virtual void  v28(); // _ZN8S6874C103v28Ev
  virtual void  v29(); // _ZN8S6874C103v29Ev
  virtual void  v30(); // _ZN8S6874C103v30Ev
  virtual void  v31(); // _ZN8S6874C103v31Ev
  virtual void  v32(); // _ZN8S6874C103v32Ev
  virtual void  v33(); // _ZN8S6874C103v33Ev
  S6874C10(); // tgen
};
//SIG(-1 S6874C10) C1{ VBC2{ BC3{ VBC4{ VBC5{ v7} VBC6{ v8 v9 v10 v11 v12 Fp FC5} vd v13 v14 v15 Fp[6]} v16 v17 v18 FL} vd v19 v20 v21 v22 v23 FC7{ v31 v32 v33 v34 v35 v36 Fp Fs}[4]} BC8{ BC3 BC9{ VBC5 v24 v25 v26 FL Fp} vd v27 v28 v29 v30 FC6} vd v1 v2 v3 v4 v5 v6}


 S6874C10 ::~S6874C10(){ note_dtor("S6874C10", this);}
void  S6874C10 ::v28(){vfunc_called(this, "_ZN8S6874C103v28Ev");}
void  S6874C10 ::v29(){vfunc_called(this, "_ZN8S6874C103v29Ev");}
void  S6874C10 ::v30(){vfunc_called(this, "_ZN8S6874C103v30Ev");}
void  S6874C10 ::v31(){vfunc_called(this, "_ZN8S6874C103v31Ev");}
void  S6874C10 ::v32(){vfunc_called(this, "_ZN8S6874C103v32Ev");}
void  S6874C10 ::v33(){vfunc_called(this, "_ZN8S6874C103v33Ev");}
S6874C10 ::S6874C10(){ note_ctor("S6874C10", this);} // tgen

static void Test_S6874C10()
{
  extern Class_Descriptor cd_S6874C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,36)];
    init_test(&cd_S6874C10, buf);
    S6874C10 *dp, &lv = *(dp=new (buf) S6874C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,140), "sizeof(S6874C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6874C10)");
    check_base_class_offset(lv, (S6874C2*)(S6874C7*), ABISELECT(64,40), "S6874C10");
    check_base_class_offset(lv, (S6874C2*)(S6874C12*)(S6874C11*), ABISELECT(64,40), "S6874C10");
    check_base_class_offset(lv, (S6874C8*)(S6874C7*), ABISELECT(232,128), "S6874C10");
    check_base_class_offset(lv, (S6874C7*)(S6874C6*)(S6874C5*), ABISELECT(176,100), "S6874C10");
    check_base_class_offset(lv, (S6874C7*)(S6874C6*)(S6874C11*), ABISELECT(176,100), "S6874C10");
    check_base_class_offset(lv, (S6874C6*)(S6874C5*), ABISELECT(64,40), "S6874C10");
    check_base_class_offset(lv, (S6874C5*), ABISELECT(64,40), "S6874C10");
    check_base_class_offset(lv, (S6874C6*)(S6874C11*), 0, "S6874C10");
    check_base_class_offset(lv, (S6874C12*)(S6874C11*), ABISELECT(16,12), "S6874C10");
    check_base_class_offset(lv, (S6874C11*), 0, "S6874C10");
    test_class_info(&lv, &cd_S6874C10);
    dp->~S6874C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6874C10(Test_S6874C10, "S6874C10", ABISELECT(256,140));

#else // __cplusplus

extern void _ZN8S6874C10C1Ev();
extern void _ZN8S6874C10D2Ev();
Name_Map name_map_S6874C10[] = {
  NSPAIR(_ZN8S6874C10C1Ev),
  NSPAIR(_ZN8S6874C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6874C2;
extern VTBL_ENTRY _ZTI7S6874C2[];
extern  VTBL_ENTRY _ZTV7S6874C2[];
extern Class_Descriptor cd_S6874C8;
extern VTBL_ENTRY _ZTI7S6874C8[];
extern  VTBL_ENTRY _ZTV7S6874C8[];
extern Class_Descriptor cd_S6874C7;
extern VTBL_ENTRY _ZTI7S6874C7[];
extern  VTBL_ENTRY _ZTV7S6874C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C7[];
extern Class_Descriptor cd_S6874C6;
extern VTBL_ENTRY _ZTI7S6874C6[];
extern  VTBL_ENTRY _ZTV7S6874C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C6[];
extern Class_Descriptor cd_S6874C5;
extern VTBL_ENTRY _ZTI7S6874C5[];
extern  VTBL_ENTRY _ZTV7S6874C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C5[];
extern Class_Descriptor cd_S6874C6;
extern VTBL_ENTRY _ZTI7S6874C6[];
extern  VTBL_ENTRY _ZTV7S6874C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C6[];
extern Class_Descriptor cd_S6874C12;
extern VTBL_ENTRY _ZTI8S6874C12[];
extern  VTBL_ENTRY _ZTV8S6874C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C12[];
extern Class_Descriptor cd_S6874C11;
extern VTBL_ENTRY _ZTI8S6874C11[];
extern  VTBL_ENTRY _ZTV8S6874C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C11[];
static Base_Class bases_S6874C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6874C2,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6874C8,    ABISELECT(232,128), //bcp->offset
    72, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6874C7,    ABISELECT(176,100), //bcp->offset
    57, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6874C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    4, //immediately_derived
  0, 0},
  {&cd_S6874C5,    ABISELECT(64,40), //bcp->offset
    31, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6874C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6874C12,    ABISELECT(16,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6874C11,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6874C10[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN8S6874C10D1Ev();
extern void _ZN8S6874C10D0Ev();
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
extern void _ZN8S6874C103v28Ev();
extern void _ZN8S6874C103v29Ev();
extern void _ZN8S6874C103v30Ev();
extern void _ZN8S6874C103v31Ev();
extern void _ZN8S6874C103v32Ev();
extern void _ZN8S6874C103v33Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S6874C10D1Ev,_ZTv0_n40_N8S6874C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S6874C10D1Ev,_ZThn40_N8S6874C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6874C10D0Ev,_ZTv0_n40_N8S6874C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S6874C10D0Ev,_ZThn40_N8S6874C10D0Ev)() __attribute__((weak));
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N8S6874C10D1Ev,_ZTv0_n24_N8S6874C10D1Ev)();
extern void ABISELECT(_ZThn176_N8S6874C10D1Ev,_ZThn100_N8S6874C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6874C10D0Ev,_ZTv0_n24_N8S6874C10D0Ev)();
extern void ABISELECT(_ZThn176_N8S6874C10D0Ev,_ZThn100_N8S6874C10D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY vtc_S6874C10[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN8S6874C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6874C10D0Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v32Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v33Ev,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6874C10D1Ev,_ZTv0_n40_N8S6874C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6874C10D0Ev,_ZTv0_n40_N8S6874C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C10D1Ev,_ZTv0_n24_N8S6874C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C10D0Ev,_ZTv0_n24_N8S6874C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern VTBL_ENTRY _ZTV8S6874C10[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN8S6874C11D1Ev();
extern void _ZN8S6874C11D0Ev();
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C11__8S6874C10[] = {
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN8S6874C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6874C11D0Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C6D1Ev();
extern void _ZN7S6874C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C68S6874C11__A1__8S6874C10[] = {
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D0Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S6874C6D1Ev,_ZThn100_N7S6874C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S6874C6D0Ev,_ZThn100_N7S6874C6D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C68S6874C11__A1__8S6874C10[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C68S6874C11__A1__8S6874C10[] = {
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C68S6874C11__A1__8S6874C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C128S6874C11__8S6874C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C12[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C128S6874C11__8S6874C10[] = {
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S6874C12[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev)();
extern void ABISELECT(_ZThn176_N8S6874C11D1Ev,_ZThn100_N8S6874C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev)();
extern void ABISELECT(_ZThn176_N8S6874C11D0Ev,_ZThn100_N8S6874C11D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__8S6874C11__8S6874C10[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C11__8S6874C10[] = {
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__8S6874C11__8S6874C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C12__8S6874C11__8S6874C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C5D1Ev();
extern void _ZN7S6874C5D0Ev();
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C5__8S6874C10[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C6D1Ev();
extern void _ZN7S6874C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C67S6874C5__8S6874C10[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D0Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S6874C6D1Ev,_ZThn60_N7S6874C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S6874C6D0Ev,_ZThn60_N7S6874C6D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C67S6874C5__8S6874C10[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C67S6874C5__8S6874C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S6874C5D1Ev,_ZThn60_N7S6874C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S6874C5D0Ev,_ZThn60_N7S6874C5D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C5__8S6874C10[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C5__8S6874C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C7D1Ev();
extern void _ZN7S6874C7D0Ev();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__8S6874C10[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C7__8S6874C10[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C7__8S6874C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
static  VTT_ENTRY vtt_S6874C10[] = {
  {&(_ZTV8S6874C10[7]),  7,84},
  {&(_tg__ZTV8S6874C11__8S6874C10[6]),  6,16},
  {&(_tg__ZTV7S6874C68S6874C11__A1__8S6874C10[6]),  6,12},
  {&(_tg__ZTV7S6874C7__7S6874C68S6874C11__A1__8S6874C10[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C68S6874C11__A1__8S6874C10[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C68S6874C11__A1__8S6874C10[7]),  7,12},
  {&(_tg__ZTV8S6874C128S6874C11__8S6874C10[4]),  4,8},
  {&(_tg__ZTV7S6874C2__8S6874C128S6874C11__8S6874C10[3]),  3,4},
  {&(_tg__ZTV7S6874C7__8S6874C11__8S6874C10[9]),  9,15},
  {&(_tg__ZTV7S6874C2__8S6874C11__8S6874C10[3]),  3,4},
  {&(_tg__ZTV7S6874C8__8S6874C11__8S6874C10[7]),  7,12},
  {&(_tg__ZTV8S6874C12__8S6874C11__8S6874C10[4]),  4,8},
  {&(_ZTV8S6874C10[46]),  46,84},
  {&(_ZTV8S6874C10[66]),  66,84},
  {&(_ZTV8S6874C10[46]),  46,84},
  {&(_ZTV8S6874C10[79]),  79,84},
  {&(_ZTV8S6874C10[27]),  27,84},
  {&(_tg__ZTV7S6874C5__8S6874C10[6]),  6,17},
  {&(_tg__ZTV7S6874C67S6874C5__8S6874C10[6]),  6,12},
  {&(_tg__ZTV7S6874C7__7S6874C67S6874C5__8S6874C10[9]),  9,15},
  {&(_tg__ZTV7S6874C67S6874C5__8S6874C10[6]),  6,12},
  {&(_tg__ZTV7S6874C8__7S6874C67S6874C5__8S6874C10[7]),  7,12},
  {&(_tg__ZTV7S6874C7__7S6874C5__8S6874C10[9]),  9,15},
  {&(_tg__ZTV7S6874C5__8S6874C10[6]),  6,17},
  {&(_tg__ZTV7S6874C8__7S6874C5__8S6874C10[7]),  7,12},
  {&(_tg__ZTV7S6874C7__8S6874C10[5]),  5,11},
  {&(_tg__ZTV7S6874C2__7S6874C7__8S6874C10[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C7__8S6874C10[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S6874C10[];
extern  VTBL_ENTRY _ZTV8S6874C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C10[];
static VTBL_ENTRY alt_thunk_names156[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C5D0Ev,_ZThn60_N7S6874C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C5D1Ev,_ZThn60_N7S6874C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6874C11D0Ev,_ZThn100_N8S6874C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6874C11D1Ev,_ZThn100_N8S6874C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C6D0Ev,_ZThn60_N7S6874C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S6874C6D0Ev,_ZThn100_N7S6874C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C6D1Ev,_ZThn60_N7S6874C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S6874C6D1Ev,_ZThn100_N7S6874C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6874C10D0Ev,_ZTv0_n24_N8S6874C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6874C10D0Ev,_ZThn100_N8S6874C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6874C10D1Ev,_ZTv0_n24_N8S6874C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6874C10D1Ev,_ZThn100_N8S6874C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6874C10D0Ev,_ZTv0_n40_N8S6874C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6874C10D0Ev,_ZThn40_N8S6874C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6874C10D1Ev,_ZTv0_n40_N8S6874C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6874C10D1Ev,_ZThn40_N8S6874C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6874C10 = {  "S6874C10", // class name
  bases_S6874C10, 8,
  &(vtc_S6874C10[0]), // expected_vtbl_contents
  &(vtt_S6874C10[0]), // expected_vtt_contents
  ABISELECT(256,140), // object size
  NSPAIRA(_ZTI8S6874C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6874C10),84, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6874C10),28, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names156,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6874C4  : virtual S6874C5 , virtual S6874C10 {
  ::S6874C2 s6874c4f0;
  virtual  ~S6874C4(); // _ZN7S6874C4D2Ev
  virtual void  v34(); // _ZN7S6874C43v34Ev
  S6874C4(); // tgen
};
//SIG(-1 S6874C4) C1{ VBC2{ BC3{ VBC4{ VBC5{ v2} VBC6{ v3 v4 v5 v6 v7 Fp FC5} vd v8 v9 v10 Fp[6]} v11 v12 v13 FL} vd v14 v15 v16 v17 v18 FC7{ v32 v33 v34 v35 v36 v37 Fp Fs}[4]} VBC8{ VBC2 BC9{ BC3 BC10{ VBC5 v19 v20 v21 FL Fp} vd v22 v23 v24 v25 FC6} vd v26 v27 v28 v29 v30 v31} vd v1 FC5}


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

static void Test_S6874C4()
{
  extern Class_Descriptor cd_S6874C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,38)];
    init_test(&cd_S6874C4, buf);
    S6874C4 *dp, &lv = *(dp=new (buf) S6874C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,148), "sizeof(S6874C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6874C4)");
    check_base_class_offset(lv, (S6874C2*)(S6874C7*), 0, "S6874C4");
    check_base_class_offset(lv, (S6874C2*)(S6874C12*)(S6874C11*)(S6874C10*), 0, "S6874C4");
    check_base_class_offset(lv, (S6874C8*)(S6874C7*), ABISELECT(184,96), "S6874C4");
    check_base_class_offset(lv, (S6874C7*)(S6874C6*)(S6874C5*), ABISELECT(128,68), "S6874C4");
    check_base_class_offset(lv, (S6874C7*)(S6874C6*)(S6874C11*)(S6874C10*), ABISELECT(128,68), "S6874C4");
    check_base_class_offset(lv, (S6874C6*)(S6874C5*), ABISELECT(16,8), "S6874C4");
    check_base_class_offset(lv, (S6874C5*), ABISELECT(16,8), "S6874C4");
    check_base_class_offset(lv, (S6874C5*)(S6874C10*), ABISELECT(16,8), "S6874C4");
    check_base_class_offset(lv, (S6874C6*)(S6874C11*)(S6874C10*), ABISELECT(208,108), "S6874C4");
    check_base_class_offset(lv, (S6874C12*)(S6874C11*)(S6874C10*), ABISELECT(224,120), "S6874C4");
    check_base_class_offset(lv, (S6874C11*)(S6874C10*), ABISELECT(208,108), "S6874C4");
    check_base_class_offset(lv, (S6874C10*), ABISELECT(208,108), "S6874C4");
    check_field_offset(lv, s6874c4f0, ABISELECT(8,4), "S6874C4.s6874c4f0");
    test_class_info(&lv, &cd_S6874C4);
    dp->~S6874C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6874C4(Test_S6874C4, "S6874C4", ABISELECT(272,148));

#else // __cplusplus

extern void _ZN7S6874C4C1Ev();
extern void _ZN7S6874C4D2Ev();
Name_Map name_map_S6874C4[] = {
  NSPAIR(_ZN7S6874C4C1Ev),
  NSPAIR(_ZN7S6874C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6874C2;
extern VTBL_ENTRY _ZTI7S6874C2[];
extern  VTBL_ENTRY _ZTV7S6874C2[];
extern Class_Descriptor cd_S6874C8;
extern VTBL_ENTRY _ZTI7S6874C8[];
extern  VTBL_ENTRY _ZTV7S6874C8[];
extern Class_Descriptor cd_S6874C7;
extern VTBL_ENTRY _ZTI7S6874C7[];
extern  VTBL_ENTRY _ZTV7S6874C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C7[];
extern Class_Descriptor cd_S6874C6;
extern VTBL_ENTRY _ZTI7S6874C6[];
extern  VTBL_ENTRY _ZTV7S6874C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C6[];
extern Class_Descriptor cd_S6874C5;
extern VTBL_ENTRY _ZTI7S6874C5[];
extern  VTBL_ENTRY _ZTV7S6874C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C5[];
extern Class_Descriptor cd_S6874C6;
extern VTBL_ENTRY _ZTI7S6874C6[];
extern  VTBL_ENTRY _ZTV7S6874C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C6[];
extern Class_Descriptor cd_S6874C12;
extern VTBL_ENTRY _ZTI8S6874C12[];
extern  VTBL_ENTRY _ZTV8S6874C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C12[];
extern Class_Descriptor cd_S6874C11;
extern VTBL_ENTRY _ZTI8S6874C11[];
extern  VTBL_ENTRY _ZTV8S6874C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C11[];
extern Class_Descriptor cd_S6874C10;
extern VTBL_ENTRY _ZTI8S6874C10[];
extern  VTBL_ENTRY _ZTV8S6874C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C10[];
static Base_Class bases_S6874C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6874C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6874C8,    ABISELECT(184,96), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6874C7,    ABISELECT(128,68), //bcp->offset
    38, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6874C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6874C5,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6874C6,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6874C12,    ABISELECT(224,120), //bcp->offset
    105, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6874C11,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 0},
  {&cd_S6874C10,    ABISELECT(208,108), //bcp->offset
    65, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6874C4[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C4D1Ev();
extern void _ZN7S6874C4D0Ev();
extern void _ZN7S6874C43v34Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S6874C4D1Ev,_ZTv0_n40_N7S6874C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S6874C4D1Ev,_ZThn8_N7S6874C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6874C4D0Ev,_ZTv0_n40_N7S6874C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S6874C4D0Ev,_ZThn8_N7S6874C4D0Ev)() __attribute__((weak));
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C4D1Ev,_ZTv0_n24_N7S6874C4D1Ev)();
extern void ABISELECT(_ZThn128_N7S6874C4D1Ev,_ZThn68_N7S6874C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C4D0Ev,_ZTv0_n24_N7S6874C4D0Ev)();
extern void ABISELECT(_ZThn128_N7S6874C4D0Ev,_ZThn68_N7S6874C4D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n88_N7S6874C4D1Ev,_ZTv0_n44_N7S6874C4D1Ev)();
extern void ABISELECT(_ZThn208_N7S6874C4D1Ev,_ZThn108_N7S6874C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6874C4D0Ev,_ZTv0_n44_N7S6874C4D0Ev)();
extern void ABISELECT(_ZThn208_N7S6874C4D0Ev,_ZThn108_N7S6874C4D0Ev)() __attribute__((weak));
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
extern void _ZN8S6874C103v28Ev();
extern void _ZN8S6874C103v29Ev();
extern void _ZN8S6874C103v30Ev();
extern void _ZN8S6874C103v31Ev();
extern void _ZN8S6874C103v32Ev();
extern void _ZN8S6874C103v33Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY vtc_S6874C4[] = {
  ABISELECT(208,108),
  ABISELECT(184,96),
  0,
  ABISELECT(128,68),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C4D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C43v34Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(112,60),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C4D1Ev,_ZTv0_n40_N7S6874C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C4D0Ev,_ZTv0_n40_N7S6874C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C4D1Ev,_ZTv0_n24_N7S6874C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C4D0Ev,_ZTv0_n24_N7S6874C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-208,-108),
  0,
  0,
  0,
  ABISELECT(-192,-100),
  ABISELECT(-24,-12),
  ABISELECT(-208,-108),
  ABISELECT(-80,-40),
  ABISELECT(-208,-108),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C4D1Ev,_ZTv0_n44_N7S6874C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C4D0Ev,_ZTv0_n44_N7S6874C4D0Ev),
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v32Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v33Ev,
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern VTBL_ENTRY _ZTV7S6874C4[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C5D1Ev();
extern void _ZN7S6874C5D0Ev();
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C5__7S6874C4[] = {
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(112,60),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C6D1Ev();
extern void _ZN7S6874C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C67S6874C5__7S6874C4[] = {
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(112,60),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D0Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S6874C6D1Ev,_ZThn60_N7S6874C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S6874C6D0Ev,_ZThn60_N7S6874C6D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C67S6874C5__7S6874C4[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C67S6874C5__7S6874C4[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C67S6874C5__7S6874C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S6874C5D1Ev,_ZThn60_N7S6874C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S6874C5D0Ev,_ZThn60_N7S6874C5D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C5__7S6874C4[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C5__7S6874C4[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C5__7S6874C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C7D1Ev();
extern void _ZN7S6874C7D0Ev();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C4[] = {
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C7__7S6874C4[] = {
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C7__7S6874C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN8S6874C10D1Ev();
extern void _ZN8S6874C10D0Ev();
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
extern void _ZN8S6874C103v28Ev();
extern void _ZN8S6874C103v29Ev();
extern void _ZN8S6874C103v30Ev();
extern void _ZN8S6874C103v31Ev();
extern void _ZN8S6874C103v32Ev();
extern void _ZN8S6874C103v33Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C10__7S6874C4[] = {
  ABISELECT(-192,-100),
  ABISELECT(-24,-12),
  ABISELECT(-208,-108),
  ABISELECT(-80,-40),
  ABISELECT(-208,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN8S6874C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6874C10D0Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v32Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v33Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN8S6874C11D1Ev();
extern void _ZN8S6874C11D0Ev();
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C118S6874C10__7S6874C4[] = {
  ABISELECT(-24,-12),
  ABISELECT(-208,-108),
  ABISELECT(-80,-40),
  ABISELECT(-208,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN8S6874C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6874C11D0Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C6D1Ev();
extern void _ZN7S6874C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C68S6874C118S6874C10__A1__7S6874C4[] = {
  ABISELECT(-24,-12),
  ABISELECT(-208,-108),
  ABISELECT(-80,-40),
  ABISELECT(-208,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D0Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev)();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C68S6874C118S6874C10__A1__7S6874C4[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C68S6874C118S6874C10__A1__7S6874C4[] = {
  0,
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C68S6874C118S6874C10__A1__7S6874C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C128S6874C118S6874C10__7S6874C4[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C12[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C128S6874C118S6874C10__7S6874C4[] = {
  0,
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S6874C12[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev)();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__8S6874C118S6874C10__7S6874C4[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C118S6874C10__7S6874C4[] = {
  0,
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__8S6874C118S6874C10__7S6874C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C12__8S6874C118S6874C10__7S6874C4[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S6874C10D1Ev,_ZTv0_n40_N8S6874C10D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S6874C10D0Ev,_ZTv0_n40_N8S6874C10D0Ev)();
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C5__8S6874C10__7S6874C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(192,100),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-16,-8),
  ABISELECT(112,60),
  ABISELECT(-16,-8),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6874C10D1Ev,_ZTv0_n40_N8S6874C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6874C10D0Ev,_ZTv0_n40_N8S6874C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N8S6874C10D1Ev,_ZTv0_n24_N8S6874C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6874C10D0Ev,_ZTv0_n24_N8S6874C10D0Ev)();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__8S6874C10__7S6874C4[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C10D1Ev,_ZTv0_n24_N8S6874C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C10D0Ev,_ZTv0_n24_N8S6874C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C10__7S6874C4[] = {
  0,
  ABISELECT(208,108),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__8S6874C10__7S6874C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C128S6874C11__8S6874C10__7S6874C4[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
static  VTT_ENTRY vtt_S6874C4[] = {
  {&(_ZTV7S6874C4[8]),  8,113},
  {&(_ZTV7S6874C4[27]),  27,113},
  {&(_ZTV7S6874C4[47]),  47,113},
  {&(_ZTV7S6874C4[8]),  8,113},
  {&(_ZTV7S6874C4[60]),  60,113},
  {&(_ZTV7S6874C4[89]),  89,113},
  {&(_ZTV7S6874C4[109]),  109,113},
  {&(_tg__ZTV7S6874C5__7S6874C4[6]),  6,17},
  {&(_tg__ZTV7S6874C67S6874C5__7S6874C4[6]),  6,12},
  {&(_tg__ZTV7S6874C7__7S6874C67S6874C5__7S6874C4[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C67S6874C5__7S6874C4[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C67S6874C5__7S6874C4[7]),  7,12},
  {&(_tg__ZTV7S6874C7__7S6874C5__7S6874C4[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C5__7S6874C4[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C5__7S6874C4[7]),  7,12},
  {&(_tg__ZTV7S6874C7__7S6874C4[5]),  5,11},
  {&(_tg__ZTV7S6874C2__7S6874C7__7S6874C4[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C7__7S6874C4[7]),  7,12},
  {&(_tg__ZTV8S6874C10__7S6874C4[7]),  7,23},
  {&(_tg__ZTV8S6874C118S6874C10__7S6874C4[6]),  6,16},
  {&(_tg__ZTV7S6874C68S6874C118S6874C10__A1__7S6874C4[6]),  6,12},
  {&(_tg__ZTV7S6874C7__7S6874C68S6874C118S6874C10__A1__7S6874C4[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C68S6874C118S6874C10__A1__7S6874C4[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C68S6874C118S6874C10__A1__7S6874C4[7]),  7,12},
  {&(_tg__ZTV8S6874C128S6874C118S6874C10__7S6874C4[4]),  4,8},
  {&(_tg__ZTV7S6874C2__8S6874C128S6874C118S6874C10__7S6874C4[3]),  3,4},
  {&(_tg__ZTV7S6874C7__8S6874C118S6874C10__7S6874C4[9]),  9,15},
  {&(_tg__ZTV7S6874C2__8S6874C118S6874C10__7S6874C4[3]),  3,4},
  {&(_tg__ZTV7S6874C8__8S6874C118S6874C10__7S6874C4[7]),  7,12},
  {&(_tg__ZTV8S6874C12__8S6874C118S6874C10__7S6874C4[4]),  4,8},
  {&(_tg__ZTV7S6874C5__8S6874C10__7S6874C4[15]),  15,26},
  {&(_tg__ZTV7S6874C7__8S6874C10__7S6874C4[9]),  9,15},
  {&(_tg__ZTV7S6874C2__8S6874C10__7S6874C4[3]),  3,4},
  {&(_tg__ZTV7S6874C8__8S6874C10__7S6874C4[7]),  7,12},
  {&(_tg__ZTV8S6874C128S6874C11__8S6874C10__7S6874C4[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S6874C4[];
extern  VTBL_ENTRY _ZTV7S6874C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C4[];
static VTBL_ENTRY alt_thunk_names157[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C5D0Ev,_ZThn60_N7S6874C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C5D1Ev,_ZThn60_N7S6874C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C6D0Ev,_ZThn60_N7S6874C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C6D1Ev,_ZThn60_N7S6874C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C4D0Ev,_ZTv0_n44_N7S6874C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6874C4D0Ev,_ZThn108_N7S6874C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C4D1Ev,_ZTv0_n44_N7S6874C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6874C4D1Ev,_ZThn108_N7S6874C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C4D0Ev,_ZTv0_n24_N7S6874C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6874C4D0Ev,_ZThn68_N7S6874C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C4D1Ev,_ZTv0_n24_N7S6874C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6874C4D1Ev,_ZThn68_N7S6874C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C4D0Ev,_ZTv0_n40_N7S6874C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6874C4D0Ev,_ZThn8_N7S6874C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C4D1Ev,_ZTv0_n40_N7S6874C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6874C4D1Ev,_ZThn8_N7S6874C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6874C4 = {  "S6874C4", // class name
  bases_S6874C4, 9,
  &(vtc_S6874C4[0]), // expected_vtbl_contents
  &(vtt_S6874C4[0]), // expected_vtt_contents
  ABISELECT(272,148), // object size
  NSPAIRA(_ZTI7S6874C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6874C4),113, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6874C4),35, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names157,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6874C3  : virtual S6874C2 , virtual S6874C4 {
  virtual  ~S6874C3(); // _ZN7S6874C3D2Ev
  virtual void  v35(); // _ZN7S6874C33v35Ev
  virtual void  v36(); // _ZN7S6874C33v36Ev
  virtual void  v37(); // _ZN7S6874C33v37Ev
  virtual void  v38(); // _ZN7S6874C33v38Ev
  virtual void  v39(); // _ZN7S6874C33v39Ev
  virtual void  v40(); // _ZN7S6874C33v40Ev
  virtual void  v41(); // _ZN7S6874C33v41Ev
  S6874C3(); // tgen
};
//SIG(-1 S6874C3) C1{ VBC2{ v8} VBC3{ VBC4{ BC5{ VBC6{ VBC2 VBC7{ v9 v10 v11 v12 v13 Fp FC2} vd v14 v15 v16 Fp[6]} v17 v18 v19 FL} vd v20 v21 v22 v23 v24 FC8{ v39 v40 v41 v42 v43 v44 Fp Fs}[4]} VBC9{ VBC4 BC10{ BC5 BC11{ VBC2 v25 v26 v27 FL Fp} vd v28 v29 v30 v31 FC7} vd v32 v33 v34 v35 v36 v37} vd v38 FC2} vd v1 v2 v3 v4 v5 v6 v7}


 S6874C3 ::~S6874C3(){ note_dtor("S6874C3", this);}
void  S6874C3 ::v35(){vfunc_called(this, "_ZN7S6874C33v35Ev");}
void  S6874C3 ::v36(){vfunc_called(this, "_ZN7S6874C33v36Ev");}
void  S6874C3 ::v37(){vfunc_called(this, "_ZN7S6874C33v37Ev");}
void  S6874C3 ::v38(){vfunc_called(this, "_ZN7S6874C33v38Ev");}
void  S6874C3 ::v39(){vfunc_called(this, "_ZN7S6874C33v39Ev");}
void  S6874C3 ::v40(){vfunc_called(this, "_ZN7S6874C33v40Ev");}
void  S6874C3 ::v41(){vfunc_called(this, "_ZN7S6874C33v41Ev");}
S6874C3 ::S6874C3(){ note_ctor("S6874C3", this);} // tgen

static void Test_S6874C3()
{
  extern Class_Descriptor cd_S6874C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,39)];
    init_test(&cd_S6874C3, buf);
    S6874C3 *dp, &lv = *(dp=new (buf) S6874C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,152), "sizeof(S6874C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6874C3)");
    check_base_class_offset(lv, (S6874C2*), 0, "S6874C3");
    check_base_class_offset(lv, (S6874C2*)(S6874C7*), 0, "S6874C3");
    check_base_class_offset(lv, (S6874C2*)(S6874C12*)(S6874C11*)(S6874C10*), 0, "S6874C3");
    check_base_class_offset(lv, (S6874C8*)(S6874C7*), ABISELECT(192,100), "S6874C3");
    check_base_class_offset(lv, (S6874C7*)(S6874C6*)(S6874C5*), ABISELECT(136,72), "S6874C3");
    check_base_class_offset(lv, (S6874C7*)(S6874C6*)(S6874C11*)(S6874C10*), ABISELECT(136,72), "S6874C3");
    check_base_class_offset(lv, (S6874C6*)(S6874C5*), ABISELECT(24,12), "S6874C3");
    check_base_class_offset(lv, (S6874C5*)(S6874C4*), ABISELECT(24,12), "S6874C3");
    check_base_class_offset(lv, (S6874C5*)(S6874C10*), ABISELECT(24,12), "S6874C3");
    check_base_class_offset(lv, (S6874C6*)(S6874C11*)(S6874C10*), ABISELECT(216,112), "S6874C3");
    check_base_class_offset(lv, (S6874C12*)(S6874C11*)(S6874C10*), ABISELECT(232,124), "S6874C3");
    check_base_class_offset(lv, (S6874C11*)(S6874C10*), ABISELECT(216,112), "S6874C3");
    check_base_class_offset(lv, (S6874C10*)(S6874C4*), ABISELECT(216,112), "S6874C3");
    check_base_class_offset(lv, (S6874C4*), ABISELECT(8,4), "S6874C3");
    test_class_info(&lv, &cd_S6874C3);
    dp->~S6874C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6874C3(Test_S6874C3, "S6874C3", ABISELECT(280,152));

#else // __cplusplus

extern void _ZN7S6874C3C1Ev();
extern void _ZN7S6874C3D2Ev();
Name_Map name_map_S6874C3[] = {
  NSPAIR(_ZN7S6874C3C1Ev),
  NSPAIR(_ZN7S6874C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6874C2;
extern VTBL_ENTRY _ZTI7S6874C2[];
extern  VTBL_ENTRY _ZTV7S6874C2[];
extern Class_Descriptor cd_S6874C8;
extern VTBL_ENTRY _ZTI7S6874C8[];
extern  VTBL_ENTRY _ZTV7S6874C8[];
extern Class_Descriptor cd_S6874C7;
extern VTBL_ENTRY _ZTI7S6874C7[];
extern  VTBL_ENTRY _ZTV7S6874C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C7[];
extern Class_Descriptor cd_S6874C6;
extern VTBL_ENTRY _ZTI7S6874C6[];
extern  VTBL_ENTRY _ZTV7S6874C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C6[];
extern Class_Descriptor cd_S6874C5;
extern VTBL_ENTRY _ZTI7S6874C5[];
extern  VTBL_ENTRY _ZTV7S6874C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C5[];
extern Class_Descriptor cd_S6874C6;
extern VTBL_ENTRY _ZTI7S6874C6[];
extern  VTBL_ENTRY _ZTV7S6874C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C6[];
extern Class_Descriptor cd_S6874C12;
extern VTBL_ENTRY _ZTI8S6874C12[];
extern  VTBL_ENTRY _ZTV8S6874C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C12[];
extern Class_Descriptor cd_S6874C11;
extern VTBL_ENTRY _ZTI8S6874C11[];
extern  VTBL_ENTRY _ZTV8S6874C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C11[];
extern Class_Descriptor cd_S6874C10;
extern VTBL_ENTRY _ZTI8S6874C10[];
extern  VTBL_ENTRY _ZTV8S6874C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C10[];
extern Class_Descriptor cd_S6874C4;
extern VTBL_ENTRY _ZTI7S6874C4[];
extern  VTBL_ENTRY _ZTV7S6874C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C4[];
static Base_Class bases_S6874C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6874C2,    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_S6874C8,    ABISELECT(192,100), //bcp->offset
    74, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6874C7,    ABISELECT(136,72), //bcp->offset
    59, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6874C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6874C5,    ABISELECT(24,12), //bcp->offset
    33, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6874C6,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6874C12,    ABISELECT(232,124), //bcp->offset
    126, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6874C11,    ABISELECT(216,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6874C10,    ABISELECT(216,112), //bcp->offset
    86, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6874C4,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6874C3[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C3D1Ev();
extern void _ZN7S6874C3D0Ev();
extern void _ZN7S6874C33v35Ev();
extern void _ZN7S6874C33v36Ev();
extern void _ZN7S6874C33v37Ev();
extern void _ZN7S6874C33v38Ev();
extern void _ZN7S6874C33v39Ev();
extern void _ZN7S6874C33v40Ev();
extern void _ZN7S6874C33v41Ev();
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n72_N7S6874C3D1Ev,_ZTv0_n36_N7S6874C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S6874C3D1Ev,_ZThn4_N7S6874C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6874C3D0Ev,_ZTv0_n36_N7S6874C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S6874C3D0Ev,_ZThn4_N7S6874C3D0Ev)() __attribute__((weak));
extern void _ZN7S6874C43v34Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S6874C3D1Ev,_ZTv0_n40_N7S6874C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S6874C3D1Ev,_ZThn12_N7S6874C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6874C3D0Ev,_ZTv0_n40_N7S6874C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S6874C3D0Ev,_ZThn12_N7S6874C3D0Ev)() __attribute__((weak));
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C3D1Ev,_ZTv0_n24_N7S6874C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S6874C3D1Ev,_ZThn72_N7S6874C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C3D0Ev,_ZTv0_n24_N7S6874C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S6874C3D0Ev,_ZThn72_N7S6874C3D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n88_N7S6874C3D1Ev,_ZTv0_n44_N7S6874C3D1Ev)();
extern void ABISELECT(_ZThn216_N7S6874C3D1Ev,_ZThn112_N7S6874C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6874C3D0Ev,_ZTv0_n44_N7S6874C3D0Ev)();
extern void ABISELECT(_ZThn216_N7S6874C3D0Ev,_ZThn112_N7S6874C3D0Ev)() __attribute__((weak));
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
extern void _ZN8S6874C103v28Ev();
extern void _ZN8S6874C103v29Ev();
extern void _ZN8S6874C103v30Ev();
extern void _ZN8S6874C103v31Ev();
extern void _ZN8S6874C103v32Ev();
extern void _ZN8S6874C103v33Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY vtc_S6874C3[] = {
  ABISELECT(216,112),
  ABISELECT(192,100),
  ABISELECT(136,72),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C3D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v35Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v36Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v37Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v38Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v39Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v40Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v41Ev,
  0,
  ABISELECT(-8,-4),
  ABISELECT(208,108),
  ABISELECT(184,96),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6874C3D1Ev,_ZTv0_n36_N7S6874C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6874C3D0Ev,_ZTv0_n36_N7S6874C3D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C43v34Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-24,-12),
  ABISELECT(112,60),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C3D1Ev,_ZTv0_n40_N7S6874C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C3D0Ev,_ZTv0_n40_N7S6874C3D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(56,28),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C3D1Ev,_ZTv0_n24_N7S6874C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C3D0Ev,_ZTv0_n24_N7S6874C3D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-216,-112),
  0,
  0,
  0,
  ABISELECT(-192,-100),
  ABISELECT(-24,-12),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  ABISELECT(-216,-112),
  ABISELECT(-216,-112),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C3D1Ev,_ZTv0_n44_N7S6874C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C3D0Ev,_ZTv0_n44_N7S6874C3D0Ev),
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v32Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v33Ev,
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern VTBL_ENTRY _ZTV7S6874C3[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C4D1Ev();
extern void _ZN7S6874C4D0Ev();
extern void _ZN7S6874C43v34Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C4__7S6874C3[] = {
  ABISELECT(208,108),
  ABISELECT(184,96),
  ABISELECT(-8,-4),
  ABISELECT(128,68),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C4D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C43v34Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S6874C4D1Ev,_ZTv0_n40_N7S6874C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S6874C4D1Ev,_ZThn8_N7S6874C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6874C4D0Ev,_ZTv0_n40_N7S6874C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S6874C4D0Ev,_ZThn8_N7S6874C4D0Ev)() __attribute__((weak));
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C5__7S6874C4__7S6874C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-24,-12),
  ABISELECT(112,60),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C4D1Ev,_ZTv0_n40_N7S6874C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C4D0Ev,_ZTv0_n40_N7S6874C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C4D1Ev,_ZTv0_n24_N7S6874C4D1Ev)();
extern void ABISELECT(_ZThn128_N7S6874C4D1Ev,_ZThn68_N7S6874C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C4D0Ev,_ZTv0_n24_N7S6874C4D0Ev)();
extern void ABISELECT(_ZThn128_N7S6874C4D0Ev,_ZThn68_N7S6874C4D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C4__7S6874C3[] = {
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(56,28),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C4D1Ev,_ZTv0_n24_N7S6874C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C4D0Ev,_ZTv0_n24_N7S6874C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C4__7S6874C3[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C4__7S6874C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n88_N7S6874C4D1Ev,_ZTv0_n44_N7S6874C4D1Ev)();
extern void ABISELECT(_ZThn208_N7S6874C4D1Ev,_ZThn108_N7S6874C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6874C4D0Ev,_ZTv0_n44_N7S6874C4D0Ev)();
extern void ABISELECT(_ZThn208_N7S6874C4D0Ev,_ZThn108_N7S6874C4D0Ev)() __attribute__((weak));
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
extern void _ZN8S6874C103v28Ev();
extern void _ZN8S6874C103v29Ev();
extern void _ZN8S6874C103v30Ev();
extern void _ZN8S6874C103v31Ev();
extern void _ZN8S6874C103v32Ev();
extern void _ZN8S6874C103v33Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C10__7S6874C4__7S6874C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-208,-108),
  0,
  0,
  0,
  ABISELECT(-192,-100),
  ABISELECT(-24,-12),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  ABISELECT(-216,-112),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C4D1Ev,_ZTv0_n44_N7S6874C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C4D0Ev,_ZTv0_n44_N7S6874C4D0Ev),
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v32Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v33Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C128S6874C118S6874C10__7S6874C4__7S6874C3[] = {
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C5D1Ev();
extern void _ZN7S6874C5D0Ev();
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C5__7S6874C3[] = {
  ABISELECT(168,88),
  ABISELECT(-24,-12),
  ABISELECT(112,60),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C6D1Ev();
extern void _ZN7S6874C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C67S6874C5__7S6874C3[] = {
  ABISELECT(168,88),
  ABISELECT(-24,-12),
  ABISELECT(112,60),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D0Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S6874C6D1Ev,_ZThn60_N7S6874C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S6874C6D0Ev,_ZThn60_N7S6874C6D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C67S6874C5__7S6874C3[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C67S6874C5__7S6874C3[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C67S6874C5__7S6874C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S6874C5D1Ev,_ZThn60_N7S6874C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S6874C5D0Ev,_ZThn60_N7S6874C5D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C5__7S6874C3[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C5__7S6874C3[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C5__7S6874C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C7D1Ev();
extern void _ZN7S6874C7D0Ev();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C3[] = {
  ABISELECT(56,28),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C7__7S6874C3[] = {
  0,
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C7__7S6874C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN8S6874C10D1Ev();
extern void _ZN8S6874C10D0Ev();
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
extern void _ZN8S6874C103v28Ev();
extern void _ZN8S6874C103v29Ev();
extern void _ZN8S6874C103v30Ev();
extern void _ZN8S6874C103v31Ev();
extern void _ZN8S6874C103v32Ev();
extern void _ZN8S6874C103v33Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C10__7S6874C3[] = {
  ABISELECT(-192,-100),
  ABISELECT(-24,-12),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  ABISELECT(-216,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN8S6874C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6874C10D0Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v32Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v33Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN8S6874C11D1Ev();
extern void _ZN8S6874C11D0Ev();
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C118S6874C10__7S6874C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  ABISELECT(-216,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN8S6874C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6874C11D0Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C6D1Ev();
extern void _ZN7S6874C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C68S6874C118S6874C10__A1__7S6874C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-216,-112),
  ABISELECT(-80,-40),
  ABISELECT(-216,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D0Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev)();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C68S6874C118S6874C10__A1__7S6874C3[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C68S6874C118S6874C10__A1__7S6874C3[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C68S6874C118S6874C10__A1__7S6874C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C128S6874C118S6874C10__7S6874C3[] = {
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C12[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C128S6874C118S6874C10__7S6874C3[] = {
  0,
  ABISELECT(232,124),
  (VTBL_ENTRY)&(_ZTI8S6874C12[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev)();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__8S6874C118S6874C10__7S6874C3[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C118S6874C10__7S6874C3[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__8S6874C118S6874C10__7S6874C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C12__8S6874C118S6874C10__7S6874C3[] = {
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S6874C10D1Ev,_ZTv0_n40_N8S6874C10D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S6874C10D0Ev,_ZTv0_n40_N8S6874C10D0Ev)();
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C5__8S6874C10__7S6874C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(192,100),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-24,-12),
  ABISELECT(112,60),
  ABISELECT(-24,-12),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6874C10D1Ev,_ZTv0_n40_N8S6874C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6874C10D0Ev,_ZTv0_n40_N8S6874C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N8S6874C10D1Ev,_ZTv0_n24_N8S6874C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6874C10D0Ev,_ZTv0_n24_N8S6874C10D0Ev)();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__8S6874C10__7S6874C3[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C10D1Ev,_ZTv0_n24_N8S6874C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C10D0Ev,_ZTv0_n24_N8S6874C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C10__7S6874C3[] = {
  0,
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__8S6874C10__7S6874C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C128S6874C11__8S6874C10__7S6874C3[] = {
  ABISELECT(-232,-124),
  ABISELECT(-232,-124),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
static  VTT_ENTRY vtt_S6874C3[] = {
  {&(_ZTV7S6874C3[9]),  9,134},
  {&(_ZTV7S6874C3[9]),  9,134},
  {&(_ZTV7S6874C3[29]),  29,134},
  {&(_ZTV7S6874C3[48]),  48,134},
  {&(_ZTV7S6874C3[68]),  68,134},
  {&(_ZTV7S6874C3[81]),  81,134},
  {&(_ZTV7S6874C3[110]),  110,134},
  {&(_ZTV7S6874C3[130]),  130,134},
  {&(_tg__ZTV7S6874C4__7S6874C3[8]),  8,12},
  {&(_tg__ZTV7S6874C5__7S6874C4__7S6874C3[15]),  15,26},
  {&(_tg__ZTV7S6874C7__7S6874C4__7S6874C3[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C4__7S6874C3[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C4__7S6874C3[7]),  7,12},
  {&(_tg__ZTV8S6874C10__7S6874C4__7S6874C3[24]),  24,40},
  {&(_tg__ZTV8S6874C128S6874C118S6874C10__7S6874C4__7S6874C3[4]),  4,8},
  {&(_tg__ZTV7S6874C5__7S6874C3[6]),  6,17},
  {&(_tg__ZTV7S6874C67S6874C5__7S6874C3[6]),  6,12},
  {&(_tg__ZTV7S6874C7__7S6874C67S6874C5__7S6874C3[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C67S6874C5__7S6874C3[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C67S6874C5__7S6874C3[7]),  7,12},
  {&(_tg__ZTV7S6874C7__7S6874C5__7S6874C3[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C5__7S6874C3[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C5__7S6874C3[7]),  7,12},
  {&(_tg__ZTV7S6874C7__7S6874C3[5]),  5,11},
  {&(_tg__ZTV7S6874C2__7S6874C7__7S6874C3[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C7__7S6874C3[7]),  7,12},
  {&(_tg__ZTV8S6874C10__7S6874C3[7]),  7,23},
  {&(_tg__ZTV8S6874C118S6874C10__7S6874C3[6]),  6,16},
  {&(_tg__ZTV7S6874C68S6874C118S6874C10__A1__7S6874C3[6]),  6,12},
  {&(_tg__ZTV7S6874C7__7S6874C68S6874C118S6874C10__A1__7S6874C3[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C68S6874C118S6874C10__A1__7S6874C3[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C68S6874C118S6874C10__A1__7S6874C3[7]),  7,12},
  {&(_tg__ZTV8S6874C128S6874C118S6874C10__7S6874C3[4]),  4,8},
  {&(_tg__ZTV7S6874C2__8S6874C128S6874C118S6874C10__7S6874C3[3]),  3,4},
  {&(_tg__ZTV7S6874C7__8S6874C118S6874C10__7S6874C3[9]),  9,15},
  {&(_tg__ZTV7S6874C2__8S6874C118S6874C10__7S6874C3[3]),  3,4},
  {&(_tg__ZTV7S6874C8__8S6874C118S6874C10__7S6874C3[7]),  7,12},
  {&(_tg__ZTV8S6874C12__8S6874C118S6874C10__7S6874C3[4]),  4,8},
  {&(_tg__ZTV7S6874C5__8S6874C10__7S6874C3[15]),  15,26},
  {&(_tg__ZTV7S6874C7__8S6874C10__7S6874C3[9]),  9,15},
  {&(_tg__ZTV7S6874C2__8S6874C10__7S6874C3[3]),  3,4},
  {&(_tg__ZTV7S6874C8__8S6874C10__7S6874C3[7]),  7,12},
  {&(_tg__ZTV8S6874C128S6874C11__8S6874C10__7S6874C3[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S6874C3[];
extern  VTBL_ENTRY _ZTV7S6874C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C3[];
static VTBL_ENTRY alt_thunk_names158[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C5D0Ev,_ZThn60_N7S6874C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C5D1Ev,_ZThn60_N7S6874C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C6D0Ev,_ZThn60_N7S6874C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C6D1Ev,_ZThn60_N7S6874C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C4D0Ev,_ZTv0_n44_N7S6874C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6874C4D0Ev,_ZThn108_N7S6874C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C4D1Ev,_ZTv0_n44_N7S6874C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6874C4D1Ev,_ZThn108_N7S6874C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C4D0Ev,_ZTv0_n24_N7S6874C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6874C4D0Ev,_ZThn68_N7S6874C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C4D1Ev,_ZTv0_n24_N7S6874C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6874C4D1Ev,_ZThn68_N7S6874C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C4D0Ev,_ZTv0_n40_N7S6874C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6874C4D0Ev,_ZThn8_N7S6874C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C4D1Ev,_ZTv0_n40_N7S6874C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6874C4D1Ev,_ZThn8_N7S6874C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C3D0Ev,_ZTv0_n44_N7S6874C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S6874C3D0Ev,_ZThn112_N7S6874C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C3D1Ev,_ZTv0_n44_N7S6874C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S6874C3D1Ev,_ZThn112_N7S6874C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C3D0Ev,_ZTv0_n24_N7S6874C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6874C3D0Ev,_ZThn72_N7S6874C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C3D1Ev,_ZTv0_n24_N7S6874C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6874C3D1Ev,_ZThn72_N7S6874C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C3D0Ev,_ZTv0_n40_N7S6874C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6874C3D0Ev,_ZThn12_N7S6874C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C3D1Ev,_ZTv0_n40_N7S6874C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6874C3D1Ev,_ZThn12_N7S6874C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6874C3D0Ev,_ZTv0_n36_N7S6874C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6874C3D0Ev,_ZThn4_N7S6874C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6874C3D1Ev,_ZTv0_n36_N7S6874C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6874C3D1Ev,_ZThn4_N7S6874C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6874C3 = {  "S6874C3", // class name
  bases_S6874C3, 10,
  &(vtc_S6874C3[0]), // expected_vtbl_contents
  &(vtt_S6874C3[0]), // expected_vtt_contents
  ABISELECT(280,152), // object size
  NSPAIRA(_ZTI7S6874C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6874C3),134, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6874C3),43, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names158,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6874C1  : S6874C2 , S6874C3 {
  ::S7337C10 s6874c1f0;
  ::S6874C8 s6874c1f1;
  void *s6874c1f2;
  int s6874c1f3;
  virtual  ~S6874C1(); // _ZN7S6874C1D2Ev
  virtual void  v1(); // _ZN7S6874C12v1Ev
  virtual void  v2(); // _ZN7S6874C12v2Ev
  virtual void  v3(); // _ZN7S6874C12v3Ev
  S6874C1(); // tgen
};
//SIG(1 S6874C1) C1{ BC2{ v4} BC3{ VBC2 VBC4{ VBC5{ BC6{ VBC7{ VBC2 VBC8{ v5 v6 v7 v8 v9 Fp FC2} vd v10 v11 v12 Fp[6]} v13 v14 v15 FL} vd v16 v17 v18 v19 v20 FC9{ v42 v43 v44 v45 v46 v47 Fp Fs}[4]} VBC10{ VBC5 BC11{ BC6 BC12{ VBC2 v21 v22 v23 FL Fp} vd v24 v25 v26 v27 FC8} vd v28 v29 v30 v31 v32 v33} vd v34 FC2} vd v35 v36 v37 v38 v39 v40 v41} vd v1 v2 v3 FC9 FC8 Fp Fi}


 S6874C1 ::~S6874C1(){ note_dtor("S6874C1", this);}
void  S6874C1 ::v1(){vfunc_called(this, "_ZN7S6874C12v1Ev");}
void  S6874C1 ::v2(){vfunc_called(this, "_ZN7S6874C12v2Ev");}
void  S6874C1 ::v3(){vfunc_called(this, "_ZN7S6874C12v3Ev");}
S6874C1 ::S6874C1(){ note_ctor("S6874C1", this);} // tgen

static void Test_S6874C1()
{
  extern Class_Descriptor cd_S6874C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,48)];
    init_test(&cd_S6874C1, buf);
    S6874C1 *dp, &lv = *(dp=new (buf) S6874C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,188), "sizeof(S6874C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6874C1)");
    /*is_ambiguous_... S6874C1::S6874C2 */ AMB_check_base_class_offset(lv, (S6874C2*), 0, "S6874C1");
    check_base_class_offset(lv, (S6874C2*)(S6874C3*), ABISELECT(8,4), "S6874C1");
    check_base_class_offset(lv, (S6874C2*)(S6874C7*), ABISELECT(8,4), "S6874C1");
    check_base_class_offset(lv, (S6874C2*)(S6874C12*)(S6874C11*)(S6874C10*), ABISELECT(8,4), "S6874C1");
    check_base_class_offset(lv, (S6874C8*)(S6874C7*), ABISELECT(264,136), "S6874C1");
    check_base_class_offset(lv, (S6874C7*)(S6874C6*)(S6874C5*), ABISELECT(208,108), "S6874C1");
    check_base_class_offset(lv, (S6874C7*)(S6874C6*)(S6874C11*)(S6874C10*), ABISELECT(208,108), "S6874C1");
    check_base_class_offset(lv, (S6874C6*)(S6874C5*), ABISELECT(96,48), "S6874C1");
    check_base_class_offset(lv, (S6874C5*)(S6874C4*), ABISELECT(96,48), "S6874C1");
    check_base_class_offset(lv, (S6874C5*)(S6874C10*), ABISELECT(96,48), "S6874C1");
    check_base_class_offset(lv, (S6874C6*)(S6874C11*)(S6874C10*), ABISELECT(288,148), "S6874C1");
    check_base_class_offset(lv, (S6874C12*)(S6874C11*)(S6874C10*), ABISELECT(304,160), "S6874C1");
    check_base_class_offset(lv, (S6874C11*)(S6874C10*), ABISELECT(288,148), "S6874C1");
    check_base_class_offset(lv, (S6874C10*)(S6874C4*), ABISELECT(288,148), "S6874C1");
    check_base_class_offset(lv, (S6874C4*)(S6874C3*), ABISELECT(80,40), "S6874C1");
    check_base_class_offset(lv, (S6874C3*), ABISELECT(8,4), "S6874C1");
    check_field_offset(lv, s6874c1f0, ABISELECT(16,8), "S6874C1.s6874c1f0");
    check_field_offset(lv, s6874c1f1, ABISELECT(40,20), "S6874C1.s6874c1f1");
    check_field_offset(lv, s6874c1f2, ABISELECT(64,32), "S6874C1.s6874c1f2");
    check_field_offset(lv, s6874c1f3, ABISELECT(72,36), "S6874C1.s6874c1f3");
    test_class_info(&lv, &cd_S6874C1);
    dp->~S6874C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6874C1(Test_S6874C1, "S6874C1", ABISELECT(352,188));

#else // __cplusplus

extern void _ZN7S6874C1C1Ev();
extern void _ZN7S6874C1D2Ev();
Name_Map name_map_S6874C1[] = {
  NSPAIR(_ZN7S6874C1C1Ev),
  NSPAIR(_ZN7S6874C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6874C2;
extern VTBL_ENTRY _ZTI7S6874C2[];
extern  VTBL_ENTRY _ZTV7S6874C2[];
extern Class_Descriptor cd_S6874C2;
extern VTBL_ENTRY _ZTI7S6874C2[];
extern  VTBL_ENTRY _ZTV7S6874C2[];
extern Class_Descriptor cd_S6874C8;
extern VTBL_ENTRY _ZTI7S6874C8[];
extern  VTBL_ENTRY _ZTV7S6874C8[];
extern Class_Descriptor cd_S6874C7;
extern VTBL_ENTRY _ZTI7S6874C7[];
extern  VTBL_ENTRY _ZTV7S6874C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C7[];
extern Class_Descriptor cd_S6874C6;
extern VTBL_ENTRY _ZTI7S6874C6[];
extern  VTBL_ENTRY _ZTV7S6874C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C6[];
extern Class_Descriptor cd_S6874C5;
extern VTBL_ENTRY _ZTI7S6874C5[];
extern  VTBL_ENTRY _ZTV7S6874C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C5[];
extern Class_Descriptor cd_S6874C6;
extern VTBL_ENTRY _ZTI7S6874C6[];
extern  VTBL_ENTRY _ZTV7S6874C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C6[];
extern Class_Descriptor cd_S6874C12;
extern VTBL_ENTRY _ZTI8S6874C12[];
extern  VTBL_ENTRY _ZTV8S6874C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C12[];
extern Class_Descriptor cd_S6874C11;
extern VTBL_ENTRY _ZTI8S6874C11[];
extern  VTBL_ENTRY _ZTV8S6874C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C11[];
extern Class_Descriptor cd_S6874C10;
extern VTBL_ENTRY _ZTI8S6874C10[];
extern  VTBL_ENTRY _ZTV8S6874C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6874C10[];
extern Class_Descriptor cd_S6874C4;
extern VTBL_ENTRY _ZTI7S6874C4[];
extern  VTBL_ENTRY _ZTV7S6874C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C4[];
extern Class_Descriptor cd_S6874C3;
extern VTBL_ENTRY _ZTI7S6874C3[];
extern  VTBL_ENTRY _ZTV7S6874C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C3[];
static Base_Class bases_S6874C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6874C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6874C2,    ABISELECT(8,4), //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
    3, //immediately_derived
  0, 1},
  {&cd_S6874C8,    ABISELECT(264,136), //bcp->offset
    88, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6874C7,    ABISELECT(208,108), //bcp->offset
    73, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6874C6,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    5, //immediately_derived
  0, 0},
  {&cd_S6874C5,    ABISELECT(96,48), //bcp->offset
    47, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6874C6,    ABISELECT(288,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6874C12,    ABISELECT(304,160), //bcp->offset
    140, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6874C11,    ABISELECT(288,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6874C10,    ABISELECT(288,148), //bcp->offset
    100, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6874C4,    ABISELECT(80,40), //bcp->offset
    33, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6874C3,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6874C1[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C1D1Ev();
extern void _ZN7S6874C1D0Ev();
extern void _ZN7S6874C12v1Ev();
extern void _ZN7S6874C12v2Ev();
extern void _ZN7S6874C12v3Ev();
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZThn8_N7S6874C1D1Ev,_ZThn4_N7S6874C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S6874C1D0Ev,_ZThn4_N7S6874C1D0Ev)();
extern void _ZN7S6874C33v35Ev();
extern void _ZN7S6874C33v36Ev();
extern void _ZN7S6874C33v37Ev();
extern void _ZN7S6874C33v38Ev();
extern void _ZN7S6874C33v39Ev();
extern void _ZN7S6874C33v40Ev();
extern void _ZN7S6874C33v41Ev();
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n72_N7S6874C1D1Ev,_ZTv0_n36_N7S6874C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S6874C1D1Ev,_ZThn40_N7S6874C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6874C1D0Ev,_ZTv0_n36_N7S6874C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S6874C1D0Ev,_ZThn40_N7S6874C1D0Ev)() __attribute__((weak));
extern void _ZN7S6874C43v34Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S6874C1D1Ev,_ZTv0_n40_N7S6874C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S6874C1D1Ev,_ZThn48_N7S6874C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6874C1D0Ev,_ZTv0_n40_N7S6874C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S6874C1D0Ev,_ZThn48_N7S6874C1D0Ev)() __attribute__((weak));
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C1D1Ev,_ZTv0_n24_N7S6874C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S6874C1D1Ev,_ZThn108_N7S6874C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C1D0Ev,_ZTv0_n24_N7S6874C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S6874C1D0Ev,_ZThn108_N7S6874C1D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n88_N7S6874C1D1Ev,_ZTv0_n44_N7S6874C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S6874C1D1Ev,_ZThn148_N7S6874C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6874C1D0Ev,_ZTv0_n44_N7S6874C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S6874C1D0Ev,_ZThn148_N7S6874C1D0Ev)() __attribute__((weak));
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
extern void _ZN8S6874C103v28Ev();
extern void _ZN8S6874C103v29Ev();
extern void _ZN8S6874C103v30Ev();
extern void _ZN8S6874C103v31Ev();
extern void _ZN8S6874C103v32Ev();
extern void _ZN8S6874C103v33Ev();
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY vtc_S6874C1[] = {
  ABISELECT(288,148),
  ABISELECT(264,136),
  ABISELECT(208,108),
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C1[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6874C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6874C12v3Ev,
  ABISELECT(280,144),
  ABISELECT(256,132),
  ABISELECT(200,104),
  ABISELECT(88,44),
  ABISELECT(72,36),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6874C1[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6874C1D1Ev,_ZThn4_N7S6874C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6874C1D0Ev,_ZThn4_N7S6874C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C33v35Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v36Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v37Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v38Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v39Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v40Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v41Ev,
  0,
  ABISELECT(-80,-40),
  ABISELECT(208,108),
  ABISELECT(184,96),
  ABISELECT(-72,-36),
  ABISELECT(128,68),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S6874C1[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6874C1D1Ev,_ZTv0_n36_N7S6874C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6874C1D0Ev,_ZTv0_n36_N7S6874C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C43v34Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-88,-44),
  ABISELECT(112,60),
  ABISELECT(-88,-44),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S6874C1[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C1D1Ev,_ZTv0_n40_N7S6874C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C1D0Ev,_ZTv0_n40_N7S6874C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
  0,
  0,
  0,
  ABISELECT(-208,-108),
  ABISELECT(56,28),
  ABISELECT(-200,-104),
  ABISELECT(-200,-104),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI7S6874C1[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C1D1Ev,_ZTv0_n24_N7S6874C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C1D0Ev,_ZTv0_n24_N7S6874C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-264,-136),
  (VTBL_ENTRY)&(_ZTI7S6874C1[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-148),
  0,
  0,
  0,
  ABISELECT(-192,-100),
  ABISELECT(-24,-12),
  ABISELECT(-280,-144),
  ABISELECT(-80,-40),
  ABISELECT(-280,-144),
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI7S6874C1[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C1D1Ev,_ZTv0_n44_N7S6874C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C1D0Ev,_ZTv0_n44_N7S6874C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v32Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v33Ev,
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-304,-160),
  (VTBL_ENTRY)&(_ZTI7S6874C1[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern VTBL_ENTRY _ZTV7S6874C1[];
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C3D1Ev();
extern void _ZN7S6874C3D0Ev();
extern void _ZN7S6874C33v35Ev();
extern void _ZN7S6874C33v36Ev();
extern void _ZN7S6874C33v37Ev();
extern void _ZN7S6874C33v38Ev();
extern void _ZN7S6874C33v39Ev();
extern void _ZN7S6874C33v40Ev();
extern void _ZN7S6874C33v41Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C3__7S6874C1[] = {
  ABISELECT(280,144),
  ABISELECT(256,132),
  ABISELECT(200,104),
  ABISELECT(88,44),
  ABISELECT(72,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C3D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v35Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v36Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v37Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v38Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v39Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v40Ev,
  (VTBL_ENTRY)&_ZN7S6874C33v41Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n72_N7S6874C3D1Ev,_ZTv0_n36_N7S6874C3D1Ev)();
extern void ABISELECT(_ZThn72_N7S6874C3D1Ev,_ZThn36_N7S6874C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6874C3D0Ev,_ZTv0_n36_N7S6874C3D0Ev)();
extern void ABISELECT(_ZThn72_N7S6874C3D0Ev,_ZThn36_N7S6874C3D0Ev)() __attribute__((weak));
extern void _ZN7S6874C43v34Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C4__7S6874C3__7S6874C1[] = {
  0,
  ABISELECT(-72,-36),
  ABISELECT(208,108),
  ABISELECT(184,96),
  ABISELECT(-72,-36),
  ABISELECT(128,68),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6874C3D1Ev,_ZTv0_n36_N7S6874C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6874C3D0Ev,_ZTv0_n36_N7S6874C3D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C43v34Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S6874C3D1Ev,_ZTv0_n40_N7S6874C3D1Ev)();
extern void ABISELECT(_ZThn88_N7S6874C3D1Ev,_ZThn44_N7S6874C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6874C3D0Ev,_ZTv0_n40_N7S6874C3D0Ev)();
extern void ABISELECT(_ZThn88_N7S6874C3D0Ev,_ZThn44_N7S6874C3D0Ev)() __attribute__((weak));
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C5__7S6874C3__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-44),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-88,-44),
  ABISELECT(112,60),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C3D1Ev,_ZTv0_n40_N7S6874C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C3D0Ev,_ZTv0_n40_N7S6874C3D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C3D1Ev,_ZTv0_n24_N7S6874C3D1Ev)();
extern void ABISELECT(_ZThn200_N7S6874C3D1Ev,_ZThn104_N7S6874C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C3D0Ev,_ZTv0_n24_N7S6874C3D0Ev)();
extern void ABISELECT(_ZThn200_N7S6874C3D0Ev,_ZThn104_N7S6874C3D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C3__7S6874C1[] = {
  0,
  0,
  0,
  ABISELECT(-200,-104),
  ABISELECT(56,28),
  ABISELECT(-200,-104),
  ABISELECT(-200,-104),
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C3D1Ev,_ZTv0_n24_N7S6874C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C3D0Ev,_ZTv0_n24_N7S6874C3D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C3__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n88_N7S6874C3D1Ev,_ZTv0_n44_N7S6874C3D1Ev)();
extern void ABISELECT(_ZThn280_N7S6874C3D1Ev,_ZThn144_N7S6874C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6874C3D0Ev,_ZTv0_n44_N7S6874C3D0Ev)();
extern void ABISELECT(_ZThn280_N7S6874C3D0Ev,_ZThn144_N7S6874C3D0Ev)() __attribute__((weak));
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
extern void _ZN8S6874C103v28Ev();
extern void _ZN8S6874C103v29Ev();
extern void _ZN8S6874C103v30Ev();
extern void _ZN8S6874C103v31Ev();
extern void _ZN8S6874C103v32Ev();
extern void _ZN8S6874C103v33Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C10__7S6874C3__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-280,-144),
  0,
  0,
  0,
  ABISELECT(-192,-100),
  ABISELECT(-24,-12),
  ABISELECT(-280,-144),
  ABISELECT(-80,-40),
  ABISELECT(-280,-144),
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C3D1Ev,_ZTv0_n44_N7S6874C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C3D0Ev,_ZTv0_n44_N7S6874C3D0Ev),
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v32Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v33Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C128S6874C118S6874C10__7S6874C3__7S6874C1[] = {
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  (VTBL_ENTRY)&(_ZTI7S6874C3[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C4D1Ev();
extern void _ZN7S6874C4D0Ev();
extern void _ZN7S6874C43v34Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C4__7S6874C1[] = {
  ABISELECT(208,108),
  ABISELECT(184,96),
  ABISELECT(-72,-36),
  ABISELECT(128,68),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C4D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C43v34Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n80_N7S6874C4D1Ev,_ZTv0_n40_N7S6874C4D1Ev)();
extern void ABISELECT(_ZThn16_N7S6874C4D1Ev,_ZThn8_N7S6874C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6874C4D0Ev,_ZTv0_n40_N7S6874C4D0Ev)();
extern void ABISELECT(_ZThn16_N7S6874C4D0Ev,_ZThn8_N7S6874C4D0Ev)() __attribute__((weak));
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C5__7S6874C4__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-88,-44),
  ABISELECT(112,60),
  ABISELECT(-88,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C4D1Ev,_ZTv0_n40_N7S6874C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6874C4D0Ev,_ZTv0_n40_N7S6874C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C4D1Ev,_ZTv0_n24_N7S6874C4D1Ev)();
extern void ABISELECT(_ZThn128_N7S6874C4D1Ev,_ZThn68_N7S6874C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C4D0Ev,_ZTv0_n24_N7S6874C4D0Ev)();
extern void ABISELECT(_ZThn128_N7S6874C4D0Ev,_ZThn68_N7S6874C4D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C4__7S6874C1[] = {
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(56,28),
  ABISELECT(-200,-104),
  ABISELECT(-200,-104),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C4D1Ev,_ZTv0_n24_N7S6874C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C4D0Ev,_ZTv0_n24_N7S6874C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C4__7S6874C1[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C4__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n88_N7S6874C4D1Ev,_ZTv0_n44_N7S6874C4D1Ev)();
extern void ABISELECT(_ZThn208_N7S6874C4D1Ev,_ZThn108_N7S6874C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6874C4D0Ev,_ZTv0_n44_N7S6874C4D0Ev)();
extern void ABISELECT(_ZThn208_N7S6874C4D0Ev,_ZThn108_N7S6874C4D0Ev)() __attribute__((weak));
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
extern void _ZN8S6874C103v28Ev();
extern void _ZN8S6874C103v29Ev();
extern void _ZN8S6874C103v30Ev();
extern void _ZN8S6874C103v31Ev();
extern void _ZN8S6874C103v32Ev();
extern void _ZN8S6874C103v33Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C10__7S6874C4__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-208,-108),
  0,
  0,
  0,
  ABISELECT(-192,-100),
  ABISELECT(-24,-12),
  ABISELECT(-280,-144),
  ABISELECT(-80,-40),
  ABISELECT(-280,-144),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C4D1Ev,_ZTv0_n44_N7S6874C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6874C4D0Ev,_ZTv0_n44_N7S6874C4D0Ev),
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v32Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v33Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C128S6874C118S6874C10__7S6874C4__7S6874C1[] = {
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI7S6874C4[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C5D1Ev();
extern void _ZN7S6874C5D0Ev();
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C5__7S6874C1[] = {
  ABISELECT(168,88),
  ABISELECT(-88,-44),
  ABISELECT(112,60),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C6D1Ev();
extern void _ZN7S6874C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C67S6874C5__7S6874C1[] = {
  ABISELECT(168,88),
  ABISELECT(-88,-44),
  ABISELECT(112,60),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D0Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S6874C6D1Ev,_ZThn60_N7S6874C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S6874C6D0Ev,_ZThn60_N7S6874C6D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C67S6874C5__7S6874C1[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-200,-104),
  ABISELECT(-200,-104),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C67S6874C5__7S6874C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C67S6874C5__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S6874C5D1Ev,_ZThn60_N7S6874C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S6874C5D0Ev,_ZThn60_N7S6874C5D0Ev)() __attribute__((weak));
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C5__7S6874C1[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-200,-104),
  ABISELECT(-200,-104),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C5__7S6874C1[] = {
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C5__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S6874C5[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C7D1Ev();
extern void _ZN7S6874C7D0Ev();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C1[] = {
  ABISELECT(56,28),
  ABISELECT(-200,-104),
  ABISELECT(-200,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C7__7S6874C1[] = {
  0,
  ABISELECT(200,104),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C7__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6874C7[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN8S6874C10D1Ev();
extern void _ZN8S6874C10D0Ev();
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
extern void _ZN8S6874C103v28Ev();
extern void _ZN8S6874C103v29Ev();
extern void _ZN8S6874C103v30Ev();
extern void _ZN8S6874C103v31Ev();
extern void _ZN8S6874C103v32Ev();
extern void _ZN8S6874C103v33Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C10__7S6874C1[] = {
  ABISELECT(-192,-100),
  ABISELECT(-24,-12),
  ABISELECT(-280,-144),
  ABISELECT(-80,-40),
  ABISELECT(-280,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN8S6874C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6874C10D0Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v32Ev,
  (VTBL_ENTRY)&_ZN8S6874C103v33Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN8S6874C11D1Ev();
extern void _ZN8S6874C11D0Ev();
extern void _ZN8S6874C113v24Ev();
extern void _ZN8S6874C113v25Ev();
extern void _ZN8S6874C113v26Ev();
extern void _ZN8S6874C113v27Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C118S6874C10__7S6874C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-280,-144),
  ABISELECT(-80,-40),
  ABISELECT(-280,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN8S6874C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6874C11D0Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v24Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v25Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v26Ev,
  (VTBL_ENTRY)&_ZN8S6874C113v27Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void _ZN7S6874C6D1Ev();
extern void _ZN7S6874C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C68S6874C118S6874C10__A1__7S6874C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-280,-144),
  ABISELECT(-80,-40),
  ABISELECT(-280,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6874C6D0Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev)();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__7S6874C68S6874C118S6874C10__A1__7S6874C1[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-200,-104),
  ABISELECT(-200,-104),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__7S6874C68S6874C118S6874C10__A1__7S6874C1[] = {
  0,
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__7S6874C68S6874C118S6874C10__A1__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S6874C6[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C128S6874C118S6874C10__7S6874C1[] = {
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S6874C12[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C128S6874C118S6874C10__7S6874C1[] = {
  0,
  ABISELECT(296,156),
  (VTBL_ENTRY)&(_ZTI8S6874C12[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev)();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__8S6874C118S6874C10__7S6874C1[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-200,-104),
  ABISELECT(-200,-104),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C11D1Ev,_ZTv0_n24_N8S6874C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C11D0Ev,_ZTv0_n24_N8S6874C11D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C118S6874C10__7S6874C1[] = {
  0,
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__8S6874C118S6874C10__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C12__8S6874C118S6874C10__7S6874C1[] = {
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6874C11[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN7S6874C63v13Ev();
extern void _ZN7S6874C63v14Ev();
extern void _ZN7S6874C63v15Ev();
extern void ABISELECT(_ZTv0_n80_N8S6874C10D1Ev,_ZTv0_n40_N8S6874C10D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S6874C10D0Ev,_ZTv0_n40_N8S6874C10D0Ev)();
extern void _ZN7S6874C53v16Ev();
extern void _ZN7S6874C53v17Ev();
extern void _ZN7S6874C53v18Ev();
extern void _ZN7S6874C53v19Ev();
extern void _ZN7S6874C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C5__8S6874C10__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(192,100),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-88,-44),
  ABISELECT(112,60),
  ABISELECT(-88,-44),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6874C63v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6874C10D1Ev,_ZTv0_n40_N8S6874C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6874C10D0Ev,_ZTv0_n40_N8S6874C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6874C53v20Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void ABISELECT(_ZTv0_n48_N8S6874C10D1Ev,_ZTv0_n24_N8S6874C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S6874C10D0Ev,_ZTv0_n24_N8S6874C10D0Ev)();
extern void _ZN7S6874C73v10Ev();
extern void _ZN7S6874C73v11Ev();
extern void _ZN7S6874C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C7__8S6874C10__7S6874C1[] = {
  0,
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(-200,-104),
  ABISELECT(-200,-104),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C10D1Ev,_ZTv0_n24_N8S6874C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6874C10D0Ev,_ZTv0_n24_N8S6874C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6874C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6874C73v12Ev,
};
extern void _ZN7S6874C22v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C2__8S6874C10__7S6874C1[] = {
  0,
  ABISELECT(280,144),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
};
extern void _ZN7S6874C82v5Ev();
extern void _ZN7S6874C82v6Ev();
extern void _ZN7S6874C82v7Ev();
extern void _ZN7S6874C82v8Ev();
extern void _ZN7S6874C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6874C8__8S6874C10__7S6874C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C82v5Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v6Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v7Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v8Ev,
  (VTBL_ENTRY)&_ZN7S6874C82v9Ev,
};
extern void _ZN7S6874C22v4Ev();
extern void _ZN8S6874C123v21Ev();
extern void _ZN8S6874C123v22Ev();
extern void _ZN8S6874C123v23Ev();
static  VTBL_ENTRY _tg__ZTV8S6874C128S6874C11__8S6874C10__7S6874C1[] = {
  ABISELECT(-296,-156),
  ABISELECT(-296,-156),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6874C10[0]),
  (VTBL_ENTRY)&_ZN7S6874C22v4Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v21Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v22Ev,
  (VTBL_ENTRY)&_ZN8S6874C123v23Ev,
};
static  VTT_ENTRY vtt_S6874C1[] = {
  {&(_ZTV7S6874C1[8]),  8,148},
  {&(_tg__ZTV7S6874C3__7S6874C1[9]),  9,19},
  {&(_tg__ZTV7S6874C3__7S6874C1[9]),  9,19},
  {&(_tg__ZTV7S6874C4__7S6874C3__7S6874C1[10]),  10,14},
  {&(_tg__ZTV7S6874C5__7S6874C3__7S6874C1[15]),  15,26},
  {&(_tg__ZTV7S6874C7__7S6874C3__7S6874C1[9]),  9,15},
  {&(_tg__ZTV7S6874C8__7S6874C3__7S6874C1[7]),  7,12},
  {&(_tg__ZTV8S6874C10__7S6874C3__7S6874C1[24]),  24,40},
  {&(_tg__ZTV8S6874C128S6874C118S6874C10__7S6874C3__7S6874C1[4]),  4,8},
  {&(_ZTV7S6874C1[23]),  23,148},
  {&(_ZTV7S6874C1[23]),  23,148},
  {&(_ZTV7S6874C1[43]),  43,148},
  {&(_ZTV7S6874C1[62]),  62,148},
  {&(_ZTV7S6874C1[82]),  82,148},
  {&(_ZTV7S6874C1[95]),  95,148},
  {&(_ZTV7S6874C1[124]),  124,148},
  {&(_ZTV7S6874C1[144]),  144,148},
  {&(_tg__ZTV7S6874C4__7S6874C1[8]),  8,12},
  {&(_tg__ZTV7S6874C5__7S6874C4__7S6874C1[15]),  15,26},
  {&(_tg__ZTV7S6874C7__7S6874C4__7S6874C1[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C4__7S6874C1[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C4__7S6874C1[7]),  7,12},
  {&(_tg__ZTV8S6874C10__7S6874C4__7S6874C1[24]),  24,40},
  {&(_tg__ZTV8S6874C128S6874C118S6874C10__7S6874C4__7S6874C1[4]),  4,8},
  {&(_tg__ZTV7S6874C5__7S6874C1[6]),  6,17},
  {&(_tg__ZTV7S6874C67S6874C5__7S6874C1[6]),  6,12},
  {&(_tg__ZTV7S6874C7__7S6874C67S6874C5__7S6874C1[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C67S6874C5__7S6874C1[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C67S6874C5__7S6874C1[7]),  7,12},
  {&(_tg__ZTV7S6874C7__7S6874C5__7S6874C1[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C5__7S6874C1[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C5__7S6874C1[7]),  7,12},
  {&(_tg__ZTV7S6874C7__7S6874C1[5]),  5,11},
  {&(_tg__ZTV7S6874C2__7S6874C7__7S6874C1[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C7__7S6874C1[7]),  7,12},
  {&(_tg__ZTV8S6874C10__7S6874C1[7]),  7,23},
  {&(_tg__ZTV8S6874C118S6874C10__7S6874C1[6]),  6,16},
  {&(_tg__ZTV7S6874C68S6874C118S6874C10__A1__7S6874C1[6]),  6,12},
  {&(_tg__ZTV7S6874C7__7S6874C68S6874C118S6874C10__A1__7S6874C1[9]),  9,15},
  {&(_tg__ZTV7S6874C2__7S6874C68S6874C118S6874C10__A1__7S6874C1[3]),  3,4},
  {&(_tg__ZTV7S6874C8__7S6874C68S6874C118S6874C10__A1__7S6874C1[7]),  7,12},
  {&(_tg__ZTV8S6874C128S6874C118S6874C10__7S6874C1[4]),  4,8},
  {&(_tg__ZTV7S6874C2__8S6874C128S6874C118S6874C10__7S6874C1[3]),  3,4},
  {&(_tg__ZTV7S6874C7__8S6874C118S6874C10__7S6874C1[9]),  9,15},
  {&(_tg__ZTV7S6874C2__8S6874C118S6874C10__7S6874C1[3]),  3,4},
  {&(_tg__ZTV7S6874C8__8S6874C118S6874C10__7S6874C1[7]),  7,12},
  {&(_tg__ZTV8S6874C12__8S6874C118S6874C10__7S6874C1[4]),  4,8},
  {&(_tg__ZTV7S6874C5__8S6874C10__7S6874C1[15]),  15,26},
  {&(_tg__ZTV7S6874C7__8S6874C10__7S6874C1[9]),  9,15},
  {&(_tg__ZTV7S6874C2__8S6874C10__7S6874C1[3]),  3,4},
  {&(_tg__ZTV7S6874C8__8S6874C10__7S6874C1[7]),  7,12},
  {&(_tg__ZTV8S6874C128S6874C11__8S6874C10__7S6874C1[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S6874C1[];
extern  VTBL_ENTRY _ZTV7S6874C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6874C1[];
static VTBL_ENTRY alt_thunk_names159[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C5D0Ev,_ZTv0_n24_N7S6874C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C5D0Ev,_ZThn60_N7S6874C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C5D1Ev,_ZTv0_n24_N7S6874C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C5D1Ev,_ZThn60_N7S6874C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D0Ev,_ZTv0_n24_N7S6874C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C6D0Ev,_ZThn60_N7S6874C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C6D1Ev,_ZTv0_n24_N7S6874C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6874C6D1Ev,_ZThn60_N7S6874C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C4D0Ev,_ZTv0_n44_N7S6874C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6874C4D0Ev,_ZThn108_N7S6874C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C4D1Ev,_ZTv0_n44_N7S6874C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6874C4D1Ev,_ZThn108_N7S6874C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C4D0Ev,_ZTv0_n24_N7S6874C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6874C4D0Ev,_ZThn68_N7S6874C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C4D1Ev,_ZTv0_n24_N7S6874C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6874C4D1Ev,_ZThn68_N7S6874C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C4D0Ev,_ZTv0_n40_N7S6874C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6874C4D0Ev,_ZThn8_N7S6874C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C4D1Ev,_ZTv0_n40_N7S6874C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6874C4D1Ev,_ZThn8_N7S6874C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C3D0Ev,_ZTv0_n44_N7S6874C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S6874C3D0Ev,_ZThn144_N7S6874C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C3D1Ev,_ZTv0_n44_N7S6874C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S6874C3D1Ev,_ZThn144_N7S6874C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C3D0Ev,_ZTv0_n24_N7S6874C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S6874C3D0Ev,_ZThn104_N7S6874C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C3D1Ev,_ZTv0_n24_N7S6874C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S6874C3D1Ev,_ZThn104_N7S6874C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C3D0Ev,_ZTv0_n40_N7S6874C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6874C3D0Ev,_ZThn44_N7S6874C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C3D1Ev,_ZTv0_n40_N7S6874C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6874C3D1Ev,_ZThn44_N7S6874C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6874C3D0Ev,_ZTv0_n36_N7S6874C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6874C3D0Ev,_ZThn36_N7S6874C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6874C3D1Ev,_ZTv0_n36_N7S6874C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6874C3D1Ev,_ZThn36_N7S6874C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C1D0Ev,_ZTv0_n44_N7S6874C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S6874C1D0Ev,_ZThn148_N7S6874C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6874C1D1Ev,_ZTv0_n44_N7S6874C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S6874C1D1Ev,_ZThn148_N7S6874C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C1D0Ev,_ZTv0_n24_N7S6874C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6874C1D0Ev,_ZThn108_N7S6874C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6874C1D1Ev,_ZTv0_n24_N7S6874C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6874C1D1Ev,_ZThn108_N7S6874C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C1D0Ev,_ZTv0_n40_N7S6874C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6874C1D0Ev,_ZThn48_N7S6874C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6874C1D1Ev,_ZTv0_n40_N7S6874C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6874C1D1Ev,_ZThn48_N7S6874C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6874C1D0Ev,_ZTv0_n36_N7S6874C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6874C1D0Ev,_ZThn40_N7S6874C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6874C1D1Ev,_ZTv0_n36_N7S6874C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6874C1D1Ev,_ZThn40_N7S6874C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6874C1 = {  "S6874C1", // class name
  bases_S6874C1, 12,
  &(vtc_S6874C1[0]), // expected_vtbl_contents
  &(vtt_S6874C1[0]), // expected_vtt_contents
  ABISELECT(352,188), // object size
  NSPAIRA(_ZTI7S6874C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6874C1),148, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6874C1),52, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names159,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20398C2  {
  virtual void  v8(); // _ZN8S20398C22v8Ev
  ~S20398C2(); // tgen
  S20398C2(); // tgen
};
//SIG(-1 S20398C2) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20398C2C1Ev();
extern void _ZN8S20398C2D1Ev();
Name_Map name_map_S20398C2[] = {
  NSPAIR(_ZN8S20398C2C1Ev),
  NSPAIR(_ZN8S20398C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20398C2[];
extern void _ZN8S20398C22v8Ev();
static  VTBL_ENTRY vtc_S20398C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C2[0]),
  (VTBL_ENTRY)&_ZN8S20398C22v8Ev,
};
extern VTBL_ENTRY _ZTI8S20398C2[];
extern  VTBL_ENTRY _ZTV8S20398C2[];
Class_Descriptor cd_S20398C2 = {  "S20398C2", // class name
  0,0,//no base classes
  &(vtc_S20398C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20398C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20398C2),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  S20398C5  {
  virtual void  v9(); // _ZN8S20398C52v9Ev
  virtual void  v10(); // _ZN8S20398C53v10Ev
  virtual void  v11(); // _ZN8S20398C53v11Ev
  ~S20398C5(); // tgen
  S20398C5(); // tgen
};
//SIG(-1 S20398C5) C1{ v1 v2 v3}


void  S20398C5 ::v9(){vfunc_called(this, "_ZN8S20398C52v9Ev");}
void  S20398C5 ::v10(){vfunc_called(this, "_ZN8S20398C53v10Ev");}
void  S20398C5 ::v11(){vfunc_called(this, "_ZN8S20398C53v11Ev");}
S20398C5 ::~S20398C5(){ note_dtor("S20398C5", this);} // tgen
S20398C5 ::S20398C5(){ note_ctor("S20398C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20398C5C1Ev();
extern void _ZN8S20398C5D1Ev();
Name_Map name_map_S20398C5[] = {
  NSPAIR(_ZN8S20398C5C1Ev),
  NSPAIR(_ZN8S20398C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20398C5[];
extern void _ZN8S20398C52v9Ev();
extern void _ZN8S20398C53v10Ev();
extern void _ZN8S20398C53v11Ev();
static  VTBL_ENTRY vtc_S20398C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C5[0]),
  (VTBL_ENTRY)&_ZN8S20398C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v11Ev,
};
extern VTBL_ENTRY _ZTI8S20398C5[];
extern  VTBL_ENTRY _ZTV8S20398C5[];
Class_Descriptor cd_S20398C5 = {  "S20398C5", // class name
  0,0,//no base classes
  &(vtc_S20398C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20398C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20398C5),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  S20398C4  : S20398C5 {
  int s20398c4f0[3];
  virtual void  v12(); // _ZN8S20398C43v12Ev
  virtual void  v13(); // _ZN8S20398C43v13Ev
  virtual void  v14(); // _ZN8S20398C43v14Ev
  virtual void  v15(); // _ZN8S20398C43v15Ev
  virtual void  v16(); // _ZN8S20398C43v16Ev
  virtual void  v17(); // _ZN8S20398C43v17Ev
  ~S20398C4(); // tgen
  S20398C4(); // tgen
};
//SIG(-1 S20398C4) C1{ BC2{ v7 v8 v9} v1 v2 v3 v4 v5 v6 Fi[3]}


void  S20398C4 ::v12(){vfunc_called(this, "_ZN8S20398C43v12Ev");}
void  S20398C4 ::v13(){vfunc_called(this, "_ZN8S20398C43v13Ev");}
void  S20398C4 ::v14(){vfunc_called(this, "_ZN8S20398C43v14Ev");}
void  S20398C4 ::v15(){vfunc_called(this, "_ZN8S20398C43v15Ev");}
void  S20398C4 ::v16(){vfunc_called(this, "_ZN8S20398C43v16Ev");}
void  S20398C4 ::v17(){vfunc_called(this, "_ZN8S20398C43v17Ev");}
S20398C4 ::~S20398C4(){ note_dtor("S20398C4", this);} // tgen
S20398C4 ::S20398C4(){ note_ctor("S20398C4", this);} // tgen

static void Test_S20398C4()
{
  extern Class_Descriptor cd_S20398C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20398C4, buf);
    S20398C4 *dp, &lv = *(dp=new (buf) S20398C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20398C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20398C4)");
    check_base_class_offset(lv, (S20398C5*), 0, "S20398C4");
    check_field_offset(lv, s20398c4f0, ABISELECT(8,4), "S20398C4.s20398c4f0");
    test_class_info(&lv, &cd_S20398C4);
    dp->~S20398C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20398C4(Test_S20398C4, "S20398C4", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20398C4C1Ev();
extern void _ZN8S20398C4D1Ev();
Name_Map name_map_S20398C4[] = {
  NSPAIR(_ZN8S20398C4C1Ev),
  NSPAIR(_ZN8S20398C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20398C5;
extern VTBL_ENTRY _ZTI8S20398C5[];
extern  VTBL_ENTRY _ZTV8S20398C5[];
static Base_Class bases_S20398C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20398C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20398C4[];
extern void _ZN8S20398C52v9Ev();
extern void _ZN8S20398C53v10Ev();
extern void _ZN8S20398C53v11Ev();
extern void _ZN8S20398C43v12Ev();
extern void _ZN8S20398C43v13Ev();
extern void _ZN8S20398C43v14Ev();
extern void _ZN8S20398C43v15Ev();
extern void _ZN8S20398C43v16Ev();
extern void _ZN8S20398C43v17Ev();
static  VTBL_ENTRY vtc_S20398C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C4[0]),
  (VTBL_ENTRY)&_ZN8S20398C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v17Ev,
};
extern VTBL_ENTRY _ZTI8S20398C4[];
extern  VTBL_ENTRY _ZTV8S20398C4[];
Class_Descriptor cd_S20398C4 = {  "S20398C4", // class name
  bases_S20398C4, 1,
  &(vtc_S20398C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20398C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20398C4),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20398C6  {
  long double s20398c6f0;
  virtual void  v18(); // _ZN8S20398C63v18Ev
  virtual void  v19(); // _ZN8S20398C63v19Ev
  virtual void  v20(); // _ZN8S20398C63v20Ev
  virtual void  v21(); // _ZN8S20398C63v21Ev
  virtual void  v22(); // _ZN8S20398C63v22Ev
  ~S20398C6(); // tgen
  S20398C6(); // tgen
};
//SIG(-1 S20398C6) C1{ v1 v2 v3 v4 v5 FD}


void  S20398C6 ::v18(){vfunc_called(this, "_ZN8S20398C63v18Ev");}
void  S20398C6 ::v19(){vfunc_called(this, "_ZN8S20398C63v19Ev");}
void  S20398C6 ::v20(){vfunc_called(this, "_ZN8S20398C63v20Ev");}
void  S20398C6 ::v21(){vfunc_called(this, "_ZN8S20398C63v21Ev");}
void  S20398C6 ::v22(){vfunc_called(this, "_ZN8S20398C63v22Ev");}
S20398C6 ::~S20398C6(){ note_dtor("S20398C6", this);} // tgen
S20398C6 ::S20398C6(){ note_ctor("S20398C6", this);} // tgen

static void Test_S20398C6()
{
  extern Class_Descriptor cd_S20398C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S20398C6, buf);
    S20398C6 *dp, &lv = *(dp=new (buf) S20398C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20398C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20398C6)");
    check_field_offset(lv, s20398c6f0, ABISELECT(16,4), "S20398C6.s20398c6f0");
    test_class_info(&lv, &cd_S20398C6);
    dp->~S20398C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20398C6(Test_S20398C6, "S20398C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20398C6C1Ev();
extern void _ZN8S20398C6D1Ev();
Name_Map name_map_S20398C6[] = {
  NSPAIR(_ZN8S20398C6C1Ev),
  NSPAIR(_ZN8S20398C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20398C6[];
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY vtc_S20398C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C6[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern VTBL_ENTRY _ZTI8S20398C6[];
extern  VTBL_ENTRY _ZTV8S20398C6[];
Class_Descriptor cd_S20398C6 = {  "S20398C6", // class name
  0,0,//no base classes
  &(vtc_S20398C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20398C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20398C6),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20398C7  {
  __tsi64 s20398c7f0[3];
  virtual  ~S20398C7(); // _ZN8S20398C7D1Ev
  virtual void  v23(); // _ZN8S20398C73v23Ev
  virtual void  v24(); // _ZN8S20398C73v24Ev
  virtual void  v25(); // _ZN8S20398C73v25Ev
  virtual void  v26(); // _ZN8S20398C73v26Ev
  virtual void  v27(); // _ZN8S20398C73v27Ev
  S20398C7(); // tgen
};
//SIG(-1 S20398C7) C1{ vd v1 v2 v3 v4 v5 FL[3]}


 S20398C7 ::~S20398C7(){ note_dtor("S20398C7", this);}
void  S20398C7 ::v23(){vfunc_called(this, "_ZN8S20398C73v23Ev");}
void  S20398C7 ::v24(){vfunc_called(this, "_ZN8S20398C73v24Ev");}
void  S20398C7 ::v25(){vfunc_called(this, "_ZN8S20398C73v25Ev");}
void  S20398C7 ::v26(){vfunc_called(this, "_ZN8S20398C73v26Ev");}
void  S20398C7 ::v27(){vfunc_called(this, "_ZN8S20398C73v27Ev");}
S20398C7 ::S20398C7(){ note_ctor("S20398C7", this);} // tgen

static void Test_S20398C7()
{
  extern Class_Descriptor cd_S20398C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S20398C7, buf);
    S20398C7 *dp, &lv = *(dp=new (buf) S20398C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S20398C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20398C7)");
    check_field_offset(lv, s20398c7f0, ABISELECT(8,4), "S20398C7.s20398c7f0");
    test_class_info(&lv, &cd_S20398C7);
    dp->~S20398C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20398C7(Test_S20398C7, "S20398C7", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN8S20398C7C1Ev();
extern void _ZN8S20398C7D1Ev();
Name_Map name_map_S20398C7[] = {
  NSPAIR(_ZN8S20398C7C1Ev),
  NSPAIR(_ZN8S20398C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20398C7[];
extern void _ZN8S20398C7D1Ev();
extern void _ZN8S20398C7D0Ev();
extern void _ZN8S20398C73v23Ev();
extern void _ZN8S20398C73v24Ev();
extern void _ZN8S20398C73v25Ev();
extern void _ZN8S20398C73v26Ev();
extern void _ZN8S20398C73v27Ev();
static  VTBL_ENTRY vtc_S20398C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C7[0]),
  (VTBL_ENTRY)&_ZN8S20398C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v27Ev,
};
extern VTBL_ENTRY _ZTI8S20398C7[];
extern  VTBL_ENTRY _ZTV8S20398C7[];
Class_Descriptor cd_S20398C7 = {  "S20398C7", // class name
  0,0,//no base classes
  &(vtc_S20398C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI8S20398C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20398C7),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  S20398C10  : virtual S20398C6 {
  ::S20398C6 s20398c10f0;
  virtual  ~S20398C10(); // _ZN9S20398C10D2Ev
  virtual void  v28(); // _ZN9S20398C103v28Ev
  virtual void  v29(); // _ZN9S20398C103v29Ev
  virtual void  v30(); // _ZN9S20398C103v30Ev
  virtual void  v31(); // _ZN9S20398C103v31Ev
  virtual void  v32(); // _ZN9S20398C103v32Ev
  S20398C10(); // tgen
};
//SIG(-1 S20398C10) C1{ VBC2{ v6 v7 v8 v9 v10 FD} vd v1 v2 v3 v4 v5 FC2}


 S20398C10 ::~S20398C10(){ note_dtor("S20398C10", this);}
void  S20398C10 ::v28(){vfunc_called(this, "_ZN9S20398C103v28Ev");}
void  S20398C10 ::v29(){vfunc_called(this, "_ZN9S20398C103v29Ev");}
void  S20398C10 ::v30(){vfunc_called(this, "_ZN9S20398C103v30Ev");}
void  S20398C10 ::v31(){vfunc_called(this, "_ZN9S20398C103v31Ev");}
void  S20398C10 ::v32(){vfunc_called(this, "_ZN9S20398C103v32Ev");}
S20398C10 ::S20398C10(){ note_ctor("S20398C10", this);} // tgen

static void Test_S20398C10()
{
  extern Class_Descriptor cd_S20398C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20398C10, buf);
    S20398C10 *dp, &lv = *(dp=new (buf) S20398C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20398C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20398C10)");
    check_base_class_offset(lv, (S20398C6*), ABISELECT(48,20), "S20398C10");
    check_field_offset(lv, s20398c10f0, ABISELECT(16,4), "S20398C10.s20398c10f0");
    test_class_info(&lv, &cd_S20398C10);
    dp->~S20398C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20398C10(Test_S20398C10, "S20398C10", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN9S20398C10C1Ev();
extern void _ZN9S20398C10D2Ev();
Name_Map name_map_S20398C10[] = {
  NSPAIR(_ZN9S20398C10C1Ev),
  NSPAIR(_ZN9S20398C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20398C6;
extern VTBL_ENTRY _ZTI8S20398C6[];
extern  VTBL_ENTRY _ZTV8S20398C6[];
static Base_Class bases_S20398C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20398C6,    ABISELECT(48,20), //bcp->offset
    10, //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 _ZTI9S20398C10[];
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY vtc_S20398C10[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern VTBL_ENTRY _ZTV9S20398C10[];
static  VTT_ENTRY vtt_S20398C10[] = {
  {&(_ZTV9S20398C10[3]),  3,22},
  {&(_ZTV9S20398C10[17]),  17,22},
};
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
Class_Descriptor cd_S20398C10 = {  "S20398C10", // class name
  bases_S20398C10, 1,
  &(vtc_S20398C10[0]), // expected_vtbl_contents
  &(vtt_S20398C10[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI9S20398C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20398C10),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20398C10),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  S20398C9  : S20398C10 {
  virtual void  v33(); // _ZN8S20398C93v33Ev
  virtual void  v34(); // _ZN8S20398C93v34Ev
  ~S20398C9(); // tgen
  S20398C9(); // tgen
};
//SIG(-1 S20398C9) C1{ BC2{ VBC3{ v3 v4 v5 v6 v7 FD} vd v8 v9 v10 v11 v12 FC3} v1 v2}


void  S20398C9 ::v33(){vfunc_called(this, "_ZN8S20398C93v33Ev");}
void  S20398C9 ::v34(){vfunc_called(this, "_ZN8S20398C93v34Ev");}
S20398C9 ::~S20398C9(){ note_dtor("S20398C9", this);} // tgen
S20398C9 ::S20398C9(){ note_ctor("S20398C9", this);} // tgen

static void Test_S20398C9()
{
  extern Class_Descriptor cd_S20398C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20398C9, buf);
    S20398C9 *dp, &lv = *(dp=new (buf) S20398C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20398C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20398C9)");
    check_base_class_offset(lv, (S20398C6*)(S20398C10*), ABISELECT(48,20), "S20398C9");
    check_base_class_offset(lv, (S20398C10*), 0, "S20398C9");
    test_class_info(&lv, &cd_S20398C9);
    dp->~S20398C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20398C9(Test_S20398C9, "S20398C9", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S20398C9C1Ev();
extern void _ZN8S20398C9D1Ev();
Name_Map name_map_S20398C9[] = {
  NSPAIR(_ZN8S20398C9C1Ev),
  NSPAIR(_ZN8S20398C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20398C6;
extern VTBL_ENTRY _ZTI8S20398C6[];
extern  VTBL_ENTRY _ZTV8S20398C6[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
static Base_Class bases_S20398C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20398C6,    ABISELECT(48,20), //bcp->offset
    12, //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_S20398C10,    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 _ZTI8S20398C9[];
extern void _ZN8S20398C9D1Ev();
extern void _ZN8S20398C9D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY vtc_S20398C9[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern VTBL_ENTRY _ZTV8S20398C9[];
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C10__8S20398C9[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C10__8S20398C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
static  VTT_ENTRY vtt_S20398C9[] = {
  {&(_ZTV8S20398C9[3]),  3,24},
  {&(_tg__ZTV9S20398C10__8S20398C9[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C10__8S20398C9[7]),  7,12},
  {&(_ZTV8S20398C9[19]),  19,24},
};
extern VTBL_ENTRY _ZTI8S20398C9[];
extern  VTBL_ENTRY _ZTV8S20398C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C9[];
Class_Descriptor cd_S20398C9 = {  "S20398C9", // class name
  bases_S20398C9, 2,
  &(vtc_S20398C9[0]), // expected_vtbl_contents
  &(vtt_S20398C9[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S20398C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20398C9),24, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20398C9),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  S20398C11  : virtual S20398C6 , S20398C10 , S20398C9 {
  char s20398c11f0[8];
  virtual void  v35(); // _ZN9S20398C113v35Ev
  virtual void  v36(); // _ZN9S20398C113v36Ev
  virtual void  v37(); // _ZN9S20398C113v37Ev
  virtual void  v38(); // _ZN9S20398C113v38Ev
  virtual void  v39(); // _ZN9S20398C113v39Ev
  virtual void  v40(); // _ZN9S20398C113v40Ev
  virtual void  v41(); // _ZN9S20398C113v41Ev
  ~S20398C11(); // tgen
  S20398C11(); // tgen
};
//SIG(-1 S20398C11) C1{ VBC2{ v8 v9 v10 v11 v12 FD} BC3{ VBC2 vd v13 v14 v15 v16 v17 FC2} BC4{ BC3 v18 v19} v1 v2 v3 v4 v5 v6 v7 Fc[8]}


void  S20398C11 ::v35(){vfunc_called(this, "_ZN9S20398C113v35Ev");}
void  S20398C11 ::v36(){vfunc_called(this, "_ZN9S20398C113v36Ev");}
void  S20398C11 ::v37(){vfunc_called(this, "_ZN9S20398C113v37Ev");}
void  S20398C11 ::v38(){vfunc_called(this, "_ZN9S20398C113v38Ev");}
void  S20398C11 ::v39(){vfunc_called(this, "_ZN9S20398C113v39Ev");}
void  S20398C11 ::v40(){vfunc_called(this, "_ZN9S20398C113v40Ev");}
void  S20398C11 ::v41(){vfunc_called(this, "_ZN9S20398C113v41Ev");}
S20398C11 ::~S20398C11(){ note_dtor("S20398C11", this);} // tgen
S20398C11 ::S20398C11(){ note_ctor("S20398C11", this);} // tgen

static void Test_S20398C11()
{
  extern Class_Descriptor cd_S20398C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,17)];
    init_test(&cd_S20398C11, buf);
    S20398C11 *dp, &lv = *(dp=new (buf) S20398C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,64), "sizeof(S20398C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20398C11)");
    check_base_class_offset(lv, (S20398C6*), ABISELECT(112,48), "S20398C11");
    /*is_ambiguous_... S20398C11::S20398C10 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C10*), ABISELECT(112,48), "S20398C11");
    check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C9*), ABISELECT(112,48), "S20398C11");
    /*is_ambiguous_... S20398C11::S20398C10 */ AMB_check_base_class_offset(lv, (S20398C10*), 0, "S20398C11");
    check_base_class_offset(lv, (S20398C10*)(S20398C9*), ABISELECT(48,20), "S20398C11");
    check_base_class_offset(lv, (S20398C9*), ABISELECT(48,20), "S20398C11");
    check_field_offset(lv, s20398c11f0, ABISELECT(96,40), "S20398C11.s20398c11f0");
    test_class_info(&lv, &cd_S20398C11);
    dp->~S20398C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20398C11(Test_S20398C11, "S20398C11", ABISELECT(144,64));

#else // __cplusplus

extern void _ZN9S20398C11C1Ev();
extern void _ZN9S20398C11D1Ev();
Name_Map name_map_S20398C11[] = {
  NSPAIR(_ZN9S20398C11C1Ev),
  NSPAIR(_ZN9S20398C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20398C6;
extern VTBL_ENTRY _ZTI8S20398C6[];
extern  VTBL_ENTRY _ZTV8S20398C6[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C9;
extern VTBL_ENTRY _ZTI8S20398C9[];
extern  VTBL_ENTRY _ZTV8S20398C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C9[];
static Base_Class bases_S20398C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20398C6,    ABISELECT(112,48), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20398C10,    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_S20398C10,    ABISELECT(48,20), //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_S20398C9,    ABISELECT(48,20), //bcp->offset
    17, //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 _ZTI9S20398C11[];
extern void _ZN9S20398C11D1Ev();
extern void _ZN9S20398C11D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
extern void ABISELECT(_ZThn48_N9S20398C11D1Ev,_ZThn20_N9S20398C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20398C11D0Ev,_ZThn20_N9S20398C11D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY vtc_S20398C11[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&_ZN9S20398C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
  ABISELECT(64,28),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20398C11D1Ev,_ZThn20_N9S20398C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20398C11D0Ev,_ZThn20_N9S20398C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern VTBL_ENTRY _ZTV9S20398C11[];
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C10__9S20398C11[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C10__9S20398C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C9D1Ev();
extern void _ZN8S20398C9D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C9__9S20398C11[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C108S20398C9__A1__9S20398C11[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C108S20398C9__A1__9S20398C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__8S20398C9__9S20398C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
static  VTT_ENTRY vtt_S20398C11[] = {
  {&(_ZTV9S20398C11[3]),  3,41},
  {&(_tg__ZTV9S20398C10__9S20398C11[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C10__9S20398C11[7]),  7,12},
  {&(_tg__ZTV8S20398C9__9S20398C11[3]),  3,12},
  {&(_tg__ZTV9S20398C108S20398C9__A1__9S20398C11[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C108S20398C9__A1__9S20398C11[7]),  7,12},
  {&(_tg__ZTV8S20398C6__8S20398C9__9S20398C11[7]),  7,12},
  {&(_ZTV9S20398C11[36]),  36,41},
  {&(_ZTV9S20398C11[20]),  20,41},
};
extern VTBL_ENTRY _ZTI9S20398C11[];
extern  VTBL_ENTRY _ZTV9S20398C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C11[];
Class_Descriptor cd_S20398C11 = {  "S20398C11", // class name
  bases_S20398C11, 4,
  &(vtc_S20398C11[0]), // expected_vtbl_contents
  &(vtt_S20398C11[0]), // expected_vtt_contents
  ABISELECT(144,64), // object size
  NSPAIRA(_ZTI9S20398C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20398C11),41, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20398C11),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20398C8  : S20398C9 , S20398C6 , virtual S20398C11 {
  int s20398c8f0;
  virtual void  v42(); // _ZN8S20398C83v42Ev
  virtual void  v43(); // _ZN8S20398C83v43Ev
  virtual void  v44(); // _ZN8S20398C83v44Ev
  virtual void  v45(); // _ZN8S20398C83v45Ev
  virtual void  v46(); // _ZN8S20398C83v46Ev
  virtual void  v47(); // _ZN8S20398C83v47Ev
  virtual void  v48(); // _ZN8S20398C83v48Ev
  ~S20398C8(); // tgen
  S20398C8(); // tgen
};
//SIG(-1 S20398C8) C1{ BC2{ BC3{ VBC4{ v8 v9 v10 v11 v12 FD} vd v13 v14 v15 v16 v17 FC4} v18 v19} BC4 VBC5{ VBC4 BC3 BC2 v20 v21 v22 v23 v24 v25 v26 Fc[8]} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S20398C8 ::v42(){vfunc_called(this, "_ZN8S20398C83v42Ev");}
void  S20398C8 ::v43(){vfunc_called(this, "_ZN8S20398C83v43Ev");}
void  S20398C8 ::v44(){vfunc_called(this, "_ZN8S20398C83v44Ev");}
void  S20398C8 ::v45(){vfunc_called(this, "_ZN8S20398C83v45Ev");}
void  S20398C8 ::v46(){vfunc_called(this, "_ZN8S20398C83v46Ev");}
void  S20398C8 ::v47(){vfunc_called(this, "_ZN8S20398C83v47Ev");}
void  S20398C8 ::v48(){vfunc_called(this, "_ZN8S20398C83v48Ev");}
S20398C8 ::~S20398C8(){ note_dtor("S20398C8", this);} // tgen
S20398C8 ::S20398C8(){ note_ctor("S20398C8", this);} // tgen

static void Test_S20398C8()
{
  extern Class_Descriptor cd_S20398C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,27)];
    init_test(&cd_S20398C8, buf);
    S20398C8 *dp, &lv = *(dp=new (buf) S20398C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,104), "sizeof(S20398C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20398C8)");
    /*is_ambiguous_... S20398C8::S20398C9 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C9*), ABISELECT(96,40), "S20398C8");
    check_base_class_offset(lv, (S20398C6*)(S20398C11*), ABISELECT(96,40), "S20398C8");
    /*is_ambiguous_... S20398C11::S20398C10 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C11*), ABISELECT(96,40), "S20398C8");
    check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C9*)(S20398C11*), ABISELECT(96,40), "S20398C8");
    /*is_ambiguous_... S20398C8::S20398C9 */ AMB_check_base_class_offset(lv, (S20398C10*)(S20398C9*), 0, "S20398C8");
    /*is_ambiguous_... S20398C8::S20398C9 */ AMB_check_base_class_offset(lv, (S20398C9*), 0, "S20398C8");
    /*is_ambiguous_... S20398C8::S20398C6 */ AMB_check_base_class_offset(lv, (S20398C6*), ABISELECT(48,20), "S20398C8");
    /*is_ambiguous_... S20398C11::S20398C10 */ AMB_check_base_class_offset(lv, (S20398C10*)(S20398C11*), ABISELECT(128,56), "S20398C8");
    check_base_class_offset(lv, (S20398C10*)(S20398C9*)(S20398C11*), ABISELECT(176,76), "S20398C8");
    check_base_class_offset(lv, (S20398C9*)(S20398C11*), ABISELECT(176,76), "S20398C8");
    check_base_class_offset(lv, (S20398C11*), ABISELECT(128,56), "S20398C8");
    check_field_offset(lv, s20398c8f0, ABISELECT(80,36), "S20398C8.s20398c8f0");
    test_class_info(&lv, &cd_S20398C8);
    dp->~S20398C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20398C8(Test_S20398C8, "S20398C8", ABISELECT(240,104));

#else // __cplusplus

extern void _ZN8S20398C8C1Ev();
extern void _ZN8S20398C8D1Ev();
Name_Map name_map_S20398C8[] = {
  NSPAIR(_ZN8S20398C8C1Ev),
  NSPAIR(_ZN8S20398C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20398C6;
extern VTBL_ENTRY _ZTI8S20398C6[];
extern  VTBL_ENTRY _ZTV8S20398C6[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C9;
extern VTBL_ENTRY _ZTI8S20398C9[];
extern  VTBL_ENTRY _ZTV8S20398C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C9[];
extern Class_Descriptor cd_S20398C6;
extern VTBL_ENTRY _ZTI8S20398C6[];
extern  VTBL_ENTRY _ZTV8S20398C6[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C9;
extern VTBL_ENTRY _ZTI8S20398C9[];
extern  VTBL_ENTRY _ZTV8S20398C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C9[];
extern Class_Descriptor cd_S20398C11;
extern VTBL_ENTRY _ZTI9S20398C11[];
extern  VTBL_ENTRY _ZTV9S20398C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C11[];
static Base_Class bases_S20398C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20398C6,    ABISELECT(96,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20398C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20398C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20398C6,    ABISELECT(48,20), //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_S20398C10,    ABISELECT(128,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20398C10,    ABISELECT(176,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20398C9,    ABISELECT(176,76), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20398C11,    ABISELECT(128,56), //bcp->offset
    39, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20398C8[];
extern void _ZN8S20398C8D1Ev();
extern void _ZN8S20398C8D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
extern void _ZN8S20398C83v42Ev();
extern void _ZN8S20398C83v43Ev();
extern void _ZN8S20398C83v44Ev();
extern void _ZN8S20398C83v45Ev();
extern void _ZN8S20398C83v46Ev();
extern void _ZN8S20398C83v47Ev();
extern void _ZN8S20398C83v48Ev();
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
extern void ABISELECT(_ZTv0_n32_N8S20398C8D1Ev,_ZTv0_n16_N8S20398C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S20398C8D1Ev,_ZThn56_N8S20398C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20398C8D0Ev,_ZTv0_n16_N8S20398C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S20398C8D0Ev,_ZThn56_N8S20398C8D0Ev)() __attribute__((weak));
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20398C8D1Ev,_ZTvn20_n16_N8S20398C8D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20398C8D0Ev,_ZTvn20_n16_N8S20398C8D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY vtc_S20398C8[] = {
  ABISELECT(128,56),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&_ZN8S20398C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C8D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v45Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v46Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v47Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v48Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-56),
  ABISELECT(-32,-16),
  ABISELECT(-128,-56),
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C8D1Ev,_ZTv0_n16_N8S20398C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C8D0Ev,_ZTv0_n16_N8S20398C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
  ABISELECT(-80,-36),
  ABISELECT(-176,-76),
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C8D1Ev,_ZTvn20_n16_N8S20398C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C8D0Ev,_ZTvn20_n16_N8S20398C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern VTBL_ENTRY _ZTV8S20398C8[];
extern void _ZN8S20398C9D1Ev();
extern void _ZN8S20398C9D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C9__8S20398C8[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C108S20398C9__8S20398C8[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C108S20398C9__8S20398C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__8S20398C9__8S20398C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN9S20398C11D1Ev();
extern void _ZN9S20398C11D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C11__8S20398C8[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&_ZN9S20398C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C109S20398C11__A1__8S20398C8[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C109S20398C11__A1__8S20398C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C9D1Ev();
extern void _ZN8S20398C9D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C99S20398C11__A1__8S20398C8[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C108S20398C99S20398C11__A2__8S20398C8[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C108S20398C99S20398C11__A2__8S20398C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__8S20398C99S20398C11__A1__8S20398C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C11__8S20398C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void ABISELECT(_ZThn48_N9S20398C11D1Ev,_ZThn20_N9S20398C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20398C11D0Ev,_ZThn20_N9S20398C11D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C9__9S20398C11__8S20398C8[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20398C11D1Ev,_ZThn20_N9S20398C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20398C11D0Ev,_ZThn20_N9S20398C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
static  VTT_ENTRY vtt_S20398C8[] = {
  {&(_ZTV8S20398C8[4]),  4,83},
  {&(_tg__ZTV8S20398C9__8S20398C8[3]),  3,12},
  {&(_tg__ZTV9S20398C108S20398C9__8S20398C8[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C108S20398C9__8S20398C8[7]),  7,12},
  {&(_tg__ZTV8S20398C6__8S20398C9__8S20398C8[7]),  7,12},
  {&(_ZTV8S20398C8[34]),  34,83},
  {&(_ZTV8S20398C8[57]),  57,83},
  {&(_ZTV8S20398C8[74]),  74,83},
  {&(_tg__ZTV9S20398C11__8S20398C8[3]),  3,17},
  {&(_tg__ZTV9S20398C109S20398C11__A1__8S20398C8[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C109S20398C11__A1__8S20398C8[7]),  7,12},
  {&(_tg__ZTV8S20398C99S20398C11__A1__8S20398C8[3]),  3,12},
  {&(_tg__ZTV9S20398C108S20398C99S20398C11__A2__8S20398C8[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C108S20398C99S20398C11__A2__8S20398C8[7]),  7,12},
  {&(_tg__ZTV8S20398C6__8S20398C99S20398C11__A1__8S20398C8[7]),  7,12},
  {&(_tg__ZTV8S20398C6__9S20398C11__8S20398C8[7]),  7,12},
  {&(_tg__ZTV8S20398C9__9S20398C11__8S20398C8[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20398C8[];
extern  VTBL_ENTRY _ZTV8S20398C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C8[];
static VTBL_ENTRY alt_thunk_names160[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C8D0Ev,_ZTv0_n16_N8S20398C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20398C8D0Ev,_ZThn56_N8S20398C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C8D1Ev,_ZTv0_n16_N8S20398C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20398C8D1Ev,_ZThn56_N8S20398C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20398C8 = {  "S20398C8", // class name
  bases_S20398C8, 8,
  &(vtc_S20398C8[0]), // expected_vtbl_contents
  &(vtt_S20398C8[0]), // expected_vtt_contents
  ABISELECT(240,104), // object size
  NSPAIRA(_ZTI8S20398C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20398C8),83, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20398C8),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names160,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20398C3  : virtual S20398C4 , virtual S20398C5 , virtual S20398C6 , S20398C7 , S20398C8 {
  void *s20398c3f0;
  virtual  ~S20398C3(); // _ZN8S20398C3D2Ev
  virtual void  v49(); // _ZN8S20398C33v49Ev
  S20398C3(); // tgen
};
//SIG(-1 S20398C3) C1{ VBC2{ BC3{ v2 v3 v4} v5 v6 v7 v8 v9 v10 Fi[3]} VBC3 VBC4{ v11 v12 v13 v14 v15 FD} BC5{ vd v16 v17 v18 v19 v20 FL[3]} BC6{ BC7{ BC8{ VBC4 vd v21 v22 v23 v24 v25 FC4} v26 v27} BC4 VBC9{ VBC4 BC8 BC7 v28 v29 v30 v31 v32 v33 v34 Fc[8]} v35 v36 v37 v38 v39 v40 v41 Fi} vd v1 Fp}


 S20398C3 ::~S20398C3(){ note_dtor("S20398C3", this);}
void  S20398C3 ::v49(){vfunc_called(this, "_ZN8S20398C33v49Ev");}
S20398C3 ::S20398C3(){ note_ctor("S20398C3", this);} // tgen

static void Test_S20398C3()
{
  extern Class_Descriptor cd_S20398C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,40)];
    init_test(&cd_S20398C3, buf);
    S20398C3 *dp, &lv = *(dp=new (buf) S20398C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,156), "sizeof(S20398C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20398C3)");
    check_base_class_offset(lv, (S20398C5*)(S20398C4*), ABISELECT(128,72), "S20398C3");
    check_base_class_offset(lv, (S20398C4*), ABISELECT(128,72), "S20398C3");
    /*is_ambiguous_... S20398C3::S20398C5 */ AMB_check_base_class_offset(lv, (S20398C5*), ABISELECT(152,88), "S20398C3");
    /*is_ambiguous_... S20398C3::S20398C6 */ AMB_check_base_class_offset(lv, (S20398C6*), ABISELECT(160,92), "S20398C3");
    /*is_ambiguous_... S20398C8::S20398C9 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C9*)(S20398C8*), ABISELECT(160,92), "S20398C3");
    check_base_class_offset(lv, (S20398C6*)(S20398C11*), ABISELECT(160,92), "S20398C3");
    /*is_ambiguous_... S20398C11::S20398C10 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C11*), ABISELECT(160,92), "S20398C3");
    check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C9*)(S20398C11*), ABISELECT(160,92), "S20398C3");
    check_base_class_offset(lv, (S20398C7*), 0, "S20398C3");
    /*is_ambiguous_... S20398C8::S20398C9 */ AMB_check_base_class_offset(lv, (S20398C10*)(S20398C9*)(S20398C8*), ABISELECT(32,28), "S20398C3");
    /*is_ambiguous_... S20398C8::S20398C9 */ AMB_check_base_class_offset(lv, (S20398C9*)(S20398C8*), ABISELECT(32,28), "S20398C3");
    /*is_ambiguous_... S20398C8::S20398C6 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C8*), ABISELECT(80,48), "S20398C3");
    /*is_ambiguous_... S20398C11::S20398C10 */ AMB_check_base_class_offset(lv, (S20398C10*)(S20398C11*), ABISELECT(192,108), "S20398C3");
    check_base_class_offset(lv, (S20398C10*)(S20398C9*)(S20398C11*), ABISELECT(240,128), "S20398C3");
    check_base_class_offset(lv, (S20398C9*)(S20398C11*), ABISELECT(240,128), "S20398C3");
    check_base_class_offset(lv, (S20398C11*)(S20398C8*), ABISELECT(192,108), "S20398C3");
    check_base_class_offset(lv, (S20398C8*), ABISELECT(32,28), "S20398C3");
    check_field_offset(lv, s20398c3f0, ABISELECT(120,68), "S20398C3.s20398c3f0");
    test_class_info(&lv, &cd_S20398C3);
    dp->~S20398C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20398C3(Test_S20398C3, "S20398C3", ABISELECT(304,156));

#else // __cplusplus

extern void _ZN8S20398C3C1Ev();
extern void _ZN8S20398C3D2Ev();
Name_Map name_map_S20398C3[] = {
  NSPAIR(_ZN8S20398C3C1Ev),
  NSPAIR(_ZN8S20398C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20398C5;
extern VTBL_ENTRY _ZTI8S20398C5[];
extern  VTBL_ENTRY _ZTV8S20398C5[];
extern Class_Descriptor cd_S20398C4;
extern VTBL_ENTRY _ZTI8S20398C4[];
extern  VTBL_ENTRY _ZTV8S20398C4[];
extern Class_Descriptor cd_S20398C5;
extern VTBL_ENTRY _ZTI8S20398C5[];
extern  VTBL_ENTRY _ZTV8S20398C5[];
extern Class_Descriptor cd_S20398C6;
extern VTBL_ENTRY _ZTI8S20398C6[];
extern  VTBL_ENTRY _ZTV8S20398C6[];
extern Class_Descriptor cd_S20398C7;
extern VTBL_ENTRY _ZTI8S20398C7[];
extern  VTBL_ENTRY _ZTV8S20398C7[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C9;
extern VTBL_ENTRY _ZTI8S20398C9[];
extern  VTBL_ENTRY _ZTV8S20398C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C9[];
extern Class_Descriptor cd_S20398C6;
extern VTBL_ENTRY _ZTI8S20398C6[];
extern  VTBL_ENTRY _ZTV8S20398C6[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C9;
extern VTBL_ENTRY _ZTI8S20398C9[];
extern  VTBL_ENTRY _ZTV8S20398C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C9[];
extern Class_Descriptor cd_S20398C11;
extern VTBL_ENTRY _ZTI9S20398C11[];
extern  VTBL_ENTRY _ZTV9S20398C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C11[];
extern Class_Descriptor cd_S20398C8;
extern VTBL_ENTRY _ZTI8S20398C8[];
extern  VTBL_ENTRY _ZTV8S20398C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C8[];
static Base_Class bases_S20398C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20398C5,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20398C4,    ABISELECT(128,72), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20398C5,    ABISELECT(152,88), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20398C6,    ABISELECT(160,92), //bcp->offset
    69, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20398C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20398C10,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20398C9,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20398C6,    ABISELECT(80,48), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20398C10,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20398C10,    ABISELECT(240,128), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20398C9,    ABISELECT(240,128), //bcp->offset
    113, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20398C11,    ABISELECT(192,108), //bcp->offset
    81, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20398C8,    ABISELECT(32,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI8S20398C3[];
extern void _ZN8S20398C3D1Ev();
extern void _ZN8S20398C3D0Ev();
extern void _ZN8S20398C73v23Ev();
extern void _ZN8S20398C73v24Ev();
extern void _ZN8S20398C73v25Ev();
extern void _ZN8S20398C73v26Ev();
extern void _ZN8S20398C73v27Ev();
extern void _ZN8S20398C33v49Ev();
extern void ABISELECT(_ZThn32_N8S20398C3D1Ev,_ZThn28_N8S20398C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S20398C3D0Ev,_ZThn28_N8S20398C3D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
extern void _ZN8S20398C83v42Ev();
extern void _ZN8S20398C83v43Ev();
extern void _ZN8S20398C83v44Ev();
extern void _ZN8S20398C83v45Ev();
extern void _ZN8S20398C83v46Ev();
extern void _ZN8S20398C83v47Ev();
extern void _ZN8S20398C83v48Ev();
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
extern void _ZN8S20398C52v9Ev();
extern void _ZN8S20398C53v10Ev();
extern void _ZN8S20398C53v11Ev();
extern void _ZN8S20398C43v12Ev();
extern void _ZN8S20398C43v13Ev();
extern void _ZN8S20398C43v14Ev();
extern void _ZN8S20398C43v15Ev();
extern void _ZN8S20398C43v16Ev();
extern void _ZN8S20398C43v17Ev();
extern void _ZN8S20398C52v9Ev();
extern void _ZN8S20398C53v10Ev();
extern void _ZN8S20398C53v11Ev();
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
extern void ABISELECT(_ZTv0_n32_N8S20398C3D1Ev,_ZTv0_n16_N8S20398C3D1Ev)();
extern void ABISELECT(_ZThn192_N8S20398C3D1Ev,_ZThn108_N8S20398C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20398C3D0Ev,_ZTv0_n16_N8S20398C3D0Ev)();
extern void ABISELECT(_ZThn192_N8S20398C3D0Ev,_ZThn108_N8S20398C3D0Ev)() __attribute__((weak));
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20398C3D1Ev,_ZTvn20_n16_N8S20398C3D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20398C3D0Ev,_ZTvn20_n16_N8S20398C3D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY vtc_S20398C3[] = {
  ABISELECT(192,108),
  ABISELECT(160,92),
  ABISELECT(152,88),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&_ZN8S20398C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20398C33v49Ev,
  ABISELECT(160,80),
  ABISELECT(128,64),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20398C3D1Ev,_ZThn28_N8S20398C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20398C3D0Ev,_ZThn28_N8S20398C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v45Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v46Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v47Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v48Ev,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&_ZN8S20398C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v17Ev,
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&_ZN8S20398C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C3D1Ev,_ZTv0_n16_N8S20398C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C3D0Ev,_ZTv0_n16_N8S20398C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
  ABISELECT(-80,-36),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C3D1Ev,_ZTvn20_n16_N8S20398C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C3D0Ev,_ZTvn20_n16_N8S20398C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern VTBL_ENTRY _ZTV8S20398C3[];
extern void _ZN8S20398C8D1Ev();
extern void _ZN8S20398C8D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
extern void _ZN8S20398C83v42Ev();
extern void _ZN8S20398C83v43Ev();
extern void _ZN8S20398C83v44Ev();
extern void _ZN8S20398C83v45Ev();
extern void _ZN8S20398C83v46Ev();
extern void _ZN8S20398C83v47Ev();
extern void _ZN8S20398C83v48Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C8__8S20398C3[] = {
  ABISELECT(160,80),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&_ZN8S20398C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C8D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v45Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v46Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v47Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v48Ev,
};
extern void _ZN8S20398C9D1Ev();
extern void _ZN8S20398C9D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C98S20398C8__8S20398C3[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C108S20398C98S20398C8__8S20398C3[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C108S20398C98S20398C8__8S20398C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__8S20398C98S20398C8__8S20398C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__8S20398C8__8S20398C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20398C8D1Ev,_ZTv0_n16_N8S20398C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S20398C8D1Ev,_ZThn80_N8S20398C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20398C8D0Ev,_ZTv0_n16_N8S20398C8D0Ev)();
extern void ABISELECT(_ZThn160_N8S20398C8D0Ev,_ZThn80_N8S20398C8D0Ev)() __attribute__((weak));
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C11__8S20398C8__8S20398C3[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  ABISELECT(-32,-16),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C8D1Ev,_ZTv0_n16_N8S20398C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C8D0Ev,_ZTv0_n16_N8S20398C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20398C8D1Ev,_ZTvn20_n16_N8S20398C8D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20398C8D0Ev,_ZTvn20_n16_N8S20398C8D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C99S20398C11__A1__8S20398C8__8S20398C3[] = {
  ABISELECT(-80,-36),
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C8D1Ev,_ZTvn20_n16_N8S20398C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C8D0Ev,_ZTvn20_n16_N8S20398C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN9S20398C11D1Ev();
extern void _ZN9S20398C11D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C11__8S20398C3[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&_ZN9S20398C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C109S20398C11__A1__8S20398C3[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C109S20398C11__A1__8S20398C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C9D1Ev();
extern void _ZN8S20398C9D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C99S20398C11__A1__8S20398C3[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C108S20398C99S20398C11__A2__8S20398C3[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C108S20398C99S20398C11__A2__8S20398C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__8S20398C99S20398C11__A1__8S20398C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C11__8S20398C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void ABISELECT(_ZThn48_N9S20398C11D1Ev,_ZThn20_N9S20398C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20398C11D0Ev,_ZThn20_N9S20398C11D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C9__9S20398C11__8S20398C3[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20398C11D1Ev,_ZThn20_N9S20398C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20398C11D0Ev,_ZThn20_N9S20398C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
static  VTT_ENTRY vtt_S20398C3[] = {
  {&(_ZTV8S20398C3[6]),  6,125},
  {&(_tg__ZTV8S20398C8__8S20398C3[4]),  4,20},
  {&(_tg__ZTV8S20398C98S20398C8__8S20398C3[3]),  3,12},
  {&(_tg__ZTV9S20398C108S20398C98S20398C8__8S20398C3[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C108S20398C98S20398C8__8S20398C3[7]),  7,12},
  {&(_tg__ZTV8S20398C6__8S20398C98S20398C8__8S20398C3[7]),  7,12},
  {&(_tg__ZTV8S20398C6__8S20398C8__8S20398C3[7]),  7,12},
  {&(_tg__ZTV9S20398C11__8S20398C8__8S20398C3[18]),  18,32},
  {&(_tg__ZTV8S20398C99S20398C11__A1__8S20398C8__8S20398C3[3]),  3,12},
  {&(_ZTV8S20398C3[52]),  52,125},
  {&(_ZTV8S20398C3[66]),  66,125},
  {&(_ZTV8S20398C3[76]),  76,125},
  {&(_ZTV8S20398C3[18]),  18,125},
  {&(_ZTV8S20398C3[99]),  99,125},
  {&(_ZTV8S20398C3[116]),  116,125},
  {&(_tg__ZTV9S20398C11__8S20398C3[3]),  3,17},
  {&(_tg__ZTV9S20398C109S20398C11__A1__8S20398C3[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C109S20398C11__A1__8S20398C3[7]),  7,12},
  {&(_tg__ZTV8S20398C99S20398C11__A1__8S20398C3[3]),  3,12},
  {&(_tg__ZTV9S20398C108S20398C99S20398C11__A2__8S20398C3[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C108S20398C99S20398C11__A2__8S20398C3[7]),  7,12},
  {&(_tg__ZTV8S20398C6__8S20398C99S20398C11__A1__8S20398C3[7]),  7,12},
  {&(_tg__ZTV8S20398C6__9S20398C11__8S20398C3[7]),  7,12},
  {&(_tg__ZTV8S20398C9__9S20398C11__8S20398C3[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20398C3[];
extern  VTBL_ENTRY _ZTV8S20398C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C3[];
static VTBL_ENTRY alt_thunk_names161[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C8D0Ev,_ZTv0_n16_N8S20398C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20398C8D0Ev,_ZThn80_N8S20398C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C8D1Ev,_ZTv0_n16_N8S20398C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20398C8D1Ev,_ZThn80_N8S20398C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C3D0Ev,_ZTv0_n16_N8S20398C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20398C3D0Ev,_ZThn108_N8S20398C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C3D1Ev,_ZTv0_n16_N8S20398C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20398C3D1Ev,_ZThn108_N8S20398C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20398C3 = {  "S20398C3", // class name
  bases_S20398C3, 13,
  &(vtc_S20398C3[0]), // expected_vtbl_contents
  &(vtt_S20398C3[0]), // expected_vtt_contents
  ABISELECT(304,156), // object size
  NSPAIRA(_ZTI8S20398C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20398C3),125, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20398C3),24, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names161,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20398C1  : virtual S20398C2 , virtual S20398C3 , S20398C11 {
  ::S20398C10 s20398c1f0;
  int s20398c1f1;
  long double s20398c1f2;
  virtual  ~S20398C1(); // _ZN8S20398C1D2Ev
  virtual void  v1(); // _ZN8S20398C12v1Ev
  virtual void  v2(); // _ZN8S20398C12v2Ev
  virtual void  v3(); // _ZN8S20398C12v3Ev
  virtual void  v4(); // _ZN8S20398C12v4Ev
  virtual void  v5(); // _ZN8S20398C12v5Ev
  virtual void  v6(); // _ZN8S20398C12v6Ev
  virtual void  v7(); // _ZN8S20398C12v7Ev
  S20398C1(); // tgen
};
//SIG(1 S20398C1) C1{ VBC2{ v8} VBC3{ VBC4{ BC5{ v9 v10 v11} v12 v13 v14 v15 v16 v17 Fi[3]} VBC5 VBC6{ v18 v19 v20 v21 v22 FD} BC7{ vd v23 v24 v25 v26 v27 FL[3]} BC8{ BC9{ BC10{ VBC6 vd v28 v29 v30 v31 v32 FC6} v33 v34} BC6 VBC11{ VBC6 BC10 BC9 v35 v36 v37 v38 v39 v40 v41 Fc[8]} v42 v43 v44 v45 v46 v47 v48 Fi} vd v49 Fp} BC11 vd v1 v2 v3 v4 v5 v6 v7 FC10 Fi FD}


 S20398C1 ::~S20398C1(){ note_dtor("S20398C1", this);}
void  S20398C1 ::v1(){vfunc_called(this, "_ZN8S20398C12v1Ev");}
void  S20398C1 ::v2(){vfunc_called(this, "_ZN8S20398C12v2Ev");}
void  S20398C1 ::v3(){vfunc_called(this, "_ZN8S20398C12v3Ev");}
void  S20398C1 ::v4(){vfunc_called(this, "_ZN8S20398C12v4Ev");}
void  S20398C1 ::v5(){vfunc_called(this, "_ZN8S20398C12v5Ev");}
void  S20398C1 ::v6(){vfunc_called(this, "_ZN8S20398C12v6Ev");}
void  S20398C1 ::v7(){vfunc_called(this, "_ZN8S20398C12v7Ev");}
S20398C1 ::S20398C1(){ note_ctor("S20398C1", this);} // tgen

static void Test_S20398C1()
{
  extern Class_Descriptor cd_S20398C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(35,66)];
    init_test(&cd_S20398C1, buf);
    S20398C1 *dp, &lv = *(dp=new (buf) S20398C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(544,260), "sizeof(S20398C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20398C1)");
    check_base_class_offset(lv, (S20398C2*), ABISELECT(224,100), "S20398C1");
    check_base_class_offset(lv, (S20398C5*)(S20398C4*), ABISELECT(368,176), "S20398C1");
    check_base_class_offset(lv, (S20398C4*)(S20398C3*), ABISELECT(368,176), "S20398C1");
    /*is_ambiguous_... S20398C3::S20398C5 */ AMB_check_base_class_offset(lv, (S20398C5*)(S20398C3*), ABISELECT(392,192), "S20398C1");
    /*is_ambiguous_... S20398C3::S20398C6 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C3*), ABISELECT(400,196), "S20398C1");
    /*is_ambiguous_... S20398C8::S20398C9 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C9*)(S20398C8*)(S20398C3*), ABISELECT(400,196), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C11*), ABISELECT(400,196), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C11*), ABISELECT(400,196), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C9*)(S20398C11*), ABISELECT(400,196), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C11*), ABISELECT(400,196), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C11*), ABISELECT(400,196), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C10*)(S20398C9*)(S20398C11*), ABISELECT(400,196), "S20398C1");
    check_base_class_offset(lv, (S20398C7*)(S20398C3*), ABISELECT(240,104), "S20398C1");
    /*is_ambiguous_... S20398C8::S20398C9 */ AMB_check_base_class_offset(lv, (S20398C10*)(S20398C9*)(S20398C8*)(S20398C3*), ABISELECT(272,132), "S20398C1");
    /*is_ambiguous_... S20398C8::S20398C9 */ AMB_check_base_class_offset(lv, (S20398C9*)(S20398C8*)(S20398C3*), ABISELECT(272,132), "S20398C1");
    /*is_ambiguous_... S20398C8::S20398C6 */ AMB_check_base_class_offset(lv, (S20398C6*)(S20398C8*)(S20398C3*), ABISELECT(320,152), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C10*)(S20398C11*), ABISELECT(432,212), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C10*)(S20398C9*)(S20398C11*), ABISELECT(480,232), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C9*)(S20398C11*), ABISELECT(480,232), "S20398C1");
    check_base_class_offset(lv, (S20398C11*)(S20398C8*)(S20398C3*), ABISELECT(432,212), "S20398C1");
    check_base_class_offset(lv, (S20398C8*)(S20398C3*), ABISELECT(272,132), "S20398C1");
    check_base_class_offset(lv, (S20398C3*), ABISELECT(240,104), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C10*)(S20398C11*), 0, "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C10*)(S20398C9*)(S20398C11*), ABISELECT(48,20), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C9*)(S20398C11*), ABISELECT(48,20), "S20398C1");
    /*is_ambiguous_... S20398C1::S20398C11 */ AMB_check_base_class_offset(lv, (S20398C11*), 0, "S20398C1");
    check_field_offset(lv, s20398c1f0, ABISELECT(112,48), "S20398C1.s20398c1f0");
    check_field_offset(lv, s20398c1f1, ABISELECT(192,84), "S20398C1.s20398c1f1");
    check_field_offset(lv, s20398c1f2, ABISELECT(208,88), "S20398C1.s20398c1f2");
    test_class_info(&lv, &cd_S20398C1);
    dp->~S20398C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20398C1(Test_S20398C1, "S20398C1", ABISELECT(544,260));

#else // __cplusplus

extern void _ZN8S20398C1C1Ev();
extern void _ZN8S20398C1D2Ev();
Name_Map name_map_S20398C1[] = {
  NSPAIR(_ZN8S20398C1C1Ev),
  NSPAIR(_ZN8S20398C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20398C2;
extern VTBL_ENTRY _ZTI8S20398C2[];
extern  VTBL_ENTRY _ZTV8S20398C2[];
extern Class_Descriptor cd_S20398C5;
extern VTBL_ENTRY _ZTI8S20398C5[];
extern  VTBL_ENTRY _ZTV8S20398C5[];
extern Class_Descriptor cd_S20398C4;
extern VTBL_ENTRY _ZTI8S20398C4[];
extern  VTBL_ENTRY _ZTV8S20398C4[];
extern Class_Descriptor cd_S20398C5;
extern VTBL_ENTRY _ZTI8S20398C5[];
extern  VTBL_ENTRY _ZTV8S20398C5[];
extern Class_Descriptor cd_S20398C6;
extern VTBL_ENTRY _ZTI8S20398C6[];
extern  VTBL_ENTRY _ZTV8S20398C6[];
extern Class_Descriptor cd_S20398C7;
extern VTBL_ENTRY _ZTI8S20398C7[];
extern  VTBL_ENTRY _ZTV8S20398C7[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C9;
extern VTBL_ENTRY _ZTI8S20398C9[];
extern  VTBL_ENTRY _ZTV8S20398C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C9[];
extern Class_Descriptor cd_S20398C6;
extern VTBL_ENTRY _ZTI8S20398C6[];
extern  VTBL_ENTRY _ZTV8S20398C6[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C9;
extern VTBL_ENTRY _ZTI8S20398C9[];
extern  VTBL_ENTRY _ZTV8S20398C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C9[];
extern Class_Descriptor cd_S20398C11;
extern VTBL_ENTRY _ZTI9S20398C11[];
extern  VTBL_ENTRY _ZTV9S20398C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C11[];
extern Class_Descriptor cd_S20398C8;
extern VTBL_ENTRY _ZTI8S20398C8[];
extern  VTBL_ENTRY _ZTV8S20398C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C8[];
extern Class_Descriptor cd_S20398C3;
extern VTBL_ENTRY _ZTI8S20398C3[];
extern  VTBL_ENTRY _ZTV8S20398C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C3[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C10;
extern VTBL_ENTRY _ZTI9S20398C10[];
extern  VTBL_ENTRY _ZTV9S20398C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C10[];
extern Class_Descriptor cd_S20398C9;
extern VTBL_ENTRY _ZTI8S20398C9[];
extern  VTBL_ENTRY _ZTV8S20398C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C9[];
extern Class_Descriptor cd_S20398C11;
extern VTBL_ENTRY _ZTI9S20398C11[];
extern  VTBL_ENTRY _ZTV9S20398C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20398C11[];
static Base_Class bases_S20398C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20398C2,    ABISELECT(224,100), //bcp->offset
    41, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S20398C5,    ABISELECT(368,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20398C4,    ABISELECT(368,176), //bcp->offset
    112, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20398C5,    ABISELECT(392,192), //bcp->offset
    132, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20398C6,    ABISELECT(400,196), //bcp->offset
    140, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20398C7,    ABISELECT(240,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
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20398C10,    ABISELECT(272,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20398C9,    ABISELECT(272,132), //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
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20398C6,    ABISELECT(320,152), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20398C10,    ABISELECT(432,212), //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
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20398C10,    ABISELECT(480,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20398C9,    ABISELECT(480,232), //bcp->offset
    184, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20398C11,    ABISELECT(432,212), //bcp->offset
    152, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20398C8,    ABISELECT(272,132), //bcp->offset
    85, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20398C3,    ABISELECT(240,104), //bcp->offset
    45, //bcp->virtual_function_table_offset
    32, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20398C10,    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
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20398C10,    ABISELECT(48,20), //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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20398C9,    ABISELECT(48,20), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20398C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20398C1[];
extern void _ZN8S20398C1D1Ev();
extern void _ZN8S20398C1D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
extern void _ZN8S20398C12v1Ev();
extern void _ZN8S20398C12v2Ev();
extern void _ZN8S20398C12v3Ev();
extern void _ZN8S20398C12v4Ev();
extern void _ZN8S20398C12v5Ev();
extern void _ZN8S20398C12v6Ev();
extern void _ZN8S20398C12v7Ev();
extern void ABISELECT(_ZThn48_N8S20398C1D1Ev,_ZThn20_N8S20398C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S20398C1D0Ev,_ZThn20_N8S20398C1D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
extern void _ZN8S20398C22v8Ev();
extern void ABISELECT(_ZTv0_n56_N8S20398C1D1Ev,_ZTv0_n28_N8S20398C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S20398C1D1Ev,_ZThn104_N8S20398C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20398C1D0Ev,_ZTv0_n28_N8S20398C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S20398C1D0Ev,_ZThn104_N8S20398C1D0Ev)() __attribute__((weak));
extern void _ZN8S20398C73v23Ev();
extern void _ZN8S20398C73v24Ev();
extern void _ZN8S20398C73v25Ev();
extern void _ZN8S20398C73v26Ev();
extern void _ZN8S20398C73v27Ev();
extern void _ZN8S20398C33v49Ev();
extern void ABISELECT(_ZTvn32_n56_N8S20398C1D1Ev,_ZTvn28_n28_N8S20398C1D1Ev)();
extern void ABISELECT(_ZTvn32_n56_N8S20398C1D0Ev,_ZTvn28_n28_N8S20398C1D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
extern void _ZN8S20398C83v42Ev();
extern void _ZN8S20398C83v43Ev();
extern void _ZN8S20398C83v44Ev();
extern void _ZN8S20398C83v45Ev();
extern void _ZN8S20398C83v46Ev();
extern void _ZN8S20398C83v47Ev();
extern void _ZN8S20398C83v48Ev();
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
extern void _ZN8S20398C52v9Ev();
extern void _ZN8S20398C53v10Ev();
extern void _ZN8S20398C53v11Ev();
extern void _ZN8S20398C43v12Ev();
extern void _ZN8S20398C43v13Ev();
extern void _ZN8S20398C43v14Ev();
extern void _ZN8S20398C43v15Ev();
extern void _ZN8S20398C43v16Ev();
extern void _ZN8S20398C43v17Ev();
extern void _ZN8S20398C52v9Ev();
extern void _ZN8S20398C53v10Ev();
extern void _ZN8S20398C53v11Ev();
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
extern void ABISELECT(_ZTv0_n32_N8S20398C1D1Ev,_ZTv0_n16_N8S20398C1D1Ev)();
extern void ABISELECT(_ZThn432_N8S20398C1D1Ev,_ZThn212_N8S20398C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20398C1D0Ev,_ZTv0_n16_N8S20398C1D0Ev)();
extern void ABISELECT(_ZThn432_N8S20398C1D0Ev,_ZThn212_N8S20398C1D0Ev)() __attribute__((weak));
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
extern void ABISELECT(_ZTvn48_n32_N8S20398C1D1Ev,_ZTvn20_n16_N8S20398C1D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20398C1D0Ev,_ZTvn20_n16_N8S20398C1D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY vtc_S20398C1[] = {
  ABISELECT(432,212),
  ABISELECT(392,192),
  ABISELECT(368,176),
  ABISELECT(240,104),
  ABISELECT(224,100),
  ABISELECT(400,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C1[0]),
  (VTBL_ENTRY)&_ZN8S20398C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C1D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
  (VTBL_ENTRY)&_ZN8S20398C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20398C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20398C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20398C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20398C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20398C12v6Ev,
  (VTBL_ENTRY)&_ZN8S20398C12v7Ev,
  ABISELECT(352,176),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20398C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20398C1D1Ev,_ZThn20_N8S20398C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20398C1D0Ev,_ZThn20_N8S20398C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
  0,
  ABISELECT(-224,-100),
  (VTBL_ENTRY)&(_ZTI8S20398C1[0]),
  (VTBL_ENTRY)&_ZN8S20398C22v8Ev,
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(80,48),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  ABISELECT(32,28),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-104),
  ABISELECT(192,108),
  ABISELECT(160,92),
  ABISELECT(152,88),
  ABISELECT(128,72),
  ABISELECT(-240,-104),
  (VTBL_ENTRY)&(_ZTI8S20398C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20398C1D1Ev,_ZTv0_n28_N8S20398C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20398C1D0Ev,_ZTv0_n28_N8S20398C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20398C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20398C33v49Ev,
  ABISELECT(160,80),
  ABISELECT(128,64),
  ABISELECT(-272,-132),
  (VTBL_ENTRY)&(_ZTI8S20398C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20398C1D1Ev,_ZTvn28_n28_N8S20398C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S20398C1D0Ev,_ZTvn28_n28_N8S20398C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v45Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v46Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v47Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v48Ev,
  ABISELECT(-320,-152),
  (VTBL_ENTRY)&(_ZTI8S20398C1[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-176),
  (VTBL_ENTRY)&(_ZTI8S20398C1[0]),
  (VTBL_ENTRY)&_ZN8S20398C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v17Ev,
  0,
  0,
  0,
  ABISELECT(-392,-192),
  (VTBL_ENTRY)&(_ZTI8S20398C1[0]),
  (VTBL_ENTRY)&_ZN8S20398C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-196),
  (VTBL_ENTRY)&(_ZTI8S20398C1[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-212),
  ABISELECT(-32,-16),
  ABISELECT(-432,-212),
  (VTBL_ENTRY)&(_ZTI8S20398C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C1D1Ev,_ZTv0_n16_N8S20398C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C1D0Ev,_ZTv0_n16_N8S20398C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
  ABISELECT(-80,-36),
  ABISELECT(-480,-232),
  (VTBL_ENTRY)&(_ZTI8S20398C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C1D1Ev,_ZTvn20_n16_N8S20398C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C1D0Ev,_ZTvn20_n16_N8S20398C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern VTBL_ENTRY _ZTV8S20398C1[];
extern void _ZN9S20398C11D1Ev();
extern void _ZN9S20398C11D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C11__A__8S20398C1[] = {
  ABISELECT(400,196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&_ZN9S20398C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C109S20398C11__A3__8S20398C1[] = {
  ABISELECT(400,196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C109S20398C11__A3__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-196),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C9D1Ev();
extern void _ZN8S20398C9D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C99S20398C11__A2__8S20398C1[] = {
  ABISELECT(352,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C108S20398C99S20398C11__A4__8S20398C1[] = {
  ABISELECT(352,176),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C108S20398C99S20398C11__A4__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-176),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__8S20398C99S20398C11__A2__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-176),
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C11__A__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-196),
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void ABISELECT(_ZThn48_N9S20398C11D1Ev,_ZThn20_N9S20398C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20398C11D0Ev,_ZThn20_N9S20398C11D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C9__9S20398C11__A__8S20398C1[] = {
  ABISELECT(352,176),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20398C11D1Ev,_ZThn20_N9S20398C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20398C11D0Ev,_ZThn20_N9S20398C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN8S20398C3D1Ev();
extern void _ZN8S20398C3D0Ev();
extern void _ZN8S20398C73v23Ev();
extern void _ZN8S20398C73v24Ev();
extern void _ZN8S20398C73v25Ev();
extern void _ZN8S20398C73v26Ev();
extern void _ZN8S20398C73v27Ev();
extern void _ZN8S20398C33v49Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C3__8S20398C1[] = {
  ABISELECT(192,108),
  ABISELECT(160,92),
  ABISELECT(152,88),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&_ZN8S20398C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v25Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v26Ev,
  (VTBL_ENTRY)&_ZN8S20398C73v27Ev,
  (VTBL_ENTRY)&_ZN8S20398C33v49Ev,
};
extern void _ZN8S20398C8D1Ev();
extern void _ZN8S20398C8D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
extern void _ZN8S20398C83v42Ev();
extern void _ZN8S20398C83v43Ev();
extern void _ZN8S20398C83v44Ev();
extern void _ZN8S20398C83v45Ev();
extern void _ZN8S20398C83v46Ev();
extern void _ZN8S20398C83v47Ev();
extern void _ZN8S20398C83v48Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C88S20398C3__8S20398C1[] = {
  ABISELECT(160,80),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&_ZN8S20398C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C8D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v45Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v46Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v47Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v48Ev,
};
extern void _ZN8S20398C9D1Ev();
extern void _ZN8S20398C9D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C98S20398C88S20398C3__8S20398C1[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C108S20398C98S20398C88S20398C3__8S20398C1[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C108S20398C98S20398C88S20398C3__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__8S20398C98S20398C88S20398C3__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__8S20398C88S20398C3__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20398C8D1Ev,_ZTv0_n16_N8S20398C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S20398C8D1Ev,_ZThn80_N8S20398C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20398C8D0Ev,_ZTv0_n16_N8S20398C8D0Ev)();
extern void ABISELECT(_ZThn160_N8S20398C8D0Ev,_ZThn80_N8S20398C8D0Ev)() __attribute__((weak));
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C11__8S20398C88S20398C3__8S20398C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  ABISELECT(-32,-16),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C8D1Ev,_ZTv0_n16_N8S20398C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C8D0Ev,_ZTv0_n16_N8S20398C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20398C8D1Ev,_ZTvn20_n16_N8S20398C8D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20398C8D0Ev,_ZTvn20_n16_N8S20398C8D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C99S20398C11__A1__8S20398C88S20398C3__8S20398C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI8S20398C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C8D1Ev,_ZTvn20_n16_N8S20398C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C8D0Ev,_ZTvn20_n16_N8S20398C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN8S20398C52v9Ev();
extern void _ZN8S20398C53v10Ev();
extern void _ZN8S20398C53v11Ev();
extern void _ZN8S20398C43v12Ev();
extern void _ZN8S20398C43v13Ev();
extern void _ZN8S20398C43v14Ev();
extern void _ZN8S20398C43v15Ev();
extern void _ZN8S20398C43v16Ev();
extern void _ZN8S20398C43v17Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C4__8S20398C3__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&_ZN8S20398C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v11Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20398C43v17Ev,
};
extern void _ZN8S20398C52v9Ev();
extern void _ZN8S20398C53v10Ev();
extern void _ZN8S20398C53v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C5__A1__8S20398C3__8S20398C1[] = {
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&_ZN8S20398C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20398C53v11Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__8S20398C3__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void ABISELECT(_ZThn32_N8S20398C3D1Ev,_ZThn28_N8S20398C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S20398C3D0Ev,_ZThn28_N8S20398C3D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
extern void _ZN8S20398C83v42Ev();
extern void _ZN8S20398C83v43Ev();
extern void _ZN8S20398C83v44Ev();
extern void _ZN8S20398C83v45Ev();
extern void _ZN8S20398C83v46Ev();
extern void _ZN8S20398C83v47Ev();
extern void _ZN8S20398C83v48Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C8__8S20398C3__8S20398C1[] = {
  ABISELECT(160,80),
  ABISELECT(128,64),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20398C3D1Ev,_ZThn28_N8S20398C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S20398C3D0Ev,_ZThn28_N8S20398C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v42Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v43Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v44Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v45Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v46Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v47Ev,
  (VTBL_ENTRY)&_ZN8S20398C83v48Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20398C3D1Ev,_ZTv0_n16_N8S20398C3D1Ev)();
extern void ABISELECT(_ZThn192_N8S20398C3D1Ev,_ZThn108_N8S20398C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20398C3D0Ev,_ZTv0_n16_N8S20398C3D0Ev)();
extern void ABISELECT(_ZThn192_N8S20398C3D0Ev,_ZThn108_N8S20398C3D0Ev)() __attribute__((weak));
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C11__8S20398C3__8S20398C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C3D1Ev,_ZTv0_n16_N8S20398C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20398C3D0Ev,_ZTv0_n16_N8S20398C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
};
extern void ABISELECT(_ZTvn48_n32_N8S20398C3D1Ev,_ZTvn20_n16_N8S20398C3D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20398C3D0Ev,_ZTvn20_n16_N8S20398C3D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C99S20398C11__A1__8S20398C3__8S20398C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI8S20398C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C3D1Ev,_ZTvn20_n16_N8S20398C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20398C3D0Ev,_ZTvn20_n16_N8S20398C3D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN9S20398C11D1Ev();
extern void _ZN9S20398C11D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN9S20398C113v35Ev();
extern void _ZN9S20398C113v36Ev();
extern void _ZN9S20398C113v37Ev();
extern void _ZN9S20398C113v38Ev();
extern void _ZN9S20398C113v39Ev();
extern void _ZN9S20398C113v40Ev();
extern void _ZN9S20398C113v41Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C11__8S20398C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&_ZN9S20398C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v35Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v36Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v37Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v38Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v39Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v40Ev,
  (VTBL_ENTRY)&_ZN9S20398C113v41Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C109S20398C11__A1__8S20398C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C109S20398C11__A1__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C9D1Ev();
extern void _ZN8S20398C9D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C99S20398C11__A1__8S20398C1[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20398C9D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
extern void _ZN9S20398C10D1Ev();
extern void _ZN9S20398C10D0Ev();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
static  VTBL_ENTRY _tg__ZTV9S20398C108S20398C99S20398C11__A2__8S20398C1[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN9S20398C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20398C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C108S20398C99S20398C11__A2__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI9S20398C10[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__8S20398C99S20398C11__A1__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S20398C9[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void _ZN8S20398C63v18Ev();
extern void _ZN8S20398C63v19Ev();
extern void _ZN8S20398C63v20Ev();
extern void _ZN8S20398C63v21Ev();
extern void _ZN8S20398C63v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C6__9S20398C11__8S20398C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&_ZN8S20398C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20398C63v22Ev,
};
extern void ABISELECT(_ZThn48_N9S20398C11D1Ev,_ZThn20_N9S20398C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20398C11D0Ev,_ZThn20_N9S20398C11D0Ev)();
extern void _ZN9S20398C103v28Ev();
extern void _ZN9S20398C103v29Ev();
extern void _ZN9S20398C103v30Ev();
extern void _ZN9S20398C103v31Ev();
extern void _ZN9S20398C103v32Ev();
extern void _ZN8S20398C93v33Ev();
extern void _ZN8S20398C93v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20398C9__9S20398C11__8S20398C1[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20398C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20398C11D1Ev,_ZThn20_N9S20398C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20398C11D0Ev,_ZThn20_N9S20398C11D0Ev),
  (VTBL_ENTRY)&_ZN9S20398C103v28Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v29Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v30Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v31Ev,
  (VTBL_ENTRY)&_ZN9S20398C103v32Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20398C93v34Ev,
};
static  VTT_ENTRY vtt_S20398C1[] = {
  {&(_ZTV8S20398C1[8]),  8,196},
  {&(_tg__ZTV9S20398C11__A__8S20398C1[3]),  3,17},
  {&(_tg__ZTV9S20398C109S20398C11__A3__8S20398C1[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C109S20398C11__A3__8S20398C1[7]),  7,12},
  {&(_tg__ZTV8S20398C99S20398C11__A2__8S20398C1[3]),  3,12},
  {&(_tg__ZTV9S20398C108S20398C99S20398C11__A4__8S20398C1[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C108S20398C99S20398C11__A4__8S20398C1[7]),  7,12},
  {&(_tg__ZTV8S20398C6__8S20398C99S20398C11__A2__8S20398C1[7]),  7,12},
  {&(_tg__ZTV8S20398C6__9S20398C11__A__8S20398C1[7]),  7,12},
  {&(_tg__ZTV8S20398C9__9S20398C11__A__8S20398C1[3]),  3,12},
  {&(_ZTV8S20398C1[44]),  44,196},
  {&(_ZTV8S20398C1[77]),  77,196},
  {&(_ZTV8S20398C1[123]),  123,196},
  {&(_ZTV8S20398C1[137]),  137,196},
  {&(_ZTV8S20398C1[147]),  147,196},
  {&(_ZTV8S20398C1[89]),  89,196},
  {&(_ZTV8S20398C1[107]),  107,196},
  {&(_ZTV8S20398C1[170]),  170,196},
  {&(_ZTV8S20398C1[187]),  187,196},
  {&(_ZTV8S20398C1[32]),  32,196},
  {&(_tg__ZTV8S20398C3__8S20398C1[6]),  6,14},
  {&(_tg__ZTV8S20398C88S20398C3__8S20398C1[4]),  4,20},
  {&(_tg__ZTV8S20398C98S20398C88S20398C3__8S20398C1[3]),  3,12},
  {&(_tg__ZTV9S20398C108S20398C98S20398C88S20398C3__8S20398C1[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C108S20398C98S20398C88S20398C3__8S20398C1[7]),  7,12},
  {&(_tg__ZTV8S20398C6__8S20398C98S20398C88S20398C3__8S20398C1[7]),  7,12},
  {&(_tg__ZTV8S20398C6__8S20398C88S20398C3__8S20398C1[7]),  7,12},
  {&(_tg__ZTV9S20398C11__8S20398C88S20398C3__8S20398C1[18]),  18,32},
  {&(_tg__ZTV8S20398C99S20398C11__A1__8S20398C88S20398C3__8S20398C1[3]),  3,12},
  {&(_tg__ZTV8S20398C4__8S20398C3__8S20398C1[11]),  11,20},
  {&(_tg__ZTV8S20398C5__A1__8S20398C3__8S20398C1[5]),  5,8},
  {&(_tg__ZTV8S20398C6__8S20398C3__8S20398C1[7]),  7,12},
  {&(_tg__ZTV8S20398C8__8S20398C3__8S20398C1[4]),  4,20},
  {&(_tg__ZTV9S20398C11__8S20398C3__8S20398C1[18]),  18,32},
  {&(_tg__ZTV8S20398C99S20398C11__A1__8S20398C3__8S20398C1[3]),  3,12},
  {&(_tg__ZTV9S20398C11__8S20398C1[3]),  3,17},
  {&(_tg__ZTV9S20398C109S20398C11__A1__8S20398C1[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C109S20398C11__A1__8S20398C1[7]),  7,12},
  {&(_tg__ZTV8S20398C99S20398C11__A1__8S20398C1[3]),  3,12},
  {&(_tg__ZTV9S20398C108S20398C99S20398C11__A2__8S20398C1[3]),  3,10},
  {&(_tg__ZTV8S20398C6__9S20398C108S20398C99S20398C11__A2__8S20398C1[7]),  7,12},
  {&(_tg__ZTV8S20398C6__8S20398C99S20398C11__A1__8S20398C1[7]),  7,12},
  {&(_tg__ZTV8S20398C6__9S20398C11__8S20398C1[7]),  7,12},
  {&(_tg__ZTV8S20398C9__9S20398C11__8S20398C1[3]),  3,12},
};
extern VTBL_ENTRY _ZTI8S20398C1[];
extern  VTBL_ENTRY _ZTV8S20398C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20398C1[];
static VTBL_ENTRY alt_thunk_names162[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C3D0Ev,_ZTv0_n16_N8S20398C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20398C3D0Ev,_ZThn108_N8S20398C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C3D1Ev,_ZTv0_n16_N8S20398C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20398C3D1Ev,_ZThn108_N8S20398C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C8D0Ev,_ZTv0_n16_N8S20398C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20398C8D0Ev,_ZThn80_N8S20398C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C8D1Ev,_ZTv0_n16_N8S20398C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20398C8D1Ev,_ZThn80_N8S20398C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C1D0Ev,_ZTv0_n16_N8S20398C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S20398C1D0Ev,_ZThn212_N8S20398C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20398C1D1Ev,_ZTv0_n16_N8S20398C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S20398C1D1Ev,_ZThn212_N8S20398C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20398C1D0Ev,_ZTv0_n28_N8S20398C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20398C1D0Ev,_ZThn104_N8S20398C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20398C1D1Ev,_ZTv0_n28_N8S20398C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20398C1D1Ev,_ZThn104_N8S20398C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20398C1 = {  "S20398C1", // class name
  bases_S20398C1, 19,
  &(vtc_S20398C1[0]), // expected_vtbl_contents
  &(vtt_S20398C1[0]), // expected_vtt_contents
  ABISELECT(544,260), // object size
  NSPAIRA(_ZTI8S20398C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20398C1),196, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20398C1),44, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names162,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19065C4_nt  {
  int s19065c4f0;
  virtual void  v5(); // _ZN11S19065C4_nt2v5Ev
  virtual void  v6(); // _ZN11S19065C4_nt2v6Ev
  virtual void  v7(); // _ZN11S19065C4_nt2v7Ev
  virtual void  v8(); // _ZN11S19065C4_nt2v8Ev
  virtual void  v9(); // _ZN11S19065C4_nt2v9Ev
  ~S19065C4_nt(); // tgen
  S19065C4_nt(); // tgen
};
//SIG(-1 S19065C4_nt) C1{ v1 v2 v3 v4 v5 Fi}


void  S19065C4_nt ::v5(){vfunc_called(this, "_ZN11S19065C4_nt2v5Ev");}
void  S19065C4_nt ::v6(){vfunc_called(this, "_ZN11S19065C4_nt2v6Ev");}
void  S19065C4_nt ::v7(){vfunc_called(this, "_ZN11S19065C4_nt2v7Ev");}
void  S19065C4_nt ::v8(){vfunc_called(this, "_ZN11S19065C4_nt2v8Ev");}
void  S19065C4_nt ::v9(){vfunc_called(this, "_ZN11S19065C4_nt2v9Ev");}
S19065C4_nt ::~S19065C4_nt(){ note_dtor("S19065C4_nt", this);} // tgen
S19065C4_nt ::S19065C4_nt(){ note_ctor("S19065C4_nt", this);} // tgen

//skip512 S19065C4_nt

#else // __cplusplus

extern void _ZN11S19065C4_ntC1Ev();
extern void _ZN11S19065C4_ntD1Ev();
Name_Map name_map_S19065C4_nt[] = {
  NSPAIR(_ZN11S19065C4_ntC1Ev),
  NSPAIR(_ZN11S19065C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY vtc_S19065C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19065C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
VTBL_ENTRY *P__ZTI11S19065C4_nt = _ZTI11S19065C4_nt; 
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
Class_Descriptor cd_S19065C4_nt = {  "S19065C4_nt", // class name
  0,0,//no base classes
  &(vtc_S19065C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S19065C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19065C4_nt),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19065C3  : S19065C4_nt {
  virtual void  v10(); // _ZN8S19065C33v10Ev
  virtual void  v11(); // _ZN8S19065C33v11Ev
  ~S19065C3(); // tgen
  S19065C3(); // tgen
};
//SIG(-1 S19065C3) C1{ BC2{ v3 v4 v5 v6 v7 Fi} v1 v2}


void  S19065C3 ::v10(){vfunc_called(this, "_ZN8S19065C33v10Ev");}
void  S19065C3 ::v11(){vfunc_called(this, "_ZN8S19065C33v11Ev");}
S19065C3 ::~S19065C3(){ note_dtor("S19065C3", this);} // tgen
S19065C3 ::S19065C3(){ note_ctor("S19065C3", this);} // tgen

static void Test_S19065C3()
{
  extern Class_Descriptor cd_S19065C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19065C3, buf);
    S19065C3 *dp, &lv = *(dp=new (buf) S19065C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19065C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19065C3)");
    check_base_class_offset(lv, (S19065C4_nt*), 0, "S19065C3");
    test_class_info(&lv, &cd_S19065C3);
    dp->~S19065C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19065C3(Test_S19065C3, "S19065C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19065C3C1Ev();
extern void _ZN8S19065C3D1Ev();
Name_Map name_map_S19065C3[] = {
  NSPAIR(_ZN8S19065C3C1Ev),
  NSPAIR(_ZN8S19065C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
static Base_Class bases_S19065C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19065C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19065C3[];
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY vtc_S19065C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C3[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern VTBL_ENTRY _ZTI8S19065C3[];
extern  VTBL_ENTRY _ZTV8S19065C3[];
Class_Descriptor cd_S19065C3 = {  "S19065C3", // class name
  bases_S19065C3, 1,
  &(vtc_S19065C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19065C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19065C3),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19065C2  : S19065C3 {
  virtual void  v12(); // _ZN8S19065C23v12Ev
  virtual void  v13(); // _ZN8S19065C23v13Ev
  ~S19065C2(); // tgen
  S19065C2(); // tgen
};
//SIG(-1 S19065C2) C1{ BC2{ BC3{ v3 v4 v5 v6 v7 Fi} v8 v9} v1 v2}


void  S19065C2 ::v12(){vfunc_called(this, "_ZN8S19065C23v12Ev");}
void  S19065C2 ::v13(){vfunc_called(this, "_ZN8S19065C23v13Ev");}
S19065C2 ::~S19065C2(){ note_dtor("S19065C2", this);} // tgen
S19065C2 ::S19065C2(){ note_ctor("S19065C2", this);} // tgen

static void Test_S19065C2()
{
  extern Class_Descriptor cd_S19065C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19065C2, buf);
    S19065C2 *dp, &lv = *(dp=new (buf) S19065C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19065C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19065C2)");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C3*), 0, "S19065C2");
    check_base_class_offset(lv, (S19065C3*), 0, "S19065C2");
    test_class_info(&lv, &cd_S19065C2);
    dp->~S19065C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19065C2(Test_S19065C2, "S19065C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19065C2C1Ev();
extern void _ZN8S19065C2D1Ev();
Name_Map name_map_S19065C2[] = {
  NSPAIR(_ZN8S19065C2C1Ev),
  NSPAIR(_ZN8S19065C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C3;
extern VTBL_ENTRY _ZTI8S19065C3[];
extern  VTBL_ENTRY _ZTV8S19065C3[];
static Base_Class bases_S19065C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19065C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19065C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19065C2[];
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
extern void _ZN8S19065C23v12Ev();
extern void _ZN8S19065C23v13Ev();
static  VTBL_ENTRY vtc_S19065C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C2[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19065C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19065C23v13Ev,
};
extern VTBL_ENTRY _ZTI8S19065C2[];
extern  VTBL_ENTRY _ZTV8S19065C2[];
Class_Descriptor cd_S19065C2 = {  "S19065C2", // class name
  bases_S19065C2, 2,
  &(vtc_S19065C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19065C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19065C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19065C7  {
  long double s19065c7f0;
  int s19065c7f1;
  virtual void  v14(); // _ZN8S19065C73v14Ev
  virtual void  v15(); // _ZN8S19065C73v15Ev
  ~S19065C7(); // tgen
  S19065C7(); // tgen
};
//SIG(-1 S19065C7) C1{ v1 v2 FD Fi}


void  S19065C7 ::v14(){vfunc_called(this, "_ZN8S19065C73v14Ev");}
void  S19065C7 ::v15(){vfunc_called(this, "_ZN8S19065C73v15Ev");}
S19065C7 ::~S19065C7(){ note_dtor("S19065C7", this);} // tgen
S19065C7 ::S19065C7(){ note_ctor("S19065C7", this);} // tgen

static void Test_S19065C7()
{
  extern Class_Descriptor cd_S19065C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19065C7, buf);
    S19065C7 *dp, &lv = *(dp=new (buf) S19065C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S19065C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19065C7)");
    check_field_offset(lv, s19065c7f0, ABISELECT(16,4), "S19065C7.s19065c7f0");
    check_field_offset(lv, s19065c7f1, ABISELECT(32,16), "S19065C7.s19065c7f1");
    test_class_info(&lv, &cd_S19065C7);
    dp->~S19065C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19065C7(Test_S19065C7, "S19065C7", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S19065C7C1Ev();
extern void _ZN8S19065C7D1Ev();
Name_Map name_map_S19065C7[] = {
  NSPAIR(_ZN8S19065C7C1Ev),
  NSPAIR(_ZN8S19065C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19065C7[];
extern void _ZN8S19065C73v14Ev();
extern void _ZN8S19065C73v15Ev();
static  VTBL_ENTRY vtc_S19065C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C7[0]),
  (VTBL_ENTRY)&_ZN8S19065C73v14Ev,
  (VTBL_ENTRY)&_ZN8S19065C73v15Ev,
};
extern VTBL_ENTRY _ZTI8S19065C7[];
extern  VTBL_ENTRY _ZTV8S19065C7[];
Class_Descriptor cd_S19065C7 = {  "S19065C7", // class name
  0,0,//no base classes
  &(vtc_S19065C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S19065C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19065C7),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  S19065C11  : virtual S19065C4_nt , virtual S19065C3 {
  void *s19065c11f0;
  virtual void  v16(); // _ZN9S19065C113v16Ev
  virtual void  v17(); // _ZN9S19065C113v17Ev
  virtual void  v18(); // _ZN9S19065C113v18Ev
  ~S19065C11(); // tgen
  S19065C11(); // tgen
};
//SIG(-1 S19065C11) C1{ VBC2{ v4 v5 v6 v7 v8 Fi} VBC3{ BC2 v9 v10} v1 v2 v3 Fp}


void  S19065C11 ::v16(){vfunc_called(this, "_ZN9S19065C113v16Ev");}
void  S19065C11 ::v17(){vfunc_called(this, "_ZN9S19065C113v17Ev");}
void  S19065C11 ::v18(){vfunc_called(this, "_ZN9S19065C113v18Ev");}
S19065C11 ::~S19065C11(){ note_dtor("S19065C11", this);} // tgen
S19065C11 ::S19065C11(){ note_ctor("S19065C11", this);} // tgen

static void Test_S19065C11()
{
  extern Class_Descriptor cd_S19065C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S19065C11, buf);
    S19065C11 *dp, &lv = *(dp=new (buf) S19065C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19065C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19065C11)");
    /*is_ambiguous_... S19065C11::S19065C4_nt */ AMB_check_base_class_offset(lv, (S19065C4_nt*), ABISELECT(16,8), "S19065C11");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C3*), ABISELECT(32,16), "S19065C11");
    check_base_class_offset(lv, (S19065C3*), ABISELECT(32,16), "S19065C11");
    check_field_offset(lv, s19065c11f0, ABISELECT(8,4), "S19065C11.s19065c11f0");
    test_class_info(&lv, &cd_S19065C11);
    dp->~S19065C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19065C11(Test_S19065C11, "S19065C11", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S19065C11C1Ev();
extern void _ZN9S19065C11D1Ev();
Name_Map name_map_S19065C11[] = {
  NSPAIR(_ZN9S19065C11C1Ev),
  NSPAIR(_ZN9S19065C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C3;
extern VTBL_ENTRY _ZTI8S19065C3[];
extern  VTBL_ENTRY _ZTV8S19065C3[];
static Base_Class bases_S19065C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19065C4_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19065C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19065C3,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19065C11[];
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY vtc_S19065C11[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern VTBL_ENTRY _ZTV9S19065C11[];
static  VTT_ENTRY vtt_S19065C11[] = {
  {&(_ZTV9S19065C11[4]),  4,35},
  {&(_ZTV9S19065C11[14]),  14,35},
  {&(_ZTV9S19065C11[28]),  28,35},
};
extern VTBL_ENTRY _ZTI9S19065C11[];
extern  VTBL_ENTRY _ZTV9S19065C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C11[];
Class_Descriptor cd_S19065C11 = {  "S19065C11", // class name
  bases_S19065C11, 3,
  &(vtc_S19065C11[0]), // expected_vtbl_contents
  &(vtt_S19065C11[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S19065C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19065C11),35, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19065C11),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19065C12  : S19065C4_nt {
  long double s19065c12f0;
  void *s19065c12f1[7];
  virtual void  v19(); // _ZN9S19065C123v19Ev
  virtual void  v20(); // _ZN9S19065C123v20Ev
  virtual void  v21(); // _ZN9S19065C123v21Ev
  virtual void  v22(); // _ZN9S19065C123v22Ev
  virtual void  v23(); // _ZN9S19065C123v23Ev
  virtual void  v24(); // _ZN9S19065C123v24Ev
  ~S19065C12(); // tgen
  S19065C12(); // tgen
};
//SIG(-1 S19065C12) C1{ BC2{ v7 v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 FD Fp[7]}


void  S19065C12 ::v19(){vfunc_called(this, "_ZN9S19065C123v19Ev");}
void  S19065C12 ::v20(){vfunc_called(this, "_ZN9S19065C123v20Ev");}
void  S19065C12 ::v21(){vfunc_called(this, "_ZN9S19065C123v21Ev");}
void  S19065C12 ::v22(){vfunc_called(this, "_ZN9S19065C123v22Ev");}
void  S19065C12 ::v23(){vfunc_called(this, "_ZN9S19065C123v23Ev");}
void  S19065C12 ::v24(){vfunc_called(this, "_ZN9S19065C123v24Ev");}
S19065C12 ::~S19065C12(){ note_dtor("S19065C12", this);} // tgen
S19065C12 ::S19065C12(){ note_ctor("S19065C12", this);} // tgen

static void Test_S19065C12()
{
  extern Class_Descriptor cd_S19065C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S19065C12, buf);
    S19065C12 *dp, &lv = *(dp=new (buf) S19065C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S19065C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19065C12)");
    check_base_class_offset(lv, (S19065C4_nt*), 0, "S19065C12");
    check_field_offset(lv, s19065c12f0, ABISELECT(16,8), "S19065C12.s19065c12f0");
    check_field_offset(lv, s19065c12f1, ABISELECT(32,20), "S19065C12.s19065c12f1");
    test_class_info(&lv, &cd_S19065C12);
    dp->~S19065C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19065C12(Test_S19065C12, "S19065C12", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN9S19065C12C1Ev();
extern void _ZN9S19065C12D1Ev();
Name_Map name_map_S19065C12[] = {
  NSPAIR(_ZN9S19065C12C1Ev),
  NSPAIR(_ZN9S19065C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
static Base_Class bases_S19065C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19065C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19065C12[];
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN9S19065C123v19Ev();
extern void _ZN9S19065C123v20Ev();
extern void _ZN9S19065C123v21Ev();
extern void _ZN9S19065C123v22Ev();
extern void _ZN9S19065C123v23Ev();
extern void _ZN9S19065C123v24Ev();
static  VTBL_ENTRY vtc_S19065C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C12[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v19Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v20Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v22Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v23Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v24Ev,
};
extern VTBL_ENTRY _ZTI9S19065C12[];
extern  VTBL_ENTRY _ZTV9S19065C12[];
Class_Descriptor cd_S19065C12 = {  "S19065C12", // class name
  bases_S19065C12, 1,
  &(vtc_S19065C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI9S19065C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19065C12),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19065C10  : S19065C11 , S19065C12 {
  void *s19065c10f0;
  char s19065c10f1;
  virtual void  v25(); // _ZN9S19065C103v25Ev
  virtual void  v26(); // _ZN9S19065C103v26Ev
  virtual void  v27(); // _ZN9S19065C103v27Ev
  virtual void  v28(); // _ZN9S19065C103v28Ev
  ~S19065C10(); // tgen
  S19065C10(); // tgen
};
//SIG(-1 S19065C10) C1{ BC2{ VBC3{ v5 v6 v7 v8 v9 Fi} VBC4{ BC3 v10 v11} v12 v13 v14 Fp} BC5{ BC3 v15 v16 v17 v18 v19 v20 FD Fp[7]} v1 v2 v3 v4 Fp Fc}


void  S19065C10 ::v25(){vfunc_called(this, "_ZN9S19065C103v25Ev");}
void  S19065C10 ::v26(){vfunc_called(this, "_ZN9S19065C103v26Ev");}
void  S19065C10 ::v27(){vfunc_called(this, "_ZN9S19065C103v27Ev");}
void  S19065C10 ::v28(){vfunc_called(this, "_ZN9S19065C103v28Ev");}
S19065C10 ::~S19065C10(){ note_dtor("S19065C10", this);} // tgen
S19065C10 ::S19065C10(){ note_ctor("S19065C10", this);} // tgen

static void Test_S19065C10()
{
  extern Class_Descriptor cd_S19065C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,21)];
    init_test(&cd_S19065C10, buf);
    S19065C10 *dp, &lv = *(dp=new (buf) S19065C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S19065C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19065C10)");
    /*is_ambiguous_... S19065C11::S19065C4_nt */ AMB_check_base_class_offset(lv, (S19065C4_nt*)(S19065C11*), ABISELECT(120,64), "S19065C10");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C3*), ABISELECT(136,72), "S19065C10");
    check_base_class_offset(lv, (S19065C3*)(S19065C11*), ABISELECT(136,72), "S19065C10");
    check_base_class_offset(lv, (S19065C11*), 0, "S19065C10");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C12*), ABISELECT(16,8), "S19065C10");
    check_base_class_offset(lv, (S19065C12*), ABISELECT(16,8), "S19065C10");
    check_field_offset(lv, s19065c10f0, ABISELECT(104,56), "S19065C10.s19065c10f0");
    check_field_offset(lv, s19065c10f1, ABISELECT(112,60), "S19065C10.s19065c10f1");
    test_class_info(&lv, &cd_S19065C10);
    dp->~S19065C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19065C10(Test_S19065C10, "S19065C10", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN9S19065C10C1Ev();
extern void _ZN9S19065C10D1Ev();
Name_Map name_map_S19065C10[] = {
  NSPAIR(_ZN9S19065C10C1Ev),
  NSPAIR(_ZN9S19065C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C3;
extern VTBL_ENTRY _ZTI8S19065C3[];
extern  VTBL_ENTRY _ZTV8S19065C3[];
extern Class_Descriptor cd_S19065C11;
extern VTBL_ENTRY _ZTI9S19065C11[];
extern  VTBL_ENTRY _ZTV9S19065C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C11[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C12;
extern VTBL_ENTRY _ZTI9S19065C12[];
extern  VTBL_ENTRY _ZTV9S19065C12[];
static Base_Class bases_S19065C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19065C4_nt,    ABISELECT(120,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19065C4_nt,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19065C3,    ABISELECT(136,72), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19065C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19065C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19065C12,    ABISELECT(16,8), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19065C10[];
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN9S19065C123v19Ev();
extern void _ZN9S19065C123v20Ev();
extern void _ZN9S19065C123v21Ev();
extern void _ZN9S19065C123v22Ev();
extern void _ZN9S19065C123v23Ev();
extern void _ZN9S19065C123v24Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY vtc_S19065C10[] = {
  ABISELECT(136,72),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v19Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v20Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v22Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v23Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v24Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern VTBL_ENTRY _ZTV9S19065C10[];
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C11__9S19065C10[] = {
  ABISELECT(136,72),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__9S19065C11__9S19065C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__9S19065C11__9S19065C10[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
static  VTT_ENTRY vtt_S19065C10[] = {
  {&(_ZTV9S19065C10[4]),  4,52},
  {&(_tg__ZTV9S19065C11__9S19065C10[4]),  4,7},
  {&(_tg__ZTV11S19065C4_nt__9S19065C11__9S19065C10[7]),  7,12},
  {&(_tg__ZTV8S19065C3__9S19065C11__9S19065C10[9]),  9,16},
  {&(_ZTV9S19065C10[31]),  31,52},
  {&(_ZTV9S19065C10[45]),  45,52},
};
extern VTBL_ENTRY _ZTI9S19065C10[];
extern  VTBL_ENTRY _ZTV9S19065C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C10[];
Class_Descriptor cd_S19065C10 = {  "S19065C10", // class name
  bases_S19065C10, 6,
  &(vtc_S19065C10[0]), // expected_vtbl_contents
  &(vtt_S19065C10[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI9S19065C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19065C10),52, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19065C10),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19065C9  : virtual S19065C3 , S19065C10 {
  void *s19065c9f0[6];
  virtual  ~S19065C9(); // _ZN8S19065C9D2Ev
  virtual void  v29(); // _ZN8S19065C93v29Ev
  virtual void  v30(); // _ZN8S19065C93v30Ev
  virtual void  v31(); // _ZN8S19065C93v31Ev
  virtual void  v32(); // _ZN8S19065C93v32Ev
  virtual void  v33(); // _ZN8S19065C93v33Ev
  S19065C9(); // tgen
};
//SIG(-1 S19065C9) C1{ VBC2{ BC3{ v6 v7 v8 v9 v10 Fi} v11 v12} BC4{ BC5{ VBC3 VBC2 v13 v14 v15 Fp} BC6{ BC3 v16 v17 v18 v19 v20 v21 FD Fp[7]} v22 v23 v24 v25 Fp Fc} vd v1 v2 v3 v4 v5 Fp[6]}


 S19065C9 ::~S19065C9(){ note_dtor("S19065C9", this);}
void  S19065C9 ::v29(){vfunc_called(this, "_ZN8S19065C93v29Ev");}
void  S19065C9 ::v30(){vfunc_called(this, "_ZN8S19065C93v30Ev");}
void  S19065C9 ::v31(){vfunc_called(this, "_ZN8S19065C93v31Ev");}
void  S19065C9 ::v32(){vfunc_called(this, "_ZN8S19065C93v32Ev");}
void  S19065C9 ::v33(){vfunc_called(this, "_ZN8S19065C93v33Ev");}
S19065C9 ::S19065C9(){ note_ctor("S19065C9", this);} // tgen

static void Test_S19065C9()
{
  extern Class_Descriptor cd_S19065C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,27)];
    init_test(&cd_S19065C9, buf);
    S19065C9 *dp, &lv = *(dp=new (buf) S19065C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,104), "sizeof(S19065C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19065C9)");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C3*), ABISELECT(168,88), "S19065C9");
    check_base_class_offset(lv, (S19065C3*), ABISELECT(168,88), "S19065C9");
    check_base_class_offset(lv, (S19065C3*)(S19065C11*)(S19065C10*), ABISELECT(168,88), "S19065C9");
    /*is_ambiguous_... S19065C11::S19065C4_nt */ AMB_check_base_class_offset(lv, (S19065C4_nt*)(S19065C11*)(S19065C10*), ABISELECT(184,96), "S19065C9");
    check_base_class_offset(lv, (S19065C11*)(S19065C10*), 0, "S19065C9");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C12*)(S19065C10*), ABISELECT(16,8), "S19065C9");
    check_base_class_offset(lv, (S19065C12*)(S19065C10*), ABISELECT(16,8), "S19065C9");
    check_base_class_offset(lv, (S19065C10*), 0, "S19065C9");
    check_field_offset(lv, s19065c9f0, ABISELECT(120,64), "S19065C9.s19065c9f0");
    test_class_info(&lv, &cd_S19065C9);
    dp->~S19065C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19065C9(Test_S19065C9, "S19065C9", ABISELECT(208,104));

#else // __cplusplus

extern void _ZN8S19065C9C1Ev();
extern void _ZN8S19065C9D2Ev();
Name_Map name_map_S19065C9[] = {
  NSPAIR(_ZN8S19065C9C1Ev),
  NSPAIR(_ZN8S19065C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C3;
extern VTBL_ENTRY _ZTI8S19065C3[];
extern  VTBL_ENTRY _ZTV8S19065C3[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C11;
extern VTBL_ENTRY _ZTI9S19065C11[];
extern  VTBL_ENTRY _ZTV9S19065C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C11[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C12;
extern VTBL_ENTRY _ZTI9S19065C12[];
extern  VTBL_ENTRY _ZTV9S19065C12[];
extern Class_Descriptor cd_S19065C10;
extern VTBL_ENTRY _ZTI9S19065C10[];
extern  VTBL_ENTRY _ZTV9S19065C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C10[];
static Base_Class bases_S19065C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19065C4_nt,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19065C3,    ABISELECT(168,88), //bcp->offset
    31, //bcp->virtual_function_table_offset
    9, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19065C4_nt,    ABISELECT(184,96), //bcp->offset
    47, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19065C11,    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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19065C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19065C12,    ABISELECT(16,8), //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
    6, //immediately_derived
  0, 0},
  {&cd_S19065C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19065C9[];
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void _ZN8S19065C9D1Ev();
extern void _ZN8S19065C9D0Ev();
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN9S19065C123v19Ev();
extern void _ZN9S19065C123v20Ev();
extern void _ZN9S19065C123v21Ev();
extern void _ZN9S19065C123v22Ev();
extern void _ZN9S19065C123v23Ev();
extern void _ZN9S19065C123v24Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY vtc_S19065C9[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&_ZN8S19065C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v19Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v20Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v22Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v23Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern VTBL_ENTRY _ZTV8S19065C9[];
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C10__8S19065C9[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C119S19065C10__8S19065C9[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__9S19065C119S19065C10__8S19065C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__9S19065C119S19065C10__8S19065C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__9S19065C10__8S19065C9[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__9S19065C10__8S19065C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
static  VTT_ENTRY vtt_S19065C9[] = {
  {&(_ZTV8S19065C9[4]),  4,59},
  {&(_tg__ZTV9S19065C10__8S19065C9[4]),  4,11},
  {&(_tg__ZTV9S19065C119S19065C10__8S19065C9[4]),  4,7},
  {&(_tg__ZTV11S19065C4_nt__9S19065C119S19065C10__8S19065C9[7]),  7,12},
  {&(_tg__ZTV8S19065C3__9S19065C119S19065C10__8S19065C9[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__9S19065C10__8S19065C9[7]),  7,12},
  {&(_tg__ZTV8S19065C3__9S19065C10__8S19065C9[9]),  9,16},
  {&(_ZTV8S19065C9[40]),  40,59},
  {&(_ZTV8S19065C9[54]),  54,59},
};
extern VTBL_ENTRY _ZTI8S19065C9[];
extern  VTBL_ENTRY _ZTV8S19065C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C9[];
Class_Descriptor cd_S19065C9 = {  "S19065C9", // class name
  bases_S19065C9, 7,
  &(vtc_S19065C9[0]), // expected_vtbl_contents
  &(vtt_S19065C9[0]), // expected_vtt_contents
  ABISELECT(208,104), // object size
  NSPAIRA(_ZTI8S19065C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19065C9),59, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19065C9),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19065C8  : S19065C9 {
  virtual  ~S19065C8(); // _ZN8S19065C8D2Ev
  virtual void  v34(); // _ZN8S19065C83v34Ev
  virtual void  v35(); // _ZN8S19065C83v35Ev
  S19065C8(); // tgen
};
//SIG(-1 S19065C8) C1{ BC2{ VBC3{ BC4{ v3 v4 v5 v6 v7 Fi} v8 v9} BC5{ BC6{ VBC4 VBC3 v10 v11 v12 Fp} BC7{ BC4 v13 v14 v15 v16 v17 v18 FD Fp[7]} v19 v20 v21 v22 Fp Fc} vd v23 v24 v25 v26 v27 Fp[6]} vd v1 v2}


 S19065C8 ::~S19065C8(){ note_dtor("S19065C8", this);}
void  S19065C8 ::v34(){vfunc_called(this, "_ZN8S19065C83v34Ev");}
void  S19065C8 ::v35(){vfunc_called(this, "_ZN8S19065C83v35Ev");}
S19065C8 ::S19065C8(){ note_ctor("S19065C8", this);} // tgen

static void Test_S19065C8()
{
  extern Class_Descriptor cd_S19065C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,27)];
    init_test(&cd_S19065C8, buf);
    S19065C8 *dp, &lv = *(dp=new (buf) S19065C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,104), "sizeof(S19065C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19065C8)");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C3*), ABISELECT(168,88), "S19065C8");
    check_base_class_offset(lv, (S19065C3*)(S19065C9*), ABISELECT(168,88), "S19065C8");
    check_base_class_offset(lv, (S19065C3*)(S19065C11*)(S19065C10*)(S19065C9*), ABISELECT(168,88), "S19065C8");
    /*is_ambiguous_... S19065C11::S19065C4_nt */ AMB_check_base_class_offset(lv, (S19065C4_nt*)(S19065C11*)(S19065C10*)(S19065C9*), ABISELECT(184,96), "S19065C8");
    check_base_class_offset(lv, (S19065C11*)(S19065C10*)(S19065C9*), 0, "S19065C8");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C12*)(S19065C10*)(S19065C9*), ABISELECT(16,8), "S19065C8");
    check_base_class_offset(lv, (S19065C12*)(S19065C10*)(S19065C9*), ABISELECT(16,8), "S19065C8");
    check_base_class_offset(lv, (S19065C10*)(S19065C9*), 0, "S19065C8");
    check_base_class_offset(lv, (S19065C9*), 0, "S19065C8");
    test_class_info(&lv, &cd_S19065C8);
    dp->~S19065C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19065C8(Test_S19065C8, "S19065C8", ABISELECT(208,104));

#else // __cplusplus

extern void _ZN8S19065C8C1Ev();
extern void _ZN8S19065C8D2Ev();
Name_Map name_map_S19065C8[] = {
  NSPAIR(_ZN8S19065C8C1Ev),
  NSPAIR(_ZN8S19065C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C3;
extern VTBL_ENTRY _ZTI8S19065C3[];
extern  VTBL_ENTRY _ZTV8S19065C3[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C11;
extern VTBL_ENTRY _ZTI9S19065C11[];
extern  VTBL_ENTRY _ZTV9S19065C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C11[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C12;
extern VTBL_ENTRY _ZTI9S19065C12[];
extern  VTBL_ENTRY _ZTV9S19065C12[];
extern Class_Descriptor cd_S19065C10;
extern VTBL_ENTRY _ZTI9S19065C10[];
extern  VTBL_ENTRY _ZTV9S19065C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C10[];
extern Class_Descriptor cd_S19065C9;
extern VTBL_ENTRY _ZTI8S19065C9[];
extern  VTBL_ENTRY _ZTV8S19065C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C9[];
static Base_Class bases_S19065C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19065C4_nt,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19065C3,    ABISELECT(168,88), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19065C4_nt,    ABISELECT(184,96), //bcp->offset
    49, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19065C11,    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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19065C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19065C12,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19065C10,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19065C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19065C8[];
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void _ZN8S19065C8D1Ev();
extern void _ZN8S19065C8D0Ev();
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
extern void _ZN8S19065C83v34Ev();
extern void _ZN8S19065C83v35Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN9S19065C123v19Ev();
extern void _ZN9S19065C123v20Ev();
extern void _ZN9S19065C123v21Ev();
extern void _ZN9S19065C123v22Ev();
extern void _ZN9S19065C123v23Ev();
extern void _ZN9S19065C123v24Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY vtc_S19065C8[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&_ZN8S19065C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v34Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v35Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v19Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v20Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v22Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v23Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern VTBL_ENTRY _ZTV8S19065C8[];
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void _ZN8S19065C9D1Ev();
extern void _ZN8S19065C9D0Ev();
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C9__8S19065C8[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&_ZN8S19065C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C108S19065C9__8S19065C8[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C119S19065C108S19065C9__8S19065C8[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__9S19065C119S19065C108S19065C9__8S19065C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__9S19065C119S19065C108S19065C9__8S19065C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__9S19065C108S19065C9__8S19065C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__9S19065C108S19065C9__8S19065C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__8S19065C9__8S19065C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__A1__8S19065C9__8S19065C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
static  VTT_ENTRY vtt_S19065C8[] = {
  {&(_ZTV8S19065C8[4]),  4,61},
  {&(_tg__ZTV8S19065C9__8S19065C8[4]),  4,18},
  {&(_tg__ZTV9S19065C108S19065C9__8S19065C8[4]),  4,11},
  {&(_tg__ZTV9S19065C119S19065C108S19065C9__8S19065C8[4]),  4,7},
  {&(_tg__ZTV11S19065C4_nt__9S19065C119S19065C108S19065C9__8S19065C8[7]),  7,12},
  {&(_tg__ZTV8S19065C3__9S19065C119S19065C108S19065C9__8S19065C8[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__9S19065C108S19065C9__8S19065C8[7]),  7,12},
  {&(_tg__ZTV8S19065C3__9S19065C108S19065C9__8S19065C8[9]),  9,16},
  {&(_tg__ZTV8S19065C3__8S19065C9__8S19065C8[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__A1__8S19065C9__8S19065C8[7]),  7,12},
  {&(_ZTV8S19065C8[42]),  42,61},
  {&(_ZTV8S19065C8[56]),  56,61},
};
extern VTBL_ENTRY _ZTI8S19065C8[];
extern  VTBL_ENTRY _ZTV8S19065C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C8[];
Class_Descriptor cd_S19065C8 = {  "S19065C8", // class name
  bases_S19065C8, 8,
  &(vtc_S19065C8[0]), // expected_vtbl_contents
  &(vtt_S19065C8[0]), // expected_vtt_contents
  ABISELECT(208,104), // object size
  NSPAIRA(_ZTI8S19065C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19065C8),61, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19065C8),12, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19065C6  : S19065C7 , virtual S19065C8 {
  virtual  ~S19065C6(); // _ZN8S19065C6D2Ev
  virtual void  v36(); // _ZN8S19065C63v36Ev
  virtual void  v37(); // _ZN8S19065C63v37Ev
  virtual void  v38(); // _ZN8S19065C63v38Ev
  virtual void  v39(); // _ZN8S19065C63v39Ev
  virtual void  v40(); // _ZN8S19065C63v40Ev
  virtual void  v41(); // _ZN8S19065C63v41Ev
  S19065C6(); // tgen
};
//SIG(-1 S19065C6) C1{ BC2{ v7 v8 FD Fi} VBC3{ BC4{ VBC5{ BC6{ v9 v10 v11 v12 v13 Fi} v14 v15} BC7{ BC8{ VBC6 VBC5 v16 v17 v18 Fp} BC9{ BC6 v19 v20 v21 v22 v23 v24 FD Fp[7]} v25 v26 v27 v28 Fp Fc} vd v29 v30 v31 v32 v33 Fp[6]} vd v34 v35} vd v1 v2 v3 v4 v5 v6}


 S19065C6 ::~S19065C6(){ note_dtor("S19065C6", this);}
void  S19065C6 ::v36(){vfunc_called(this, "_ZN8S19065C63v36Ev");}
void  S19065C6 ::v37(){vfunc_called(this, "_ZN8S19065C63v37Ev");}
void  S19065C6 ::v38(){vfunc_called(this, "_ZN8S19065C63v38Ev");}
void  S19065C6 ::v39(){vfunc_called(this, "_ZN8S19065C63v39Ev");}
void  S19065C6 ::v40(){vfunc_called(this, "_ZN8S19065C63v40Ev");}
void  S19065C6 ::v41(){vfunc_called(this, "_ZN8S19065C63v41Ev");}
S19065C6 ::S19065C6(){ note_ctor("S19065C6", this);} // tgen

static void Test_S19065C6()
{
  extern Class_Descriptor cd_S19065C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,32)];
    init_test(&cd_S19065C6, buf);
    S19065C6 *dp, &lv = *(dp=new (buf) S19065C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,124), "sizeof(S19065C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19065C6)");
    check_base_class_offset(lv, (S19065C7*), 0, "S19065C6");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C3*), ABISELECT(216,108), "S19065C6");
    check_base_class_offset(lv, (S19065C3*)(S19065C9*)(S19065C8*), ABISELECT(216,108), "S19065C6");
    check_base_class_offset(lv, (S19065C3*)(S19065C11*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(216,108), "S19065C6");
    /*is_ambiguous_... S19065C11::S19065C4_nt */ AMB_check_base_class_offset(lv, (S19065C4_nt*)(S19065C11*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(232,116), "S19065C6");
    check_base_class_offset(lv, (S19065C11*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(48,20), "S19065C6");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C12*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(64,28), "S19065C6");
    check_base_class_offset(lv, (S19065C12*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(64,28), "S19065C6");
    check_base_class_offset(lv, (S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(48,20), "S19065C6");
    check_base_class_offset(lv, (S19065C9*)(S19065C8*), ABISELECT(48,20), "S19065C6");
    check_base_class_offset(lv, (S19065C8*), ABISELECT(48,20), "S19065C6");
    test_class_info(&lv, &cd_S19065C6);
    dp->~S19065C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19065C6(Test_S19065C6, "S19065C6", ABISELECT(256,124));

#else // __cplusplus

extern void _ZN8S19065C6C1Ev();
extern void _ZN8S19065C6D2Ev();
Name_Map name_map_S19065C6[] = {
  NSPAIR(_ZN8S19065C6C1Ev),
  NSPAIR(_ZN8S19065C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19065C7;
extern VTBL_ENTRY _ZTI8S19065C7[];
extern  VTBL_ENTRY _ZTV8S19065C7[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C3;
extern VTBL_ENTRY _ZTI8S19065C3[];
extern  VTBL_ENTRY _ZTV8S19065C3[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C11;
extern VTBL_ENTRY _ZTI9S19065C11[];
extern  VTBL_ENTRY _ZTV9S19065C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C11[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C12;
extern VTBL_ENTRY _ZTI9S19065C12[];
extern  VTBL_ENTRY _ZTV9S19065C12[];
extern Class_Descriptor cd_S19065C10;
extern VTBL_ENTRY _ZTI9S19065C10[];
extern  VTBL_ENTRY _ZTV9S19065C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C10[];
extern Class_Descriptor cd_S19065C9;
extern VTBL_ENTRY _ZTI8S19065C9[];
extern  VTBL_ENTRY _ZTV8S19065C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C9[];
extern Class_Descriptor cd_S19065C8;
extern VTBL_ENTRY _ZTI8S19065C8[];
extern  VTBL_ENTRY _ZTV8S19065C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C8[];
static Base_Class bases_S19065C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19065C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19065C4_nt,    ABISELECT(216,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19065C3,    ABISELECT(216,108), //bcp->offset
    74, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19065C4_nt,    ABISELECT(232,116), //bcp->offset
    90, //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
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19065C11,    ABISELECT(48,20), //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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19065C4_nt,    ABISELECT(64,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19065C12,    ABISELECT(64,28), //bcp->offset
    61, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19065C10,    ABISELECT(48,20), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19065C9,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19065C8,    ABISELECT(48,20), //bcp->offset
    15, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19065C6[];
extern void _ZN8S19065C73v14Ev();
extern void _ZN8S19065C73v15Ev();
extern void _ZN8S19065C6D1Ev();
extern void _ZN8S19065C6D0Ev();
extern void _ZN8S19065C63v36Ev();
extern void _ZN8S19065C63v37Ev();
extern void _ZN8S19065C63v38Ev();
extern void _ZN8S19065C63v39Ev();
extern void _ZN8S19065C63v40Ev();
extern void _ZN8S19065C63v41Ev();
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void ABISELECT(_ZTv0_n184_N8S19065C6D1Ev,_ZTv0_n92_N8S19065C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S19065C6D1Ev,_ZThn20_N8S19065C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N8S19065C6D0Ev,_ZTv0_n92_N8S19065C6D0Ev)();
extern void ABISELECT(_ZThn48_N8S19065C6D0Ev,_ZThn20_N8S19065C6D0Ev)() __attribute__((weak));
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
extern void _ZN8S19065C83v34Ev();
extern void _ZN8S19065C83v35Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN9S19065C123v19Ev();
extern void _ZN9S19065C123v20Ev();
extern void _ZN9S19065C123v21Ev();
extern void _ZN9S19065C123v22Ev();
extern void _ZN9S19065C123v23Ev();
extern void _ZN9S19065C123v24Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY vtc_S19065C6[] = {
  ABISELECT(232,116),
  ABISELECT(216,108),
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN8S19065C73v14Ev,
  (VTBL_ENTRY)&_ZN8S19065C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19065C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v36Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v37Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v38Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v39Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v40Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v41Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(184,96),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C6D1Ev,_ZTv0_n92_N8S19065C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C6D0Ev,_ZTv0_n92_N8S19065C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v34Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v35Ev,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v19Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v20Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v22Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v23Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern VTBL_ENTRY _ZTV8S19065C6[];
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void _ZN8S19065C8D1Ev();
extern void _ZN8S19065C8D0Ev();
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
extern void _ZN8S19065C83v34Ev();
extern void _ZN8S19065C83v35Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C8__8S19065C6[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&_ZN8S19065C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v34Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v35Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void _ZN8S19065C9D1Ev();
extern void _ZN8S19065C9D0Ev();
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C98S19065C8__8S19065C6[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&_ZN8S19065C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C108S19065C98S19065C8__8S19065C6[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C119S19065C108S19065C98S19065C8__8S19065C6[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__9S19065C119S19065C108S19065C98S19065C8__8S19065C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__9S19065C119S19065C108S19065C98S19065C8__8S19065C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__9S19065C108S19065C98S19065C8__8S19065C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__9S19065C108S19065C98S19065C8__8S19065C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__8S19065C98S19065C8__8S19065C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__A1__8S19065C98S19065C8__8S19065C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__8S19065C8__8S19065C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__A1__8S19065C8__8S19065C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
static  VTT_ENTRY vtt_S19065C6[] = {
  {&(_ZTV8S19065C6[5]),  5,102},
  {&(_ZTV8S19065C6[45]),  45,102},
  {&(_ZTV8S19065C6[83]),  83,102},
  {&(_ZTV8S19065C6[97]),  97,102},
  {&(_ZTV8S19065C6[63]),  63,102},
  {&(_tg__ZTV8S19065C8__8S19065C6[4]),  4,20},
  {&(_tg__ZTV8S19065C98S19065C8__8S19065C6[4]),  4,18},
  {&(_tg__ZTV9S19065C108S19065C98S19065C8__8S19065C6[4]),  4,11},
  {&(_tg__ZTV9S19065C119S19065C108S19065C98S19065C8__8S19065C6[4]),  4,7},
  {&(_tg__ZTV11S19065C4_nt__9S19065C119S19065C108S19065C98S19065C8__8S19065C6[7]),  7,12},
  {&(_tg__ZTV8S19065C3__9S19065C119S19065C108S19065C98S19065C8__8S19065C6[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__9S19065C108S19065C98S19065C8__8S19065C6[7]),  7,12},
  {&(_tg__ZTV8S19065C3__9S19065C108S19065C98S19065C8__8S19065C6[9]),  9,16},
  {&(_tg__ZTV8S19065C3__8S19065C98S19065C8__8S19065C6[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__A1__8S19065C98S19065C8__8S19065C6[7]),  7,12},
  {&(_tg__ZTV8S19065C3__8S19065C8__8S19065C6[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__A1__8S19065C8__8S19065C6[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19065C6[];
extern  VTBL_ENTRY _ZTV8S19065C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C6[];
static VTBL_ENTRY alt_thunk_names163[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C6D0Ev,_ZTv0_n92_N8S19065C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19065C6D0Ev,_ZThn20_N8S19065C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C6D1Ev,_ZTv0_n92_N8S19065C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19065C6D1Ev,_ZThn20_N8S19065C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19065C6 = {  "S19065C6", // class name
  bases_S19065C6, 10,
  &(vtc_S19065C6[0]), // expected_vtbl_contents
  &(vtt_S19065C6[0]), // expected_vtt_contents
  ABISELECT(256,124), // object size
  NSPAIRA(_ZTI8S19065C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19065C6),102, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19065C6),17, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names163,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19065C5  : virtual S19065C6 {
  __tsi64 s19065c5f0;
  int s19065c5f1;
  void *s19065c5f2[9];
  ::S3572C6_nt s19065c5f3;
  short s19065c5f4;
  virtual void  v42(); // _ZN8S19065C53v42Ev
  virtual void  v43(); // _ZN8S19065C53v43Ev
  virtual void  v44(); // _ZN8S19065C53v44Ev
  ~S19065C5(); // tgen
  S19065C5(); // tgen
};
//SIG(-1 S19065C5) C1{ VBC2{ BC3{ v4 v5 FD Fi} VBC4{ BC5{ VBC6{ BC7{ v6 v7 v8 v9 v10 Fi} v11 v12} BC8{ BC9{ VBC7 VBC6 v13 v14 v15 Fp} BC10{ BC7 v16 v17 v18 v19 v20 v21 FD Fp[7]} v22 v23 v24 v25 Fp Fc} vd v26 v27 v28 v29 v30 Fp[6]} vd v31 v32} vd v33 v34 v35 v36 v37 v38} v1 v2 v3 FL Fi Fp[9] FC11{} Fs}


void  S19065C5 ::v42(){vfunc_called(this, "_ZN8S19065C53v42Ev");}
void  S19065C5 ::v43(){vfunc_called(this, "_ZN8S19065C53v43Ev");}
void  S19065C5 ::v44(){vfunc_called(this, "_ZN8S19065C53v44Ev");}
S19065C5 ::~S19065C5(){ note_dtor("S19065C5", this);} // tgen
S19065C5 ::S19065C5(){ note_ctor("S19065C5", this);} // tgen

static void Test_S19065C5()
{
  extern Class_Descriptor cd_S19065C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,46)];
    init_test(&cd_S19065C5, buf);
    S19065C5 *dp, &lv = *(dp=new (buf) S19065C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,180), "sizeof(S19065C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19065C5)");
    check_base_class_offset(lv, (S19065C7*)(S19065C6*), ABISELECT(112,56), "S19065C5");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C3*), ABISELECT(328,164), "S19065C5");
    check_base_class_offset(lv, (S19065C3*)(S19065C9*)(S19065C8*), ABISELECT(328,164), "S19065C5");
    check_base_class_offset(lv, (S19065C3*)(S19065C11*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(328,164), "S19065C5");
    /*is_ambiguous_... S19065C11::S19065C4_nt */ AMB_check_base_class_offset(lv, (S19065C4_nt*)(S19065C11*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(344,172), "S19065C5");
    check_base_class_offset(lv, (S19065C11*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(160,76), "S19065C5");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C12*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(176,84), "S19065C5");
    check_base_class_offset(lv, (S19065C12*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(176,84), "S19065C5");
    check_base_class_offset(lv, (S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(160,76), "S19065C5");
    check_base_class_offset(lv, (S19065C9*)(S19065C8*), ABISELECT(160,76), "S19065C5");
    check_base_class_offset(lv, (S19065C8*)(S19065C6*), ABISELECT(160,76), "S19065C5");
    check_base_class_offset(lv, (S19065C6*), ABISELECT(112,56), "S19065C5");
    check_field_offset(lv, s19065c5f0, ABISELECT(8,4), "S19065C5.s19065c5f0");
    check_field_offset(lv, s19065c5f1, ABISELECT(16,12), "S19065C5.s19065c5f1");
    check_field_offset(lv, s19065c5f2, ABISELECT(24,16), "S19065C5.s19065c5f2");
    check_field_offset(lv, s19065c5f3, ABISELECT(96,52), "S19065C5.s19065c5f3");
    check_field_offset(lv, s19065c5f4, ABISELECT(98,54), "S19065C5.s19065c5f4");
    test_class_info(&lv, &cd_S19065C5);
    dp->~S19065C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19065C5(Test_S19065C5, "S19065C5", ABISELECT(368,180));

#else // __cplusplus

extern void _ZN8S19065C5C1Ev();
extern void _ZN8S19065C5D1Ev();
Name_Map name_map_S19065C5[] = {
  NSPAIR(_ZN8S19065C5C1Ev),
  NSPAIR(_ZN8S19065C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19065C7;
extern VTBL_ENTRY _ZTI8S19065C7[];
extern  VTBL_ENTRY _ZTV8S19065C7[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C3;
extern VTBL_ENTRY _ZTI8S19065C3[];
extern  VTBL_ENTRY _ZTV8S19065C3[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C11;
extern VTBL_ENTRY _ZTI9S19065C11[];
extern  VTBL_ENTRY _ZTV9S19065C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C11[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C12;
extern VTBL_ENTRY _ZTI9S19065C12[];
extern  VTBL_ENTRY _ZTV9S19065C12[];
extern Class_Descriptor cd_S19065C10;
extern VTBL_ENTRY _ZTI9S19065C10[];
extern  VTBL_ENTRY _ZTV9S19065C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C10[];
extern Class_Descriptor cd_S19065C9;
extern VTBL_ENTRY _ZTI8S19065C9[];
extern  VTBL_ENTRY _ZTV8S19065C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C9[];
extern Class_Descriptor cd_S19065C8;
extern VTBL_ENTRY _ZTI8S19065C8[];
extern  VTBL_ENTRY _ZTV8S19065C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C8[];
extern Class_Descriptor cd_S19065C6;
extern VTBL_ENTRY _ZTI8S19065C6[];
extern  VTBL_ENTRY _ZTV8S19065C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C6[];
static Base_Class bases_S19065C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19065C7,    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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19065C4_nt,    ABISELECT(328,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19065C3,    ABISELECT(328,164), //bcp->offset
    94, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19065C4_nt,    ABISELECT(344,172), //bcp->offset
    110, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19065C11,    ABISELECT(160,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19065C4_nt,    ABISELECT(176,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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19065C12,    ABISELECT(176,84), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19065C10,    ABISELECT(160,76), //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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19065C9,    ABISELECT(160,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19065C8,    ABISELECT(160,76), //bcp->offset
    35, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19065C6,    ABISELECT(112,56), //bcp->offset
    11, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19065C5[];
extern void _ZN8S19065C53v42Ev();
extern void _ZN8S19065C53v43Ev();
extern void _ZN8S19065C53v44Ev();
extern void _ZN8S19065C5D1Ev();
extern void _ZN8S19065C5D0Ev();
extern void _ZN8S19065C73v14Ev();
extern void _ZN8S19065C73v15Ev();
extern void ABISELECT(_ZTv0_n64_N8S19065C5D1Ev,_ZTv0_n32_N8S19065C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19065C5D1Ev,_ZThn56_N8S19065C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19065C5D0Ev,_ZTv0_n32_N8S19065C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19065C5D0Ev,_ZThn56_N8S19065C5D0Ev)() __attribute__((weak));
extern void _ZN8S19065C63v36Ev();
extern void _ZN8S19065C63v37Ev();
extern void _ZN8S19065C63v38Ev();
extern void _ZN8S19065C63v39Ev();
extern void _ZN8S19065C63v40Ev();
extern void _ZN8S19065C63v41Ev();
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void ABISELECT(_ZTv0_n184_N8S19065C5D1Ev,_ZTv0_n92_N8S19065C5D1Ev)();
extern void ABISELECT(_ZThn160_N8S19065C5D1Ev,_ZThn76_N8S19065C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N8S19065C5D0Ev,_ZTv0_n92_N8S19065C5D0Ev)();
extern void ABISELECT(_ZThn160_N8S19065C5D0Ev,_ZThn76_N8S19065C5D0Ev)() __attribute__((weak));
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
extern void _ZN8S19065C83v34Ev();
extern void _ZN8S19065C83v35Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN9S19065C123v19Ev();
extern void _ZN9S19065C123v20Ev();
extern void _ZN9S19065C123v21Ev();
extern void _ZN9S19065C123v22Ev();
extern void _ZN9S19065C123v23Ev();
extern void _ZN9S19065C123v24Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY vtc_S19065C5[] = {
  ABISELECT(344,172),
  ABISELECT(328,164),
  ABISELECT(160,76),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN8S19065C53v42Ev,
  (VTBL_ENTRY)&_ZN8S19065C53v43Ev,
  (VTBL_ENTRY)&_ZN8S19065C53v44Ev,
  (VTBL_ENTRY)&_ZN8S19065C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C5D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  ABISELECT(232,116),
  ABISELECT(216,108),
  ABISELECT(48,20),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN8S19065C73v14Ev,
  (VTBL_ENTRY)&_ZN8S19065C73v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19065C5D1Ev,_ZTv0_n32_N8S19065C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19065C5D0Ev,_ZTv0_n32_N8S19065C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19065C63v36Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v37Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v38Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v39Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v40Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v41Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-76),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(184,96),
  ABISELECT(-160,-76),
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C5D1Ev,_ZTv0_n92_N8S19065C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C5D0Ev,_ZTv0_n92_N8S19065C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v34Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v35Ev,
  ABISELECT(-176,-84),
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v19Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v20Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v22Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v23Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-164),
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-172),
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern VTBL_ENTRY _ZTV8S19065C5[];
extern void _ZN8S19065C73v14Ev();
extern void _ZN8S19065C73v15Ev();
extern void _ZN8S19065C6D1Ev();
extern void _ZN8S19065C6D0Ev();
extern void _ZN8S19065C63v36Ev();
extern void _ZN8S19065C63v37Ev();
extern void _ZN8S19065C63v38Ev();
extern void _ZN8S19065C63v39Ev();
extern void _ZN8S19065C63v40Ev();
extern void _ZN8S19065C63v41Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C6__8S19065C5[] = {
  ABISELECT(232,116),
  ABISELECT(216,108),
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN8S19065C73v14Ev,
  (VTBL_ENTRY)&_ZN8S19065C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19065C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v36Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v37Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v38Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v39Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v40Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v41Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void ABISELECT(_ZTv0_n184_N8S19065C6D1Ev,_ZTv0_n92_N8S19065C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S19065C6D1Ev,_ZThn20_N8S19065C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N8S19065C6D0Ev,_ZTv0_n92_N8S19065C6D0Ev)();
extern void ABISELECT(_ZThn48_N8S19065C6D0Ev,_ZThn20_N8S19065C6D0Ev)() __attribute__((weak));
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
extern void _ZN8S19065C83v34Ev();
extern void _ZN8S19065C83v35Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C8__8S19065C6__8S19065C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(184,96),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C6D1Ev,_ZTv0_n92_N8S19065C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C6D0Ev,_ZTv0_n92_N8S19065C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v34Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v35Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__8S19065C6__8S19065C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__A1__8S19065C6__8S19065C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN9S19065C123v19Ev();
extern void _ZN9S19065C123v20Ev();
extern void _ZN9S19065C123v21Ev();
extern void _ZN9S19065C123v22Ev();
extern void _ZN9S19065C123v23Ev();
extern void _ZN9S19065C123v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C129S19065C108S19065C98S19065C8__8S19065C6__8S19065C5[] = {
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v19Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v20Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v22Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v23Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v24Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void _ZN8S19065C8D1Ev();
extern void _ZN8S19065C8D0Ev();
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
extern void _ZN8S19065C83v34Ev();
extern void _ZN8S19065C83v35Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C8__8S19065C5[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&_ZN8S19065C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v34Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v35Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void _ZN8S19065C9D1Ev();
extern void _ZN8S19065C9D0Ev();
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C98S19065C8__8S19065C5[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&_ZN8S19065C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C108S19065C98S19065C8__8S19065C5[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C119S19065C108S19065C98S19065C8__8S19065C5[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__9S19065C119S19065C108S19065C98S19065C8__8S19065C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__9S19065C119S19065C108S19065C98S19065C8__8S19065C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__9S19065C108S19065C98S19065C8__8S19065C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__9S19065C108S19065C98S19065C8__8S19065C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__8S19065C98S19065C8__8S19065C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__A1__8S19065C98S19065C8__8S19065C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__8S19065C8__8S19065C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__A1__8S19065C8__8S19065C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
static  VTT_ENTRY vtt_S19065C5[] = {
  {&(_ZTV8S19065C5[6]),  6,122},
  {&(_ZTV8S19065C5[25]),  25,122},
  {&(_ZTV8S19065C5[65]),  65,122},
  {&(_ZTV8S19065C5[103]),  103,122},
  {&(_ZTV8S19065C5[117]),  117,122},
  {&(_ZTV8S19065C5[83]),  83,122},
  {&(_tg__ZTV8S19065C6__8S19065C5[5]),  5,15},
  {&(_tg__ZTV8S19065C8__8S19065C6__8S19065C5[30]),  30,46},
  {&(_tg__ZTV8S19065C3__8S19065C6__8S19065C5[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__A1__8S19065C6__8S19065C5[7]),  7,12},
  {&(_tg__ZTV9S19065C129S19065C108S19065C98S19065C8__8S19065C6__8S19065C5[2]),  2,13},
  {&(_tg__ZTV8S19065C8__8S19065C5[4]),  4,20},
  {&(_tg__ZTV8S19065C98S19065C8__8S19065C5[4]),  4,18},
  {&(_tg__ZTV9S19065C108S19065C98S19065C8__8S19065C5[4]),  4,11},
  {&(_tg__ZTV9S19065C119S19065C108S19065C98S19065C8__8S19065C5[4]),  4,7},
  {&(_tg__ZTV11S19065C4_nt__9S19065C119S19065C108S19065C98S19065C8__8S19065C5[7]),  7,12},
  {&(_tg__ZTV8S19065C3__9S19065C119S19065C108S19065C98S19065C8__8S19065C5[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__9S19065C108S19065C98S19065C8__8S19065C5[7]),  7,12},
  {&(_tg__ZTV8S19065C3__9S19065C108S19065C98S19065C8__8S19065C5[9]),  9,16},
  {&(_tg__ZTV8S19065C3__8S19065C98S19065C8__8S19065C5[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__A1__8S19065C98S19065C8__8S19065C5[7]),  7,12},
  {&(_tg__ZTV8S19065C3__8S19065C8__8S19065C5[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__A1__8S19065C8__8S19065C5[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19065C5[];
extern  VTBL_ENTRY _ZTV8S19065C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C5[];
static VTBL_ENTRY alt_thunk_names164[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C6D0Ev,_ZTv0_n92_N8S19065C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19065C6D0Ev,_ZThn20_N8S19065C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C6D1Ev,_ZTv0_n92_N8S19065C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19065C6D1Ev,_ZThn20_N8S19065C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C5D0Ev,_ZTv0_n92_N8S19065C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19065C5D0Ev,_ZThn76_N8S19065C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C5D1Ev,_ZTv0_n92_N8S19065C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19065C5D1Ev,_ZThn76_N8S19065C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19065C5D0Ev,_ZTv0_n32_N8S19065C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19065C5D0Ev,_ZThn56_N8S19065C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19065C5D1Ev,_ZTv0_n32_N8S19065C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19065C5D1Ev,_ZThn56_N8S19065C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19065C5 = {  "S19065C5", // class name
  bases_S19065C5, 11,
  &(vtc_S19065C5[0]), // expected_vtbl_contents
  &(vtt_S19065C5[0]), // expected_vtt_contents
  ABISELECT(368,180), // object size
  NSPAIRA(_ZTI8S19065C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19065C5),122, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19065C5),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names164,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19065C1  : virtual S19065C2 , virtual S19065C5 {
  ::S20903C14_nt s19065c1f0;
  virtual void  v1(); // _ZN8S19065C12v1Ev
  virtual void  v2(); // _ZN8S19065C12v2Ev
  virtual void  v3(); // _ZN8S19065C12v3Ev
  virtual void  v4(); // _ZN8S19065C12v4Ev
  ~S19065C1(); // tgen
  S19065C1(); // tgen
};
//SIG(1 S19065C1) C1{ VBC2{ BC3{ BC4{ v5 v6 v7 v8 v9 Fi} v10 v11} v12 v13} VBC5{ VBC6{ BC7{ v14 v15 FD Fi} VBC8{ BC9{ VBC3 BC10{ BC11{ VBC4 VBC3 v16 v17 v18 Fp} BC12{ BC4 v19 v20 v21 v22 v23 v24 FD Fp[7]} v25 v26 v27 v28 Fp Fc} vd v29 v30 v31 v32 v33 Fp[6]} vd v34 v35} vd v36 v37 v38 v39 v40 v41} v42 v43 v44 FL Fi Fp[9] FC13{} Fs} v1 v2 v3 v4 FC14{ v45}}


void  S19065C1 ::v1(){vfunc_called(this, "_ZN8S19065C12v1Ev");}
void  S19065C1 ::v2(){vfunc_called(this, "_ZN8S19065C12v2Ev");}
void  S19065C1 ::v3(){vfunc_called(this, "_ZN8S19065C12v3Ev");}
void  S19065C1 ::v4(){vfunc_called(this, "_ZN8S19065C12v4Ev");}
S19065C1 ::~S19065C1(){ note_dtor("S19065C1", this);} // tgen
S19065C1 ::S19065C1(){ note_ctor("S19065C1", this);} // tgen

static void Test_S19065C1()
{
  extern Class_Descriptor cd_S19065C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(26,50)];
    init_test(&cd_S19065C1, buf);
    S19065C1 *dp, &lv = *(dp=new (buf) S19065C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,196), "sizeof(S19065C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19065C1)");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C3*)(S19065C2*), ABISELECT(16,8), "S19065C1");
    check_base_class_offset(lv, (S19065C3*)(S19065C2*), ABISELECT(16,8), "S19065C1");
    check_base_class_offset(lv, (S19065C2*), ABISELECT(16,8), "S19065C1");
    check_base_class_offset(lv, (S19065C7*)(S19065C6*), ABISELECT(144,72), "S19065C1");
    /*is_ambiguous_... S19065C1::S19065C3 */ AMB_check_base_class_offset(lv, (S19065C4_nt*)(S19065C3*), ABISELECT(360,180), "S19065C1");
    check_base_class_offset(lv, (S19065C3*)(S19065C9*)(S19065C8*), ABISELECT(360,180), "S19065C1");
    check_base_class_offset(lv, (S19065C3*)(S19065C11*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(360,180), "S19065C1");
    /*is_ambiguous_... S19065C11::S19065C4_nt */ AMB_check_base_class_offset(lv, (S19065C4_nt*)(S19065C11*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(376,188), "S19065C1");
    check_base_class_offset(lv, (S19065C11*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(192,92), "S19065C1");
    check_base_class_offset(lv, (S19065C4_nt*)(S19065C12*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(208,100), "S19065C1");
    check_base_class_offset(lv, (S19065C12*)(S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(208,100), "S19065C1");
    check_base_class_offset(lv, (S19065C10*)(S19065C9*)(S19065C8*), ABISELECT(192,92), "S19065C1");
    check_base_class_offset(lv, (S19065C9*)(S19065C8*), ABISELECT(192,92), "S19065C1");
    check_base_class_offset(lv, (S19065C8*)(S19065C6*), ABISELECT(192,92), "S19065C1");
    check_base_class_offset(lv, (S19065C6*)(S19065C5*), ABISELECT(144,72), "S19065C1");
    check_base_class_offset(lv, (S19065C5*), ABISELECT(32,16), "S19065C1");
    check_field_offset(lv, s19065c1f0, ABISELECT(8,4), "S19065C1.s19065c1f0");
    test_class_info(&lv, &cd_S19065C1);
    dp->~S19065C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19065C1(Test_S19065C1, "S19065C1", ABISELECT(400,196));

#else // __cplusplus

extern void _ZN8S19065C1C1Ev();
extern void _ZN8S19065C1D1Ev();
Name_Map name_map_S19065C1[] = {
  NSPAIR(_ZN8S19065C1C1Ev),
  NSPAIR(_ZN8S19065C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C3;
extern VTBL_ENTRY _ZTI8S19065C3[];
extern  VTBL_ENTRY _ZTV8S19065C3[];
extern Class_Descriptor cd_S19065C2;
extern VTBL_ENTRY _ZTI8S19065C2[];
extern  VTBL_ENTRY _ZTV8S19065C2[];
extern Class_Descriptor cd_S19065C7;
extern VTBL_ENTRY _ZTI8S19065C7[];
extern  VTBL_ENTRY _ZTV8S19065C7[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C3;
extern VTBL_ENTRY _ZTI8S19065C3[];
extern  VTBL_ENTRY _ZTV8S19065C3[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C11;
extern VTBL_ENTRY _ZTI9S19065C11[];
extern  VTBL_ENTRY _ZTV9S19065C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C11[];
extern Class_Descriptor cd_S19065C4_nt;
extern VTBL_ENTRY _ZTI11S19065C4_nt[];
extern  VTBL_ENTRY _ZTV11S19065C4_nt[];
extern Class_Descriptor cd_S19065C12;
extern VTBL_ENTRY _ZTI9S19065C12[];
extern  VTBL_ENTRY _ZTV9S19065C12[];
extern Class_Descriptor cd_S19065C10;
extern VTBL_ENTRY _ZTI9S19065C10[];
extern  VTBL_ENTRY _ZTV9S19065C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19065C10[];
extern Class_Descriptor cd_S19065C9;
extern VTBL_ENTRY _ZTI8S19065C9[];
extern  VTBL_ENTRY _ZTV8S19065C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C9[];
extern Class_Descriptor cd_S19065C8;
extern VTBL_ENTRY _ZTI8S19065C8[];
extern  VTBL_ENTRY _ZTV8S19065C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C8[];
extern Class_Descriptor cd_S19065C6;
extern VTBL_ENTRY _ZTI8S19065C6[];
extern  VTBL_ENTRY _ZTV8S19065C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C6[];
extern Class_Descriptor cd_S19065C5;
extern VTBL_ENTRY _ZTI8S19065C5[];
extern  VTBL_ENTRY _ZTV8S19065C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C5[];
static Base_Class bases_S19065C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19065C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19065C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19065C2,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19065C7,    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
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19065C4_nt,    ABISELECT(360,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19065C3,    ABISELECT(360,180), //bcp->offset
    132, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19065C4_nt,    ABISELECT(376,188), //bcp->offset
    148, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19065C11,    ABISELECT(192,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19065C4_nt,    ABISELECT(208,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
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19065C12,    ABISELECT(208,100), //bcp->offset
    119, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19065C10,    ABISELECT(192,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19065C9,    ABISELECT(192,92), //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
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19065C8,    ABISELECT(192,92), //bcp->offset
    73, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19065C6,    ABISELECT(144,72), //bcp->offset
    49, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19065C5,    ABISELECT(32,16), //bcp->offset
    34, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19065C1[];
extern void _ZN8S19065C12v1Ev();
extern void _ZN8S19065C12v2Ev();
extern void _ZN8S19065C12v3Ev();
extern void _ZN8S19065C12v4Ev();
extern void _ZN8S19065C1D1Ev();
extern void _ZN8S19065C1D0Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
extern void _ZN8S19065C23v12Ev();
extern void _ZN8S19065C23v13Ev();
extern void _ZN8S19065C53v42Ev();
extern void _ZN8S19065C53v43Ev();
extern void _ZN8S19065C53v44Ev();
extern void ABISELECT(_ZTv0_n80_N8S19065C1D1Ev,_ZTv0_n40_N8S19065C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19065C1D1Ev,_ZThn16_N8S19065C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19065C1D0Ev,_ZTv0_n40_N8S19065C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19065C1D0Ev,_ZThn16_N8S19065C1D0Ev)() __attribute__((weak));
extern void _ZN8S19065C73v14Ev();
extern void _ZN8S19065C73v15Ev();
extern void ABISELECT(_ZTv0_n64_N8S19065C1D1Ev,_ZTv0_n32_N8S19065C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S19065C1D1Ev,_ZThn72_N8S19065C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19065C1D0Ev,_ZTv0_n32_N8S19065C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S19065C1D0Ev,_ZThn72_N8S19065C1D0Ev)() __attribute__((weak));
extern void _ZN8S19065C63v36Ev();
extern void _ZN8S19065C63v37Ev();
extern void _ZN8S19065C63v38Ev();
extern void _ZN8S19065C63v39Ev();
extern void _ZN8S19065C63v40Ev();
extern void _ZN8S19065C63v41Ev();
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void ABISELECT(_ZTv0_n184_N8S19065C1D1Ev,_ZTv0_n92_N8S19065C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19065C1D1Ev,_ZThn92_N8S19065C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N8S19065C1D0Ev,_ZTv0_n92_N8S19065C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19065C1D0Ev,_ZThn92_N8S19065C1D0Ev)() __attribute__((weak));
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
extern void _ZN8S19065C83v34Ev();
extern void _ZN8S19065C83v35Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN9S19065C123v19Ev();
extern void _ZN9S19065C123v20Ev();
extern void _ZN9S19065C123v21Ev();
extern void _ZN9S19065C123v22Ev();
extern void _ZN9S19065C123v23Ev();
extern void _ZN9S19065C123v24Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY vtc_S19065C1[] = {
  ABISELECT(376,188),
  ABISELECT(360,180),
  ABISELECT(192,92),
  ABISELECT(144,72),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C1[0]),
  (VTBL_ENTRY)&_ZN8S19065C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19065C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19065C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19065C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19065C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C1D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19065C1[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19065C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19065C23v13Ev,
  ABISELECT(-32,-16),
  0,
  0,
  0,
  ABISELECT(344,172),
  ABISELECT(328,164),
  ABISELECT(160,76),
  ABISELECT(112,56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19065C1[0]),
  (VTBL_ENTRY)&_ZN8S19065C53v42Ev,
  (VTBL_ENTRY)&_ZN8S19065C53v43Ev,
  (VTBL_ENTRY)&_ZN8S19065C53v44Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19065C1D1Ev,_ZTv0_n40_N8S19065C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19065C1D0Ev,_ZTv0_n40_N8S19065C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-72),
  0,
  0,
  ABISELECT(232,116),
  ABISELECT(216,108),
  ABISELECT(48,20),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S19065C1[0]),
  (VTBL_ENTRY)&_ZN8S19065C73v14Ev,
  (VTBL_ENTRY)&_ZN8S19065C73v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19065C1D1Ev,_ZTv0_n32_N8S19065C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19065C1D0Ev,_ZTv0_n32_N8S19065C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19065C63v36Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v37Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v38Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v39Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v40Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v41Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-92),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(184,96),
  ABISELECT(-192,-92),
  (VTBL_ENTRY)&(_ZTI8S19065C1[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C1D1Ev,_ZTv0_n92_N8S19065C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C1D0Ev,_ZTv0_n92_N8S19065C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v34Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v35Ev,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI8S19065C1[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v19Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v20Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v22Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v23Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-360,-180),
  (VTBL_ENTRY)&(_ZTI8S19065C1[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-376,-188),
  (VTBL_ENTRY)&(_ZTI8S19065C1[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern VTBL_ENTRY _ZTV8S19065C1[];
extern void _ZN8S19065C53v42Ev();
extern void _ZN8S19065C53v43Ev();
extern void _ZN8S19065C53v44Ev();
extern void _ZN8S19065C5D1Ev();
extern void _ZN8S19065C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C5__8S19065C1[] = {
  ABISELECT(344,172),
  ABISELECT(328,164),
  ABISELECT(160,76),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN8S19065C53v42Ev,
  (VTBL_ENTRY)&_ZN8S19065C53v43Ev,
  (VTBL_ENTRY)&_ZN8S19065C53v44Ev,
  (VTBL_ENTRY)&_ZN8S19065C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C5D0Ev,
};
extern void _ZN8S19065C73v14Ev();
extern void _ZN8S19065C73v15Ev();
extern void ABISELECT(_ZTv0_n64_N8S19065C5D1Ev,_ZTv0_n32_N8S19065C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19065C5D1Ev,_ZThn56_N8S19065C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19065C5D0Ev,_ZTv0_n32_N8S19065C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19065C5D0Ev,_ZThn56_N8S19065C5D0Ev)() __attribute__((weak));
extern void _ZN8S19065C63v36Ev();
extern void _ZN8S19065C63v37Ev();
extern void _ZN8S19065C63v38Ev();
extern void _ZN8S19065C63v39Ev();
extern void _ZN8S19065C63v40Ev();
extern void _ZN8S19065C63v41Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C6__8S19065C5__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  ABISELECT(232,116),
  ABISELECT(216,108),
  ABISELECT(48,20),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN8S19065C73v14Ev,
  (VTBL_ENTRY)&_ZN8S19065C73v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19065C5D1Ev,_ZTv0_n32_N8S19065C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19065C5D0Ev,_ZTv0_n32_N8S19065C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19065C63v36Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v37Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v38Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v39Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v40Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v41Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void ABISELECT(_ZTv0_n184_N8S19065C5D1Ev,_ZTv0_n92_N8S19065C5D1Ev)();
extern void ABISELECT(_ZThn160_N8S19065C5D1Ev,_ZThn76_N8S19065C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N8S19065C5D0Ev,_ZTv0_n92_N8S19065C5D0Ev)();
extern void ABISELECT(_ZThn160_N8S19065C5D0Ev,_ZThn76_N8S19065C5D0Ev)() __attribute__((weak));
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
extern void _ZN8S19065C83v34Ev();
extern void _ZN8S19065C83v35Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C8__8S19065C5__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-76),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(184,96),
  ABISELECT(-160,-76),
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C5D1Ev,_ZTv0_n92_N8S19065C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C5D0Ev,_ZTv0_n92_N8S19065C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v34Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v35Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__8S19065C5__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-164),
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__A1__8S19065C5__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-172),
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN9S19065C123v19Ev();
extern void _ZN9S19065C123v20Ev();
extern void _ZN9S19065C123v21Ev();
extern void _ZN9S19065C123v22Ev();
extern void _ZN9S19065C123v23Ev();
extern void _ZN9S19065C123v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C129S19065C108S19065C98S19065C8__8S19065C5__8S19065C1[] = {
  ABISELECT(-176,-84),
  (VTBL_ENTRY)&(_ZTI8S19065C5[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v19Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v20Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v22Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v23Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v24Ev,
};
extern void _ZN8S19065C73v14Ev();
extern void _ZN8S19065C73v15Ev();
extern void _ZN8S19065C6D1Ev();
extern void _ZN8S19065C6D0Ev();
extern void _ZN8S19065C63v36Ev();
extern void _ZN8S19065C63v37Ev();
extern void _ZN8S19065C63v38Ev();
extern void _ZN8S19065C63v39Ev();
extern void _ZN8S19065C63v40Ev();
extern void _ZN8S19065C63v41Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C6__8S19065C1[] = {
  ABISELECT(232,116),
  ABISELECT(216,108),
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN8S19065C73v14Ev,
  (VTBL_ENTRY)&_ZN8S19065C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19065C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v36Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v37Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v38Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v39Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v40Ev,
  (VTBL_ENTRY)&_ZN8S19065C63v41Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void ABISELECT(_ZTv0_n184_N8S19065C6D1Ev,_ZTv0_n92_N8S19065C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S19065C6D1Ev,_ZThn20_N8S19065C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N8S19065C6D0Ev,_ZTv0_n92_N8S19065C6D0Ev)();
extern void ABISELECT(_ZThn48_N8S19065C6D0Ev,_ZThn20_N8S19065C6D0Ev)() __attribute__((weak));
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
extern void _ZN8S19065C83v34Ev();
extern void _ZN8S19065C83v35Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C8__8S19065C6__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(184,96),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C6D1Ev,_ZTv0_n92_N8S19065C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S19065C6D0Ev,_ZTv0_n92_N8S19065C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v34Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v35Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__8S19065C6__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__A1__8S19065C6__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-116),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN9S19065C123v19Ev();
extern void _ZN9S19065C123v20Ev();
extern void _ZN9S19065C123v21Ev();
extern void _ZN9S19065C123v22Ev();
extern void _ZN9S19065C123v23Ev();
extern void _ZN9S19065C123v24Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C129S19065C108S19065C98S19065C8__8S19065C6__8S19065C1[] = {
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19065C6[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v19Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v20Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v21Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v22Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v23Ev,
  (VTBL_ENTRY)&_ZN9S19065C123v24Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void _ZN8S19065C8D1Ev();
extern void _ZN8S19065C8D0Ev();
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
extern void _ZN8S19065C83v34Ev();
extern void _ZN8S19065C83v35Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C8__8S19065C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&_ZN8S19065C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v34Ev,
  (VTBL_ENTRY)&_ZN8S19065C83v35Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
extern void _ZN8S19065C9D1Ev();
extern void _ZN8S19065C9D0Ev();
extern void _ZN8S19065C93v29Ev();
extern void _ZN8S19065C93v30Ev();
extern void _ZN8S19065C93v31Ev();
extern void _ZN8S19065C93v32Ev();
extern void _ZN8S19065C93v33Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C98S19065C8__8S19065C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
  (VTBL_ENTRY)&_ZN8S19065C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19065C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v30Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v31Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v32Ev,
  (VTBL_ENTRY)&_ZN8S19065C93v33Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
extern void _ZN9S19065C103v25Ev();
extern void _ZN9S19065C103v26Ev();
extern void _ZN9S19065C103v27Ev();
extern void _ZN9S19065C103v28Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C108S19065C98S19065C8__8S19065C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v27Ev,
  (VTBL_ENTRY)&_ZN9S19065C103v28Ev,
};
extern void _ZN9S19065C113v16Ev();
extern void _ZN9S19065C113v17Ev();
extern void _ZN9S19065C113v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19065C119S19065C108S19065C98S19065C8__8S19065C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN9S19065C113v16Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v17Ev,
  (VTBL_ENTRY)&_ZN9S19065C113v18Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__9S19065C119S19065C108S19065C98S19065C8__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__9S19065C119S19065C108S19065C98S19065C8__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19065C11[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__9S19065C108S19065C98S19065C8__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__9S19065C108S19065C98S19065C8__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI9S19065C10[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__8S19065C98S19065C8__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__A1__8S19065C98S19065C8__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S19065C9[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
extern void _ZN8S19065C33v10Ev();
extern void _ZN8S19065C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19065C3__8S19065C8__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19065C33v11Ev,
};
extern void _ZN11S19065C4_nt2v5Ev();
extern void _ZN11S19065C4_nt2v6Ev();
extern void _ZN11S19065C4_nt2v7Ev();
extern void _ZN11S19065C4_nt2v8Ev();
extern void _ZN11S19065C4_nt2v9Ev();
static  VTBL_ENTRY _tg__ZTV11S19065C4_nt__A1__8S19065C8__8S19065C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S19065C8[0]),
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S19065C4_nt2v9Ev,
};
static  VTT_ENTRY vtt_S19065C1[] = {
  {&(_ZTV8S19065C1[8]),  8,160},
  {&(_ZTV8S19065C1[25]),  25,160},
  {&(_ZTV8S19065C1[44]),  44,160},
  {&(_ZTV8S19065C1[63]),  63,160},
  {&(_ZTV8S19065C1[103]),  103,160},
  {&(_ZTV8S19065C1[141]),  141,160},
  {&(_ZTV8S19065C1[155]),  155,160},
  {&(_ZTV8S19065C1[121]),  121,160},
  {&(_tg__ZTV8S19065C5__8S19065C1[6]),  6,11},
  {&(_tg__ZTV8S19065C6__8S19065C5__8S19065C1[14]),  14,24},
  {&(_tg__ZTV8S19065C8__8S19065C5__8S19065C1[30]),  30,46},
  {&(_tg__ZTV8S19065C3__8S19065C5__8S19065C1[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__A1__8S19065C5__8S19065C1[7]),  7,12},
  {&(_tg__ZTV9S19065C129S19065C108S19065C98S19065C8__8S19065C5__8S19065C1[2]),  2,13},
  {&(_tg__ZTV8S19065C6__8S19065C1[5]),  5,15},
  {&(_tg__ZTV8S19065C8__8S19065C6__8S19065C1[30]),  30,46},
  {&(_tg__ZTV8S19065C3__8S19065C6__8S19065C1[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__A1__8S19065C6__8S19065C1[7]),  7,12},
  {&(_tg__ZTV9S19065C129S19065C108S19065C98S19065C8__8S19065C6__8S19065C1[2]),  2,13},
  {&(_tg__ZTV8S19065C8__8S19065C1[4]),  4,20},
  {&(_tg__ZTV8S19065C98S19065C8__8S19065C1[4]),  4,18},
  {&(_tg__ZTV9S19065C108S19065C98S19065C8__8S19065C1[4]),  4,11},
  {&(_tg__ZTV9S19065C119S19065C108S19065C98S19065C8__8S19065C1[4]),  4,7},
  {&(_tg__ZTV11S19065C4_nt__9S19065C119S19065C108S19065C98S19065C8__8S19065C1[7]),  7,12},
  {&(_tg__ZTV8S19065C3__9S19065C119S19065C108S19065C98S19065C8__8S19065C1[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__9S19065C108S19065C98S19065C8__8S19065C1[7]),  7,12},
  {&(_tg__ZTV8S19065C3__9S19065C108S19065C98S19065C8__8S19065C1[9]),  9,16},
  {&(_tg__ZTV8S19065C3__8S19065C98S19065C8__8S19065C1[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__A1__8S19065C98S19065C8__8S19065C1[7]),  7,12},
  {&(_tg__ZTV8S19065C3__8S19065C8__8S19065C1[9]),  9,16},
  {&(_tg__ZTV11S19065C4_nt__A1__8S19065C8__8S19065C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19065C1[];
extern  VTBL_ENTRY _ZTV8S19065C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19065C1[];
static VTBL_ENTRY alt_thunk_names165[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C6D0Ev,_ZTv0_n92_N8S19065C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19065C6D0Ev,_ZThn20_N8S19065C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C6D1Ev,_ZTv0_n92_N8S19065C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19065C6D1Ev,_ZThn20_N8S19065C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C5D0Ev,_ZTv0_n92_N8S19065C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19065C5D0Ev,_ZThn76_N8S19065C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C5D1Ev,_ZTv0_n92_N8S19065C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19065C5D1Ev,_ZThn76_N8S19065C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19065C5D0Ev,_ZTv0_n32_N8S19065C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19065C5D0Ev,_ZThn56_N8S19065C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19065C5D1Ev,_ZTv0_n32_N8S19065C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19065C5D1Ev,_ZThn56_N8S19065C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C1D0Ev,_ZTv0_n92_N8S19065C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19065C1D0Ev,_ZThn92_N8S19065C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S19065C1D1Ev,_ZTv0_n92_N8S19065C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19065C1D1Ev,_ZThn92_N8S19065C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19065C1D0Ev,_ZTv0_n32_N8S19065C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19065C1D0Ev,_ZThn72_N8S19065C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19065C1D1Ev,_ZTv0_n32_N8S19065C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19065C1D1Ev,_ZThn72_N8S19065C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19065C1D0Ev,_ZTv0_n40_N8S19065C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19065C1D0Ev,_ZThn16_N8S19065C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19065C1D1Ev,_ZTv0_n40_N8S19065C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19065C1D1Ev,_ZThn16_N8S19065C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19065C1 = {  "S19065C1", // class name
  bases_S19065C1, 15,
  &(vtc_S19065C1[0]), // expected_vtbl_contents
  &(vtt_S19065C1[0]), // expected_vtt_contents
  ABISELECT(400,196), // object size
  NSPAIRA(_ZTI8S19065C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19065C1),160, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19065C1),31, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names165,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10225C2_nt  {
  virtual  ~S10225C2_nt(); // _ZN11S10225C2_ntD1Ev
  virtual void  v8(); // _ZN11S10225C2_nt2v8Ev
  virtual void  v9(); // _ZN11S10225C2_nt2v9Ev
  virtual void  v10(); // _ZN11S10225C2_nt3v10Ev
  virtual void  v11(); // _ZN11S10225C2_nt3v11Ev
  virtual void  v12(); // _ZN11S10225C2_nt3v12Ev
  virtual void  v13(); // _ZN11S10225C2_nt3v13Ev
  virtual void  v14(); // _ZN11S10225C2_nt3v14Ev
  S10225C2_nt(); // tgen
};
//SIG(-1 S10225C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S10225C2_nt ::~S10225C2_nt(){ note_dtor("S10225C2_nt", this);}
void  S10225C2_nt ::v8(){vfunc_called(this, "_ZN11S10225C2_nt2v8Ev");}
void  S10225C2_nt ::v9(){vfunc_called(this, "_ZN11S10225C2_nt2v9Ev");}
void  S10225C2_nt ::v10(){vfunc_called(this, "_ZN11S10225C2_nt3v10Ev");}
void  S10225C2_nt ::v11(){vfunc_called(this, "_ZN11S10225C2_nt3v11Ev");}
void  S10225C2_nt ::v12(){vfunc_called(this, "_ZN11S10225C2_nt3v12Ev");}
void  S10225C2_nt ::v13(){vfunc_called(this, "_ZN11S10225C2_nt3v13Ev");}
void  S10225C2_nt ::v14(){vfunc_called(this, "_ZN11S10225C2_nt3v14Ev");}
S10225C2_nt ::S10225C2_nt(){ note_ctor("S10225C2_nt", this);} // tgen

//skip512 S10225C2_nt

#else // __cplusplus

extern void _ZN11S10225C2_ntC1Ev();
extern void _ZN11S10225C2_ntD1Ev();
Name_Map name_map_S10225C2_nt[] = {
  NSPAIR(_ZN11S10225C2_ntC1Ev),
  NSPAIR(_ZN11S10225C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10225C2_nt[];
extern void _ZN11S10225C2_ntD1Ev();
extern void _ZN11S10225C2_ntD0Ev();
extern void _ZN11S10225C2_nt2v8Ev();
extern void _ZN11S10225C2_nt2v9Ev();
extern void _ZN11S10225C2_nt3v10Ev();
extern void _ZN11S10225C2_nt3v11Ev();
extern void _ZN11S10225C2_nt3v12Ev();
extern void _ZN11S10225C2_nt3v13Ev();
extern void _ZN11S10225C2_nt3v14Ev();
static  VTBL_ENTRY vtc_S10225C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10225C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10225C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI11S10225C2_nt[];
VTBL_ENTRY *P__ZTI11S10225C2_nt = _ZTI11S10225C2_nt; 
extern  VTBL_ENTRY _ZTV11S10225C2_nt[];
Class_Descriptor cd_S10225C2_nt = {  "S10225C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10225C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S10225C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10225C2_nt),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10225C4  {
  virtual  ~S10225C4(); // _ZN8S10225C4D1Ev
  virtual void  v18(); // _ZN8S10225C43v18Ev
  virtual void  v19(); // _ZN8S10225C43v19Ev
  virtual void  v20(); // _ZN8S10225C43v20Ev
  S10225C4(); // tgen
};
//SIG(-1 S10225C4) C1{ vd v1 v2 v3}


 S10225C4 ::~S10225C4(){ note_dtor("S10225C4", this);}
void  S10225C4 ::v18(){vfunc_called(this, "_ZN8S10225C43v18Ev");}
void  S10225C4 ::v19(){vfunc_called(this, "_ZN8S10225C43v19Ev");}
void  S10225C4 ::v20(){vfunc_called(this, "_ZN8S10225C43v20Ev");}
S10225C4 ::S10225C4(){ note_ctor("S10225C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10225C4C1Ev();
extern void _ZN8S10225C4D1Ev();
Name_Map name_map_S10225C4[] = {
  NSPAIR(_ZN8S10225C4C1Ev),
  NSPAIR(_ZN8S10225C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10225C4[];
extern void _ZN8S10225C4D1Ev();
extern void _ZN8S10225C4D0Ev();
extern void _ZN8S10225C43v18Ev();
extern void _ZN8S10225C43v19Ev();
extern void _ZN8S10225C43v20Ev();
static  VTBL_ENTRY vtc_S10225C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10225C4[0]),
  (VTBL_ENTRY)&_ZN8S10225C4D1Ev,
  (VTBL_ENTRY)&_ZN8S10225C4D0Ev,
  (VTBL_ENTRY)&_ZN8S10225C43v18Ev,
  (VTBL_ENTRY)&_ZN8S10225C43v19Ev,
  (VTBL_ENTRY)&_ZN8S10225C43v20Ev,
};
extern VTBL_ENTRY _ZTI8S10225C4[];
extern  VTBL_ENTRY _ZTV8S10225C4[];
Class_Descriptor cd_S10225C4 = {  "S10225C4", // class name
  0,0,//no base classes
  &(vtc_S10225C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10225C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10225C4),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10225C3  : S10225C4 {
  ::S2333C14_nt s10225c3f0;
  virtual  ~S10225C3(); // _ZN8S10225C3D1Ev
  virtual void  v15(); // _ZN8S10225C33v15Ev
  virtual void  v16(); // _ZN8S10225C33v16Ev
  virtual void  v17(); // _ZN8S10225C33v17Ev
  S10225C3(); // tgen
};
//SIG(-1 S10225C3) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ FL[4]}}


 S10225C3 ::~S10225C3(){ note_dtor("S10225C3", this);}
void  S10225C3 ::v15(){vfunc_called(this, "_ZN8S10225C33v15Ev");}
void  S10225C3 ::v16(){vfunc_called(this, "_ZN8S10225C33v16Ev");}
void  S10225C3 ::v17(){vfunc_called(this, "_ZN8S10225C33v17Ev");}
S10225C3 ::S10225C3(){ note_ctor("S10225C3", this);} // tgen

static void Test_S10225C3()
{
  extern Class_Descriptor cd_S10225C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,10)];
    init_test(&cd_S10225C3, buf);
    S10225C3 *dp, &lv = *(dp=new (buf) S10225C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,36), "sizeof(S10225C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10225C3)");
    check_base_class_offset(lv, (S10225C4*), 0, "S10225C3");
    check_field_offset(lv, s10225c3f0, ABISELECT(8,4), "S10225C3.s10225c3f0");
    test_class_info(&lv, &cd_S10225C3);
    dp->~S10225C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10225C3(Test_S10225C3, "S10225C3", ABISELECT(40,36));

#else // __cplusplus

extern void _ZN8S10225C3C1Ev();
extern void _ZN8S10225C3D1Ev();
Name_Map name_map_S10225C3[] = {
  NSPAIR(_ZN8S10225C3C1Ev),
  NSPAIR(_ZN8S10225C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10225C4;
extern VTBL_ENTRY _ZTI8S10225C4[];
extern  VTBL_ENTRY _ZTV8S10225C4[];
static Base_Class bases_S10225C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10225C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10225C3[];
extern void _ZN8S10225C3D1Ev();
extern void _ZN8S10225C3D0Ev();
extern void _ZN8S10225C43v18Ev();
extern void _ZN8S10225C43v19Ev();
extern void _ZN8S10225C43v20Ev();
extern void _ZN8S10225C33v15Ev();
extern void _ZN8S10225C33v16Ev();
extern void _ZN8S10225C33v17Ev();
static  VTBL_ENTRY vtc_S10225C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10225C3[0]),
  (VTBL_ENTRY)&_ZN8S10225C3D1Ev,
  (VTBL_ENTRY)&_ZN8S10225C3D0Ev,
  (VTBL_ENTRY)&_ZN8S10225C43v18Ev,
  (VTBL_ENTRY)&_ZN8S10225C43v19Ev,
  (VTBL_ENTRY)&_ZN8S10225C43v20Ev,
  (VTBL_ENTRY)&_ZN8S10225C33v15Ev,
  (VTBL_ENTRY)&_ZN8S10225C33v16Ev,
  (VTBL_ENTRY)&_ZN8S10225C33v17Ev,
};
extern VTBL_ENTRY _ZTI8S10225C3[];
extern  VTBL_ENTRY _ZTV8S10225C3[];
Class_Descriptor cd_S10225C3 = {  "S10225C3", // class name
  bases_S10225C3, 1,
  &(vtc_S10225C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,36), // object size
  NSPAIRA(_ZTI8S10225C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10225C3),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  S10225C15_nt  : S2405C26 {
};
//SIG(-1 S10225C15_nt) C1{ BC2{ m Fp Fi FC3{ m} FC3}}



//skip512 S10225C15_nt

#else // __cplusplus

extern Class_Descriptor cd_S2405C26;
static Base_Class bases_S10225C15_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2405C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S10225C19  : S10225C4 {
  int s10225c19f0;
  virtual  ~S10225C19(); // _ZN9S10225C19D1Ev
  virtual void  v21(); // _ZN9S10225C193v21Ev
  virtual void  v22(); // _ZN9S10225C193v22Ev
  virtual void  v23(); // _ZN9S10225C193v23Ev
  S10225C19(); // tgen
};
//SIG(-1 S10225C19) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 Fi}


 S10225C19 ::~S10225C19(){ note_dtor("S10225C19", this);}
void  S10225C19 ::v21(){vfunc_called(this, "_ZN9S10225C193v21Ev");}
void  S10225C19 ::v22(){vfunc_called(this, "_ZN9S10225C193v22Ev");}
void  S10225C19 ::v23(){vfunc_called(this, "_ZN9S10225C193v23Ev");}
S10225C19 ::S10225C19(){ note_ctor("S10225C19", this);} // tgen

static void Test_S10225C19()
{
  extern Class_Descriptor cd_S10225C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S10225C19, buf);
    S10225C19 *dp, &lv = *(dp=new (buf) S10225C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S10225C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10225C19)");
    check_base_class_offset(lv, (S10225C4*), 0, "S10225C19");
    check_field_offset(lv, s10225c19f0, ABISELECT(8,4), "S10225C19.s10225c19f0");
    test_class_info(&lv, &cd_S10225C19);
    dp->~S10225C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10225C19(Test_S10225C19, "S10225C19", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S10225C19C1Ev();
extern void _ZN9S10225C19D1Ev();
Name_Map name_map_S10225C19[] = {
  NSPAIR(_ZN9S10225C19C1Ev),
  NSPAIR(_ZN9S10225C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10225C4;
extern VTBL_ENTRY _ZTI8S10225C4[];
extern  VTBL_ENTRY _ZTV8S10225C4[];
static Base_Class bases_S10225C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10225C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S10225C19[];
extern void _ZN9S10225C19D1Ev();
extern void _ZN9S10225C19D0Ev();
extern void _ZN8S10225C43v18Ev();
extern void _ZN8S10225C43v19Ev();
extern void _ZN8S10225C43v20Ev();
extern void _ZN9S10225C193v21Ev();
extern void _ZN9S10225C193v22Ev();
extern void _ZN9S10225C193v23Ev();
static  VTBL_ENTRY vtc_S10225C19[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S10225C19[0]),
  (VTBL_ENTRY)&_ZN9S10225C19D1Ev,
  (VTBL_ENTRY)&_ZN9S10225C19D0Ev,
  (VTBL_ENTRY)&_ZN8S10225C43v18Ev,
  (VTBL_ENTRY)&_ZN8S10225C43v19Ev,
  (VTBL_ENTRY)&_ZN8S10225C43v20Ev,
  (VTBL_ENTRY)&_ZN9S10225C193v21Ev,
  (VTBL_ENTRY)&_ZN9S10225C193v22Ev,
  (VTBL_ENTRY)&_ZN9S10225C193v23Ev,
};
extern VTBL_ENTRY _ZTI9S10225C19[];
extern  VTBL_ENTRY _ZTV9S10225C19[];
Class_Descriptor cd_S10225C19 = {  "S10225C19", // class name
  bases_S10225C19, 1,
  &(vtc_S10225C19[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S10225C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S10225C19),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  S10225C1  : S10225C2_nt {
  char s10225c1f0;
  ::S10225C3 s10225c1f1;
  ::S2405C25 s10225c1f2;
  ::S10225C3 s10225c1f3;
  ::S2405C5_nt s10225c1f4;
  int s10225c1f5[2];
  void *s10225c1f6;
  ::S11969C23_nt s10225c1f7;
  int s10225c1f8;
  ::S10225C3 s10225c1f9;
  ::S10225C15_nt s10225c1f10;
  int s10225c1f11;
  ::S10225C3 s10225c1f12;
  ::S10225C19 s10225c1f13;
  ::S2405C22 s10225c1f14;
  int s10225c1f15;
  virtual  ~S10225C1(); // _ZN8S10225C1D1Ev
  virtual void  v1(); // _ZN8S10225C12v1Ev
  virtual void  v2(); // _ZN8S10225C12v2Ev
  virtual void  v3(); // _ZN8S10225C12v3Ev
  virtual void  v4(); // _ZN8S10225C12v4Ev
  virtual void  v5(); // _ZN8S10225C12v5Ev
  virtual void  v6(); // _ZN8S10225C12v6Ev
  virtual void  v7(); // _ZN8S10225C12v7Ev
  S10225C1(); // tgen
};
//SIG(1 S10225C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 v4 v5 v6 v7 Fc FC3{ BC4{ vd v18 v19 v20} vd v15 v16 v17 FC5{ FL[4]}} FC6{ BC7{ m Fp Fi FC8{ m} FC8}} FC3 FC9{ BC10{ m Fp Fi FC11{ m} FC12{ m}}} Fi[2] Fp FC13{ m Fp} Fi FC3 FC14{ BC7} Fi FC3 FC15{ BC4 vd v21 v22 v23 Fi} FC16{ m Fp Fi FC17{ m} FC17} Fi}


 S10225C1 ::~S10225C1(){ note_dtor("S10225C1", this);}
void  S10225C1 ::v1(){vfunc_called(this, "_ZN8S10225C12v1Ev");}
void  S10225C1 ::v2(){vfunc_called(this, "_ZN8S10225C12v2Ev");}
void  S10225C1 ::v3(){vfunc_called(this, "_ZN8S10225C12v3Ev");}
void  S10225C1 ::v4(){vfunc_called(this, "_ZN8S10225C12v4Ev");}
void  S10225C1 ::v5(){vfunc_called(this, "_ZN8S10225C12v5Ev");}
void  S10225C1 ::v6(){vfunc_called(this, "_ZN8S10225C12v6Ev");}
void  S10225C1 ::v7(){vfunc_called(this, "_ZN8S10225C12v7Ev");}
S10225C1 ::S10225C1(){ note_ctor("S10225C1", this);} // tgen

static void Test_S10225C1()
{
  extern Class_Descriptor cd_S10225C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,60)];
    init_test(&cd_S10225C1, buf);
    S10225C1 *dp, &lv = *(dp=new (buf) S10225C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,236), "sizeof(S10225C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10225C1)");
    check_base_class_offset(lv, (S10225C2_nt*), 0, "S10225C1");
    check_field_offset(lv, s10225c1f0, ABISELECT(8,4), "S10225C1.s10225c1f0");
    check_field_offset(lv, s10225c1f1, ABISELECT(16,8), "S10225C1.s10225c1f1");
    check_field_offset(lv, s10225c1f2, ABISELECT(56,44), "S10225C1.s10225c1f2");
    check_field_offset(lv, s10225c1f3, ABISELECT(72,56), "S10225C1.s10225c1f3");
    check_field_offset(lv, s10225c1f4, ABISELECT(112,92), "S10225C1.s10225c1f4");
    check_field_offset(lv, s10225c1f5, ABISELECT(128,104), "S10225C1.s10225c1f5");
    check_field_offset(lv, s10225c1f6, ABISELECT(136,112), "S10225C1.s10225c1f6");
    check_field_offset(lv, s10225c1f7, ABISELECT(144,116), "S10225C1.s10225c1f7");
    check_field_offset(lv, s10225c1f8, ABISELECT(152,120), "S10225C1.s10225c1f8");
    check_field_offset(lv, s10225c1f9, ABISELECT(160,124), "S10225C1.s10225c1f9");
    check_field_offset(lv, s10225c1f10, ABISELECT(200,160), "S10225C1.s10225c1f10");
    check_field_offset(lv, s10225c1f11, ABISELECT(216,172), "S10225C1.s10225c1f11");
    check_field_offset(lv, s10225c1f12, ABISELECT(224,176), "S10225C1.s10225c1f12");
    check_field_offset(lv, s10225c1f13, ABISELECT(264,212), "S10225C1.s10225c1f13");
    check_field_offset(lv, s10225c1f14, ABISELECT(280,220), "S10225C1.s10225c1f14");
    check_field_offset(lv, s10225c1f15, ABISELECT(296,232), "S10225C1.s10225c1f15");
    test_class_info(&lv, &cd_S10225C1);
    dp->~S10225C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10225C1(Test_S10225C1, "S10225C1", ABISELECT(304,236));

#else // __cplusplus

extern void _ZN8S10225C1C1Ev();
extern void _ZN8S10225C1D1Ev();
Name_Map name_map_S10225C1[] = {
  NSPAIR(_ZN8S10225C1C1Ev),
  NSPAIR(_ZN8S10225C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10225C2_nt;
extern VTBL_ENTRY _ZTI11S10225C2_nt[];
extern  VTBL_ENTRY _ZTV11S10225C2_nt[];
static Base_Class bases_S10225C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10225C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10225C1[];
extern void _ZN8S10225C1D1Ev();
extern void _ZN8S10225C1D0Ev();
extern void _ZN11S10225C2_nt2v8Ev();
extern void _ZN11S10225C2_nt2v9Ev();
extern void _ZN11S10225C2_nt3v10Ev();
extern void _ZN11S10225C2_nt3v11Ev();
extern void _ZN11S10225C2_nt3v12Ev();
extern void _ZN11S10225C2_nt3v13Ev();
extern void _ZN11S10225C2_nt3v14Ev();
extern void _ZN8S10225C12v1Ev();
extern void _ZN8S10225C12v2Ev();
extern void _ZN8S10225C12v3Ev();
extern void _ZN8S10225C12v4Ev();
extern void _ZN8S10225C12v5Ev();
extern void _ZN8S10225C12v6Ev();
extern void _ZN8S10225C12v7Ev();
static  VTBL_ENTRY vtc_S10225C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10225C1[0]),
  (VTBL_ENTRY)&_ZN8S10225C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10225C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10225C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S10225C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10225C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10225C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10225C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10225C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10225C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10225C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S10225C1[];
extern  VTBL_ENTRY _ZTV8S10225C1[];
Class_Descriptor cd_S10225C1 = {  "S10225C1", // class name
  bases_S10225C1, 1,
  &(vtc_S10225C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,236), // object size
  NSPAIRA(_ZTI8S10225C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10225C1),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10224C2  {
  virtual  ~S10224C2(); // _ZN8S10224C2D1Ev
  virtual void  v8(); // _ZN8S10224C22v8Ev
  virtual void  v9(); // _ZN8S10224C22v9Ev
  virtual void  v10(); // _ZN8S10224C23v10Ev
  virtual void  v11(); // _ZN8S10224C23v11Ev
  virtual void  v12(); // _ZN8S10224C23v12Ev
  virtual void  v13(); // _ZN8S10224C23v13Ev
  virtual void  v14(); // _ZN8S10224C23v14Ev
  S10224C2(); // tgen
};
//SIG(-1 S10224C2) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S10224C2 ::~S10224C2(){ note_dtor("S10224C2", this);}
void  S10224C2 ::v8(){vfunc_called(this, "_ZN8S10224C22v8Ev");}
void  S10224C2 ::v9(){vfunc_called(this, "_ZN8S10224C22v9Ev");}
void  S10224C2 ::v10(){vfunc_called(this, "_ZN8S10224C23v10Ev");}
void  S10224C2 ::v11(){vfunc_called(this, "_ZN8S10224C23v11Ev");}
void  S10224C2 ::v12(){vfunc_called(this, "_ZN8S10224C23v12Ev");}
void  S10224C2 ::v13(){vfunc_called(this, "_ZN8S10224C23v13Ev");}
void  S10224C2 ::v14(){vfunc_called(this, "_ZN8S10224C23v14Ev");}
S10224C2 ::S10224C2(){ note_ctor("S10224C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10224C2C1Ev();
extern void _ZN8S10224C2D1Ev();
Name_Map name_map_S10224C2[] = {
  NSPAIR(_ZN8S10224C2C1Ev),
  NSPAIR(_ZN8S10224C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10224C2[];
extern void _ZN8S10224C2D1Ev();
extern void _ZN8S10224C2D0Ev();
extern void _ZN8S10224C22v8Ev();
extern void _ZN8S10224C22v9Ev();
extern void _ZN8S10224C23v10Ev();
extern void _ZN8S10224C23v11Ev();
extern void _ZN8S10224C23v12Ev();
extern void _ZN8S10224C23v13Ev();
extern void _ZN8S10224C23v14Ev();
static  VTBL_ENTRY vtc_S10224C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10224C2[0]),
  (VTBL_ENTRY)&_ZN8S10224C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10224C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10224C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10224C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10224C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10224C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10224C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10224C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10224C23v14Ev,
};
extern VTBL_ENTRY _ZTI8S10224C2[];
extern  VTBL_ENTRY _ZTV8S10224C2[];
Class_Descriptor cd_S10224C2 = {  "S10224C2", // class name
  0,0,//no base classes
  &(vtc_S10224C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10224C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10224C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10224C4  {
  virtual  ~S10224C4(); // _ZN8S10224C4D1Ev
  virtual void  v18(); // _ZN8S10224C43v18Ev
  virtual void  v19(); // _ZN8S10224C43v19Ev
  virtual void  v20(); // _ZN8S10224C43v20Ev
  S10224C4(); // tgen
};
//SIG(-1 S10224C4) C1{ vd v1 v2 v3}


 S10224C4 ::~S10224C4(){ note_dtor("S10224C4", this);}
void  S10224C4 ::v18(){vfunc_called(this, "_ZN8S10224C43v18Ev");}
void  S10224C4 ::v19(){vfunc_called(this, "_ZN8S10224C43v19Ev");}
void  S10224C4 ::v20(){vfunc_called(this, "_ZN8S10224C43v20Ev");}
S10224C4 ::S10224C4(){ note_ctor("S10224C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10224C4C1Ev();
extern void _ZN8S10224C4D1Ev();
Name_Map name_map_S10224C4[] = {
  NSPAIR(_ZN8S10224C4C1Ev),
  NSPAIR(_ZN8S10224C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10224C4[];
extern void _ZN8S10224C4D1Ev();
extern void _ZN8S10224C4D0Ev();
extern void _ZN8S10224C43v18Ev();
extern void _ZN8S10224C43v19Ev();
extern void _ZN8S10224C43v20Ev();
static  VTBL_ENTRY vtc_S10224C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10224C4[0]),
  (VTBL_ENTRY)&_ZN8S10224C4D1Ev,
  (VTBL_ENTRY)&_ZN8S10224C4D0Ev,
  (VTBL_ENTRY)&_ZN8S10224C43v18Ev,
  (VTBL_ENTRY)&_ZN8S10224C43v19Ev,
  (VTBL_ENTRY)&_ZN8S10224C43v20Ev,
};
extern VTBL_ENTRY _ZTI8S10224C4[];
extern  VTBL_ENTRY _ZTV8S10224C4[];
Class_Descriptor cd_S10224C4 = {  "S10224C4", // class name
  0,0,//no base classes
  &(vtc_S10224C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10224C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10224C4),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10224C5_nt  {
  long s10224c5f0[4];
};
//SIG(-1 S10224C5_nt) C1{ Fl[4]}



//skip512 S10224C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10224C3  : S10224C4 {
  ::S10224C5_nt s10224c3f0;
  virtual  ~S10224C3(); // _ZN8S10224C3D1Ev
  virtual void  v15(); // _ZN8S10224C33v15Ev
  virtual void  v16(); // _ZN8S10224C33v16Ev
  virtual void  v17(); // _ZN8S10224C33v17Ev
  S10224C3(); // tgen
};
//SIG(-1 S10224C3) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ Fl[4]}}


 S10224C3 ::~S10224C3(){ note_dtor("S10224C3", this);}
void  S10224C3 ::v15(){vfunc_called(this, "_ZN8S10224C33v15Ev");}
void  S10224C3 ::v16(){vfunc_called(this, "_ZN8S10224C33v16Ev");}
void  S10224C3 ::v17(){vfunc_called(this, "_ZN8S10224C33v17Ev");}
S10224C3 ::S10224C3(){ note_ctor("S10224C3", this);} // tgen

static void Test_S10224C3()
{
  extern Class_Descriptor cd_S10224C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S10224C3, buf);
    S10224C3 *dp, &lv = *(dp=new (buf) S10224C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S10224C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10224C3)");
    check_base_class_offset(lv, (S10224C4*), 0, "S10224C3");
    check_field_offset(lv, s10224c3f0, ABISELECT(8,4), "S10224C3.s10224c3f0");
    test_class_info(&lv, &cd_S10224C3);
    dp->~S10224C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10224C3(Test_S10224C3, "S10224C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S10224C3C1Ev();
extern void _ZN8S10224C3D1Ev();
Name_Map name_map_S10224C3[] = {
  NSPAIR(_ZN8S10224C3C1Ev),
  NSPAIR(_ZN8S10224C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10224C4;
extern VTBL_ENTRY _ZTI8S10224C4[];
extern  VTBL_ENTRY _ZTV8S10224C4[];
static Base_Class bases_S10224C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10224C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10224C3[];
extern void _ZN8S10224C3D1Ev();
extern void _ZN8S10224C3D0Ev();
extern void _ZN8S10224C43v18Ev();
extern void _ZN8S10224C43v19Ev();
extern void _ZN8S10224C43v20Ev();
extern void _ZN8S10224C33v15Ev();
extern void _ZN8S10224C33v16Ev();
extern void _ZN8S10224C33v17Ev();
static  VTBL_ENTRY vtc_S10224C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10224C3[0]),
  (VTBL_ENTRY)&_ZN8S10224C3D1Ev,
  (VTBL_ENTRY)&_ZN8S10224C3D0Ev,
  (VTBL_ENTRY)&_ZN8S10224C43v18Ev,
  (VTBL_ENTRY)&_ZN8S10224C43v19Ev,
  (VTBL_ENTRY)&_ZN8S10224C43v20Ev,
  (VTBL_ENTRY)&_ZN8S10224C33v15Ev,
  (VTBL_ENTRY)&_ZN8S10224C33v16Ev,
  (VTBL_ENTRY)&_ZN8S10224C33v17Ev,
};
extern VTBL_ENTRY _ZTI8S10224C3[];
extern  VTBL_ENTRY _ZTV8S10224C3[];
Class_Descriptor cd_S10224C3 = {  "S10224C3", // class name
  bases_S10224C3, 1,
  &(vtc_S10224C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S10224C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10224C3),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  S10224C1  : S10224C2 {
  char s10224c1f0;
  ::S10224C3 s10224c1f1;
  ::S10225C15_nt s10224c1f2;
  ::S10224C3 s10224c1f3;
  ::S2405C25 s10224c1f4;
  int s10224c1f5[2];
  void *s10224c1f6;
  ::S11969C23_nt s10224c1f7;
  int s10224c1f8;
  ::S10224C3 s10224c1f9;
  ::S2405C5_nt s10224c1f10;
  int s10224c1f11;
  ::S10224C3 s10224c1f12;
  ::S10225C19 s10224c1f13;
  ::S2405C26 s10224c1f14;
  int s10224c1f15;
  virtual  ~S10224C1(); // _ZN8S10224C1D1Ev
  virtual void  v1(); // _ZN8S10224C12v1Ev
  virtual void  v2(); // _ZN8S10224C12v2Ev
  virtual void  v3(); // _ZN8S10224C12v3Ev
  virtual void  v4(); // _ZN8S10224C12v4Ev
  virtual void  v5(); // _ZN8S10224C12v5Ev
  virtual void  v6(); // _ZN8S10224C12v6Ev
  virtual void  v7(); // _ZN8S10224C12v7Ev
  S10224C1(); // tgen
};
//SIG(1 S10224C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 v4 v5 v6 v7 Fc FC3{ BC4{ vd v18 v19 v20} vd v15 v16 v17 FC5{ Fl[4]}} FC6{ BC7{ m Fp Fi FC8{ m} FC8}} FC3 FC9{ BC7} Fi[2] Fp FC10{ m Fp} Fi FC3 FC11{ BC12{ m Fp Fi FC13{ m} FC14{ m}}} Fi FC3 FC15{ BC16{ vd v24 v25 v26} vd v21 v22 v23 Fi} FC7 Fi}


 S10224C1 ::~S10224C1(){ note_dtor("S10224C1", this);}
void  S10224C1 ::v1(){vfunc_called(this, "_ZN8S10224C12v1Ev");}
void  S10224C1 ::v2(){vfunc_called(this, "_ZN8S10224C12v2Ev");}
void  S10224C1 ::v3(){vfunc_called(this, "_ZN8S10224C12v3Ev");}
void  S10224C1 ::v4(){vfunc_called(this, "_ZN8S10224C12v4Ev");}
void  S10224C1 ::v5(){vfunc_called(this, "_ZN8S10224C12v5Ev");}
void  S10224C1 ::v6(){vfunc_called(this, "_ZN8S10224C12v6Ev");}
void  S10224C1 ::v7(){vfunc_called(this, "_ZN8S10224C12v7Ev");}
S10224C1 ::S10224C1(){ note_ctor("S10224C1", this);} // tgen

static void Test_S10224C1()
{
  extern Class_Descriptor cd_S10224C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,44)];
    init_test(&cd_S10224C1, buf);
    S10224C1 *dp, &lv = *(dp=new (buf) S10224C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,172), "sizeof(S10224C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10224C1)");
    check_base_class_offset(lv, (S10224C2*), 0, "S10224C1");
    check_field_offset(lv, s10224c1f0, ABISELECT(8,4), "S10224C1.s10224c1f0");
    check_field_offset(lv, s10224c1f1, ABISELECT(16,8), "S10224C1.s10224c1f1");
    check_field_offset(lv, s10224c1f2, ABISELECT(56,28), "S10224C1.s10224c1f2");
    check_field_offset(lv, s10224c1f3, ABISELECT(72,40), "S10224C1.s10224c1f3");
    check_field_offset(lv, s10224c1f4, ABISELECT(112,60), "S10224C1.s10224c1f4");
    check_field_offset(lv, s10224c1f5, ABISELECT(128,72), "S10224C1.s10224c1f5");
    check_field_offset(lv, s10224c1f6, ABISELECT(136,80), "S10224C1.s10224c1f6");
    check_field_offset(lv, s10224c1f7, ABISELECT(144,84), "S10224C1.s10224c1f7");
    check_field_offset(lv, s10224c1f8, ABISELECT(152,88), "S10224C1.s10224c1f8");
    check_field_offset(lv, s10224c1f9, ABISELECT(160,92), "S10224C1.s10224c1f9");
    check_field_offset(lv, s10224c1f10, ABISELECT(200,112), "S10224C1.s10224c1f10");
    check_field_offset(lv, s10224c1f11, ABISELECT(216,124), "S10224C1.s10224c1f11");
    check_field_offset(lv, s10224c1f12, ABISELECT(224,128), "S10224C1.s10224c1f12");
    check_field_offset(lv, s10224c1f13, ABISELECT(264,148), "S10224C1.s10224c1f13");
    check_field_offset(lv, s10224c1f14, ABISELECT(280,156), "S10224C1.s10224c1f14");
    check_field_offset(lv, s10224c1f15, ABISELECT(296,168), "S10224C1.s10224c1f15");
    test_class_info(&lv, &cd_S10224C1);
    dp->~S10224C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10224C1(Test_S10224C1, "S10224C1", ABISELECT(304,172));

#else // __cplusplus

extern void _ZN8S10224C1C1Ev();
extern void _ZN8S10224C1D1Ev();
Name_Map name_map_S10224C1[] = {
  NSPAIR(_ZN8S10224C1C1Ev),
  NSPAIR(_ZN8S10224C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10224C2;
extern VTBL_ENTRY _ZTI8S10224C2[];
extern  VTBL_ENTRY _ZTV8S10224C2[];
static Base_Class bases_S10224C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10224C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10224C1[];
extern void _ZN8S10224C1D1Ev();
extern void _ZN8S10224C1D0Ev();
extern void _ZN8S10224C22v8Ev();
extern void _ZN8S10224C22v9Ev();
extern void _ZN8S10224C23v10Ev();
extern void _ZN8S10224C23v11Ev();
extern void _ZN8S10224C23v12Ev();
extern void _ZN8S10224C23v13Ev();
extern void _ZN8S10224C23v14Ev();
extern void _ZN8S10224C12v1Ev();
extern void _ZN8S10224C12v2Ev();
extern void _ZN8S10224C12v3Ev();
extern void _ZN8S10224C12v4Ev();
extern void _ZN8S10224C12v5Ev();
extern void _ZN8S10224C12v6Ev();
extern void _ZN8S10224C12v7Ev();
static  VTBL_ENTRY vtc_S10224C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10224C1[0]),
  (VTBL_ENTRY)&_ZN8S10224C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10224C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10224C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10224C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10224C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10224C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10224C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10224C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10224C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10224C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10224C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10224C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10224C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10224C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10224C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10224C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S10224C1[];
extern  VTBL_ENTRY _ZTV8S10224C1[];
Class_Descriptor cd_S10224C1 = {  "S10224C1", // class name
  bases_S10224C1, 1,
  &(vtc_S10224C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,172), // object size
  NSPAIRA(_ZTI8S10224C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10224C1),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19403C3  {
  virtual void  v7(); // _ZN8S19403C32v7Ev
  virtual void  v8(); // _ZN8S19403C32v8Ev
  virtual void  v9(); // _ZN8S19403C32v9Ev
  virtual void  v10(); // _ZN8S19403C33v10Ev
  ~S19403C3(); // tgen
  S19403C3(); // tgen
};
//SIG(-1 S19403C3) C1{ v1 v2 v3 v4}


void  S19403C3 ::v7(){vfunc_called(this, "_ZN8S19403C32v7Ev");}
void  S19403C3 ::v8(){vfunc_called(this, "_ZN8S19403C32v8Ev");}
void  S19403C3 ::v9(){vfunc_called(this, "_ZN8S19403C32v9Ev");}
void  S19403C3 ::v10(){vfunc_called(this, "_ZN8S19403C33v10Ev");}
S19403C3 ::~S19403C3(){ note_dtor("S19403C3", this);} // tgen
S19403C3 ::S19403C3(){ note_ctor("S19403C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19403C3C1Ev();
extern void _ZN8S19403C3D1Ev();
Name_Map name_map_S19403C3[] = {
  NSPAIR(_ZN8S19403C3C1Ev),
  NSPAIR(_ZN8S19403C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19403C3[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY vtc_S19403C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C3[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
Class_Descriptor cd_S19403C3 = {  "S19403C3", // class name
  0,0,//no base classes
  &(vtc_S19403C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19403C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19403C3),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  S19403C2  : S19403C3 {
  ::S19403C3 s19403c2f0;
  virtual void  v11(); // _ZN8S19403C23v11Ev
  virtual void  v12(); // _ZN8S19403C23v12Ev
  ~S19403C2(); // tgen
  S19403C2(); // tgen
};
//SIG(-1 S19403C2) C1{ BC2{ v3 v4 v5 v6} v1 v2 FC2}


void  S19403C2 ::v11(){vfunc_called(this, "_ZN8S19403C23v11Ev");}
void  S19403C2 ::v12(){vfunc_called(this, "_ZN8S19403C23v12Ev");}
S19403C2 ::~S19403C2(){ note_dtor("S19403C2", this);} // tgen
S19403C2 ::S19403C2(){ note_ctor("S19403C2", this);} // tgen

static void Test_S19403C2()
{
  extern Class_Descriptor cd_S19403C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19403C2, buf);
    S19403C2 *dp, &lv = *(dp=new (buf) S19403C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19403C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19403C2)");
    check_base_class_offset(lv, (S19403C3*), 0, "S19403C2");
    check_field_offset(lv, s19403c2f0, ABISELECT(8,4), "S19403C2.s19403c2f0");
    test_class_info(&lv, &cd_S19403C2);
    dp->~S19403C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19403C2(Test_S19403C2, "S19403C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19403C2C1Ev();
extern void _ZN8S19403C2D1Ev();
Name_Map name_map_S19403C2[] = {
  NSPAIR(_ZN8S19403C2C1Ev),
  NSPAIR(_ZN8S19403C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
static Base_Class bases_S19403C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19403C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19403C2[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
static  VTBL_ENTRY vtc_S19403C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C2[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
};
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
Class_Descriptor cd_S19403C2 = {  "S19403C2", // class name
  bases_S19403C2, 1,
  &(vtc_S19403C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19403C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19403C2),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  S19403C5  : virtual S19403C2 {
  ::S19403C2 s19403c5f0;
  long double s19403c5f1;
  virtual  ~S19403C5(); // _ZN8S19403C5D2Ev
  virtual void  v13(); // _ZN8S19403C53v13Ev
  virtual void  v14(); // _ZN8S19403C53v14Ev
  virtual void  v15(); // _ZN8S19403C53v15Ev
  S19403C5(); // tgen
};
//SIG(-1 S19403C5) C1{ VBC2{ BC3{ v4 v5 v6 v7} v8 v9 FC3} vd v1 v2 v3 FC2 FD}


 S19403C5 ::~S19403C5(){ note_dtor("S19403C5", this);}
void  S19403C5 ::v13(){vfunc_called(this, "_ZN8S19403C53v13Ev");}
void  S19403C5 ::v14(){vfunc_called(this, "_ZN8S19403C53v14Ev");}
void  S19403C5 ::v15(){vfunc_called(this, "_ZN8S19403C53v15Ev");}
S19403C5 ::S19403C5(){ note_ctor("S19403C5", this);} // tgen

static void Test_S19403C5()
{
  extern Class_Descriptor cd_S19403C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S19403C5, buf);
    S19403C5 *dp, &lv = *(dp=new (buf) S19403C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19403C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19403C5)");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*), ABISELECT(48,24), "S19403C5");
    check_base_class_offset(lv, (S19403C2*), ABISELECT(48,24), "S19403C5");
    check_field_offset(lv, s19403c5f0, ABISELECT(8,4), "S19403C5.s19403c5f0");
    check_field_offset(lv, s19403c5f1, ABISELECT(32,12), "S19403C5.s19403c5f1");
    test_class_info(&lv, &cd_S19403C5);
    dp->~S19403C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19403C5(Test_S19403C5, "S19403C5", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S19403C5C1Ev();
extern void _ZN8S19403C5D2Ev();
Name_Map name_map_S19403C5[] = {
  NSPAIR(_ZN8S19403C5C1Ev),
  NSPAIR(_ZN8S19403C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
static Base_Class bases_S19403C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19403C3,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(48,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19403C5[];
extern void _ZN8S19403C5D1Ev();
extern void _ZN8S19403C5D0Ev();
extern void _ZN8S19403C53v13Ev();
extern void _ZN8S19403C53v14Ev();
extern void _ZN8S19403C53v15Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
static  VTBL_ENTRY vtc_S19403C5[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C5[0]),
  (VTBL_ENTRY)&_ZN8S19403C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19403C5[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
};
extern VTBL_ENTRY _ZTV8S19403C5[];
static  VTT_ENTRY vtt_S19403C5[] = {
  {&(_ZTV8S19403C5[3]),  3,22},
  {&(_ZTV8S19403C5[16]),  16,22},
};
extern VTBL_ENTRY _ZTI8S19403C5[];
extern  VTBL_ENTRY _ZTV8S19403C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19403C5[];
Class_Descriptor cd_S19403C5 = {  "S19403C5", // class name
  bases_S19403C5, 2,
  &(vtc_S19403C5[0]), // expected_vtbl_contents
  &(vtt_S19403C5[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S19403C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19403C5),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19403C5),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19403C6  : S19403C2 , S19403C3 {
  int s19403c6f0;
  virtual  ~S19403C6(); // _ZN8S19403C6D1Ev
  virtual void  v16(); // _ZN8S19403C63v16Ev
  virtual void  v17(); // _ZN8S19403C63v17Ev
  virtual void  v18(); // _ZN8S19403C63v18Ev
  virtual void  v19(); // _ZN8S19403C63v19Ev
  virtual void  v20(); // _ZN8S19403C63v20Ev
  virtual void  v21(); // _ZN8S19403C63v21Ev
  S19403C6(); // tgen
};
//SIG(-1 S19403C6) C1{ BC2{ BC3{ v7 v8 v9 v10} v11 v12 FC3} BC3 vd v1 v2 v3 v4 v5 v6 Fi}


 S19403C6 ::~S19403C6(){ note_dtor("S19403C6", this);}
void  S19403C6 ::v16(){vfunc_called(this, "_ZN8S19403C63v16Ev");}
void  S19403C6 ::v17(){vfunc_called(this, "_ZN8S19403C63v17Ev");}
void  S19403C6 ::v18(){vfunc_called(this, "_ZN8S19403C63v18Ev");}
void  S19403C6 ::v19(){vfunc_called(this, "_ZN8S19403C63v19Ev");}
void  S19403C6 ::v20(){vfunc_called(this, "_ZN8S19403C63v20Ev");}
void  S19403C6 ::v21(){vfunc_called(this, "_ZN8S19403C63v21Ev");}
S19403C6 ::S19403C6(){ note_ctor("S19403C6", this);} // tgen

static void Test_S19403C6()
{
  extern Class_Descriptor cd_S19403C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19403C6, buf);
    S19403C6 *dp, &lv = *(dp=new (buf) S19403C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19403C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19403C6)");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*), 0, "S19403C6");
    check_base_class_offset(lv, (S19403C2*), 0, "S19403C6");
    /*is_ambiguous_... S19403C6::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*), ABISELECT(16,8), "S19403C6");
    check_field_offset(lv, s19403c6f0, ABISELECT(24,12), "S19403C6.s19403c6f0");
    test_class_info(&lv, &cd_S19403C6);
    dp->~S19403C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19403C6(Test_S19403C6, "S19403C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19403C6C1Ev();
extern void _ZN8S19403C6D1Ev();
Name_Map name_map_S19403C6[] = {
  NSPAIR(_ZN8S19403C6C1Ev),
  NSPAIR(_ZN8S19403C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
static Base_Class bases_S19403C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19403C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19403C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19403C3,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19403C6[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C6D1Ev();
extern void _ZN8S19403C6D0Ev();
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY vtc_S19403C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C6[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19403C6[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern VTBL_ENTRY _ZTI8S19403C6[];
extern  VTBL_ENTRY _ZTV8S19403C6[];
Class_Descriptor cd_S19403C6 = {  "S19403C6", // class name
  bases_S19403C6, 3,
  &(vtc_S19403C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19403C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19403C6),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19403C8  : virtual S19403C3 , S19403C2 {
  virtual  ~S19403C8(); // _ZN8S19403C8D2Ev
  virtual void  v28(); // _ZN8S19403C83v28Ev
  S19403C8(); // tgen
};
//SIG(-1 S19403C8) C1{ VBC2{ v2 v3 v4 v5} BC3{ BC2 v6 v7 FC2} vd v1}


 S19403C8 ::~S19403C8(){ note_dtor("S19403C8", this);}
void  S19403C8 ::v28(){vfunc_called(this, "_ZN8S19403C83v28Ev");}
S19403C8 ::S19403C8(){ note_ctor("S19403C8", this);} // tgen

static void Test_S19403C8()
{
  extern Class_Descriptor cd_S19403C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19403C8, buf);
    S19403C8 *dp, &lv = *(dp=new (buf) S19403C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19403C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19403C8)");
    /*is_ambiguous_... S19403C8::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*), ABISELECT(16,8), "S19403C8");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*), 0, "S19403C8");
    check_base_class_offset(lv, (S19403C2*), 0, "S19403C8");
    test_class_info(&lv, &cd_S19403C8);
    dp->~S19403C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19403C8(Test_S19403C8, "S19403C8", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19403C8C1Ev();
extern void _ZN8S19403C8D2Ev();
Name_Map name_map_S19403C8[] = {
  NSPAIR(_ZN8S19403C8C1Ev),
  NSPAIR(_ZN8S19403C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
static Base_Class bases_S19403C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19403C3,    ABISELECT(16,8), //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_S19403C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19403C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S19403C8[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C8D1Ev();
extern void _ZN8S19403C8D0Ev();
extern void _ZN8S19403C83v28Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY vtc_S19403C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C8[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19403C8[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern VTBL_ENTRY _ZTV8S19403C8[];
static  VTT_ENTRY vtt_S19403C8[] = {
  {&(_ZTV8S19403C8[3]),  3,22},
  {&(_ZTV8S19403C8[18]),  18,22},
};
extern VTBL_ENTRY _ZTI8S19403C8[];
extern  VTBL_ENTRY _ZTV8S19403C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19403C8[];
Class_Descriptor cd_S19403C8 = {  "S19403C8", // class name
  bases_S19403C8, 3,
  &(vtc_S19403C8[0]), // expected_vtbl_contents
  &(vtt_S19403C8[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19403C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19403C8),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19403C8),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19403C7  : S19403C2 , S19403C3 {
  ::S19403C8 s19403c7f0;
  ::S20980C10_nt s19403c7f1;
  ::S20980C10_nt s19403c7f2;
  int s19403c7f3;
  virtual void  v22(); // _ZN8S19403C73v22Ev
  virtual void  v23(); // _ZN8S19403C73v23Ev
  virtual void  v24(); // _ZN8S19403C73v24Ev
  virtual void  v25(); // _ZN8S19403C73v25Ev
  ~S19403C7(); // tgen
  S19403C7(); // tgen
};
//SIG(-1 S19403C7) C1{ BC2{ BC3{ v5 v6 v7 v8} v9 v10 FC3} BC3 v1 v2 v3 v4 FC4{ VBC3 BC2 vd v11} FU5{ m} FU5 Fi}


void  S19403C7 ::v22(){vfunc_called(this, "_ZN8S19403C73v22Ev");}
void  S19403C7 ::v23(){vfunc_called(this, "_ZN8S19403C73v23Ev");}
void  S19403C7 ::v24(){vfunc_called(this, "_ZN8S19403C73v24Ev");}
void  S19403C7 ::v25(){vfunc_called(this, "_ZN8S19403C73v25Ev");}
S19403C7 ::~S19403C7(){ note_dtor("S19403C7", this);} // tgen
S19403C7 ::S19403C7(){ note_ctor("S19403C7", this);} // tgen

static void Test_S19403C7()
{
  extern Class_Descriptor cd_S19403C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19403C7, buf);
    S19403C7 *dp, &lv = *(dp=new (buf) S19403C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19403C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19403C7)");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*), 0, "S19403C7");
    check_base_class_offset(lv, (S19403C2*), 0, "S19403C7");
    /*is_ambiguous_... S19403C7::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*), ABISELECT(16,8), "S19403C7");
    check_field_offset(lv, s19403c7f0, ABISELECT(24,12), "S19403C7.s19403c7f0");
    check_field_offset(lv, s19403c7f1, ABISELECT(48,24), "S19403C7.s19403c7f1");
    check_field_offset(lv, s19403c7f2, ABISELECT(49,25), "S19403C7.s19403c7f2");
    check_field_offset(lv, s19403c7f3, ABISELECT(52,28), "S19403C7.s19403c7f3");
    test_class_info(&lv, &cd_S19403C7);
    dp->~S19403C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19403C7(Test_S19403C7, "S19403C7", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19403C7C1Ev();
extern void _ZN8S19403C7D1Ev();
Name_Map name_map_S19403C7[] = {
  NSPAIR(_ZN8S19403C7C1Ev),
  NSPAIR(_ZN8S19403C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
static Base_Class bases_S19403C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19403C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19403C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19403C3,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19403C7[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C73v22Ev();
extern void _ZN8S19403C73v23Ev();
extern void _ZN8S19403C73v24Ev();
extern void _ZN8S19403C73v25Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY vtc_S19403C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C7[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v25Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19403C7[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern VTBL_ENTRY _ZTI8S19403C7[];
extern  VTBL_ENTRY _ZTV8S19403C7[];
Class_Descriptor cd_S19403C7 = {  "S19403C7", // class name
  bases_S19403C7, 3,
  &(vtc_S19403C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19403C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19403C7),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19403C4  : virtual S19403C5 , S19403C6 , S19403C7 , S19403C2 {
  long double s19403c4f0;
  virtual  ~S19403C4(); // _ZN8S19403C4D2Ev
  S19403C4(); // tgen
};
//SIG(-1 S19403C4) C1{ VBC2{ VBC3{ BC4{ v1 v2 v3 v4} v5 v6 FC4} vd v7 v8 v9 FC3 FD} BC5{ BC3 BC4 vd v10 v11 v12 v13 v14 v15 Fi} BC6{ BC3 BC4 v16 v17 v18 v19 FC7{ VBC4 BC3 vd v20} FU8{ m} FU8 Fi} BC3 vd FD}


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

static void Test_S19403C4()
{
  extern Class_Descriptor cd_S19403C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,26)];
    init_test(&cd_S19403C4, buf);
    S19403C4 *dp, &lv = *(dp=new (buf) S19403C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S19403C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19403C4)");
    /*is_ambiguous_... S19403C4::S19403C2 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C2*), ABISELECT(176,92), "S19403C4");
    check_base_class_offset(lv, (S19403C2*)(S19403C5*), ABISELECT(176,92), "S19403C4");
    check_base_class_offset(lv, (S19403C5*), ABISELECT(128,68), "S19403C4");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C6*), 0, "S19403C4");
    check_base_class_offset(lv, (S19403C2*)(S19403C6*), 0, "S19403C4");
    /*is_ambiguous_... S19403C6::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C6*), ABISELECT(16,8), "S19403C4");
    check_base_class_offset(lv, (S19403C6*), 0, "S19403C4");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C7*), ABISELECT(32,16), "S19403C4");
    check_base_class_offset(lv, (S19403C2*)(S19403C7*), ABISELECT(32,16), "S19403C4");
    /*is_ambiguous_... S19403C7::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C7*), ABISELECT(48,24), "S19403C4");
    check_base_class_offset(lv, (S19403C7*), ABISELECT(32,16), "S19403C4");
    /*is_ambiguous_... S19403C4::S19403C2 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C2*), ABISELECT(88,48), "S19403C4");
    /*is_ambiguous_... S19403C4::S19403C2 */ AMB_check_base_class_offset(lv, (S19403C2*), ABISELECT(88,48), "S19403C4");
    check_field_offset(lv, s19403c4f0, ABISELECT(112,56), "S19403C4.s19403c4f0");
    test_class_info(&lv, &cd_S19403C4);
    dp->~S19403C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19403C4(Test_S19403C4, "S19403C4", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN8S19403C4C1Ev();
extern void _ZN8S19403C4D2Ev();
Name_Map name_map_S19403C4[] = {
  NSPAIR(_ZN8S19403C4C1Ev),
  NSPAIR(_ZN8S19403C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C5;
extern VTBL_ENTRY _ZTI8S19403C5[];
extern  VTBL_ENTRY _ZTV8S19403C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19403C5[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C6;
extern VTBL_ENTRY _ZTI8S19403C6[];
extern  VTBL_ENTRY _ZTV8S19403C6[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C7;
extern VTBL_ENTRY _ZTI8S19403C7[];
extern  VTBL_ENTRY _ZTV8S19403C7[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
static Base_Class bases_S19403C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19403C3,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(176,92), //bcp->offset
    62, //bcp->virtual_function_table_offset
    8, //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
    2, //immediately_derived
  0, 1},
  {&cd_S19403C5,    ABISELECT(128,68), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19403C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19403C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(16,8), //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
    6, //immediately_derived
  0, 0},
  {&cd_S19403C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19403C3,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(48,24), //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19403C7,    ABISELECT(32,16), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19403C3,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(88,48), //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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19403C4[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C4D1Ev();
extern void _ZN8S19403C4D0Ev();
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C73v22Ev();
extern void _ZN8S19403C73v23Ev();
extern void _ZN8S19403C73v24Ev();
extern void _ZN8S19403C73v25Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZTv0_n32_N8S19403C4D1Ev,_ZTv0_n16_N8S19403C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S19403C4D1Ev,_ZThn68_N8S19403C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19403C4D0Ev,_ZTv0_n16_N8S19403C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S19403C4D0Ev,_ZThn68_N8S19403C4D0Ev)() __attribute__((weak));
extern void _ZN8S19403C53v13Ev();
extern void _ZN8S19403C53v14Ev();
extern void _ZN8S19403C53v15Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
static  VTBL_ENTRY vtc_S19403C4[] = {
  ABISELECT(176,92),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C4[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19403C4[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19403C4[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v25Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19403C4[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S19403C4[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19403C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19403C4D1Ev,_ZTv0_n16_N8S19403C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19403C4D0Ev,_ZTv0_n16_N8S19403C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v15Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S19403C4[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
};
extern VTBL_ENTRY _ZTV8S19403C4[];
extern void _ZN8S19403C5D1Ev();
extern void _ZN8S19403C5D0Ev();
extern void _ZN8S19403C53v13Ev();
extern void _ZN8S19403C53v14Ev();
extern void _ZN8S19403C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C5__8S19403C4[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C5[0]),
  (VTBL_ENTRY)&_ZN8S19403C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v15Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C2__8S19403C5__8S19403C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19403C5[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
};
static  VTT_ENTRY vtt_S19403C4[] = {
  {&(_ZTV8S19403C4[4]),  4,76},
  {&(_ZTV8S19403C4[57]),  57,76},
  {&(_ZTV8S19403C4[70]),  70,76},
  {&(_tg__ZTV8S19403C5__8S19403C4[3]),  3,8},
  {&(_tg__ZTV8S19403C2__8S19403C5__8S19403C4[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S19403C4[];
extern  VTBL_ENTRY _ZTV8S19403C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19403C4[];
static VTBL_ENTRY alt_thunk_names166[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19403C4D0Ev,_ZTv0_n16_N8S19403C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19403C4D0Ev,_ZThn68_N8S19403C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19403C4D1Ev,_ZTv0_n16_N8S19403C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19403C4D1Ev,_ZThn68_N8S19403C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19403C4 = {  "S19403C4", // class name
  bases_S19403C4, 13,
  &(vtc_S19403C4[0]), // expected_vtbl_contents
  &(vtt_S19403C4[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI8S19403C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19403C4),76, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19403C4),5, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names166,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19403C10  {
  int s19403c10f0;
  virtual void  v26(); // _ZN9S19403C103v26Ev
  virtual void  v27(); // _ZN9S19403C103v27Ev
  ~S19403C10(); // tgen
  S19403C10(); // tgen
};
//SIG(-1 S19403C10) C1{ v1 v2 Fi}


void  S19403C10 ::v26(){vfunc_called(this, "_ZN9S19403C103v26Ev");}
void  S19403C10 ::v27(){vfunc_called(this, "_ZN9S19403C103v27Ev");}
S19403C10 ::~S19403C10(){ note_dtor("S19403C10", this);} // tgen
S19403C10 ::S19403C10(){ note_ctor("S19403C10", this);} // tgen

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

#else // __cplusplus

extern void _ZN9S19403C10C1Ev();
extern void _ZN9S19403C10D1Ev();
Name_Map name_map_S19403C10[] = {
  NSPAIR(_ZN9S19403C10C1Ev),
  NSPAIR(_ZN9S19403C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19403C10[];
extern void _ZN9S19403C103v26Ev();
extern void _ZN9S19403C103v27Ev();
static  VTBL_ENTRY vtc_S19403C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19403C10[0]),
  (VTBL_ENTRY)&_ZN9S19403C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19403C103v27Ev,
};
extern VTBL_ENTRY _ZTI9S19403C10[];
extern  VTBL_ENTRY _ZTV9S19403C10[];
Class_Descriptor cd_S19403C10 = {  "S19403C10", // class name
  0,0,//no base classes
  &(vtc_S19403C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19403C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19403C10),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  S19403C12  : S19403C6 , S19403C3 , S19403C8 {
  virtual void  v29(); // _ZN9S19403C123v29Ev
  virtual void  v30(); // _ZN9S19403C123v30Ev
  virtual void  v31(); // _ZN9S19403C123v31Ev
  ~S19403C12(); // tgen
  S19403C12(); // tgen
};
//SIG(-1 S19403C12) C1{ BC2{ BC3{ BC4{ v4 v5 v6 v7} v8 v9 FC4} BC4 vd v10 v11 v12 v13 v14 v15 Fi} BC4 BC5{ VBC4 BC3 vd v16} v1 v2 v3}


void  S19403C12 ::v29(){vfunc_called(this, "_ZN9S19403C123v29Ev");}
void  S19403C12 ::v30(){vfunc_called(this, "_ZN9S19403C123v30Ev");}
void  S19403C12 ::v31(){vfunc_called(this, "_ZN9S19403C123v31Ev");}
S19403C12 ::~S19403C12(){ note_dtor("S19403C12", this);} // tgen
S19403C12 ::S19403C12(){ note_ctor("S19403C12", this);} // tgen

static void Test_S19403C12()
{
  extern Class_Descriptor cd_S19403C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S19403C12, buf);
    S19403C12 *dp, &lv = *(dp=new (buf) S19403C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19403C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19403C12)");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C6*), 0, "S19403C12");
    check_base_class_offset(lv, (S19403C2*)(S19403C6*), 0, "S19403C12");
    /*is_ambiguous_... S19403C6::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C6*), ABISELECT(16,8), "S19403C12");
    check_base_class_offset(lv, (S19403C6*), 0, "S19403C12");
    /*is_ambiguous_... S19403C12::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*), ABISELECT(32,16), "S19403C12");
    /*is_ambiguous_... S19403C8::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C8*), ABISELECT(56,28), "S19403C12");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C8*), ABISELECT(40,20), "S19403C12");
    check_base_class_offset(lv, (S19403C2*)(S19403C8*), ABISELECT(40,20), "S19403C12");
    check_base_class_offset(lv, (S19403C8*), ABISELECT(40,20), "S19403C12");
    test_class_info(&lv, &cd_S19403C12);
    dp->~S19403C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19403C12(Test_S19403C12, "S19403C12", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S19403C12C1Ev();
extern void _ZN9S19403C12D1Ev();
Name_Map name_map_S19403C12[] = {
  NSPAIR(_ZN9S19403C12C1Ev),
  NSPAIR(_ZN9S19403C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C6;
extern VTBL_ENTRY _ZTI8S19403C6[];
extern  VTBL_ENTRY _ZTV8S19403C6[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C8;
extern VTBL_ENTRY _ZTI8S19403C8[];
extern  VTBL_ENTRY _ZTV8S19403C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19403C8[];
static Base_Class bases_S19403C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19403C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19403C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19403C3,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19403C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19403C3,    ABISELECT(32,16), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19403C3,    ABISELECT(56,28), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19403C3,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19403C2,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19403C8,    ABISELECT(40,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19403C12[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN9S19403C12D1Ev();
extern void _ZN9S19403C12D0Ev();
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
extern void _ZN9S19403C123v29Ev();
extern void _ZN9S19403C123v30Ev();
extern void _ZN9S19403C123v31Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZThn40_N9S19403C12D1Ev,_ZThn20_N9S19403C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19403C12D0Ev,_ZThn20_N9S19403C12D0Ev)();
extern void _ZN8S19403C83v28Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY vtc_S19403C12[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN9S19403C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19403C12D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v29Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v30Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v31Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19403C12D1Ev,_ZThn20_N9S19403C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19403C12D0Ev,_ZThn20_N9S19403C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern VTBL_ENTRY _ZTV9S19403C12[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C8D1Ev();
extern void _ZN8S19403C8D0Ev();
extern void _ZN8S19403C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C8__9S19403C12[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C8[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C3__8S19403C8__9S19403C12[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19403C8[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
static  VTT_ENTRY vtt_S19403C12[] = {
  {&(_ZTV9S19403C12[3]),  3,54},
  {&(_tg__ZTV8S19403C8__9S19403C12[3]),  3,12},
  {&(_tg__ZTV8S19403C3__8S19403C8__9S19403C12[6]),  6,10},
  {&(_ZTV9S19403C12[35]),  35,54},
  {&(_ZTV9S19403C12[50]),  50,54},
};
extern VTBL_ENTRY _ZTI9S19403C12[];
extern  VTBL_ENTRY _ZTV9S19403C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19403C12[];
Class_Descriptor cd_S19403C12 = {  "S19403C12", // class name
  bases_S19403C12, 9,
  &(vtc_S19403C12[0]), // expected_vtbl_contents
  &(vtt_S19403C12[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S19403C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19403C12),54, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19403C12),5, //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  S19403C11  : S19403C2 , virtual S19403C12 {
  int s19403c11f0;
  void *s19403c11f1[11];
  virtual  ~S19403C11(); // _ZN9S19403C11D2Ev
  virtual void  v32(); // _ZN9S19403C113v32Ev
  virtual void  v33(); // _ZN9S19403C113v33Ev
  virtual void  v34(); // _ZN9S19403C113v34Ev
  virtual void  v35(); // _ZN9S19403C113v35Ev
  S19403C11(); // tgen
};
//SIG(-1 S19403C11) C1{ BC2{ BC3{ v5 v6 v7 v8} v9 v10 FC3} VBC4{ BC5{ BC2 BC3 vd v11 v12 v13 v14 v15 v16 Fi} BC3 BC6{ VBC3 BC2 vd v17} v18 v19 v20} vd v1 v2 v3 v4 Fi Fp[11]}


 S19403C11 ::~S19403C11(){ note_dtor("S19403C11", this);}
void  S19403C11 ::v32(){vfunc_called(this, "_ZN9S19403C113v32Ev");}
void  S19403C11 ::v33(){vfunc_called(this, "_ZN9S19403C113v33Ev");}
void  S19403C11 ::v34(){vfunc_called(this, "_ZN9S19403C113v34Ev");}
void  S19403C11 ::v35(){vfunc_called(this, "_ZN9S19403C113v35Ev");}
S19403C11 ::S19403C11(){ note_ctor("S19403C11", this);} // tgen

static void Test_S19403C11()
{
  extern Class_Descriptor cd_S19403C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[23];
    init_test(&cd_S19403C11, buf);
    S19403C11 *dp, &lv = *(dp=new (buf) S19403C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S19403C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19403C11)");
    /*is_ambiguous_... S19403C11::S19403C2 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C2*), 0, "S19403C11");
    /*is_ambiguous_... S19403C11::S19403C2 */ AMB_check_base_class_offset(lv, (S19403C2*), 0, "S19403C11");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C6*)(S19403C12*), ABISELECT(112,56), "S19403C11");
    check_base_class_offset(lv, (S19403C2*)(S19403C6*)(S19403C12*), ABISELECT(112,56), "S19403C11");
    /*is_ambiguous_... S19403C6::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C6*)(S19403C12*), ABISELECT(128,64), "S19403C11");
    check_base_class_offset(lv, (S19403C6*)(S19403C12*), ABISELECT(112,56), "S19403C11");
    /*is_ambiguous_... S19403C12::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C12*), ABISELECT(144,72), "S19403C11");
    /*is_ambiguous_... S19403C8::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C8*)(S19403C12*), ABISELECT(168,84), "S19403C11");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C8*)(S19403C12*), ABISELECT(152,76), "S19403C11");
    check_base_class_offset(lv, (S19403C2*)(S19403C8*)(S19403C12*), ABISELECT(152,76), "S19403C11");
    check_base_class_offset(lv, (S19403C8*)(S19403C12*), ABISELECT(152,76), "S19403C11");
    check_base_class_offset(lv, (S19403C12*), ABISELECT(112,56), "S19403C11");
    check_field_offset(lv, s19403c11f0, ABISELECT(16,8), "S19403C11.s19403c11f0");
    check_field_offset(lv, s19403c11f1, ABISELECT(24,12), "S19403C11.s19403c11f1");
    test_class_info(&lv, &cd_S19403C11);
    dp->~S19403C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19403C11(Test_S19403C11, "S19403C11", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN9S19403C11C1Ev();
extern void _ZN9S19403C11D2Ev();
Name_Map name_map_S19403C11[] = {
  NSPAIR(_ZN9S19403C11C1Ev),
  NSPAIR(_ZN9S19403C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C6;
extern VTBL_ENTRY _ZTI8S19403C6[];
extern  VTBL_ENTRY _ZTV8S19403C6[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C8;
extern VTBL_ENTRY _ZTI8S19403C8[];
extern  VTBL_ENTRY _ZTV8S19403C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19403C8[];
extern Class_Descriptor cd_S19403C12;
extern VTBL_ENTRY _ZTI9S19403C12[];
extern  VTBL_ENTRY _ZTV9S19403C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19403C12[];
static Base_Class bases_S19403C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19403C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19403C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19403C3,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(128,64), //bcp->offset
    53, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19403C6,    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
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(144,72), //bcp->offset
    59, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(168,84), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19403C3,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19403C8,    ABISELECT(152,76), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19403C12,    ABISELECT(112,56), //bcp->offset
    16, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19403C11[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN9S19403C11D1Ev();
extern void _ZN9S19403C11D0Ev();
extern void _ZN9S19403C113v32Ev();
extern void _ZN9S19403C113v33Ev();
extern void _ZN9S19403C113v34Ev();
extern void _ZN9S19403C113v35Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S19403C11D1Ev,_ZTv0_n40_N9S19403C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19403C11D1Ev,_ZThn56_N9S19403C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19403C11D0Ev,_ZTv0_n40_N9S19403C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19403C11D0Ev,_ZThn56_N9S19403C11D0Ev)() __attribute__((weak));
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
extern void _ZN9S19403C123v29Ev();
extern void _ZN9S19403C123v30Ev();
extern void _ZN9S19403C123v31Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZTvn40_n80_N9S19403C11D1Ev,_ZTvn20_n40_N9S19403C11D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N9S19403C11D0Ev,_ZTvn20_n40_N9S19403C11D0Ev)();
extern void _ZN8S19403C83v28Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY vtc_S19403C11[] = {
  ABISELECT(168,84),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN9S19403C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19403C11D0Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v32Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v33Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v34Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v35Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19403C11D1Ev,_ZTv0_n40_N9S19403C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19403C11D0Ev,_ZTv0_n40_N9S19403C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v29Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v30Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v31Ev,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(16,8),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S19403C11D1Ev,_ZTvn20_n40_N9S19403C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S19403C11D0Ev,_ZTvn20_n40_N9S19403C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern VTBL_ENTRY _ZTV9S19403C11[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN9S19403C12D1Ev();
extern void _ZN9S19403C12D0Ev();
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
extern void _ZN9S19403C123v29Ev();
extern void _ZN9S19403C123v30Ev();
extern void _ZN9S19403C123v31Ev();
static  VTBL_ENTRY _tg__ZTV9S19403C12__9S19403C11[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN9S19403C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19403C12D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v29Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v30Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v31Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C8D1Ev();
extern void _ZN8S19403C8D0Ev();
extern void _ZN8S19403C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C89S19403C12__9S19403C11[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C8[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C3__8S19403C89S19403C12__9S19403C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19403C8[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZThn40_N9S19403C12D1Ev,_ZThn20_N9S19403C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19403C12D0Ev,_ZThn20_N9S19403C12D0Ev)();
extern void _ZN8S19403C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C8__9S19403C12__9S19403C11[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19403C12D1Ev,_ZThn20_N9S19403C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19403C12D0Ev,_ZThn20_N9S19403C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C3__A3__9S19403C12__9S19403C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
static  VTT_ENTRY vtt_S19403C11[] = {
  {&(_ZTV9S19403C11[4]),  4,87},
  {&(_ZTV9S19403C11[36]),  36,87},
  {&(_ZTV9S19403C11[55]),  55,87},
  {&(_ZTV9S19403C11[61]),  61,87},
  {&(_ZTV9S19403C11[68]),  68,87},
  {&(_ZTV9S19403C11[83]),  83,87},
  {&(_tg__ZTV9S19403C12__9S19403C11[3]),  3,20},
  {&(_tg__ZTV8S19403C89S19403C12__9S19403C11[3]),  3,12},
  {&(_tg__ZTV8S19403C3__8S19403C89S19403C12__9S19403C11[6]),  6,10},
  {&(_tg__ZTV8S19403C8__9S19403C12__9S19403C11[3]),  3,12},
  {&(_tg__ZTV8S19403C3__A3__9S19403C12__9S19403C11[6]),  6,10},
};
extern VTBL_ENTRY _ZTI9S19403C11[];
extern  VTBL_ENTRY _ZTV9S19403C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19403C11[];
static VTBL_ENTRY alt_thunk_names167[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19403C11D0Ev,_ZTv0_n40_N9S19403C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19403C11D0Ev,_ZThn56_N9S19403C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19403C11D1Ev,_ZTv0_n40_N9S19403C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19403C11D1Ev,_ZThn56_N9S19403C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19403C11 = {  "S19403C11", // class name
  bases_S19403C11, 12,
  &(vtc_S19403C11[0]), // expected_vtbl_contents
  &(vtt_S19403C11[0]), // expected_vtt_contents
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI9S19403C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19403C11),87, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19403C11),11, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names167,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19403C1  : virtual S19403C2 , virtual S19403C4 , virtual S19403C10 , S19403C11 , S19403C12 {
  int s19403c1f0;
  virtual  ~S19403C1(); // _ZN8S19403C1D2Ev
  virtual void  v1(); // _ZN8S19403C12v1Ev
  virtual void  v2(); // _ZN8S19403C12v2Ev
  virtual void  v3(); // _ZN8S19403C12v3Ev
  virtual void  v4(); // _ZN8S19403C12v4Ev
  virtual void  v5(); // _ZN8S19403C12v5Ev
  virtual void  v6(); // _ZN8S19403C12v6Ev
  S19403C1(); // tgen
};
//SIG(1 S19403C1) C1{ VBC2{ BC3{ v7 v8 v9 v10} v11 v12 FC3} VBC4{ VBC5{ VBC2 vd v13 v14 v15 FC2 FD} BC6{ BC2 BC3 vd v16 v17 v18 v19 v20 v21 Fi} BC7{ BC2 BC3 v22 v23 v24 v25 FC8{ VBC3 BC2 vd v28} FU9{ m} FU9 Fi} BC2 vd FD} VBC10{ v26 v27 Fi} BC11{ BC2 VBC12{ BC6 BC3 BC8 v29 v30 v31} vd v32 v33 v34 v35 Fi Fp[11]} BC12 vd v1 v2 v3 v4 v5 v6 Fi}


 S19403C1 ::~S19403C1(){ note_dtor("S19403C1", this);}
void  S19403C1 ::v1(){vfunc_called(this, "_ZN8S19403C12v1Ev");}
void  S19403C1 ::v2(){vfunc_called(this, "_ZN8S19403C12v2Ev");}
void  S19403C1 ::v3(){vfunc_called(this, "_ZN8S19403C12v3Ev");}
void  S19403C1 ::v4(){vfunc_called(this, "_ZN8S19403C12v4Ev");}
void  S19403C1 ::v5(){vfunc_called(this, "_ZN8S19403C12v5Ev");}
void  S19403C1 ::v6(){vfunc_called(this, "_ZN8S19403C12v6Ev");}
S19403C1 ::S19403C1(){ note_ctor("S19403C1", this);} // tgen

static void Test_S19403C1()
{
  extern Class_Descriptor cd_S19403C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(29,58)];
    init_test(&cd_S19403C1, buf);
    S19403C1 *dp, &lv = *(dp=new (buf) S19403C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,228), "sizeof(S19403C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19403C1)");
    /*is_ambiguous_... S19403C1::S19403C2 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C2*), ABISELECT(176,88), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C2 */ AMB_check_base_class_offset(lv, (S19403C2*), ABISELECT(176,88), "S19403C1");
    check_base_class_offset(lv, (S19403C2*)(S19403C5*), ABISELECT(176,88), "S19403C1");
    check_base_class_offset(lv, (S19403C5*)(S19403C4*), ABISELECT(320,164), "S19403C1");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C6*)(S19403C4*), ABISELECT(192,96), "S19403C1");
    check_base_class_offset(lv, (S19403C2*)(S19403C6*)(S19403C4*), ABISELECT(192,96), "S19403C1");
    /*is_ambiguous_... S19403C6::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C6*)(S19403C4*), ABISELECT(208,104), "S19403C1");
    check_base_class_offset(lv, (S19403C6*)(S19403C4*), ABISELECT(192,96), "S19403C1");
    check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C7*)(S19403C4*), ABISELECT(224,112), "S19403C1");
    check_base_class_offset(lv, (S19403C2*)(S19403C7*)(S19403C4*), ABISELECT(224,112), "S19403C1");
    /*is_ambiguous_... S19403C7::S19403C3 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C7*)(S19403C4*), ABISELECT(240,120), "S19403C1");
    check_base_class_offset(lv, (S19403C7*)(S19403C4*), ABISELECT(224,112), "S19403C1");
    /*is_ambiguous_... S19403C4::S19403C2 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C4*), ABISELECT(280,144), "S19403C1");
    /*is_ambiguous_... S19403C4::S19403C2 */ AMB_check_base_class_offset(lv, (S19403C2*)(S19403C4*), ABISELECT(280,144), "S19403C1");
    check_base_class_offset(lv, (S19403C4*), ABISELECT(192,96), "S19403C1");
    check_base_class_offset(lv, (S19403C10*), ABISELECT(368,188), "S19403C1");
    /*is_ambiguous_... S19403C11::S19403C2 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C11*), 0, "S19403C1");
    /*is_ambiguous_... S19403C11::S19403C2 */ AMB_check_base_class_offset(lv, (S19403C2*)(S19403C11*), 0, "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C6*)(S19403C12*), ABISELECT(384,196), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C2*)(S19403C6*)(S19403C12*), ABISELECT(384,196), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C6*)(S19403C12*), ABISELECT(400,204), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C6*)(S19403C12*), ABISELECT(384,196), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C12*), ABISELECT(416,212), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C8*)(S19403C12*), ABISELECT(440,224), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C8*)(S19403C12*), ABISELECT(440,224), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C8*)(S19403C12*), ABISELECT(424,216), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C2*)(S19403C8*)(S19403C12*), ABISELECT(424,216), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C8*)(S19403C12*), ABISELECT(424,216), "S19403C1");
    check_base_class_offset(lv, (S19403C12*)(S19403C11*), ABISELECT(384,196), "S19403C1");
    check_base_class_offset(lv, (S19403C11*), 0, "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C6*)(S19403C12*), ABISELECT(112,56), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C2*)(S19403C6*)(S19403C12*), ABISELECT(112,56), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C6*)(S19403C12*), ABISELECT(128,64), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C6*)(S19403C12*), ABISELECT(112,56), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C12*), ABISELECT(144,72), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C3*)(S19403C2*)(S19403C8*)(S19403C12*), ABISELECT(152,76), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C2*)(S19403C8*)(S19403C12*), ABISELECT(152,76), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C8*)(S19403C12*), ABISELECT(152,76), "S19403C1");
    /*is_ambiguous_... S19403C1::S19403C12 */ AMB_check_base_class_offset(lv, (S19403C12*), ABISELECT(112,56), "S19403C1");
    check_field_offset(lv, s19403c1f0, ABISELECT(168,84), "S19403C1.s19403c1f0");
    test_class_info(&lv, &cd_S19403C1);
    dp->~S19403C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19403C1(Test_S19403C1, "S19403C1", ABISELECT(448,228));

#else // __cplusplus

extern void _ZN8S19403C1C1Ev();
extern void _ZN8S19403C1D2Ev();
Name_Map name_map_S19403C1[] = {
  NSPAIR(_ZN8S19403C1C1Ev),
  NSPAIR(_ZN8S19403C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C5;
extern VTBL_ENTRY _ZTI8S19403C5[];
extern  VTBL_ENTRY _ZTV8S19403C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19403C5[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C6;
extern VTBL_ENTRY _ZTI8S19403C6[];
extern  VTBL_ENTRY _ZTV8S19403C6[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C7;
extern VTBL_ENTRY _ZTI8S19403C7[];
extern  VTBL_ENTRY _ZTV8S19403C7[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C4;
extern VTBL_ENTRY _ZTI8S19403C4[];
extern  VTBL_ENTRY _ZTV8S19403C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19403C4[];
extern Class_Descriptor cd_S19403C10;
extern VTBL_ENTRY _ZTI9S19403C10[];
extern  VTBL_ENTRY _ZTV9S19403C10[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C6;
extern VTBL_ENTRY _ZTI8S19403C6[];
extern  VTBL_ENTRY _ZTV8S19403C6[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C8;
extern VTBL_ENTRY _ZTI8S19403C8[];
extern  VTBL_ENTRY _ZTV8S19403C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19403C8[];
extern Class_Descriptor cd_S19403C12;
extern VTBL_ENTRY _ZTI9S19403C12[];
extern  VTBL_ENTRY _ZTV9S19403C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19403C12[];
extern Class_Descriptor cd_S19403C11;
extern VTBL_ENTRY _ZTI9S19403C11[];
extern  VTBL_ENTRY _ZTV9S19403C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19403C11[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C6;
extern VTBL_ENTRY _ZTI8S19403C6[];
extern  VTBL_ENTRY _ZTV8S19403C6[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C3;
extern VTBL_ENTRY _ZTI8S19403C3[];
extern  VTBL_ENTRY _ZTV8S19403C3[];
extern Class_Descriptor cd_S19403C2;
extern VTBL_ENTRY _ZTI8S19403C2[];
extern  VTBL_ENTRY _ZTV8S19403C2[];
extern Class_Descriptor cd_S19403C8;
extern VTBL_ENTRY _ZTI8S19403C8[];
extern  VTBL_ENTRY _ZTV8S19403C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19403C8[];
extern Class_Descriptor cd_S19403C12;
extern VTBL_ENTRY _ZTI9S19403C12[];
extern  VTBL_ENTRY _ZTV9S19403C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19403C12[];
static Base_Class bases_S19403C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19403C3,    ABISELECT(176,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(176,88), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19403C5,    ABISELECT(320,164), //bcp->offset
    151, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19403C3,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(208,104), //bcp->offset
    119, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19403C6,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(224,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(224,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(240,120), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19403C7,    ABISELECT(224,112), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(280,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(280,144), //bcp->offset
    143, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19403C4,    ABISELECT(192,96), //bcp->offset
    84, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19403C10,    ABISELECT(368,188), //bcp->offset
    163, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19403C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19403C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(384,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(384,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(400,204), //bcp->offset
    206, //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
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19403C6,    ABISELECT(384,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(416,212), //bcp->offset
    212, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(440,224), //bcp->offset
    230, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19403C3,    ABISELECT(424,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
    22, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(424,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
    23, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19403C8,    ABISELECT(424,216), //bcp->offset
    218, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19403C12,    ABISELECT(384,196), //bcp->offset
    169, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19403C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19403C3,    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
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19403C2,    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
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(128,64), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19403C6,    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
    32, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(144,72), //bcp->offset
    52, //bcp->virtual_function_table_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
    36, //immediately_derived
  0, 0},
  {&cd_S19403C3,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19403C2,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19403C8,    ABISELECT(152,76), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19403C12,    ABISELECT(112,56), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19403C1[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C1D1Ev();
extern void _ZN8S19403C1D0Ev();
extern void _ZN9S19403C113v32Ev();
extern void _ZN9S19403C113v33Ev();
extern void _ZN9S19403C113v34Ev();
extern void _ZN9S19403C113v35Ev();
extern void _ZN8S19403C12v1Ev();
extern void _ZN8S19403C12v2Ev();
extern void _ZN8S19403C12v3Ev();
extern void _ZN8S19403C12v4Ev();
extern void _ZN8S19403C12v5Ev();
extern void _ZN8S19403C12v6Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZThn112_N8S19403C1D1Ev,_ZThn56_N8S19403C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S19403C1D0Ev,_ZThn56_N8S19403C1D0Ev)();
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
extern void _ZN9S19403C123v29Ev();
extern void _ZN9S19403C123v30Ev();
extern void _ZN9S19403C123v31Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZThn152_N8S19403C1D1Ev,_ZThn76_N8S19403C1D1Ev)();
extern void ABISELECT(_ZThn152_N8S19403C1D0Ev,_ZThn76_N8S19403C1D0Ev)();
extern void _ZN8S19403C83v28Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZTv0_n88_N8S19403C1D1Ev,_ZTv0_n44_N8S19403C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19403C1D1Ev,_ZThn96_N8S19403C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19403C1D0Ev,_ZTv0_n44_N8S19403C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19403C1D0Ev,_ZThn96_N8S19403C1D0Ev)() __attribute__((weak));
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C73v22Ev();
extern void _ZN8S19403C73v23Ev();
extern void _ZN8S19403C73v24Ev();
extern void _ZN8S19403C73v25Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZTv0_n32_N8S19403C1D1Ev,_ZTv0_n16_N8S19403C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S19403C1D1Ev,_ZThn164_N8S19403C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19403C1D0Ev,_ZTv0_n16_N8S19403C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S19403C1D0Ev,_ZThn164_N8S19403C1D0Ev)() __attribute__((weak));
extern void _ZN8S19403C53v13Ev();
extern void _ZN8S19403C53v14Ev();
extern void _ZN8S19403C53v15Ev();
extern void _ZN9S19403C103v26Ev();
extern void _ZN9S19403C103v27Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S19403C1D1Ev,_ZTv0_n40_N8S19403C1D1Ev)();
extern void ABISELECT(_ZThn384_N8S19403C1D1Ev,_ZThn196_N8S19403C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19403C1D0Ev,_ZTv0_n40_N8S19403C1D0Ev)();
extern void ABISELECT(_ZThn384_N8S19403C1D0Ev,_ZThn196_N8S19403C1D0Ev)() __attribute__((weak));
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
extern void _ZN9S19403C123v29Ev();
extern void _ZN9S19403C123v30Ev();
extern void _ZN9S19403C123v31Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZTvn40_n80_N8S19403C1D1Ev,_ZTvn20_n40_N8S19403C1D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S19403C1D0Ev,_ZTvn20_n40_N8S19403C1D0Ev)();
extern void _ZN8S19403C83v28Ev();
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY vtc_S19403C1[] = {
  ABISELECT(368,188),
  ABISELECT(320,164),
  ABISELECT(192,96),
  ABISELECT(176,88),
  ABISELECT(440,224),
  ABISELECT(384,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C1D0Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v32Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v33Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v34Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v35Ev,
  (VTBL_ENTRY)&_ZN8S19403C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19403C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19403C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19403C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19403C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19403C12v6Ev,
  ABISELECT(328,168),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19403C1D1Ev,_ZThn56_N8S19403C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19403C1D0Ev,_ZThn56_N8S19403C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v29Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v30Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v31Ev,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(288,148),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N8S19403C1D1Ev,_ZThn76_N8S19403C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N8S19403C1D0Ev,_ZThn76_N8S19403C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-96),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(128,68),
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19403C1D1Ev,_ZTv0_n44_N8S19403C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19403C1D0Ev,_ZTv0_n44_N8S19403C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v22Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v23Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v24Ev,
  (VTBL_ENTRY)&_ZN8S19403C73v25Ev,
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(-280,-144),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  0,
  0,
  0,
  ABISELECT(-320,-164),
  ABISELECT(-144,-76),
  ABISELECT(-320,-164),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19403C1D1Ev,_ZTv0_n16_N8S19403C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19403C1D0Ev,_ZTv0_n16_N8S19403C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v15Ev,
  0,
  0,
  ABISELECT(-368,-188),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN9S19403C103v26Ev,
  (VTBL_ENTRY)&_ZN9S19403C103v27Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-196),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-384,-196),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19403C1D1Ev,_ZTv0_n40_N8S19403C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19403C1D0Ev,_ZTv0_n40_N8S19403C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v29Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v30Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v31Ev,
  ABISELECT(-400,-204),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(-416,-212),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  ABISELECT(16,8),
  ABISELECT(-424,-216),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S19403C1D1Ev,_ZTvn20_n40_N8S19403C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S19403C1D0Ev,_ZTvn20_n40_N8S19403C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-440,-224),
  (VTBL_ENTRY)&(_ZTI8S19403C1[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern VTBL_ENTRY _ZTV8S19403C1[];
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN9S19403C11D1Ev();
extern void _ZN9S19403C11D0Ev();
extern void _ZN9S19403C113v32Ev();
extern void _ZN9S19403C113v33Ev();
extern void _ZN9S19403C113v34Ev();
extern void _ZN9S19403C113v35Ev();
static  VTBL_ENTRY _tg__ZTV9S19403C11__8S19403C1[] = {
  ABISELECT(440,224),
  ABISELECT(384,196),
  0,
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN9S19403C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19403C11D0Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v32Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v33Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v34Ev,
  (VTBL_ENTRY)&_ZN9S19403C113v35Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S19403C11D1Ev,_ZTv0_n40_N9S19403C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19403C11D1Ev,_ZThn196_N9S19403C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19403C11D0Ev,_ZTv0_n40_N9S19403C11D0Ev)();
extern void ABISELECT(_ZThn384_N9S19403C11D0Ev,_ZThn196_N9S19403C11D0Ev)() __attribute__((weak));
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
extern void _ZN9S19403C123v29Ev();
extern void _ZN9S19403C123v30Ev();
extern void _ZN9S19403C123v31Ev();
static  VTBL_ENTRY _tg__ZTV9S19403C12__9S19403C11__8S19403C1[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-196),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-384,-196),
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19403C11D1Ev,_ZTv0_n40_N9S19403C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19403C11D0Ev,_ZTv0_n40_N9S19403C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v29Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v30Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v31Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C38S19403C69S19403C12__A2__9S19403C11__8S19403C1[] = {
  ABISELECT(-400,-204),
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C39S19403C12__A3__9S19403C11__8S19403C1[] = {
  ABISELECT(-416,-212),
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZTvn40_n80_N9S19403C11D1Ev,_ZTvn20_n40_N9S19403C11D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N9S19403C11D0Ev,_ZTvn20_n40_N9S19403C11D0Ev)();
extern void _ZN8S19403C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C89S19403C12__9S19403C11__8S19403C1[] = {
  ABISELECT(16,8),
  ABISELECT(-424,-216),
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S19403C11D1Ev,_ZTvn20_n40_N9S19403C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N9S19403C11D0Ev,_ZTvn20_n40_N9S19403C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C3__A4__9S19403C11__8S19403C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-440,-224),
  (VTBL_ENTRY)&(_ZTI9S19403C11[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN9S19403C12D1Ev();
extern void _ZN9S19403C12D0Ev();
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
extern void _ZN9S19403C123v29Ev();
extern void _ZN9S19403C123v30Ev();
extern void _ZN9S19403C123v31Ev();
static  VTBL_ENTRY _tg__ZTV9S19403C12__A__8S19403C1[] = {
  ABISELECT(328,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN9S19403C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19403C12D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v29Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v30Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v31Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C8D1Ev();
extern void _ZN8S19403C8D0Ev();
extern void _ZN8S19403C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C89S19403C12__A1__8S19403C1[] = {
  ABISELECT(288,148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C8[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C3__8S19403C89S19403C12__A1__8S19403C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-288,-148),
  (VTBL_ENTRY)&(_ZTI8S19403C8[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZThn40_N9S19403C12D1Ev,_ZThn20_N9S19403C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19403C12D0Ev,_ZThn20_N9S19403C12D0Ev)();
extern void _ZN8S19403C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C8__9S19403C12__A__8S19403C1[] = {
  ABISELECT(288,148),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19403C12D1Ev,_ZThn20_N9S19403C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19403C12D0Ev,_ZThn20_N9S19403C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C3__A3__9S19403C12__A__8S19403C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-328,-168),
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C4D1Ev();
extern void _ZN8S19403C4D0Ev();
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C4__8S19403C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C4[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19403C4D1Ev,_ZTv0_n16_N8S19403C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S19403C4D1Ev,_ZThn68_N8S19403C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19403C4D0Ev,_ZTv0_n16_N8S19403C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S19403C4D0Ev,_ZThn68_N8S19403C4D0Ev)() __attribute__((weak));
extern void _ZN8S19403C53v13Ev();
extern void _ZN8S19403C53v14Ev();
extern void _ZN8S19403C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C5__8S19403C4__8S19403C1[] = {
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-144,-76),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19403C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19403C4D1Ev,_ZTv0_n16_N8S19403C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19403C4D0Ev,_ZTv0_n16_N8S19403C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v15Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C2__8S19403C4__8S19403C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19403C4[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
};
extern void _ZN8S19403C5D1Ev();
extern void _ZN8S19403C5D0Ev();
extern void _ZN8S19403C53v13Ev();
extern void _ZN8S19403C53v14Ev();
extern void _ZN8S19403C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C5__8S19403C1[] = {
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C5[0]),
  (VTBL_ENTRY)&_ZN8S19403C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19403C53v15Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C2__8S19403C5__8S19403C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19403C5[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN9S19403C12D1Ev();
extern void _ZN9S19403C12D0Ev();
extern void _ZN8S19403C63v16Ev();
extern void _ZN8S19403C63v17Ev();
extern void _ZN8S19403C63v18Ev();
extern void _ZN8S19403C63v19Ev();
extern void _ZN8S19403C63v20Ev();
extern void _ZN8S19403C63v21Ev();
extern void _ZN9S19403C123v29Ev();
extern void _ZN9S19403C123v30Ev();
extern void _ZN9S19403C123v31Ev();
static  VTBL_ENTRY _tg__ZTV9S19403C12__8S19403C1[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN9S19403C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19403C12D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v20Ev,
  (VTBL_ENTRY)&_ZN8S19403C63v21Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v29Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v30Ev,
  (VTBL_ENTRY)&_ZN9S19403C123v31Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void _ZN8S19403C8D1Ev();
extern void _ZN8S19403C8D0Ev();
extern void _ZN8S19403C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C89S19403C12__8S19403C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19403C8[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19403C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19403C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C3__8S19403C89S19403C12__8S19403C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19403C8[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
extern void _ZN8S19403C23v11Ev();
extern void _ZN8S19403C23v12Ev();
extern void ABISELECT(_ZThn40_N9S19403C12D1Ev,_ZThn20_N9S19403C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19403C12D0Ev,_ZThn20_N9S19403C12D0Ev)();
extern void _ZN8S19403C83v28Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C8__9S19403C12__8S19403C1[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19403C23v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19403C12D1Ev,_ZThn20_N9S19403C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19403C12D0Ev,_ZThn20_N9S19403C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19403C83v28Ev,
};
extern void _ZN8S19403C32v7Ev();
extern void _ZN8S19403C32v8Ev();
extern void _ZN8S19403C32v9Ev();
extern void _ZN8S19403C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19403C3__A3__9S19403C12__8S19403C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19403C12[0]),
  (VTBL_ENTRY)&_ZN8S19403C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19403C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19403C33v10Ev,
};
static  VTT_ENTRY vtt_S19403C1[] = {
  {&(_ZTV8S19403C1[8]),  8,240},
  {&(_tg__ZTV9S19403C11__8S19403C1[4]),  4,16},
  {&(_tg__ZTV9S19403C12__9S19403C11__8S19403C1[20]),  20,37},
  {&(_tg__ZTV8S19403C38S19403C69S19403C12__A2__9S19403C11__8S19403C1[2]),  2,6},
  {&(_tg__ZTV8S19403C39S19403C12__A3__9S19403C11__8S19403C1[2]),  2,6},
  {&(_tg__ZTV8S19403C89S19403C12__9S19403C11__8S19403C1[3]),  3,12},
  {&(_tg__ZTV8S19403C3__A4__9S19403C11__8S19403C1[6]),  6,10},
  {&(_tg__ZTV9S19403C12__A__8S19403C1[3]),  3,20},
  {&(_tg__ZTV8S19403C89S19403C12__A1__8S19403C1[3]),  3,12},
  {&(_tg__ZTV8S19403C3__8S19403C89S19403C12__A1__8S19403C1[6]),  6,10},
  {&(_tg__ZTV8S19403C8__9S19403C12__A__8S19403C1[3]),  3,12},
  {&(_tg__ZTV8S19403C3__A3__9S19403C12__A__8S19403C1[6]),  6,10},
  {&(_ZTV8S19403C1[78]),  78,240},
  {&(_ZTV8S19403C1[105]),  105,240},
  {&(_ZTV8S19403C1[158]),  158,240},
  {&(_ZTV8S19403C1[121]),  121,240},
  {&(_ZTV8S19403C1[127]),  127,240},
  {&(_ZTV8S19403C1[139]),  139,240},
  {&(_ZTV8S19403C1[145]),  145,240},
  {&(_ZTV8S19403C1[167]),  167,240},
  {&(_ZTV8S19403C1[189]),  189,240},
  {&(_ZTV8S19403C1[208]),  208,240},
  {&(_ZTV8S19403C1[214]),  214,240},
  {&(_ZTV8S19403C1[221]),  221,240},
  {&(_ZTV8S19403C1[236]),  236,240},
  {&(_ZTV8S19403C1[29]),  29,240},
  {&(_ZTV8S19403C1[61]),  61,240},
  {&(_tg__ZTV8S19403C4__8S19403C1[4]),  4,18},
  {&(_tg__ZTV8S19403C5__8S19403C4__8S19403C1[7]),  7,12},
  {&(_tg__ZTV8S19403C2__8S19403C4__8S19403C1[8]),  8,14},
  {&(_tg__ZTV8S19403C5__8S19403C1[3]),  3,8},
  {&(_tg__ZTV8S19403C2__8S19403C5__8S19403C1[8]),  8,14},
  {&(_tg__ZTV9S19403C12__8S19403C1[3]),  3,20},
  {&(_tg__ZTV8S19403C89S19403C12__8S19403C1[3]),  3,12},
  {&(_tg__ZTV8S19403C3__8S19403C89S19403C12__8S19403C1[6]),  6,10},
  {&(_tg__ZTV8S19403C8__9S19403C12__8S19403C1[3]),  3,12},
  {&(_tg__ZTV8S19403C3__A3__9S19403C12__8S19403C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19403C1[];
extern  VTBL_ENTRY _ZTV8S19403C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19403C1[];
static VTBL_ENTRY alt_thunk_names168[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19403C4D0Ev,_ZTv0_n16_N8S19403C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19403C4D0Ev,_ZThn68_N8S19403C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19403C4D1Ev,_ZTv0_n16_N8S19403C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19403C4D1Ev,_ZThn68_N8S19403C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19403C11D0Ev,_ZTv0_n40_N9S19403C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19403C11D0Ev,_ZThn196_N9S19403C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19403C11D1Ev,_ZTv0_n40_N9S19403C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19403C11D1Ev,_ZThn196_N9S19403C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19403C1D0Ev,_ZTv0_n40_N8S19403C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S19403C1D0Ev,_ZThn196_N8S19403C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19403C1D1Ev,_ZTv0_n40_N8S19403C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S19403C1D1Ev,_ZThn196_N8S19403C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19403C1D0Ev,_ZTv0_n16_N8S19403C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19403C1D0Ev,_ZThn164_N8S19403C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19403C1D1Ev,_ZTv0_n16_N8S19403C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19403C1D1Ev,_ZThn164_N8S19403C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19403C1D0Ev,_ZTv0_n44_N8S19403C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19403C1D0Ev,_ZThn96_N8S19403C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19403C1D1Ev,_ZTv0_n44_N8S19403C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19403C1D1Ev,_ZThn96_N8S19403C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19403C1 = {  "S19403C1", // class name
  bases_S19403C1, 37,
  &(vtc_S19403C1[0]), // expected_vtbl_contents
  &(vtt_S19403C1[0]), // expected_vtt_contents
  ABISELECT(448,228), // object size
  NSPAIRA(_ZTI8S19403C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19403C1),240, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19403C1),37, //virtual table table var
  37, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names168,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11610C1  {
  ::S11608C2 s11610c1f0;
  ::S11608C4 s11610c1f1;
  void *s11610c1f2;
  int s11610c1f3;
  void *s11610c1f4;
  int s11610c1f5;
  void *s11610c1f6;
  int s11610c1f7;
  int s11610c1f8;
  void *s11610c1f9;
};
//SIG(1 S11610C1) C1{ FC2{ Fi[3] FC3{ Fp Fi}} FU4{ Fi FC5{ Fi FC6{ Fi} Fi FC7{ Fi Fi Fi Fp Fi} FC8{ FL FL FL FL FL FL} Fi Fi Fi} FC9{ FC5 FC10{ FL FL FL FL Fs Fs Fs Fs}} FC11{ FC5 Fp} FU12{ FC13{ FC5 Fi Fi Fp FC14{ FL FC10}[2]} FC15{ FC13 FC16{ Fi Fi} FC16} FC17{ FC13 FC16 Fi FC16 Fi}}} Fp Fi Fp Fi Fp Fi Fi Fp}



static void Test_S11610C1()
{
  {
    init_simple_test("S11610C1");
    S11610C1 lv;
    check2(sizeof(lv), ABISELECT(336,276), "sizeof(S11610C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11610C1)");
    check_field_offset(lv, s11610c1f0, 0, "S11610C1.s11610c1f0");
    check_field_offset(lv, s11610c1f1, ABISELECT(32,20), "S11610C1.s11610c1f1");
    check_field_offset(lv, s11610c1f2, ABISELECT(280,244), "S11610C1.s11610c1f2");
    check_field_offset(lv, s11610c1f3, ABISELECT(288,248), "S11610C1.s11610c1f3");
    check_field_offset(lv, s11610c1f4, ABISELECT(296,252), "S11610C1.s11610c1f4");
    check_field_offset(lv, s11610c1f5, ABISELECT(304,256), "S11610C1.s11610c1f5");
    check_field_offset(lv, s11610c1f6, ABISELECT(312,260), "S11610C1.s11610c1f6");
    check_field_offset(lv, s11610c1f7, ABISELECT(320,264), "S11610C1.s11610c1f7");
    check_field_offset(lv, s11610c1f8, ABISELECT(324,268), "S11610C1.s11610c1f8");
    check_field_offset(lv, s11610c1f9, ABISELECT(328,272), "S11610C1.s11610c1f9");
  }
}
static Arrange_To_Call_Me vS11610C1(Test_S11610C1, "S11610C1", ABISELECT(336,276));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3712C3_nt  {
  int s3712c3f0;
  void  mf3712c3(); // _ZN10S3712C3_nt8mf3712c3Ev
  virtual  ~S3712C3_nt(); // _ZN10S3712C3_ntD1Ev
  S3712C3_nt(); // tgen
};
//SIG(-1 S3712C3_nt) C1{ vd m Fi}


void  S3712C3_nt ::mf3712c3(){}
 S3712C3_nt ::~S3712C3_nt(){ note_dtor("S3712C3_nt", this);}
S3712C3_nt ::S3712C3_nt(){ note_ctor("S3712C3_nt", this);} // tgen

//skip512 S3712C3_nt

#else // __cplusplus

extern void _ZN10S3712C3_ntC1Ev();
extern void _ZN10S3712C3_ntD1Ev();
Name_Map name_map_S3712C3_nt[] = {
  NSPAIR(_ZN10S3712C3_ntC1Ev),
  NSPAIR(_ZN10S3712C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern void _ZN10S3712C3_ntD1Ev();
extern void _ZN10S3712C3_ntD0Ev();
static  VTBL_ENTRY vtc_S3712C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3712C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3712C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3712C3_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
VTBL_ENTRY *P__ZTI10S3712C3_nt = _ZTI10S3712C3_nt; 
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
Class_Descriptor cd_S3712C3_nt = {  "S3712C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3712C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S3712C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3712C3_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  S3712C2  : S3712C3_nt {
  virtual void  v2(); // _ZN7S3712C22v2Ev
  ~S3712C2(); // tgen
  S3712C2(); // tgen
};
//SIG(-1 S3712C2) C1{ BC2{ vd m Fi} v1}


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

static void Test_S3712C2()
{
  extern Class_Descriptor cd_S3712C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3712C2, buf);
    S3712C2 *dp, &lv = *(dp=new (buf) S3712C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3712C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3712C2)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S3712C2");
    test_class_info(&lv, &cd_S3712C2);
    dp->~S3712C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3712C2(Test_S3712C2, "S3712C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3712C2C1Ev();
extern void _ZN7S3712C2D1Ev();
Name_Map name_map_S3712C2[] = {
  NSPAIR(_ZN7S3712C2C1Ev),
  NSPAIR(_ZN7S3712C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S3712C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3712C2[];
extern void _ZN7S3712C2D1Ev();
extern void _ZN7S3712C2D0Ev();
extern void _ZN7S3712C22v2Ev();
static  VTBL_ENTRY vtc_S3712C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3712C2[0]),
  (VTBL_ENTRY)&_ZN7S3712C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3712C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3712C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S3712C2[];
extern  VTBL_ENTRY _ZTV7S3712C2[];
Class_Descriptor cd_S3712C2 = {  "S3712C2", // class name
  bases_S3712C2, 1,
  &(vtc_S3712C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3712C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3712C2),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  S3712C1  : S3712C2 {
  ::S11969C23_nt s3712c1f0;
  ::S1604C5_nt s3712c1f1;
  ::S2405C20_nt s3712c1f2;
  ::S2405C20_nt s3712c1f3;
  int s3712c1f4;
  char s3712c1f5;
  ::S2405C26 s3712c1f6;
  int s3712c1f7;
  ::S10225C3 s3712c1f8;
  ::S10225C19 s3712c1f9;
  ::S10225C3 s3712c1f10;
  ::S10225C15_nt s3712c1f11;
  ::S2405C22 s3712c1f12;
  ::S10225C3 s3712c1f13;
  ::S2405C6_nt s3712c1f14;
  ::S10225C3 s3712c1f15;
  ::S10225C3 s3712c1f16;
  virtual  ~S3712C1(); // _ZN7S3712C1D1Ev
  virtual void  v1(); // _ZN7S3712C12v1Ev
  S3712C1(); // tgen
};
//SIG(1 S3712C1) C1{ BC2{ BC3{ vd m Fi} v2} vd v1 FC4{ m Fp} FC5{ m Fi[2]} FC6{ m Fp Fi FC7{ m}} FC6 Fi Fc FC8{ m Fp Fi FC9{ m} FC9} Fi FC10{ BC11{ vd v6 v7 v8} vd v3 v4 v5 FC12{ FL[4]}} FC13{ BC11 vd v9 v10 v11 Fi} FC10 FC14{ BC8} FC15{ m Fp Fi FC16{ m} FC16} FC10 FC17{ m Fp Fi FC18{ m} FC7} FC10 FC10}


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

static void Test_S3712C1()
{
  extern Class_Descriptor cd_S3712C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(46,74)];
    init_test(&cd_S3712C1, buf);
    S3712C1 *dp, &lv = *(dp=new (buf) S3712C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(360,292), "sizeof(S3712C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3712C1)");
    check_base_class_offset(lv, (S3712C3_nt*)(S3712C2*), 0, "S3712C1");
    check_base_class_offset(lv, (S3712C2*), 0, "S3712C1");
    check_field_offset(lv, s3712c1f0, ABISELECT(16,8), "S3712C1.s3712c1f0");
    check_field_offset(lv, s3712c1f1, ABISELECT(24,12), "S3712C1.s3712c1f1");
    check_field_offset(lv, s3712c1f2, ABISELECT(32,20), "S3712C1.s3712c1f2");
    check_field_offset(lv, s3712c1f3, ABISELECT(48,32), "S3712C1.s3712c1f3");
    check_field_offset(lv, s3712c1f4, ABISELECT(64,44), "S3712C1.s3712c1f4");
    check_field_offset(lv, s3712c1f5, ABISELECT(68,48), "S3712C1.s3712c1f5");
    check_field_offset(lv, s3712c1f6, ABISELECT(72,52), "S3712C1.s3712c1f6");
    check_field_offset(lv, s3712c1f7, ABISELECT(88,64), "S3712C1.s3712c1f7");
    check_field_offset(lv, s3712c1f8, ABISELECT(96,68), "S3712C1.s3712c1f8");
    check_field_offset(lv, s3712c1f9, ABISELECT(136,104), "S3712C1.s3712c1f9");
    check_field_offset(lv, s3712c1f10, ABISELECT(152,112), "S3712C1.s3712c1f10");
    check_field_offset(lv, s3712c1f11, ABISELECT(192,148), "S3712C1.s3712c1f11");
    check_field_offset(lv, s3712c1f12, ABISELECT(208,160), "S3712C1.s3712c1f12");
    check_field_offset(lv, s3712c1f13, ABISELECT(224,172), "S3712C1.s3712c1f13");
    check_field_offset(lv, s3712c1f14, ABISELECT(264,208), "S3712C1.s3712c1f14");
    check_field_offset(lv, s3712c1f15, ABISELECT(280,220), "S3712C1.s3712c1f15");
    check_field_offset(lv, s3712c1f16, ABISELECT(320,256), "S3712C1.s3712c1f16");
    test_class_info(&lv, &cd_S3712C1);
    dp->~S3712C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3712C1(Test_S3712C1, "S3712C1", ABISELECT(360,292));

#else // __cplusplus

extern void _ZN7S3712C1C1Ev();
extern void _ZN7S3712C1D1Ev();
Name_Map name_map_S3712C1[] = {
  NSPAIR(_ZN7S3712C1C1Ev),
  NSPAIR(_ZN7S3712C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
extern Class_Descriptor cd_S3712C2;
extern VTBL_ENTRY _ZTI7S3712C2[];
extern  VTBL_ENTRY _ZTV7S3712C2[];
static Base_Class bases_S3712C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3712C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3712C1[];
extern void _ZN7S3712C1D1Ev();
extern void _ZN7S3712C1D0Ev();
extern void _ZN7S3712C22v2Ev();
extern void _ZN7S3712C12v1Ev();
static  VTBL_ENTRY vtc_S3712C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3712C1[0]),
  (VTBL_ENTRY)&_ZN7S3712C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3712C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3712C22v2Ev,
  (VTBL_ENTRY)&_ZN7S3712C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3712C1[];
extern  VTBL_ENTRY _ZTV7S3712C1[];
Class_Descriptor cd_S3712C1 = {  "S3712C1", // class name
  bases_S3712C1, 2,
  &(vtc_S3712C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(360,292), // object size
  NSPAIRA(_ZTI7S3712C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3712C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19458C7  {
  virtual void  v3(); // _ZN8S19458C72v3Ev
  ~S19458C7(); // tgen
  S19458C7(); // tgen
};
//SIG(-1 S19458C7) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S19458C7C1Ev();
extern void _ZN8S19458C7D1Ev();
Name_Map name_map_S19458C7[] = {
  NSPAIR(_ZN8S19458C7C1Ev),
  NSPAIR(_ZN8S19458C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19458C7[];
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY vtc_S19458C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C7[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern VTBL_ENTRY _ZTI8S19458C7[];
extern  VTBL_ENTRY _ZTV8S19458C7[];
Class_Descriptor cd_S19458C7 = {  "S19458C7", // class name
  0,0,//no base classes
  &(vtc_S19458C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19458C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19458C7),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  S19458C8  {
  void *s19458c8f0;
  ::S19458C7 s19458c8f1;
  virtual void  v4(); // _ZN8S19458C82v4Ev
  virtual void  v5(); // _ZN8S19458C82v5Ev
  virtual void  v6(); // _ZN8S19458C82v6Ev
  virtual void  v7(); // _ZN8S19458C82v7Ev
  virtual void  v8(); // _ZN8S19458C82v8Ev
  ~S19458C8(); // tgen
  S19458C8(); // tgen
};
//SIG(-1 S19458C8) C1{ v1 v2 v3 v4 v5 Fp FC2{ v6}}


void  S19458C8 ::v4(){vfunc_called(this, "_ZN8S19458C82v4Ev");}
void  S19458C8 ::v5(){vfunc_called(this, "_ZN8S19458C82v5Ev");}
void  S19458C8 ::v6(){vfunc_called(this, "_ZN8S19458C82v6Ev");}
void  S19458C8 ::v7(){vfunc_called(this, "_ZN8S19458C82v7Ev");}
void  S19458C8 ::v8(){vfunc_called(this, "_ZN8S19458C82v8Ev");}
S19458C8 ::~S19458C8(){ note_dtor("S19458C8", this);} // tgen
S19458C8 ::S19458C8(){ note_ctor("S19458C8", this);} // tgen

static void Test_S19458C8()
{
  extern Class_Descriptor cd_S19458C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19458C8, buf);
    S19458C8 *dp, &lv = *(dp=new (buf) S19458C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19458C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19458C8)");
    check_field_offset(lv, s19458c8f0, ABISELECT(8,4), "S19458C8.s19458c8f0");
    check_field_offset(lv, s19458c8f1, ABISELECT(16,8), "S19458C8.s19458c8f1");
    test_class_info(&lv, &cd_S19458C8);
    dp->~S19458C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19458C8(Test_S19458C8, "S19458C8", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19458C8C1Ev();
extern void _ZN8S19458C8D1Ev();
Name_Map name_map_S19458C8[] = {
  NSPAIR(_ZN8S19458C8C1Ev),
  NSPAIR(_ZN8S19458C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19458C8[];
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY vtc_S19458C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C8[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern VTBL_ENTRY _ZTI8S19458C8[];
extern  VTBL_ENTRY _ZTV8S19458C8[];
Class_Descriptor cd_S19458C8 = {  "S19458C8", // class name
  0,0,//no base classes
  &(vtc_S19458C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19458C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19458C8),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  S19458C6  : virtual S19458C7 , virtual S19458C8 {
  void *s19458c6f0[6];
  virtual  ~S19458C6(); // _ZN8S19458C6D2Ev
  virtual void  v9(); // _ZN8S19458C62v9Ev
  virtual void  v10(); // _ZN8S19458C63v10Ev
  virtual void  v11(); // _ZN8S19458C63v11Ev
  S19458C6(); // tgen
};
//SIG(-1 S19458C6) C1{ VBC2{ v4} VBC3{ v5 v6 v7 v8 v9 Fp FC2} vd v1 v2 v3 Fp[6]}


 S19458C6 ::~S19458C6(){ note_dtor("S19458C6", this);}
void  S19458C6 ::v9(){vfunc_called(this, "_ZN8S19458C62v9Ev");}
void  S19458C6 ::v10(){vfunc_called(this, "_ZN8S19458C63v10Ev");}
void  S19458C6 ::v11(){vfunc_called(this, "_ZN8S19458C63v11Ev");}
S19458C6 ::S19458C6(){ note_ctor("S19458C6", this);} // tgen

static void Test_S19458C6()
{
  extern Class_Descriptor cd_S19458C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S19458C6, buf);
    S19458C6 *dp, &lv = *(dp=new (buf) S19458C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19458C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19458C6)");
    check_base_class_offset(lv, (S19458C7*), 0, "S19458C6");
    check_base_class_offset(lv, (S19458C8*), ABISELECT(56,28), "S19458C6");
    check_field_offset(lv, s19458c6f0, ABISELECT(8,4), "S19458C6.s19458c6f0");
    test_class_info(&lv, &cd_S19458C6);
    dp->~S19458C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19458C6(Test_S19458C6, "S19458C6", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19458C6C1Ev();
extern void _ZN8S19458C6D2Ev();
Name_Map name_map_S19458C6[] = {
  NSPAIR(_ZN8S19458C6C1Ev),
  NSPAIR(_ZN8S19458C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19458C7;
extern VTBL_ENTRY _ZTI8S19458C7[];
extern  VTBL_ENTRY _ZTV8S19458C7[];
extern Class_Descriptor cd_S19458C8;
extern VTBL_ENTRY _ZTI8S19458C8[];
extern  VTBL_ENTRY _ZTV8S19458C8[];
static Base_Class bases_S19458C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19458C7,    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_S19458C8,    ABISELECT(56,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19458C6[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C6D1Ev();
extern void _ZN8S19458C6D0Ev();
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY vtc_S19458C6[] = {
  ABISELECT(56,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern VTBL_ENTRY _ZTV8S19458C6[];
static  VTT_ENTRY vtt_S19458C6[] = {
  {&(_ZTV8S19458C6[5]),  5,23},
  {&(_ZTV8S19458C6[5]),  5,23},
  {&(_ZTV8S19458C6[18]),  18,23},
};
extern VTBL_ENTRY _ZTI8S19458C6[];
extern  VTBL_ENTRY _ZTV8S19458C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C6[];
Class_Descriptor cd_S19458C6 = {  "S19458C6", // class name
  bases_S19458C6, 2,
  &(vtc_S19458C6[0]), // expected_vtbl_contents
  &(vtt_S19458C6[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19458C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19458C6),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19458C6),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  S19458C5  : virtual S19458C6 {
  __tsi64 s19458c5f0;
  virtual void  v12(); // _ZN8S19458C53v12Ev
  virtual void  v13(); // _ZN8S19458C53v13Ev
  virtual void  v14(); // _ZN8S19458C53v14Ev
  ~S19458C5(); // tgen
  S19458C5(); // tgen
};
//SIG(-1 S19458C5) C1{ VBC2{ VBC3{ v4} VBC4{ v5 v6 v7 v8 v9 Fp FC3} vd v10 v11 v12 Fp[6]} v1 v2 v3 FL}


void  S19458C5 ::v12(){vfunc_called(this, "_ZN8S19458C53v12Ev");}
void  S19458C5 ::v13(){vfunc_called(this, "_ZN8S19458C53v13Ev");}
void  S19458C5 ::v14(){vfunc_called(this, "_ZN8S19458C53v14Ev");}
S19458C5 ::~S19458C5(){ note_dtor("S19458C5", this);} // tgen
S19458C5 ::S19458C5(){ note_ctor("S19458C5", this);} // tgen

static void Test_S19458C5()
{
  extern Class_Descriptor cd_S19458C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S19458C5, buf);
    S19458C5 *dp, &lv = *(dp=new (buf) S19458C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S19458C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19458C5)");
    check_base_class_offset(lv, (S19458C7*)(S19458C6*), 0, "S19458C5");
    check_base_class_offset(lv, (S19458C8*)(S19458C6*), ABISELECT(72,40), "S19458C5");
    check_base_class_offset(lv, (S19458C6*), ABISELECT(16,12), "S19458C5");
    check_field_offset(lv, s19458c5f0, ABISELECT(8,4), "S19458C5.s19458c5f0");
    test_class_info(&lv, &cd_S19458C5);
    dp->~S19458C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19458C5(Test_S19458C5, "S19458C5", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S19458C5C1Ev();
extern void _ZN8S19458C5D1Ev();
Name_Map name_map_S19458C5[] = {
  NSPAIR(_ZN8S19458C5C1Ev),
  NSPAIR(_ZN8S19458C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19458C7;
extern VTBL_ENTRY _ZTI8S19458C7[];
extern  VTBL_ENTRY _ZTV8S19458C7[];
extern Class_Descriptor cd_S19458C8;
extern VTBL_ENTRY _ZTI8S19458C8[];
extern  VTBL_ENTRY _ZTV8S19458C8[];
extern Class_Descriptor cd_S19458C6;
extern VTBL_ENTRY _ZTI8S19458C6[];
extern  VTBL_ENTRY _ZTV8S19458C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C6[];
static Base_Class bases_S19458C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19458C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19458C8,    ABISELECT(72,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19458C6,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19458C5[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C5D1Ev();
extern void _ZN8S19458C5D0Ev();
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S19458C5D1Ev,_ZThn12_N8S19458C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S19458C5D0Ev,_ZThn12_N8S19458C5D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY vtc_S19458C5[] = {
  ABISELECT(72,40),
  0,
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D0Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern VTBL_ENTRY _ZTV8S19458C5[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C6D1Ev();
extern void _ZN8S19458C6D0Ev();
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C5[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C6__8S19458C5[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C6__8S19458C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
static  VTT_ENTRY vtt_S19458C5[] = {
  {&(_ZTV8S19458C5[6]),  6,39},
  {&(_ZTV8S19458C5[21]),  21,39},
  {&(_ZTV8S19458C5[6]),  6,39},
  {&(_ZTV8S19458C5[34]),  34,39},
  {&(_tg__ZTV8S19458C6__8S19458C5[5]),  5,11},
  {&(_tg__ZTV8S19458C7__8S19458C6__8S19458C5[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C6__8S19458C5[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19458C5[];
extern  VTBL_ENTRY _ZTV8S19458C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C5[];
static VTBL_ENTRY alt_thunk_names169[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19458C5D0Ev,_ZThn12_N8S19458C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19458C5D1Ev,_ZThn12_N8S19458C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19458C5 = {  "S19458C5", // class name
  bases_S19458C5, 3,
  &(vtc_S19458C5[0]), // expected_vtbl_contents
  &(vtt_S19458C5[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S19458C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19458C5),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19458C5),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names169,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19458C4  : S19458C5 {
  ::S7337C10 s19458c4f0[4];
  virtual  ~S19458C4(); // _ZN8S19458C4D2Ev
  virtual void  v15(); // _ZN8S19458C43v15Ev
  virtual void  v16(); // _ZN8S19458C43v16Ev
  virtual void  v17(); // _ZN8S19458C43v17Ev
  virtual void  v18(); // _ZN8S19458C43v18Ev
  virtual void  v19(); // _ZN8S19458C43v19Ev
  S19458C4(); // tgen
};
//SIG(-1 S19458C4) C1{ BC2{ VBC3{ VBC4{ v6} VBC5{ v7 v8 v9 v10 v11 Fp FC4} vd v12 v13 v14 Fp[6]} v15 v16 v17 FL} vd v1 v2 v3 v4 v5 FC6{ v18 v19 v20 v21 v22 v23 Fp Fs}[4]}


 S19458C4 ::~S19458C4(){ note_dtor("S19458C4", this);}
void  S19458C4 ::v15(){vfunc_called(this, "_ZN8S19458C43v15Ev");}
void  S19458C4 ::v16(){vfunc_called(this, "_ZN8S19458C43v16Ev");}
void  S19458C4 ::v17(){vfunc_called(this, "_ZN8S19458C43v17Ev");}
void  S19458C4 ::v18(){vfunc_called(this, "_ZN8S19458C43v18Ev");}
void  S19458C4 ::v19(){vfunc_called(this, "_ZN8S19458C43v19Ev");}
S19458C4 ::S19458C4(){ note_ctor("S19458C4", this);} // tgen

static void Test_S19458C4()
{
  extern Class_Descriptor cd_S19458C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,26)];
    init_test(&cd_S19458C4, buf);
    S19458C4 *dp, &lv = *(dp=new (buf) S19458C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S19458C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19458C4)");
    check_base_class_offset(lv, (S19458C7*)(S19458C6*), 0, "S19458C4");
    check_base_class_offset(lv, (S19458C8*)(S19458C6*), ABISELECT(168,88), "S19458C4");
    check_base_class_offset(lv, (S19458C6*)(S19458C5*), ABISELECT(112,60), "S19458C4");
    check_base_class_offset(lv, (S19458C5*), 0, "S19458C4");
    check_field_offset(lv, s19458c4f0, ABISELECT(16,12), "S19458C4.s19458c4f0");
    test_class_info(&lv, &cd_S19458C4);
    dp->~S19458C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19458C4(Test_S19458C4, "S19458C4", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN8S19458C4C1Ev();
extern void _ZN8S19458C4D2Ev();
Name_Map name_map_S19458C4[] = {
  NSPAIR(_ZN8S19458C4C1Ev),
  NSPAIR(_ZN8S19458C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19458C7;
extern VTBL_ENTRY _ZTI8S19458C7[];
extern  VTBL_ENTRY _ZTV8S19458C7[];
extern Class_Descriptor cd_S19458C8;
extern VTBL_ENTRY _ZTI8S19458C8[];
extern  VTBL_ENTRY _ZTV8S19458C8[];
extern Class_Descriptor cd_S19458C6;
extern VTBL_ENTRY _ZTI8S19458C6[];
extern  VTBL_ENTRY _ZTV8S19458C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C6[];
extern Class_Descriptor cd_S19458C5;
extern VTBL_ENTRY _ZTI8S19458C5[];
extern  VTBL_ENTRY _ZTV8S19458C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C5[];
static Base_Class bases_S19458C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19458C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19458C8,    ABISELECT(168,88), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19458C6,    ABISELECT(112,60), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19458C5,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19458C4[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C4D1Ev();
extern void _ZN8S19458C4D0Ev();
extern void _ZN8S19458C43v15Ev();
extern void _ZN8S19458C43v16Ev();
extern void _ZN8S19458C43v17Ev();
extern void _ZN8S19458C43v18Ev();
extern void _ZN8S19458C43v19Ev();
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S19458C4D1Ev,_ZThn60_N8S19458C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S19458C4D0Ev,_ZThn60_N8S19458C4D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY vtc_S19458C4[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v19Ev,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern VTBL_ENTRY _ZTV8S19458C4[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C5D1Ev();
extern void _ZN8S19458C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C5__8S19458C4[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D0Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19458C5D1Ev,_ZThn60_N8S19458C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19458C5D0Ev,_ZThn60_N8S19458C5D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C5__8S19458C4[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C5__8S19458C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C6D1Ev();
extern void _ZN8S19458C6D0Ev();
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C4[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C6__8S19458C4[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C6__8S19458C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
static  VTT_ENTRY vtt_S19458C4[] = {
  {&(_ZTV8S19458C4[6]),  6,44},
  {&(_tg__ZTV8S19458C5__8S19458C4[6]),  6,12},
  {&(_tg__ZTV8S19458C6__8S19458C5__8S19458C4[9]),  9,15},
  {&(_tg__ZTV8S19458C5__8S19458C4[6]),  6,12},
  {&(_tg__ZTV8S19458C8__8S19458C5__8S19458C4[7]),  7,12},
  {&(_ZTV8S19458C4[26]),  26,44},
  {&(_ZTV8S19458C4[6]),  6,44},
  {&(_ZTV8S19458C4[39]),  39,44},
  {&(_tg__ZTV8S19458C6__8S19458C4[5]),  5,11},
  {&(_tg__ZTV8S19458C7__8S19458C6__8S19458C4[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C6__8S19458C4[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19458C4[];
extern  VTBL_ENTRY _ZTV8S19458C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C4[];
static VTBL_ENTRY alt_thunk_names170[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C5D0Ev,_ZThn60_N8S19458C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C5D1Ev,_ZThn60_N8S19458C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C4D0Ev,_ZThn60_N8S19458C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C4D1Ev,_ZThn60_N8S19458C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19458C4 = {  "S19458C4", // class name
  bases_S19458C4, 4,
  &(vtc_S19458C4[0]), // expected_vtbl_contents
  &(vtt_S19458C4[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI8S19458C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19458C4),44, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19458C4),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names170,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19458C11  : virtual S19458C7 {
  __tsi64 s19458c11f0;
  void *s19458c11f1;
  virtual void  v20(); // _ZN9S19458C113v20Ev
  virtual void  v21(); // _ZN9S19458C113v21Ev
  virtual void  v22(); // _ZN9S19458C113v22Ev
  ~S19458C11(); // tgen
  S19458C11(); // tgen
};
//SIG(-1 S19458C11) C1{ VBC2{ v4} v1 v2 v3 FL Fp}


void  S19458C11 ::v20(){vfunc_called(this, "_ZN9S19458C113v20Ev");}
void  S19458C11 ::v21(){vfunc_called(this, "_ZN9S19458C113v21Ev");}
void  S19458C11 ::v22(){vfunc_called(this, "_ZN9S19458C113v22Ev");}
S19458C11 ::~S19458C11(){ note_dtor("S19458C11", this);} // tgen
S19458C11 ::S19458C11(){ note_ctor("S19458C11", this);} // tgen

static void Test_S19458C11()
{
  extern Class_Descriptor cd_S19458C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19458C11, buf);
    S19458C11 *dp, &lv = *(dp=new (buf) S19458C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19458C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19458C11)");
    check_base_class_offset(lv, (S19458C7*), 0, "S19458C11");
    check_field_offset(lv, s19458c11f0, ABISELECT(8,4), "S19458C11.s19458c11f0");
    check_field_offset(lv, s19458c11f1, ABISELECT(16,12), "S19458C11.s19458c11f1");
    test_class_info(&lv, &cd_S19458C11);
    dp->~S19458C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19458C11(Test_S19458C11, "S19458C11", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S19458C11C1Ev();
extern void _ZN9S19458C11D1Ev();
Name_Map name_map_S19458C11[] = {
  NSPAIR(_ZN9S19458C11C1Ev),
  NSPAIR(_ZN9S19458C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19458C7;
extern VTBL_ENTRY _ZTI8S19458C7[];
extern  VTBL_ENTRY _ZTV8S19458C7[];
static Base_Class bases_S19458C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19458C7,    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 _ZTI9S19458C11[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
static  VTBL_ENTRY vtc_S19458C11[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19458C11[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
};
extern VTBL_ENTRY _ZTV9S19458C11[];
static  VTT_ENTRY vtt_S19458C11[] = {
  {&(_ZTV9S19458C11[4]),  4,8},
  {&(_ZTV9S19458C11[4]),  4,8},
};
extern VTBL_ENTRY _ZTI9S19458C11[];
extern  VTBL_ENTRY _ZTV9S19458C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19458C11[];
Class_Descriptor cd_S19458C11 = {  "S19458C11", // class name
  bases_S19458C11, 1,
  &(vtc_S19458C11[0]), // expected_vtbl_contents
  &(vtt_S19458C11[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S19458C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19458C11),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19458C11),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  S19458C10  : S19458C5 , S19458C11 {
  ::S19458C8 s19458c10f0;
  virtual  ~S19458C10(); // _ZN9S19458C10D2Ev
  virtual void  v23(); // _ZN9S19458C103v23Ev
  virtual void  v24(); // _ZN9S19458C103v24Ev
  virtual void  v25(); // _ZN9S19458C103v25Ev
  virtual void  v26(); // _ZN9S19458C103v26Ev
  S19458C10(); // tgen
};
//SIG(-1 S19458C10) C1{ BC2{ VBC3{ VBC4{ v5} VBC5{ v6 v7 v8 v9 v10 Fp FC4} vd v11 v12 v13 Fp[6]} v14 v15 v16 FL} BC6{ VBC4 v17 v18 v19 FL Fp} vd v1 v2 v3 v4 FC5}


 S19458C10 ::~S19458C10(){ note_dtor("S19458C10", this);}
void  S19458C10 ::v23(){vfunc_called(this, "_ZN9S19458C103v23Ev");}
void  S19458C10 ::v24(){vfunc_called(this, "_ZN9S19458C103v24Ev");}
void  S19458C10 ::v25(){vfunc_called(this, "_ZN9S19458C103v25Ev");}
void  S19458C10 ::v26(){vfunc_called(this, "_ZN9S19458C103v26Ev");}
S19458C10 ::S19458C10(){ note_ctor("S19458C10", this);} // tgen

static void Test_S19458C10()
{
  extern Class_Descriptor cd_S19458C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,21)];
    init_test(&cd_S19458C10, buf);
    S19458C10 *dp, &lv = *(dp=new (buf) S19458C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,80), "sizeof(S19458C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19458C10)");
    check_base_class_offset(lv, (S19458C7*)(S19458C6*), 0, "S19458C10");
    check_base_class_offset(lv, (S19458C7*)(S19458C11*), 0, "S19458C10");
    check_base_class_offset(lv, (S19458C8*)(S19458C6*), ABISELECT(120,68), "S19458C10");
    check_base_class_offset(lv, (S19458C6*)(S19458C5*), ABISELECT(64,40), "S19458C10");
    check_base_class_offset(lv, (S19458C5*), 0, "S19458C10");
    check_base_class_offset(lv, (S19458C11*), ABISELECT(16,12), "S19458C10");
    check_field_offset(lv, s19458c10f0, ABISELECT(40,28), "S19458C10.s19458c10f0");
    test_class_info(&lv, &cd_S19458C10);
    dp->~S19458C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19458C10(Test_S19458C10, "S19458C10", ABISELECT(144,80));

#else // __cplusplus

extern void _ZN9S19458C10C1Ev();
extern void _ZN9S19458C10D2Ev();
Name_Map name_map_S19458C10[] = {
  NSPAIR(_ZN9S19458C10C1Ev),
  NSPAIR(_ZN9S19458C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19458C7;
extern VTBL_ENTRY _ZTI8S19458C7[];
extern  VTBL_ENTRY _ZTV8S19458C7[];
extern Class_Descriptor cd_S19458C8;
extern VTBL_ENTRY _ZTI8S19458C8[];
extern  VTBL_ENTRY _ZTV8S19458C8[];
extern Class_Descriptor cd_S19458C6;
extern VTBL_ENTRY _ZTI8S19458C6[];
extern  VTBL_ENTRY _ZTV8S19458C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C6[];
extern Class_Descriptor cd_S19458C5;
extern VTBL_ENTRY _ZTI8S19458C5[];
extern  VTBL_ENTRY _ZTV8S19458C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C5[];
extern Class_Descriptor cd_S19458C11;
extern VTBL_ENTRY _ZTI9S19458C11[];
extern  VTBL_ENTRY _ZTV9S19458C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19458C11[];
static Base_Class bases_S19458C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19458C7,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19458C8,    ABISELECT(120,68), //bcp->offset
    39, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19458C6,    ABISELECT(64,40), //bcp->offset
    24, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19458C5,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19458C11,    ABISELECT(16,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //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 _ZTI9S19458C10[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN9S19458C10D1Ev();
extern void _ZN9S19458C10D0Ev();
extern void _ZN9S19458C103v23Ev();
extern void _ZN9S19458C103v24Ev();
extern void _ZN9S19458C103v25Ev();
extern void _ZN9S19458C103v26Ev();
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S19458C10D1Ev,_ZThn40_N9S19458C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S19458C10D0Ev,_ZThn40_N9S19458C10D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY vtc_S19458C10[] = {
  ABISELECT(120,68),
  0,
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN9S19458C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19458C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v23Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v24Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v26Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  ABISELECT(56,28),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern VTBL_ENTRY _ZTV9S19458C10[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C5D1Ev();
extern void _ZN8S19458C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C5__9S19458C10[] = {
  ABISELECT(120,68),
  0,
  ABISELECT(64,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D0Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S19458C5D1Ev,_ZThn40_N8S19458C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S19458C5D0Ev,_ZThn40_N8S19458C5D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C5__9S19458C10[] = {
  0,
  0,
  0,
  ABISELECT(-64,-40),
  ABISELECT(56,28),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C5__9S19458C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C11__9S19458C10[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19458C11[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__9S19458C11__9S19458C10[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19458C11[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C6D1Ev();
extern void _ZN8S19458C6D0Ev();
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__9S19458C10[] = {
  ABISELECT(56,28),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C6__9S19458C10[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C6__9S19458C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
static  VTT_ENTRY vtt_S19458C10[] = {
  {&(_ZTV9S19458C10[6]),  6,51},
  {&(_tg__ZTV8S19458C5__9S19458C10[6]),  6,12},
  {&(_tg__ZTV8S19458C6__8S19458C5__9S19458C10[9]),  9,15},
  {&(_tg__ZTV8S19458C5__9S19458C10[6]),  6,12},
  {&(_tg__ZTV8S19458C8__8S19458C5__9S19458C10[7]),  7,12},
  {&(_tg__ZTV9S19458C11__9S19458C10[4]),  4,8},
  {&(_tg__ZTV8S19458C7__9S19458C11__9S19458C10[3]),  3,4},
  {&(_ZTV9S19458C10[33]),  33,51},
  {&(_ZTV9S19458C10[6]),  6,51},
  {&(_ZTV9S19458C10[46]),  46,51},
  {&(_ZTV9S19458C10[20]),  20,51},
  {&(_tg__ZTV8S19458C6__9S19458C10[5]),  5,11},
  {&(_tg__ZTV8S19458C7__8S19458C6__9S19458C10[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C6__9S19458C10[7]),  7,12},
};
extern VTBL_ENTRY _ZTI9S19458C10[];
extern  VTBL_ENTRY _ZTV9S19458C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19458C10[];
static VTBL_ENTRY alt_thunk_names171[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C5D0Ev,_ZThn40_N8S19458C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C5D1Ev,_ZThn40_N8S19458C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19458C10D0Ev,_ZThn40_N9S19458C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19458C10D1Ev,_ZThn40_N9S19458C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19458C10 = {  "S19458C10", // class name
  bases_S19458C10, 5,
  &(vtc_S19458C10[0]), // expected_vtbl_contents
  &(vtt_S19458C10[0]), // expected_vtt_contents
  ABISELECT(144,80), // object size
  NSPAIRA(_ZTI9S19458C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19458C10),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19458C10),14, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names171,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19458C3  : virtual S19458C4 , S19458C10 {
  virtual  ~S19458C3(); // _ZN8S19458C3D2Ev
  virtual void  v27(); // _ZN8S19458C33v27Ev
  virtual void  v28(); // _ZN8S19458C33v28Ev
  virtual void  v29(); // _ZN8S19458C33v29Ev
  virtual void  v30(); // _ZN8S19458C33v30Ev
  virtual void  v31(); // _ZN8S19458C33v31Ev
  virtual void  v32(); // _ZN8S19458C33v32Ev
  S19458C3(); // tgen
};
//SIG(-1 S19458C3) C1{ VBC2{ BC3{ VBC4{ VBC5{ v7} VBC6{ v8 v9 v10 v11 v12 Fp FC5} vd v13 v14 v15 Fp[6]} v16 v17 v18 FL} vd v19 v20 v21 v22 v23 FC7{ v31 v32 v33 v34 v35 v36 Fp Fs}[4]} BC8{ BC3 BC9{ VBC5 v24 v25 v26 FL Fp} vd v27 v28 v29 v30 FC6} vd v1 v2 v3 v4 v5 v6}


 S19458C3 ::~S19458C3(){ note_dtor("S19458C3", this);}
void  S19458C3 ::v27(){vfunc_called(this, "_ZN8S19458C33v27Ev");}
void  S19458C3 ::v28(){vfunc_called(this, "_ZN8S19458C33v28Ev");}
void  S19458C3 ::v29(){vfunc_called(this, "_ZN8S19458C33v29Ev");}
void  S19458C3 ::v30(){vfunc_called(this, "_ZN8S19458C33v30Ev");}
void  S19458C3 ::v31(){vfunc_called(this, "_ZN8S19458C33v31Ev");}
void  S19458C3 ::v32(){vfunc_called(this, "_ZN8S19458C33v32Ev");}
S19458C3 ::S19458C3(){ note_ctor("S19458C3", this);} // tgen

static void Test_S19458C3()
{
  extern Class_Descriptor cd_S19458C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,36)];
    init_test(&cd_S19458C3, buf);
    S19458C3 *dp, &lv = *(dp=new (buf) S19458C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,140), "sizeof(S19458C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19458C3)");
    check_base_class_offset(lv, (S19458C7*)(S19458C6*), ABISELECT(64,40), "S19458C3");
    check_base_class_offset(lv, (S19458C7*)(S19458C11*)(S19458C10*), ABISELECT(64,40), "S19458C3");
    check_base_class_offset(lv, (S19458C8*)(S19458C6*), ABISELECT(232,128), "S19458C3");
    check_base_class_offset(lv, (S19458C6*)(S19458C5*)(S19458C4*), ABISELECT(176,100), "S19458C3");
    check_base_class_offset(lv, (S19458C6*)(S19458C5*)(S19458C10*), ABISELECT(176,100), "S19458C3");
    check_base_class_offset(lv, (S19458C5*)(S19458C4*), ABISELECT(64,40), "S19458C3");
    check_base_class_offset(lv, (S19458C4*), ABISELECT(64,40), "S19458C3");
    check_base_class_offset(lv, (S19458C5*)(S19458C10*), 0, "S19458C3");
    check_base_class_offset(lv, (S19458C11*)(S19458C10*), ABISELECT(16,12), "S19458C3");
    check_base_class_offset(lv, (S19458C10*), 0, "S19458C3");
    test_class_info(&lv, &cd_S19458C3);
    dp->~S19458C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19458C3(Test_S19458C3, "S19458C3", ABISELECT(256,140));

#else // __cplusplus

extern void _ZN8S19458C3C1Ev();
extern void _ZN8S19458C3D2Ev();
Name_Map name_map_S19458C3[] = {
  NSPAIR(_ZN8S19458C3C1Ev),
  NSPAIR(_ZN8S19458C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19458C7;
extern VTBL_ENTRY _ZTI8S19458C7[];
extern  VTBL_ENTRY _ZTV8S19458C7[];
extern Class_Descriptor cd_S19458C8;
extern VTBL_ENTRY _ZTI8S19458C8[];
extern  VTBL_ENTRY _ZTV8S19458C8[];
extern Class_Descriptor cd_S19458C6;
extern VTBL_ENTRY _ZTI8S19458C6[];
extern  VTBL_ENTRY _ZTV8S19458C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C6[];
extern Class_Descriptor cd_S19458C5;
extern VTBL_ENTRY _ZTI8S19458C5[];
extern  VTBL_ENTRY _ZTV8S19458C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C5[];
extern Class_Descriptor cd_S19458C4;
extern VTBL_ENTRY _ZTI8S19458C4[];
extern  VTBL_ENTRY _ZTV8S19458C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C4[];
extern Class_Descriptor cd_S19458C5;
extern VTBL_ENTRY _ZTI8S19458C5[];
extern  VTBL_ENTRY _ZTV8S19458C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C5[];
extern Class_Descriptor cd_S19458C11;
extern VTBL_ENTRY _ZTI9S19458C11[];
extern  VTBL_ENTRY _ZTV9S19458C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19458C11[];
extern Class_Descriptor cd_S19458C10;
extern VTBL_ENTRY _ZTI9S19458C10[];
extern  VTBL_ENTRY _ZTV9S19458C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19458C10[];
static Base_Class bases_S19458C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19458C7,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19458C8,    ABISELECT(232,128), //bcp->offset
    72, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19458C6,    ABISELECT(176,100), //bcp->offset
    57, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19458C5,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    4, //immediately_derived
  0, 0},
  {&cd_S19458C4,    ABISELECT(64,40), //bcp->offset
    31, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19458C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19458C11,    ABISELECT(16,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19458C10,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19458C3[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C3D1Ev();
extern void _ZN8S19458C3D0Ev();
extern void _ZN9S19458C103v23Ev();
extern void _ZN9S19458C103v24Ev();
extern void _ZN9S19458C103v25Ev();
extern void _ZN9S19458C103v26Ev();
extern void _ZN8S19458C33v27Ev();
extern void _ZN8S19458C33v28Ev();
extern void _ZN8S19458C33v29Ev();
extern void _ZN8S19458C33v30Ev();
extern void _ZN8S19458C33v31Ev();
extern void _ZN8S19458C33v32Ev();
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void ABISELECT(_ZTv0_n80_N8S19458C3D1Ev,_ZTv0_n40_N8S19458C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19458C3D1Ev,_ZThn40_N8S19458C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19458C3D0Ev,_ZTv0_n40_N8S19458C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19458C3D0Ev,_ZThn40_N8S19458C3D0Ev)() __attribute__((weak));
extern void _ZN8S19458C43v15Ev();
extern void _ZN8S19458C43v16Ev();
extern void _ZN8S19458C43v17Ev();
extern void _ZN8S19458C43v18Ev();
extern void _ZN8S19458C43v19Ev();
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C3D1Ev,_ZTv0_n24_N8S19458C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S19458C3D1Ev,_ZThn100_N8S19458C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C3D0Ev,_ZTv0_n24_N8S19458C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S19458C3D0Ev,_ZThn100_N8S19458C3D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY vtc_S19458C3[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C3D0Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v23Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v24Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v26Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v27Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v28Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v29Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v32Ev,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C3D1Ev,_ZTv0_n40_N8S19458C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C3D0Ev,_ZTv0_n40_N8S19458C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v19Ev,
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C3D1Ev,_ZTv0_n24_N8S19458C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C3D0Ev,_ZTv0_n24_N8S19458C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern VTBL_ENTRY _ZTV8S19458C3[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN9S19458C10D1Ev();
extern void _ZN9S19458C10D0Ev();
extern void _ZN9S19458C103v23Ev();
extern void _ZN9S19458C103v24Ev();
extern void _ZN9S19458C103v25Ev();
extern void _ZN9S19458C103v26Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C10__8S19458C3[] = {
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN9S19458C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19458C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v23Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v24Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v26Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C5D1Ev();
extern void _ZN8S19458C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C59S19458C10__A1__8S19458C3[] = {
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D0Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev)();
extern void ABISELECT(_ZThn176_N8S19458C5D1Ev,_ZThn100_N8S19458C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev)();
extern void ABISELECT(_ZThn176_N8S19458C5D0Ev,_ZThn100_N8S19458C5D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C59S19458C10__A1__8S19458C3[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C59S19458C10__A1__8S19458C3[] = {
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C59S19458C10__A1__8S19458C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C119S19458C10__8S19458C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19458C11[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__9S19458C119S19458C10__8S19458C3[] = {
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19458C11[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev)();
extern void ABISELECT(_ZThn176_N9S19458C10D1Ev,_ZThn100_N9S19458C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev)();
extern void ABISELECT(_ZThn176_N9S19458C10D0Ev,_ZThn100_N9S19458C10D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__9S19458C10__8S19458C3[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__9S19458C10__8S19458C3[] = {
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__9S19458C10__8S19458C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C11__9S19458C10__8S19458C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C4D1Ev();
extern void _ZN8S19458C4D0Ev();
extern void _ZN8S19458C43v15Ev();
extern void _ZN8S19458C43v16Ev();
extern void _ZN8S19458C43v17Ev();
extern void _ZN8S19458C43v18Ev();
extern void _ZN8S19458C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C4__8S19458C3[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v19Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C5D1Ev();
extern void _ZN8S19458C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C58S19458C4__8S19458C3[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D0Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19458C5D1Ev,_ZThn60_N8S19458C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19458C5D0Ev,_ZThn60_N8S19458C5D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C58S19458C4__8S19458C3[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C58S19458C4__8S19458C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S19458C4D1Ev,_ZThn60_N8S19458C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S19458C4D0Ev,_ZThn60_N8S19458C4D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C4__8S19458C3[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C4__8S19458C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C6D1Ev();
extern void _ZN8S19458C6D0Ev();
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C3[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C6__8S19458C3[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C6__8S19458C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
static  VTT_ENTRY vtt_S19458C3[] = {
  {&(_ZTV8S19458C3[7]),  7,84},
  {&(_tg__ZTV9S19458C10__8S19458C3[6]),  6,16},
  {&(_tg__ZTV8S19458C59S19458C10__A1__8S19458C3[6]),  6,12},
  {&(_tg__ZTV8S19458C6__8S19458C59S19458C10__A1__8S19458C3[9]),  9,15},
  {&(_tg__ZTV8S19458C7__8S19458C59S19458C10__A1__8S19458C3[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C59S19458C10__A1__8S19458C3[7]),  7,12},
  {&(_tg__ZTV9S19458C119S19458C10__8S19458C3[4]),  4,8},
  {&(_tg__ZTV8S19458C7__9S19458C119S19458C10__8S19458C3[3]),  3,4},
  {&(_tg__ZTV8S19458C6__9S19458C10__8S19458C3[9]),  9,15},
  {&(_tg__ZTV8S19458C7__9S19458C10__8S19458C3[3]),  3,4},
  {&(_tg__ZTV8S19458C8__9S19458C10__8S19458C3[7]),  7,12},
  {&(_tg__ZTV9S19458C11__9S19458C10__8S19458C3[4]),  4,8},
  {&(_ZTV8S19458C3[46]),  46,84},
  {&(_ZTV8S19458C3[66]),  66,84},
  {&(_ZTV8S19458C3[46]),  46,84},
  {&(_ZTV8S19458C3[79]),  79,84},
  {&(_ZTV8S19458C3[27]),  27,84},
  {&(_tg__ZTV8S19458C4__8S19458C3[6]),  6,17},
  {&(_tg__ZTV8S19458C58S19458C4__8S19458C3[6]),  6,12},
  {&(_tg__ZTV8S19458C6__8S19458C58S19458C4__8S19458C3[9]),  9,15},
  {&(_tg__ZTV8S19458C58S19458C4__8S19458C3[6]),  6,12},
  {&(_tg__ZTV8S19458C8__8S19458C58S19458C4__8S19458C3[7]),  7,12},
  {&(_tg__ZTV8S19458C6__8S19458C4__8S19458C3[9]),  9,15},
  {&(_tg__ZTV8S19458C4__8S19458C3[6]),  6,17},
  {&(_tg__ZTV8S19458C8__8S19458C4__8S19458C3[7]),  7,12},
  {&(_tg__ZTV8S19458C6__8S19458C3[5]),  5,11},
  {&(_tg__ZTV8S19458C7__8S19458C6__8S19458C3[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C6__8S19458C3[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19458C3[];
extern  VTBL_ENTRY _ZTV8S19458C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C3[];
static VTBL_ENTRY alt_thunk_names172[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C4D0Ev,_ZThn60_N8S19458C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C4D1Ev,_ZThn60_N8S19458C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19458C10D0Ev,_ZThn100_N9S19458C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19458C10D1Ev,_ZThn100_N9S19458C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C5D0Ev,_ZThn60_N8S19458C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C5D0Ev,_ZThn100_N8S19458C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C5D1Ev,_ZThn60_N8S19458C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C5D1Ev,_ZThn100_N8S19458C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C3D0Ev,_ZTv0_n24_N8S19458C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C3D0Ev,_ZThn100_N8S19458C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C3D1Ev,_ZTv0_n24_N8S19458C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C3D1Ev,_ZThn100_N8S19458C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C3D0Ev,_ZTv0_n40_N8S19458C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C3D0Ev,_ZThn40_N8S19458C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C3D1Ev,_ZTv0_n40_N8S19458C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C3D1Ev,_ZThn40_N8S19458C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19458C3 = {  "S19458C3", // class name
  bases_S19458C3, 8,
  &(vtc_S19458C3[0]), // expected_vtbl_contents
  &(vtt_S19458C3[0]), // expected_vtt_contents
  ABISELECT(256,140), // object size
  NSPAIRA(_ZTI8S19458C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19458C3),84, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19458C3),28, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names172,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19458C2  : S19458C3 {
  virtual  ~S19458C2(); // _ZN8S19458C2D2Ev
  virtual void  v33(); // _ZN8S19458C23v33Ev
  virtual void  v34(); // _ZN8S19458C23v34Ev
  virtual void  v35(); // _ZN8S19458C23v35Ev
  virtual void  v36(); // _ZN8S19458C23v36Ev
  virtual void  v37(); // _ZN8S19458C23v37Ev
  S19458C2(); // tgen
};
//SIG(-1 S19458C2) C1{ BC2{ VBC3{ BC4{ VBC5{ VBC6{ v6} VBC7{ v7 v8 v9 v10 v11 Fp FC6} vd v12 v13 v14 Fp[6]} v15 v16 v17 FL} vd v18 v19 v20 v21 v22 FC8{ v36 v37 v38 v39 v40 v41 Fp Fs}[4]} BC9{ BC4 BC10{ VBC6 v23 v24 v25 FL Fp} vd v26 v27 v28 v29 FC7} vd v30 v31 v32 v33 v34 v35} vd v1 v2 v3 v4 v5}


 S19458C2 ::~S19458C2(){ note_dtor("S19458C2", this);}
void  S19458C2 ::v33(){vfunc_called(this, "_ZN8S19458C23v33Ev");}
void  S19458C2 ::v34(){vfunc_called(this, "_ZN8S19458C23v34Ev");}
void  S19458C2 ::v35(){vfunc_called(this, "_ZN8S19458C23v35Ev");}
void  S19458C2 ::v36(){vfunc_called(this, "_ZN8S19458C23v36Ev");}
void  S19458C2 ::v37(){vfunc_called(this, "_ZN8S19458C23v37Ev");}
S19458C2 ::S19458C2(){ note_ctor("S19458C2", this);} // tgen

static void Test_S19458C2()
{
  extern Class_Descriptor cd_S19458C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,36)];
    init_test(&cd_S19458C2, buf);
    S19458C2 *dp, &lv = *(dp=new (buf) S19458C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,140), "sizeof(S19458C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19458C2)");
    check_base_class_offset(lv, (S19458C7*)(S19458C6*), ABISELECT(64,40), "S19458C2");
    check_base_class_offset(lv, (S19458C7*)(S19458C11*)(S19458C10*)(S19458C3*), ABISELECT(64,40), "S19458C2");
    check_base_class_offset(lv, (S19458C8*)(S19458C6*), ABISELECT(232,128), "S19458C2");
    check_base_class_offset(lv, (S19458C6*)(S19458C5*)(S19458C4*), ABISELECT(176,100), "S19458C2");
    check_base_class_offset(lv, (S19458C6*)(S19458C5*)(S19458C10*)(S19458C3*), ABISELECT(176,100), "S19458C2");
    check_base_class_offset(lv, (S19458C5*)(S19458C4*), ABISELECT(64,40), "S19458C2");
    check_base_class_offset(lv, (S19458C4*)(S19458C3*), ABISELECT(64,40), "S19458C2");
    check_base_class_offset(lv, (S19458C5*)(S19458C10*)(S19458C3*), 0, "S19458C2");
    check_base_class_offset(lv, (S19458C11*)(S19458C10*)(S19458C3*), ABISELECT(16,12), "S19458C2");
    check_base_class_offset(lv, (S19458C10*)(S19458C3*), 0, "S19458C2");
    check_base_class_offset(lv, (S19458C3*), 0, "S19458C2");
    test_class_info(&lv, &cd_S19458C2);
    dp->~S19458C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19458C2(Test_S19458C2, "S19458C2", ABISELECT(256,140));

#else // __cplusplus

extern void _ZN8S19458C2C1Ev();
extern void _ZN8S19458C2D2Ev();
Name_Map name_map_S19458C2[] = {
  NSPAIR(_ZN8S19458C2C1Ev),
  NSPAIR(_ZN8S19458C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19458C7;
extern VTBL_ENTRY _ZTI8S19458C7[];
extern  VTBL_ENTRY _ZTV8S19458C7[];
extern Class_Descriptor cd_S19458C8;
extern VTBL_ENTRY _ZTI8S19458C8[];
extern  VTBL_ENTRY _ZTV8S19458C8[];
extern Class_Descriptor cd_S19458C6;
extern VTBL_ENTRY _ZTI8S19458C6[];
extern  VTBL_ENTRY _ZTV8S19458C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C6[];
extern Class_Descriptor cd_S19458C5;
extern VTBL_ENTRY _ZTI8S19458C5[];
extern  VTBL_ENTRY _ZTV8S19458C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C5[];
extern Class_Descriptor cd_S19458C4;
extern VTBL_ENTRY _ZTI8S19458C4[];
extern  VTBL_ENTRY _ZTV8S19458C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C4[];
extern Class_Descriptor cd_S19458C5;
extern VTBL_ENTRY _ZTI8S19458C5[];
extern  VTBL_ENTRY _ZTV8S19458C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C5[];
extern Class_Descriptor cd_S19458C11;
extern VTBL_ENTRY _ZTI9S19458C11[];
extern  VTBL_ENTRY _ZTV9S19458C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19458C11[];
extern Class_Descriptor cd_S19458C10;
extern VTBL_ENTRY _ZTI9S19458C10[];
extern  VTBL_ENTRY _ZTV9S19458C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19458C10[];
extern Class_Descriptor cd_S19458C3;
extern VTBL_ENTRY _ZTI8S19458C3[];
extern  VTBL_ENTRY _ZTV8S19458C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C3[];
static Base_Class bases_S19458C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19458C7,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19458C8,    ABISELECT(232,128), //bcp->offset
    77, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19458C6,    ABISELECT(176,100), //bcp->offset
    62, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19458C5,    ABISELECT(64,40), //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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19458C4,    ABISELECT(64,40), //bcp->offset
    36, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19458C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19458C11,    ABISELECT(16,12), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19458C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19458C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19458C2[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C2D1Ev();
extern void _ZN8S19458C2D0Ev();
extern void _ZN9S19458C103v23Ev();
extern void _ZN9S19458C103v24Ev();
extern void _ZN9S19458C103v25Ev();
extern void _ZN9S19458C103v26Ev();
extern void _ZN8S19458C33v27Ev();
extern void _ZN8S19458C33v28Ev();
extern void _ZN8S19458C33v29Ev();
extern void _ZN8S19458C33v30Ev();
extern void _ZN8S19458C33v31Ev();
extern void _ZN8S19458C33v32Ev();
extern void _ZN8S19458C23v33Ev();
extern void _ZN8S19458C23v34Ev();
extern void _ZN8S19458C23v35Ev();
extern void _ZN8S19458C23v36Ev();
extern void _ZN8S19458C23v37Ev();
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void ABISELECT(_ZTv0_n80_N8S19458C2D1Ev,_ZTv0_n40_N8S19458C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19458C2D1Ev,_ZThn40_N8S19458C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19458C2D0Ev,_ZTv0_n40_N8S19458C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19458C2D0Ev,_ZThn40_N8S19458C2D0Ev)() __attribute__((weak));
extern void _ZN8S19458C43v15Ev();
extern void _ZN8S19458C43v16Ev();
extern void _ZN8S19458C43v17Ev();
extern void _ZN8S19458C43v18Ev();
extern void _ZN8S19458C43v19Ev();
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C2D1Ev,_ZTv0_n24_N8S19458C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S19458C2D1Ev,_ZThn100_N8S19458C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C2D0Ev,_ZTv0_n24_N8S19458C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S19458C2D0Ev,_ZThn100_N8S19458C2D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY vtc_S19458C2[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C2[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C2D0Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v23Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v24Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v26Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v27Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v28Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v29Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v32Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v33Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v34Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v35Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v36Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v37Ev,
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19458C2[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19458C2[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C2D1Ev,_ZTv0_n40_N8S19458C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C2D0Ev,_ZTv0_n40_N8S19458C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v19Ev,
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19458C2[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C2D1Ev,_ZTv0_n24_N8S19458C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C2D0Ev,_ZTv0_n24_N8S19458C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S19458C2[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern VTBL_ENTRY _ZTV8S19458C2[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C3D1Ev();
extern void _ZN8S19458C3D0Ev();
extern void _ZN9S19458C103v23Ev();
extern void _ZN9S19458C103v24Ev();
extern void _ZN9S19458C103v25Ev();
extern void _ZN9S19458C103v26Ev();
extern void _ZN8S19458C33v27Ev();
extern void _ZN8S19458C33v28Ev();
extern void _ZN8S19458C33v29Ev();
extern void _ZN8S19458C33v30Ev();
extern void _ZN8S19458C33v31Ev();
extern void _ZN8S19458C33v32Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C3__8S19458C2[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C3D0Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v23Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v24Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v26Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v27Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v28Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v29Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v32Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN9S19458C10D1Ev();
extern void _ZN9S19458C10D0Ev();
extern void _ZN9S19458C103v23Ev();
extern void _ZN9S19458C103v24Ev();
extern void _ZN9S19458C103v25Ev();
extern void _ZN9S19458C103v26Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C108S19458C3__8S19458C2[] = {
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN9S19458C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19458C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v23Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v24Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v26Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C5D1Ev();
extern void _ZN8S19458C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C59S19458C108S19458C3__A1__8S19458C2[] = {
  ABISELECT(232,128),
  ABISELECT(64,40),
  ABISELECT(176,100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D0Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev)();
extern void ABISELECT(_ZThn176_N8S19458C5D1Ev,_ZThn100_N8S19458C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev)();
extern void ABISELECT(_ZThn176_N8S19458C5D0Ev,_ZThn100_N8S19458C5D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C59S19458C108S19458C3__A1__8S19458C2[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C59S19458C108S19458C3__A1__8S19458C2[] = {
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C59S19458C108S19458C3__A1__8S19458C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C119S19458C108S19458C3__8S19458C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19458C11[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__9S19458C119S19458C108S19458C3__8S19458C2[] = {
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19458C11[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev)();
extern void ABISELECT(_ZThn176_N9S19458C10D1Ev,_ZThn100_N9S19458C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev)();
extern void ABISELECT(_ZThn176_N9S19458C10D0Ev,_ZThn100_N9S19458C10D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__9S19458C108S19458C3__8S19458C2[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__9S19458C108S19458C3__8S19458C2[] = {
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__9S19458C108S19458C3__8S19458C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C11__9S19458C108S19458C3__8S19458C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void ABISELECT(_ZTv0_n80_N8S19458C3D1Ev,_ZTv0_n40_N8S19458C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19458C3D1Ev,_ZThn40_N8S19458C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19458C3D0Ev,_ZTv0_n40_N8S19458C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19458C3D0Ev,_ZThn40_N8S19458C3D0Ev)() __attribute__((weak));
extern void _ZN8S19458C43v15Ev();
extern void _ZN8S19458C43v16Ev();
extern void _ZN8S19458C43v17Ev();
extern void _ZN8S19458C43v18Ev();
extern void _ZN8S19458C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C4__8S19458C3__8S19458C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C3D1Ev,_ZTv0_n40_N8S19458C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C3D0Ev,_ZTv0_n40_N8S19458C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v19Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C3D1Ev,_ZTv0_n24_N8S19458C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S19458C3D1Ev,_ZThn100_N8S19458C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C3D0Ev,_ZTv0_n24_N8S19458C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S19458C3D0Ev,_ZThn100_N8S19458C3D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C3__8S19458C2[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C3D1Ev,_ZTv0_n24_N8S19458C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C3D0Ev,_ZTv0_n24_N8S19458C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C3__8S19458C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C119S19458C10__8S19458C3__8S19458C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C4D1Ev();
extern void _ZN8S19458C4D0Ev();
extern void _ZN8S19458C43v15Ev();
extern void _ZN8S19458C43v16Ev();
extern void _ZN8S19458C43v17Ev();
extern void _ZN8S19458C43v18Ev();
extern void _ZN8S19458C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C4__8S19458C2[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v19Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C5D1Ev();
extern void _ZN8S19458C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C58S19458C4__8S19458C2[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D0Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19458C5D1Ev,_ZThn60_N8S19458C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19458C5D0Ev,_ZThn60_N8S19458C5D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C58S19458C4__8S19458C2[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C58S19458C4__8S19458C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S19458C4D1Ev,_ZThn60_N8S19458C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S19458C4D0Ev,_ZThn60_N8S19458C4D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C4__8S19458C2[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C4__8S19458C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C6D1Ev();
extern void _ZN8S19458C6D0Ev();
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C2[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C6__8S19458C2[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C6__8S19458C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
static  VTT_ENTRY vtt_S19458C2[] = {
  {&(_ZTV8S19458C2[7]),  7,89},
  {&(_tg__ZTV8S19458C3__8S19458C2[7]),  7,23},
  {&(_tg__ZTV9S19458C108S19458C3__8S19458C2[6]),  6,16},
  {&(_tg__ZTV8S19458C59S19458C108S19458C3__A1__8S19458C2[6]),  6,12},
  {&(_tg__ZTV8S19458C6__8S19458C59S19458C108S19458C3__A1__8S19458C2[9]),  9,15},
  {&(_tg__ZTV8S19458C7__8S19458C59S19458C108S19458C3__A1__8S19458C2[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C59S19458C108S19458C3__A1__8S19458C2[7]),  7,12},
  {&(_tg__ZTV9S19458C119S19458C108S19458C3__8S19458C2[4]),  4,8},
  {&(_tg__ZTV8S19458C7__9S19458C119S19458C108S19458C3__8S19458C2[3]),  3,4},
  {&(_tg__ZTV8S19458C6__9S19458C108S19458C3__8S19458C2[9]),  9,15},
  {&(_tg__ZTV8S19458C7__9S19458C108S19458C3__8S19458C2[3]),  3,4},
  {&(_tg__ZTV8S19458C8__9S19458C108S19458C3__8S19458C2[7]),  7,12},
  {&(_tg__ZTV9S19458C11__9S19458C108S19458C3__8S19458C2[4]),  4,8},
  {&(_tg__ZTV8S19458C4__8S19458C3__8S19458C2[15]),  15,26},
  {&(_tg__ZTV8S19458C6__8S19458C3__8S19458C2[9]),  9,15},
  {&(_tg__ZTV8S19458C4__8S19458C3__8S19458C2[15]),  15,26},
  {&(_tg__ZTV8S19458C8__8S19458C3__8S19458C2[7]),  7,12},
  {&(_tg__ZTV9S19458C119S19458C10__8S19458C3__8S19458C2[4]),  4,8},
  {&(_ZTV8S19458C2[51]),  51,89},
  {&(_ZTV8S19458C2[71]),  71,89},
  {&(_ZTV8S19458C2[51]),  51,89},
  {&(_ZTV8S19458C2[84]),  84,89},
  {&(_ZTV8S19458C2[32]),  32,89},
  {&(_tg__ZTV8S19458C4__8S19458C2[6]),  6,17},
  {&(_tg__ZTV8S19458C58S19458C4__8S19458C2[6]),  6,12},
  {&(_tg__ZTV8S19458C6__8S19458C58S19458C4__8S19458C2[9]),  9,15},
  {&(_tg__ZTV8S19458C58S19458C4__8S19458C2[6]),  6,12},
  {&(_tg__ZTV8S19458C8__8S19458C58S19458C4__8S19458C2[7]),  7,12},
  {&(_tg__ZTV8S19458C6__8S19458C4__8S19458C2[9]),  9,15},
  {&(_tg__ZTV8S19458C4__8S19458C2[6]),  6,17},
  {&(_tg__ZTV8S19458C8__8S19458C4__8S19458C2[7]),  7,12},
  {&(_tg__ZTV8S19458C6__8S19458C2[5]),  5,11},
  {&(_tg__ZTV8S19458C7__8S19458C6__8S19458C2[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C6__8S19458C2[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19458C2[];
extern  VTBL_ENTRY _ZTV8S19458C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C2[];
static VTBL_ENTRY alt_thunk_names173[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C4D0Ev,_ZThn60_N8S19458C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C4D1Ev,_ZThn60_N8S19458C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C3D0Ev,_ZTv0_n24_N8S19458C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C3D0Ev,_ZThn100_N8S19458C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C3D1Ev,_ZTv0_n24_N8S19458C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C3D1Ev,_ZThn100_N8S19458C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C3D0Ev,_ZTv0_n40_N8S19458C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C3D0Ev,_ZThn40_N8S19458C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C3D1Ev,_ZTv0_n40_N8S19458C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C3D1Ev,_ZThn40_N8S19458C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19458C10D0Ev,_ZThn100_N9S19458C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19458C10D1Ev,_ZThn100_N9S19458C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C5D0Ev,_ZThn60_N8S19458C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C5D0Ev,_ZThn100_N8S19458C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C5D1Ev,_ZThn60_N8S19458C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C5D1Ev,_ZThn100_N8S19458C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C2D0Ev,_ZTv0_n24_N8S19458C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C2D0Ev,_ZThn100_N8S19458C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C2D1Ev,_ZTv0_n24_N8S19458C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C2D1Ev,_ZThn100_N8S19458C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C2D0Ev,_ZTv0_n40_N8S19458C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C2D0Ev,_ZThn40_N8S19458C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C2D1Ev,_ZTv0_n40_N8S19458C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C2D1Ev,_ZThn40_N8S19458C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19458C2 = {  "S19458C2", // class name
  bases_S19458C2, 9,
  &(vtc_S19458C2[0]), // expected_vtbl_contents
  &(vtt_S19458C2[0]), // expected_vtt_contents
  ABISELECT(256,140), // object size
  NSPAIRA(_ZTI8S19458C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19458C2),89, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19458C2),34, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names173,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19458C1  : virtual S19458C2 {
  virtual void  v1(); // _ZN8S19458C12v1Ev
  virtual void  v2(); // _ZN8S19458C12v2Ev
  ~S19458C1(); // tgen
  S19458C1(); // tgen
};
//SIG(1 S19458C1) C1{ VBC2{ BC3{ VBC4{ BC5{ VBC6{ VBC7{ v3} VBC8{ v4 v5 v6 v7 v8 Fp FC7} vd v9 v10 v11 Fp[6]} v12 v13 v14 FL} vd v15 v16 v17 v18 v19 FC9{ v38 v39 v40 v41 v42 v43 Fp Fs}[4]} BC10{ BC5 BC11{ VBC7 v20 v21 v22 FL Fp} vd v23 v24 v25 v26 FC8} vd v27 v28 v29 v30 v31 v32} vd v33 v34 v35 v36 v37} v1 v2}


void  S19458C1 ::v1(){vfunc_called(this, "_ZN8S19458C12v1Ev");}
void  S19458C1 ::v2(){vfunc_called(this, "_ZN8S19458C12v2Ev");}
S19458C1 ::~S19458C1(){ note_dtor("S19458C1", this);} // tgen
S19458C1 ::S19458C1(){ note_ctor("S19458C1", this);} // tgen

static void Test_S19458C1()
{
  extern Class_Descriptor cd_S19458C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,37)];
    init_test(&cd_S19458C1, buf);
    S19458C1 *dp, &lv = *(dp=new (buf) S19458C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,144), "sizeof(S19458C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19458C1)");
    check_base_class_offset(lv, (S19458C7*)(S19458C6*), 0, "S19458C1");
    check_base_class_offset(lv, (S19458C7*)(S19458C11*)(S19458C10*)(S19458C3*)(S19458C2*), 0, "S19458C1");
    check_base_class_offset(lv, (S19458C8*)(S19458C6*), ABISELECT(240,132), "S19458C1");
    check_base_class_offset(lv, (S19458C6*)(S19458C5*)(S19458C4*), ABISELECT(184,104), "S19458C1");
    check_base_class_offset(lv, (S19458C6*)(S19458C5*)(S19458C10*)(S19458C3*)(S19458C2*), ABISELECT(184,104), "S19458C1");
    check_base_class_offset(lv, (S19458C5*)(S19458C4*), ABISELECT(72,44), "S19458C1");
    check_base_class_offset(lv, (S19458C4*)(S19458C3*)(S19458C2*), ABISELECT(72,44), "S19458C1");
    check_base_class_offset(lv, (S19458C5*)(S19458C10*)(S19458C3*)(S19458C2*), ABISELECT(8,4), "S19458C1");
    check_base_class_offset(lv, (S19458C11*)(S19458C10*)(S19458C3*)(S19458C2*), ABISELECT(24,16), "S19458C1");
    check_base_class_offset(lv, (S19458C10*)(S19458C3*)(S19458C2*), ABISELECT(8,4), "S19458C1");
    check_base_class_offset(lv, (S19458C3*)(S19458C2*), ABISELECT(8,4), "S19458C1");
    check_base_class_offset(lv, (S19458C2*), ABISELECT(8,4), "S19458C1");
    test_class_info(&lv, &cd_S19458C1);
    dp->~S19458C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19458C1(Test_S19458C1, "S19458C1", ABISELECT(264,144));

#else // __cplusplus

extern void _ZN8S19458C1C1Ev();
extern void _ZN8S19458C1D1Ev();
Name_Map name_map_S19458C1[] = {
  NSPAIR(_ZN8S19458C1C1Ev),
  NSPAIR(_ZN8S19458C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19458C7;
extern VTBL_ENTRY _ZTI8S19458C7[];
extern  VTBL_ENTRY _ZTV8S19458C7[];
extern Class_Descriptor cd_S19458C8;
extern VTBL_ENTRY _ZTI8S19458C8[];
extern  VTBL_ENTRY _ZTV8S19458C8[];
extern Class_Descriptor cd_S19458C6;
extern VTBL_ENTRY _ZTI8S19458C6[];
extern  VTBL_ENTRY _ZTV8S19458C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C6[];
extern Class_Descriptor cd_S19458C5;
extern VTBL_ENTRY _ZTI8S19458C5[];
extern  VTBL_ENTRY _ZTV8S19458C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C5[];
extern Class_Descriptor cd_S19458C4;
extern VTBL_ENTRY _ZTI8S19458C4[];
extern  VTBL_ENTRY _ZTV8S19458C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C4[];
extern Class_Descriptor cd_S19458C5;
extern VTBL_ENTRY _ZTI8S19458C5[];
extern  VTBL_ENTRY _ZTV8S19458C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C5[];
extern Class_Descriptor cd_S19458C11;
extern VTBL_ENTRY _ZTI9S19458C11[];
extern  VTBL_ENTRY _ZTV9S19458C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19458C11[];
extern Class_Descriptor cd_S19458C10;
extern VTBL_ENTRY _ZTI9S19458C10[];
extern  VTBL_ENTRY _ZTV9S19458C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19458C10[];
extern Class_Descriptor cd_S19458C3;
extern VTBL_ENTRY _ZTI8S19458C3[];
extern  VTBL_ENTRY _ZTV8S19458C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C3[];
extern Class_Descriptor cd_S19458C2;
extern VTBL_ENTRY _ZTI8S19458C2[];
extern  VTBL_ENTRY _ZTV8S19458C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C2[];
static Base_Class bases_S19458C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19458C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19458C8,    ABISELECT(240,132), //bcp->offset
    112, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19458C6,    ABISELECT(184,104), //bcp->offset
    97, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19458C5,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    4, //immediately_derived
  0, 0},
  {&cd_S19458C4,    ABISELECT(72,44), //bcp->offset
    71, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19458C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19458C11,    ABISELECT(24,16), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19458C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19458C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19458C2,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    29, //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 _ZTI8S19458C1[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C12v1Ev();
extern void _ZN8S19458C12v2Ev();
extern void _ZN8S19458C1D1Ev();
extern void _ZN8S19458C1D0Ev();
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void ABISELECT(_ZTv0_n88_N8S19458C1D1Ev,_ZTv0_n44_N8S19458C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19458C1D1Ev,_ZThn4_N8S19458C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19458C1D0Ev,_ZTv0_n44_N8S19458C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S19458C1D0Ev,_ZThn4_N8S19458C1D0Ev)() __attribute__((weak));
extern void _ZN9S19458C103v23Ev();
extern void _ZN9S19458C103v24Ev();
extern void _ZN9S19458C103v25Ev();
extern void _ZN9S19458C103v26Ev();
extern void _ZN8S19458C33v27Ev();
extern void _ZN8S19458C33v28Ev();
extern void _ZN8S19458C33v29Ev();
extern void _ZN8S19458C33v30Ev();
extern void _ZN8S19458C33v31Ev();
extern void _ZN8S19458C33v32Ev();
extern void _ZN8S19458C23v33Ev();
extern void _ZN8S19458C23v34Ev();
extern void _ZN8S19458C23v35Ev();
extern void _ZN8S19458C23v36Ev();
extern void _ZN8S19458C23v37Ev();
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void ABISELECT(_ZTv0_n80_N8S19458C1D1Ev,_ZTv0_n40_N8S19458C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S19458C1D1Ev,_ZThn44_N8S19458C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19458C1D0Ev,_ZTv0_n40_N8S19458C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S19458C1D0Ev,_ZThn44_N8S19458C1D0Ev)() __attribute__((weak));
extern void _ZN8S19458C43v15Ev();
extern void _ZN8S19458C43v16Ev();
extern void _ZN8S19458C43v17Ev();
extern void _ZN8S19458C43v18Ev();
extern void _ZN8S19458C43v19Ev();
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C1D1Ev,_ZTv0_n24_N8S19458C1D1Ev)();
extern void ABISELECT(_ZThn184_N8S19458C1D1Ev,_ZThn104_N8S19458C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C1D0Ev,_ZTv0_n24_N8S19458C1D0Ev)();
extern void ABISELECT(_ZThn184_N8S19458C1D0Ev,_ZThn104_N8S19458C1D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY vtc_S19458C1[] = {
  ABISELECT(240,132),
  0,
  ABISELECT(184,104),
  ABISELECT(72,44),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C1[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19458C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19458C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C1D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(-8,-4),
  ABISELECT(176,100),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19458C1[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19458C1D1Ev,_ZTv0_n44_N8S19458C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19458C1D0Ev,_ZTv0_n44_N8S19458C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19458C103v23Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v24Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v26Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v27Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v28Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v29Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v32Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v33Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v34Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v35Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v36Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v37Ev,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19458C1[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-72,-44),
  ABISELECT(112,60),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S19458C1[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C1D1Ev,_ZTv0_n40_N8S19458C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C1D0Ev,_ZTv0_n40_N8S19458C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v19Ev,
  0,
  0,
  0,
  ABISELECT(-184,-104),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI8S19458C1[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C1D1Ev,_ZTv0_n24_N8S19458C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C1D0Ev,_ZTv0_n24_N8S19458C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI8S19458C1[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern VTBL_ENTRY _ZTV8S19458C1[];
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C2D1Ev();
extern void _ZN8S19458C2D0Ev();
extern void _ZN9S19458C103v23Ev();
extern void _ZN9S19458C103v24Ev();
extern void _ZN9S19458C103v25Ev();
extern void _ZN9S19458C103v26Ev();
extern void _ZN8S19458C33v27Ev();
extern void _ZN8S19458C33v28Ev();
extern void _ZN8S19458C33v29Ev();
extern void _ZN8S19458C33v30Ev();
extern void _ZN8S19458C33v31Ev();
extern void _ZN8S19458C33v32Ev();
extern void _ZN8S19458C23v33Ev();
extern void _ZN8S19458C23v34Ev();
extern void _ZN8S19458C23v35Ev();
extern void _ZN8S19458C23v36Ev();
extern void _ZN8S19458C23v37Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C2__8S19458C1[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(-8,-4),
  ABISELECT(176,100),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C2[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C2D0Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v23Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v24Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v26Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v27Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v28Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v29Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v32Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v33Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v34Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v35Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v36Ev,
  (VTBL_ENTRY)&_ZN8S19458C23v37Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C3D1Ev();
extern void _ZN8S19458C3D0Ev();
extern void _ZN9S19458C103v23Ev();
extern void _ZN9S19458C103v24Ev();
extern void _ZN9S19458C103v25Ev();
extern void _ZN9S19458C103v26Ev();
extern void _ZN8S19458C33v27Ev();
extern void _ZN8S19458C33v28Ev();
extern void _ZN8S19458C33v29Ev();
extern void _ZN8S19458C33v30Ev();
extern void _ZN8S19458C33v31Ev();
extern void _ZN8S19458C33v32Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C38S19458C2__8S19458C1[] = {
  ABISELECT(64,40),
  ABISELECT(232,128),
  ABISELECT(-8,-4),
  ABISELECT(176,100),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C3D0Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v23Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v24Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v26Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v27Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v28Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v29Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19458C33v32Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN9S19458C10D1Ev();
extern void _ZN9S19458C10D0Ev();
extern void _ZN9S19458C103v23Ev();
extern void _ZN9S19458C103v24Ev();
extern void _ZN9S19458C103v25Ev();
extern void _ZN9S19458C103v26Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C108S19458C38S19458C2__8S19458C1[] = {
  ABISELECT(232,128),
  ABISELECT(-8,-4),
  ABISELECT(176,100),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN9S19458C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19458C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v23Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v24Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v25Ev,
  (VTBL_ENTRY)&_ZN9S19458C103v26Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C5D1Ev();
extern void _ZN8S19458C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C59S19458C108S19458C38S19458C2__A1__8S19458C1[] = {
  ABISELECT(232,128),
  ABISELECT(-8,-4),
  ABISELECT(176,100),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D0Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev)();
extern void ABISELECT(_ZThn176_N8S19458C5D1Ev,_ZThn100_N8S19458C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev)();
extern void ABISELECT(_ZThn176_N8S19458C5D0Ev,_ZThn100_N8S19458C5D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C59S19458C108S19458C38S19458C2__A1__8S19458C1[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C59S19458C108S19458C38S19458C2__A1__8S19458C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C59S19458C108S19458C38S19458C2__A1__8S19458C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C119S19458C108S19458C38S19458C2__8S19458C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19458C11[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__9S19458C119S19458C108S19458C38S19458C2__8S19458C1[] = {
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S19458C11[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev)();
extern void ABISELECT(_ZThn176_N9S19458C10D1Ev,_ZThn100_N9S19458C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev)();
extern void ABISELECT(_ZThn176_N9S19458C10D0Ev,_ZThn100_N9S19458C10D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__9S19458C108S19458C38S19458C2__8S19458C1[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__9S19458C108S19458C38S19458C2__8S19458C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__9S19458C108S19458C38S19458C2__8S19458C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C11__9S19458C108S19458C38S19458C2__8S19458C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19458C10[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void ABISELECT(_ZTv0_n80_N8S19458C3D1Ev,_ZTv0_n40_N8S19458C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19458C3D1Ev,_ZThn40_N8S19458C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19458C3D0Ev,_ZTv0_n40_N8S19458C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19458C3D0Ev,_ZThn40_N8S19458C3D0Ev)() __attribute__((weak));
extern void _ZN8S19458C43v15Ev();
extern void _ZN8S19458C43v16Ev();
extern void _ZN8S19458C43v17Ev();
extern void _ZN8S19458C43v18Ev();
extern void _ZN8S19458C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C4__8S19458C38S19458C2__8S19458C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-72,-44),
  ABISELECT(112,60),
  ABISELECT(-72,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C3D1Ev,_ZTv0_n40_N8S19458C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C3D0Ev,_ZTv0_n40_N8S19458C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v19Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C3D1Ev,_ZTv0_n24_N8S19458C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S19458C3D1Ev,_ZThn100_N8S19458C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C3D0Ev,_ZTv0_n24_N8S19458C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S19458C3D0Ev,_ZThn100_N8S19458C3D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C38S19458C2__8S19458C1[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C3D1Ev,_ZTv0_n24_N8S19458C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C3D0Ev,_ZTv0_n24_N8S19458C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C38S19458C2__8S19458C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C38S19458C2__8S19458C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C119S19458C10__8S19458C38S19458C2__8S19458C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19458C3[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void ABISELECT(_ZTv0_n80_N8S19458C2D1Ev,_ZTv0_n40_N8S19458C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S19458C2D1Ev,_ZThn40_N8S19458C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19458C2D0Ev,_ZTv0_n40_N8S19458C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S19458C2D0Ev,_ZThn40_N8S19458C2D0Ev)() __attribute__((weak));
extern void _ZN8S19458C43v15Ev();
extern void _ZN8S19458C43v16Ev();
extern void _ZN8S19458C43v17Ev();
extern void _ZN8S19458C43v18Ev();
extern void _ZN8S19458C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C4__8S19458C2__8S19458C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-72,-44),
  ABISELECT(112,60),
  ABISELECT(-72,-44),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19458C2[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C2D1Ev,_ZTv0_n40_N8S19458C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19458C2D0Ev,_ZTv0_n40_N8S19458C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v19Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C2D1Ev,_ZTv0_n24_N8S19458C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S19458C2D1Ev,_ZThn100_N8S19458C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C2D0Ev,_ZTv0_n24_N8S19458C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S19458C2D0Ev,_ZThn100_N8S19458C2D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C2__8S19458C1[] = {
  0,
  0,
  0,
  ABISELECT(-176,-100),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19458C2[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C2D1Ev,_ZTv0_n24_N8S19458C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C2D0Ev,_ZTv0_n24_N8S19458C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C2__8S19458C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19458C2[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C2__8S19458C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S19458C2[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN9S19458C113v20Ev();
extern void _ZN9S19458C113v21Ev();
extern void _ZN9S19458C113v22Ev();
static  VTBL_ENTRY _tg__ZTV9S19458C119S19458C108S19458C3__8S19458C2__8S19458C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19458C2[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v20Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v21Ev,
  (VTBL_ENTRY)&_ZN9S19458C113v22Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C4D1Ev();
extern void _ZN8S19458C4D0Ev();
extern void _ZN8S19458C43v15Ev();
extern void _ZN8S19458C43v16Ev();
extern void _ZN8S19458C43v17Ev();
extern void _ZN8S19458C43v18Ev();
extern void _ZN8S19458C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C4__8S19458C1[] = {
  ABISELECT(168,88),
  ABISELECT(-72,-44),
  ABISELECT(112,60),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19458C43v19Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C53v12Ev();
extern void _ZN8S19458C53v13Ev();
extern void _ZN8S19458C53v14Ev();
extern void _ZN8S19458C5D1Ev();
extern void _ZN8S19458C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C58S19458C4__8S19458C1[] = {
  ABISELECT(168,88),
  ABISELECT(-72,-44),
  ABISELECT(112,60),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19458C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C5D0Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19458C5D1Ev,_ZThn60_N8S19458C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19458C5D0Ev,_ZThn60_N8S19458C5D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C58S19458C4__8S19458C1[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C58S19458C4__8S19458C1[] = {
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C58S19458C4__8S19458C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19458C5[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S19458C4D1Ev,_ZThn60_N8S19458C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S19458C4D0Ev,_ZThn60_N8S19458C4D0Ev)() __attribute__((weak));
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C4__8S19458C1[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C4__8S19458C1[] = {
  0,
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C4__8S19458C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19458C4[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
extern void _ZN8S19458C72v3Ev();
extern void _ZN8S19458C6D1Ev();
extern void _ZN8S19458C6D0Ev();
extern void _ZN8S19458C62v9Ev();
extern void _ZN8S19458C63v10Ev();
extern void _ZN8S19458C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C6__8S19458C1[] = {
  ABISELECT(56,28),
  ABISELECT(-184,-104),
  ABISELECT(-184,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19458C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19458C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19458C63v11Ev,
};
extern void _ZN8S19458C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C7__8S19458C6__8S19458C1[] = {
  0,
  ABISELECT(184,104),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C72v3Ev,
};
extern void _ZN8S19458C82v4Ev();
extern void _ZN8S19458C82v5Ev();
extern void _ZN8S19458C82v6Ev();
extern void _ZN8S19458C82v7Ev();
extern void _ZN8S19458C82v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19458C8__8S19458C6__8S19458C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19458C6[0]),
  (VTBL_ENTRY)&_ZN8S19458C82v4Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v5Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v6Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v7Ev,
  (VTBL_ENTRY)&_ZN8S19458C82v8Ev,
};
static  VTT_ENTRY vtt_S19458C1[] = {
  {&(_ZTV8S19458C1[8]),  8,124},
  {&(_ZTV8S19458C1[42]),  42,124},
  {&(_ZTV8S19458C1[86]),  86,124},
  {&(_ZTV8S19458C1[106]),  106,124},
  {&(_ZTV8S19458C1[8]),  8,124},
  {&(_ZTV8S19458C1[119]),  119,124},
  {&(_ZTV8S19458C1[67]),  67,124},
  {&(_tg__ZTV8S19458C2__8S19458C1[7]),  7,28},
  {&(_tg__ZTV8S19458C38S19458C2__8S19458C1[7]),  7,23},
  {&(_tg__ZTV9S19458C108S19458C38S19458C2__8S19458C1[6]),  6,16},
  {&(_tg__ZTV8S19458C59S19458C108S19458C38S19458C2__A1__8S19458C1[6]),  6,12},
  {&(_tg__ZTV8S19458C6__8S19458C59S19458C108S19458C38S19458C2__A1__8S19458C1[9]),  9,15},
  {&(_tg__ZTV8S19458C7__8S19458C59S19458C108S19458C38S19458C2__A1__8S19458C1[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C59S19458C108S19458C38S19458C2__A1__8S19458C1[7]),  7,12},
  {&(_tg__ZTV9S19458C119S19458C108S19458C38S19458C2__8S19458C1[4]),  4,8},
  {&(_tg__ZTV8S19458C7__9S19458C119S19458C108S19458C38S19458C2__8S19458C1[3]),  3,4},
  {&(_tg__ZTV8S19458C6__9S19458C108S19458C38S19458C2__8S19458C1[9]),  9,15},
  {&(_tg__ZTV8S19458C7__9S19458C108S19458C38S19458C2__8S19458C1[3]),  3,4},
  {&(_tg__ZTV8S19458C8__9S19458C108S19458C38S19458C2__8S19458C1[7]),  7,12},
  {&(_tg__ZTV9S19458C11__9S19458C108S19458C38S19458C2__8S19458C1[4]),  4,8},
  {&(_tg__ZTV8S19458C4__8S19458C38S19458C2__8S19458C1[15]),  15,26},
  {&(_tg__ZTV8S19458C6__8S19458C38S19458C2__8S19458C1[9]),  9,15},
  {&(_tg__ZTV8S19458C7__8S19458C38S19458C2__8S19458C1[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C38S19458C2__8S19458C1[7]),  7,12},
  {&(_tg__ZTV9S19458C119S19458C10__8S19458C38S19458C2__8S19458C1[4]),  4,8},
  {&(_tg__ZTV8S19458C4__8S19458C2__8S19458C1[15]),  15,26},
  {&(_tg__ZTV8S19458C6__8S19458C2__8S19458C1[9]),  9,15},
  {&(_tg__ZTV8S19458C7__8S19458C2__8S19458C1[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C2__8S19458C1[7]),  7,12},
  {&(_tg__ZTV9S19458C119S19458C108S19458C3__8S19458C2__8S19458C1[4]),  4,8},
  {&(_tg__ZTV8S19458C4__8S19458C1[6]),  6,17},
  {&(_tg__ZTV8S19458C58S19458C4__8S19458C1[6]),  6,12},
  {&(_tg__ZTV8S19458C6__8S19458C58S19458C4__8S19458C1[9]),  9,15},
  {&(_tg__ZTV8S19458C7__8S19458C58S19458C4__8S19458C1[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C58S19458C4__8S19458C1[7]),  7,12},
  {&(_tg__ZTV8S19458C6__8S19458C4__8S19458C1[9]),  9,15},
  {&(_tg__ZTV8S19458C7__8S19458C4__8S19458C1[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C4__8S19458C1[7]),  7,12},
  {&(_tg__ZTV8S19458C6__8S19458C1[5]),  5,11},
  {&(_tg__ZTV8S19458C7__8S19458C6__8S19458C1[3]),  3,4},
  {&(_tg__ZTV8S19458C8__8S19458C6__8S19458C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19458C1[];
extern  VTBL_ENTRY _ZTV8S19458C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19458C1[];
static VTBL_ENTRY alt_thunk_names174[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C4D0Ev,_ZTv0_n24_N8S19458C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C4D0Ev,_ZThn60_N8S19458C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C4D1Ev,_ZTv0_n24_N8S19458C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C4D1Ev,_ZThn60_N8S19458C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C2D0Ev,_ZTv0_n24_N8S19458C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C2D0Ev,_ZThn100_N8S19458C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C2D1Ev,_ZTv0_n24_N8S19458C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C2D1Ev,_ZThn100_N8S19458C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C2D0Ev,_ZTv0_n40_N8S19458C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C2D0Ev,_ZThn40_N8S19458C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C2D1Ev,_ZTv0_n40_N8S19458C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C2D1Ev,_ZThn40_N8S19458C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C3D0Ev,_ZTv0_n24_N8S19458C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C3D0Ev,_ZThn100_N8S19458C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C3D1Ev,_ZTv0_n24_N8S19458C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C3D1Ev,_ZThn100_N8S19458C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C3D0Ev,_ZTv0_n40_N8S19458C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C3D0Ev,_ZThn40_N8S19458C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C3D1Ev,_ZTv0_n40_N8S19458C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19458C3D1Ev,_ZThn40_N8S19458C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19458C10D0Ev,_ZTv0_n24_N9S19458C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19458C10D0Ev,_ZThn100_N9S19458C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19458C10D1Ev,_ZTv0_n24_N9S19458C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19458C10D1Ev,_ZThn100_N9S19458C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D0Ev,_ZTv0_n24_N8S19458C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C5D0Ev,_ZThn60_N8S19458C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C5D0Ev,_ZThn100_N8S19458C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C5D1Ev,_ZTv0_n24_N8S19458C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19458C5D1Ev,_ZThn60_N8S19458C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19458C5D1Ev,_ZThn100_N8S19458C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C1D0Ev,_ZTv0_n24_N8S19458C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19458C1D0Ev,_ZThn104_N8S19458C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19458C1D1Ev,_ZTv0_n24_N8S19458C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19458C1D1Ev,_ZThn104_N8S19458C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C1D0Ev,_ZTv0_n40_N8S19458C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19458C1D0Ev,_ZThn44_N8S19458C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19458C1D1Ev,_ZTv0_n40_N8S19458C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19458C1D1Ev,_ZThn44_N8S19458C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19458C1D0Ev,_ZTv0_n44_N8S19458C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19458C1D0Ev,_ZThn4_N8S19458C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19458C1D1Ev,_ZTv0_n44_N8S19458C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19458C1D1Ev,_ZThn4_N8S19458C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19458C1 = {  "S19458C1", // class name
  bases_S19458C1, 10,
  &(vtc_S19458C1[0]), // expected_vtbl_contents
  &(vtt_S19458C1[0]), // expected_vtt_contents
  ABISELECT(264,144), // object size
  NSPAIRA(_ZTI8S19458C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19458C1),124, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19458C1),41, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names174,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11611C1  {
  ::S11608C2 s11611c1f0;
  ::S11608C4 s11611c1f1;
  ::S11608C4 s11611c1f2;
};
//SIG(1 S11611C1) C1{ FC2{ Fi[3] FC3{ Fp Fi}} FU4{ Fi FC5{ Fi FC6{ Fi} Fi FC7{ Fi Fi Fi Fp Fi} FC8{ FL FL FL FL FL FL} Fi Fi Fi} FC9{ FC5 FC10{ FL FL FL FL Fs Fs Fs Fs}} FC11{ FC5 Fp} FU12{ FC13{ FC5 Fi Fi Fp FC14{ FL FC10}[2]} FC15{ FC13 FC16{ Fi Fi} FC16} FC17{ FC13 FC16 Fi FC16 Fi}}} FU4}



static void Test_S11611C1()
{
  {
    init_simple_test("S11611C1");
    S11611C1 lv;
    check2(sizeof(lv), ABISELECT(528,468), "sizeof(S11611C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11611C1)");
    check_field_offset(lv, s11611c1f0, 0, "S11611C1.s11611c1f0");
    check_field_offset(lv, s11611c1f1, ABISELECT(32,20), "S11611C1.s11611c1f1");
    check_field_offset(lv, s11611c1f2, ABISELECT(280,244), "S11611C1.s11611c1f2");
  }
}
static Arrange_To_Call_Me vS11611C1(Test_S11611C1, "S11611C1", ABISELECT(528,468));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11612C1  {
  ::S11608C2 s11612c1f0;
  ::S11608C4 s11612c1f1;
};
//SIG(1 S11612C1) C1{ FC2{ Fi[3] FC3{ Fp Fi}} FU4{ Fi FC5{ Fi FC6{ Fi} Fi FC7{ Fi Fi Fi Fp Fi} FC8{ FL FL FL FL FL FL} Fi Fi Fi} FC9{ FC5 FC10{ FL FL FL FL Fs Fs Fs Fs}} FC11{ FC5 Fp} FU12{ FC13{ FC5 Fi Fi Fp FC14{ FL FC10}[2]} FC15{ FC13 FC16{ Fi Fi} FC16} FC17{ FC13 FC16 Fi FC16 Fi}}}}



static void Test_S11612C1()
{
  {
    init_simple_test("S11612C1");
    S11612C1 lv;
    check2(sizeof(lv), ABISELECT(280,244), "sizeof(S11612C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11612C1)");
    check_field_offset(lv, s11612c1f0, 0, "S11612C1.s11612c1f0");
    check_field_offset(lv, s11612c1f1, ABISELECT(32,20), "S11612C1.s11612c1f1");
  }
}
static Arrange_To_Call_Me vS11612C1(Test_S11612C1, "S11612C1", ABISELECT(280,244));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6899C2  {
  long double s6899c2f0;
  virtual void  v5(); // _ZN7S6899C22v5Ev
  virtual void  v6(); // _ZN7S6899C22v6Ev
  virtual void  v7(); // _ZN7S6899C22v7Ev
  virtual void  v8(); // _ZN7S6899C22v8Ev
  virtual void  v9(); // _ZN7S6899C22v9Ev
  ~S6899C2(); // tgen
  S6899C2(); // tgen
};
//SIG(-1 S6899C2) C1{ v1 v2 v3 v4 v5 FD}


void  S6899C2 ::v5(){vfunc_called(this, "_ZN7S6899C22v5Ev");}
void  S6899C2 ::v6(){vfunc_called(this, "_ZN7S6899C22v6Ev");}
void  S6899C2 ::v7(){vfunc_called(this, "_ZN7S6899C22v7Ev");}
void  S6899C2 ::v8(){vfunc_called(this, "_ZN7S6899C22v8Ev");}
void  S6899C2 ::v9(){vfunc_called(this, "_ZN7S6899C22v9Ev");}
S6899C2 ::~S6899C2(){ note_dtor("S6899C2", this);} // tgen
S6899C2 ::S6899C2(){ note_ctor("S6899C2", this);} // tgen

static void Test_S6899C2()
{
  extern Class_Descriptor cd_S6899C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S6899C2, buf);
    S6899C2 *dp, &lv = *(dp=new (buf) S6899C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6899C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6899C2)");
    check_field_offset(lv, s6899c2f0, ABISELECT(16,4), "S6899C2.s6899c2f0");
    test_class_info(&lv, &cd_S6899C2);
    dp->~S6899C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6899C2(Test_S6899C2, "S6899C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S6899C2C1Ev();
extern void _ZN7S6899C2D1Ev();
Name_Map name_map_S6899C2[] = {
  NSPAIR(_ZN7S6899C2C1Ev),
  NSPAIR(_ZN7S6899C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6899C2[];
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY vtc_S6899C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C2[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
Class_Descriptor cd_S6899C2 = {  "S6899C2", // class name
  0,0,//no base classes
  &(vtc_S6899C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S6899C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6899C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6899C3  {
  virtual void  v10(); // _ZN7S6899C33v10Ev
  ~S6899C3(); // tgen
  S6899C3(); // tgen
};
//SIG(-1 S6899C3) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S6899C3C1Ev();
extern void _ZN7S6899C3D1Ev();
Name_Map name_map_S6899C3[] = {
  NSPAIR(_ZN7S6899C3C1Ev),
  NSPAIR(_ZN7S6899C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6899C3[];
extern void _ZN7S6899C33v10Ev();
static  VTBL_ENTRY vtc_S6899C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C3[0]),
  (VTBL_ENTRY)&_ZN7S6899C33v10Ev,
};
extern VTBL_ENTRY _ZTI7S6899C3[];
extern  VTBL_ENTRY _ZTV7S6899C3[];
Class_Descriptor cd_S6899C3 = {  "S6899C3", // class name
  0,0,//no base classes
  &(vtc_S6899C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6899C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6899C3),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  S6899C4_nt  {
  virtual void  v11(); // _ZN10S6899C4_nt3v11Ev
  virtual void  v12(); // _ZN10S6899C4_nt3v12Ev
  virtual void  v13(); // _ZN10S6899C4_nt3v13Ev
  virtual void  v14(); // _ZN10S6899C4_nt3v14Ev
  virtual void  v15(); // _ZN10S6899C4_nt3v15Ev
  ~S6899C4_nt(); // tgen
  S6899C4_nt(); // tgen
};
//SIG(-1 S6899C4_nt) C1{ v1 v2 v3 v4 v5}


void  S6899C4_nt ::v11(){vfunc_called(this, "_ZN10S6899C4_nt3v11Ev");}
void  S6899C4_nt ::v12(){vfunc_called(this, "_ZN10S6899C4_nt3v12Ev");}
void  S6899C4_nt ::v13(){vfunc_called(this, "_ZN10S6899C4_nt3v13Ev");}
void  S6899C4_nt ::v14(){vfunc_called(this, "_ZN10S6899C4_nt3v14Ev");}
void  S6899C4_nt ::v15(){vfunc_called(this, "_ZN10S6899C4_nt3v15Ev");}
S6899C4_nt ::~S6899C4_nt(){ note_dtor("S6899C4_nt", this);} // tgen
S6899C4_nt ::S6899C4_nt(){ note_ctor("S6899C4_nt", this);} // tgen

//skip512 S6899C4_nt

#else // __cplusplus

extern void _ZN10S6899C4_ntC1Ev();
extern void _ZN10S6899C4_ntD1Ev();
Name_Map name_map_S6899C4_nt[] = {
  NSPAIR(_ZN10S6899C4_ntC1Ev),
  NSPAIR(_ZN10S6899C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6899C4_nt[];
extern void _ZN10S6899C4_nt3v11Ev();
extern void _ZN10S6899C4_nt3v12Ev();
extern void _ZN10S6899C4_nt3v13Ev();
extern void _ZN10S6899C4_nt3v14Ev();
extern void _ZN10S6899C4_nt3v15Ev();
static  VTBL_ENTRY vtc_S6899C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6899C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S6899C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6899C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6899C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6899C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S6899C4_nt3v15Ev,
};
extern VTBL_ENTRY _ZTI10S6899C4_nt[];
VTBL_ENTRY *P__ZTI10S6899C4_nt = _ZTI10S6899C4_nt; 
extern  VTBL_ENTRY _ZTV10S6899C4_nt[];
Class_Descriptor cd_S6899C4_nt = {  "S6899C4_nt", // class name
  0,0,//no base classes
  &(vtc_S6899C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6899C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6899C4_nt),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6899C6  {
  virtual void  v16(); // _ZN7S6899C63v16Ev
  virtual void  v17(); // _ZN7S6899C63v17Ev
  virtual void  v18(); // _ZN7S6899C63v18Ev
  ~S6899C6(); // tgen
  S6899C6(); // tgen
};
//SIG(-1 S6899C6) C1{ v1 v2 v3}


void  S6899C6 ::v16(){vfunc_called(this, "_ZN7S6899C63v16Ev");}
void  S6899C6 ::v17(){vfunc_called(this, "_ZN7S6899C63v17Ev");}
void  S6899C6 ::v18(){vfunc_called(this, "_ZN7S6899C63v18Ev");}
S6899C6 ::~S6899C6(){ note_dtor("S6899C6", this);} // tgen
S6899C6 ::S6899C6(){ note_ctor("S6899C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6899C6C1Ev();
extern void _ZN7S6899C6D1Ev();
Name_Map name_map_S6899C6[] = {
  NSPAIR(_ZN7S6899C6C1Ev),
  NSPAIR(_ZN7S6899C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6899C6[];
extern void _ZN7S6899C63v16Ev();
extern void _ZN7S6899C63v17Ev();
extern void _ZN7S6899C63v18Ev();
static  VTBL_ENTRY vtc_S6899C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C6[0]),
  (VTBL_ENTRY)&_ZN7S6899C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6899C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6899C63v18Ev,
};
extern VTBL_ENTRY _ZTI7S6899C6[];
extern  VTBL_ENTRY _ZTV7S6899C6[];
Class_Descriptor cd_S6899C6 = {  "S6899C6", // class name
  0,0,//no base classes
  &(vtc_S6899C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6899C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6899C6),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  S6899C9  : virtual S6899C2 {
  ::S6899C2 s6899c9f0;
  virtual  ~S6899C9(); // _ZN7S6899C9D2Ev
  virtual void  v19(); // _ZN7S6899C93v19Ev
  virtual void  v20(); // _ZN7S6899C93v20Ev
  virtual void  v21(); // _ZN7S6899C93v21Ev
  virtual void  v22(); // _ZN7S6899C93v22Ev
  virtual void  v23(); // _ZN7S6899C93v23Ev
  S6899C9(); // tgen
};
//SIG(-1 S6899C9) C1{ VBC2{ v6 v7 v8 v9 v10 FD} vd v1 v2 v3 v4 v5 FC2}


 S6899C9 ::~S6899C9(){ note_dtor("S6899C9", this);}
void  S6899C9 ::v19(){vfunc_called(this, "_ZN7S6899C93v19Ev");}
void  S6899C9 ::v20(){vfunc_called(this, "_ZN7S6899C93v20Ev");}
void  S6899C9 ::v21(){vfunc_called(this, "_ZN7S6899C93v21Ev");}
void  S6899C9 ::v22(){vfunc_called(this, "_ZN7S6899C93v22Ev");}
void  S6899C9 ::v23(){vfunc_called(this, "_ZN7S6899C93v23Ev");}
S6899C9 ::S6899C9(){ note_ctor("S6899C9", this);} // tgen

static void Test_S6899C9()
{
  extern Class_Descriptor cd_S6899C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S6899C9, buf);
    S6899C9 *dp, &lv = *(dp=new (buf) S6899C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S6899C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6899C9)");
    check_base_class_offset(lv, (S6899C2*), ABISELECT(48,20), "S6899C9");
    check_field_offset(lv, s6899c9f0, ABISELECT(16,4), "S6899C9.s6899c9f0");
    test_class_info(&lv, &cd_S6899C9);
    dp->~S6899C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6899C9(Test_S6899C9, "S6899C9", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN7S6899C9C1Ev();
extern void _ZN7S6899C9D2Ev();
Name_Map name_map_S6899C9[] = {
  NSPAIR(_ZN7S6899C9C1Ev),
  NSPAIR(_ZN7S6899C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6899C2;
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
static Base_Class bases_S6899C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6899C2,    ABISELECT(48,20), //bcp->offset
    10, //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 _ZTI7S6899C9[];
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY vtc_S6899C9[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern VTBL_ENTRY _ZTV7S6899C9[];
static  VTT_ENTRY vtt_S6899C9[] = {
  {&(_ZTV7S6899C9[3]),  3,22},
  {&(_ZTV7S6899C9[17]),  17,22},
};
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
Class_Descriptor cd_S6899C9 = {  "S6899C9", // class name
  bases_S6899C9, 1,
  &(vtc_S6899C9[0]), // expected_vtbl_contents
  &(vtt_S6899C9[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI7S6899C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6899C9),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6899C9),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  S6899C8  : S6899C9 {
  virtual void  v24(); // _ZN7S6899C83v24Ev
  virtual void  v25(); // _ZN7S6899C83v25Ev
  ~S6899C8(); // tgen
  S6899C8(); // tgen
};
//SIG(-1 S6899C8) C1{ BC2{ VBC3{ v3 v4 v5 v6 v7 FD} vd v8 v9 v10 v11 v12 FC3} v1 v2}


void  S6899C8 ::v24(){vfunc_called(this, "_ZN7S6899C83v24Ev");}
void  S6899C8 ::v25(){vfunc_called(this, "_ZN7S6899C83v25Ev");}
S6899C8 ::~S6899C8(){ note_dtor("S6899C8", this);} // tgen
S6899C8 ::S6899C8(){ note_ctor("S6899C8", this);} // tgen

static void Test_S6899C8()
{
  extern Class_Descriptor cd_S6899C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S6899C8, buf);
    S6899C8 *dp, &lv = *(dp=new (buf) S6899C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S6899C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6899C8)");
    check_base_class_offset(lv, (S6899C2*)(S6899C9*), ABISELECT(48,20), "S6899C8");
    check_base_class_offset(lv, (S6899C9*), 0, "S6899C8");
    test_class_info(&lv, &cd_S6899C8);
    dp->~S6899C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6899C8(Test_S6899C8, "S6899C8", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN7S6899C8C1Ev();
extern void _ZN7S6899C8D1Ev();
Name_Map name_map_S6899C8[] = {
  NSPAIR(_ZN7S6899C8C1Ev),
  NSPAIR(_ZN7S6899C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6899C2;
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
static Base_Class bases_S6899C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6899C2,    ABISELECT(48,20), //bcp->offset
    12, //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_S6899C9,    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 _ZTI7S6899C8[];
extern void _ZN7S6899C8D1Ev();
extern void _ZN7S6899C8D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY vtc_S6899C8[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern VTBL_ENTRY _ZTV7S6899C8[];
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C9__7S6899C8[] = {
  ABISELECT(48,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C9__7S6899C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
static  VTT_ENTRY vtt_S6899C8[] = {
  {&(_ZTV7S6899C8[3]),  3,24},
  {&(_tg__ZTV7S6899C9__7S6899C8[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C9__7S6899C8[7]),  7,12},
  {&(_ZTV7S6899C8[19]),  19,24},
};
extern VTBL_ENTRY _ZTI7S6899C8[];
extern  VTBL_ENTRY _ZTV7S6899C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C8[];
Class_Descriptor cd_S6899C8 = {  "S6899C8", // class name
  bases_S6899C8, 2,
  &(vtc_S6899C8[0]), // expected_vtbl_contents
  &(vtt_S6899C8[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI7S6899C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6899C8),24, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6899C8),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  S6899C10  : virtual S6899C2 , S6899C9 , S6899C8 {
  char s6899c10f0[8];
  virtual void  v26(); // _ZN8S6899C103v26Ev
  virtual void  v27(); // _ZN8S6899C103v27Ev
  virtual void  v28(); // _ZN8S6899C103v28Ev
  virtual void  v29(); // _ZN8S6899C103v29Ev
  virtual void  v30(); // _ZN8S6899C103v30Ev
  virtual void  v31(); // _ZN8S6899C103v31Ev
  virtual void  v32(); // _ZN8S6899C103v32Ev
  ~S6899C10(); // tgen
  S6899C10(); // tgen
};
//SIG(-1 S6899C10) C1{ VBC2{ v8 v9 v10 v11 v12 FD} BC3{ VBC2 vd v13 v14 v15 v16 v17 FC2} BC4{ BC3 v18 v19} v1 v2 v3 v4 v5 v6 v7 Fc[8]}


void  S6899C10 ::v26(){vfunc_called(this, "_ZN8S6899C103v26Ev");}
void  S6899C10 ::v27(){vfunc_called(this, "_ZN8S6899C103v27Ev");}
void  S6899C10 ::v28(){vfunc_called(this, "_ZN8S6899C103v28Ev");}
void  S6899C10 ::v29(){vfunc_called(this, "_ZN8S6899C103v29Ev");}
void  S6899C10 ::v30(){vfunc_called(this, "_ZN8S6899C103v30Ev");}
void  S6899C10 ::v31(){vfunc_called(this, "_ZN8S6899C103v31Ev");}
void  S6899C10 ::v32(){vfunc_called(this, "_ZN8S6899C103v32Ev");}
S6899C10 ::~S6899C10(){ note_dtor("S6899C10", this);} // tgen
S6899C10 ::S6899C10(){ note_ctor("S6899C10", this);} // tgen

static void Test_S6899C10()
{
  extern Class_Descriptor cd_S6899C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,17)];
    init_test(&cd_S6899C10, buf);
    S6899C10 *dp, &lv = *(dp=new (buf) S6899C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,64), "sizeof(S6899C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6899C10)");
    check_base_class_offset(lv, (S6899C2*), ABISELECT(112,48), "S6899C10");
    /*is_ambiguous_... S6899C10::S6899C9 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C9*), ABISELECT(112,48), "S6899C10");
    check_base_class_offset(lv, (S6899C2*)(S6899C9*)(S6899C8*), ABISELECT(112,48), "S6899C10");
    /*is_ambiguous_... S6899C10::S6899C9 */ AMB_check_base_class_offset(lv, (S6899C9*), 0, "S6899C10");
    check_base_class_offset(lv, (S6899C9*)(S6899C8*), ABISELECT(48,20), "S6899C10");
    check_base_class_offset(lv, (S6899C8*), ABISELECT(48,20), "S6899C10");
    check_field_offset(lv, s6899c10f0, ABISELECT(96,40), "S6899C10.s6899c10f0");
    test_class_info(&lv, &cd_S6899C10);
    dp->~S6899C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6899C10(Test_S6899C10, "S6899C10", ABISELECT(144,64));

#else // __cplusplus

extern void _ZN8S6899C10C1Ev();
extern void _ZN8S6899C10D1Ev();
Name_Map name_map_S6899C10[] = {
  NSPAIR(_ZN8S6899C10C1Ev),
  NSPAIR(_ZN8S6899C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6899C2;
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C8;
extern VTBL_ENTRY _ZTI7S6899C8[];
extern  VTBL_ENTRY _ZTV7S6899C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C8[];
static Base_Class bases_S6899C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6899C2,    ABISELECT(112,48), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6899C9,    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_S6899C9,    ABISELECT(48,20), //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_S6899C8,    ABISELECT(48,20), //bcp->offset
    17, //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 _ZTI8S6899C10[];
extern void _ZN8S6899C10D1Ev();
extern void _ZN8S6899C10D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN8S6899C103v26Ev();
extern void _ZN8S6899C103v27Ev();
extern void _ZN8S6899C103v28Ev();
extern void _ZN8S6899C103v29Ev();
extern void _ZN8S6899C103v30Ev();
extern void _ZN8S6899C103v31Ev();
extern void _ZN8S6899C103v32Ev();
extern void ABISELECT(_ZThn48_N8S6899C10D1Ev,_ZThn20_N8S6899C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S6899C10D0Ev,_ZThn20_N8S6899C10D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY vtc_S6899C10[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&_ZN8S6899C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6899C10D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v26Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v27Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v32Ev,
  ABISELECT(64,28),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6899C10D1Ev,_ZThn20_N8S6899C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6899C10D0Ev,_ZThn20_N8S6899C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern VTBL_ENTRY _ZTV8S6899C10[];
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C9__8S6899C10[] = {
  ABISELECT(112,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C9__8S6899C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C8D1Ev();
extern void _ZN7S6899C8D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C8__8S6899C10[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C97S6899C8__A1__8S6899C10[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C97S6899C8__A1__8S6899C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C8__8S6899C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
static  VTT_ENTRY vtt_S6899C10[] = {
  {&(_ZTV8S6899C10[3]),  3,41},
  {&(_tg__ZTV7S6899C9__8S6899C10[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C9__8S6899C10[7]),  7,12},
  {&(_tg__ZTV7S6899C8__8S6899C10[3]),  3,12},
  {&(_tg__ZTV7S6899C97S6899C8__A1__8S6899C10[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C97S6899C8__A1__8S6899C10[7]),  7,12},
  {&(_tg__ZTV7S6899C2__7S6899C8__8S6899C10[7]),  7,12},
  {&(_ZTV8S6899C10[36]),  36,41},
  {&(_ZTV8S6899C10[20]),  20,41},
};
extern VTBL_ENTRY _ZTI8S6899C10[];
extern  VTBL_ENTRY _ZTV8S6899C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6899C10[];
Class_Descriptor cd_S6899C10 = {  "S6899C10", // class name
  bases_S6899C10, 4,
  &(vtc_S6899C10[0]), // expected_vtbl_contents
  &(vtt_S6899C10[0]), // expected_vtt_contents
  ABISELECT(144,64), // object size
  NSPAIRA(_ZTI8S6899C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6899C10),41, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6899C10),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6899C7  : S6899C8 , S6899C2 , virtual S6899C10 {
  int s6899c7f0;
  virtual void  v33(); // _ZN7S6899C73v33Ev
  virtual void  v34(); // _ZN7S6899C73v34Ev
  virtual void  v35(); // _ZN7S6899C73v35Ev
  virtual void  v36(); // _ZN7S6899C73v36Ev
  virtual void  v37(); // _ZN7S6899C73v37Ev
  virtual void  v38(); // _ZN7S6899C73v38Ev
  virtual void  v39(); // _ZN7S6899C73v39Ev
  ~S6899C7(); // tgen
  S6899C7(); // tgen
};
//SIG(-1 S6899C7) C1{ BC2{ BC3{ VBC4{ v8 v9 v10 v11 v12 FD} vd v13 v14 v15 v16 v17 FC4} v18 v19} BC4 VBC5{ VBC4 BC3 BC2 v20 v21 v22 v23 v24 v25 v26 Fc[8]} v1 v2 v3 v4 v5 v6 v7 Fi}


void  S6899C7 ::v33(){vfunc_called(this, "_ZN7S6899C73v33Ev");}
void  S6899C7 ::v34(){vfunc_called(this, "_ZN7S6899C73v34Ev");}
void  S6899C7 ::v35(){vfunc_called(this, "_ZN7S6899C73v35Ev");}
void  S6899C7 ::v36(){vfunc_called(this, "_ZN7S6899C73v36Ev");}
void  S6899C7 ::v37(){vfunc_called(this, "_ZN7S6899C73v37Ev");}
void  S6899C7 ::v38(){vfunc_called(this, "_ZN7S6899C73v38Ev");}
void  S6899C7 ::v39(){vfunc_called(this, "_ZN7S6899C73v39Ev");}
S6899C7 ::~S6899C7(){ note_dtor("S6899C7", this);} // tgen
S6899C7 ::S6899C7(){ note_ctor("S6899C7", this);} // tgen

static void Test_S6899C7()
{
  extern Class_Descriptor cd_S6899C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,27)];
    init_test(&cd_S6899C7, buf);
    S6899C7 *dp, &lv = *(dp=new (buf) S6899C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,104), "sizeof(S6899C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6899C7)");
    /*is_ambiguous_... S6899C7::S6899C8 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C9*)(S6899C8*), ABISELECT(96,40), "S6899C7");
    check_base_class_offset(lv, (S6899C2*)(S6899C10*), ABISELECT(96,40), "S6899C7");
    /*is_ambiguous_... S6899C10::S6899C9 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C9*)(S6899C10*), ABISELECT(96,40), "S6899C7");
    check_base_class_offset(lv, (S6899C2*)(S6899C9*)(S6899C8*)(S6899C10*), ABISELECT(96,40), "S6899C7");
    /*is_ambiguous_... S6899C7::S6899C8 */ AMB_check_base_class_offset(lv, (S6899C9*)(S6899C8*), 0, "S6899C7");
    /*is_ambiguous_... S6899C7::S6899C8 */ AMB_check_base_class_offset(lv, (S6899C8*), 0, "S6899C7");
    /*is_ambiguous_... S6899C7::S6899C2 */ AMB_check_base_class_offset(lv, (S6899C2*), ABISELECT(48,20), "S6899C7");
    /*is_ambiguous_... S6899C10::S6899C9 */ AMB_check_base_class_offset(lv, (S6899C9*)(S6899C10*), ABISELECT(128,56), "S6899C7");
    check_base_class_offset(lv, (S6899C9*)(S6899C8*)(S6899C10*), ABISELECT(176,76), "S6899C7");
    check_base_class_offset(lv, (S6899C8*)(S6899C10*), ABISELECT(176,76), "S6899C7");
    check_base_class_offset(lv, (S6899C10*), ABISELECT(128,56), "S6899C7");
    check_field_offset(lv, s6899c7f0, ABISELECT(80,36), "S6899C7.s6899c7f0");
    test_class_info(&lv, &cd_S6899C7);
    dp->~S6899C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6899C7(Test_S6899C7, "S6899C7", ABISELECT(240,104));

#else // __cplusplus

extern void _ZN7S6899C7C1Ev();
extern void _ZN7S6899C7D1Ev();
Name_Map name_map_S6899C7[] = {
  NSPAIR(_ZN7S6899C7C1Ev),
  NSPAIR(_ZN7S6899C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6899C2;
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C8;
extern VTBL_ENTRY _ZTI7S6899C8[];
extern  VTBL_ENTRY _ZTV7S6899C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C8[];
extern Class_Descriptor cd_S6899C2;
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C8;
extern VTBL_ENTRY _ZTI7S6899C8[];
extern  VTBL_ENTRY _ZTV7S6899C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C8[];
extern Class_Descriptor cd_S6899C10;
extern VTBL_ENTRY _ZTI8S6899C10[];
extern  VTBL_ENTRY _ZTV8S6899C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6899C10[];
static Base_Class bases_S6899C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6899C2,    ABISELECT(96,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S6899C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S6899C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6899C2,    ABISELECT(48,20), //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_S6899C9,    ABISELECT(128,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6899C9,    ABISELECT(176,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6899C8,    ABISELECT(176,76), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6899C10,    ABISELECT(128,56), //bcp->offset
    39, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6899C7[];
extern void _ZN7S6899C7D1Ev();
extern void _ZN7S6899C7D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
extern void _ZN7S6899C73v33Ev();
extern void _ZN7S6899C73v34Ev();
extern void _ZN7S6899C73v35Ev();
extern void _ZN7S6899C73v36Ev();
extern void _ZN7S6899C73v37Ev();
extern void _ZN7S6899C73v38Ev();
extern void _ZN7S6899C73v39Ev();
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
extern void ABISELECT(_ZTv0_n32_N7S6899C7D1Ev,_ZTv0_n16_N7S6899C7D1Ev)();
extern void ABISELECT(_ZThn128_N7S6899C7D1Ev,_ZThn56_N7S6899C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6899C7D0Ev,_ZTv0_n16_N7S6899C7D0Ev)();
extern void ABISELECT(_ZThn128_N7S6899C7D0Ev,_ZThn56_N7S6899C7D0Ev)() __attribute__((weak));
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN8S6899C103v26Ev();
extern void _ZN8S6899C103v27Ev();
extern void _ZN8S6899C103v28Ev();
extern void _ZN8S6899C103v29Ev();
extern void _ZN8S6899C103v30Ev();
extern void _ZN8S6899C103v31Ev();
extern void _ZN8S6899C103v32Ev();
extern void ABISELECT(_ZTvn48_n32_N7S6899C7D1Ev,_ZTvn20_n16_N7S6899C7D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N7S6899C7D0Ev,_ZTvn20_n16_N7S6899C7D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY vtc_S6899C7[] = {
  ABISELECT(128,56),
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&_ZN7S6899C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v33Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v34Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v35Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v39Ev,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-56),
  ABISELECT(-32,-16),
  ABISELECT(-128,-56),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C7D1Ev,_ZTv0_n16_N7S6899C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C7D0Ev,_ZTv0_n16_N7S6899C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v26Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v27Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v32Ev,
  ABISELECT(-80,-36),
  ABISELECT(-176,-76),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C7D1Ev,_ZTvn20_n16_N7S6899C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C7D0Ev,_ZTvn20_n16_N7S6899C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern VTBL_ENTRY _ZTV7S6899C7[];
extern void _ZN7S6899C8D1Ev();
extern void _ZN7S6899C8D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C8__7S6899C7[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C97S6899C8__7S6899C7[] = {
  ABISELECT(96,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C97S6899C8__7S6899C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C8__7S6899C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN8S6899C10D1Ev();
extern void _ZN8S6899C10D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN8S6899C103v26Ev();
extern void _ZN8S6899C103v27Ev();
extern void _ZN8S6899C103v28Ev();
extern void _ZN8S6899C103v29Ev();
extern void _ZN8S6899C103v30Ev();
extern void _ZN8S6899C103v31Ev();
extern void _ZN8S6899C103v32Ev();
static  VTBL_ENTRY _tg__ZTV8S6899C10__7S6899C7[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&_ZN8S6899C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6899C10D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v26Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v27Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v32Ev,
};
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C98S6899C10__A1__7S6899C7[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C98S6899C10__A1__7S6899C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C8D1Ev();
extern void _ZN7S6899C8D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C88S6899C10__A1__7S6899C7[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C97S6899C88S6899C10__A2__7S6899C7[] = {
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C97S6899C88S6899C10__A2__7S6899C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C88S6899C10__A1__7S6899C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__8S6899C10__7S6899C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void ABISELECT(_ZThn48_N8S6899C10D1Ev,_ZThn20_N8S6899C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S6899C10D0Ev,_ZThn20_N8S6899C10D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C8__8S6899C10__7S6899C7[] = {
  ABISELECT(-80,-36),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6899C10D1Ev,_ZThn20_N8S6899C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6899C10D0Ev,_ZThn20_N8S6899C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
static  VTT_ENTRY vtt_S6899C7[] = {
  {&(_ZTV7S6899C7[4]),  4,83},
  {&(_tg__ZTV7S6899C8__7S6899C7[3]),  3,12},
  {&(_tg__ZTV7S6899C97S6899C8__7S6899C7[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C97S6899C8__7S6899C7[7]),  7,12},
  {&(_tg__ZTV7S6899C2__7S6899C8__7S6899C7[7]),  7,12},
  {&(_ZTV7S6899C7[34]),  34,83},
  {&(_ZTV7S6899C7[57]),  57,83},
  {&(_ZTV7S6899C7[74]),  74,83},
  {&(_tg__ZTV8S6899C10__7S6899C7[3]),  3,17},
  {&(_tg__ZTV7S6899C98S6899C10__A1__7S6899C7[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C98S6899C10__A1__7S6899C7[7]),  7,12},
  {&(_tg__ZTV7S6899C88S6899C10__A1__7S6899C7[3]),  3,12},
  {&(_tg__ZTV7S6899C97S6899C88S6899C10__A2__7S6899C7[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C97S6899C88S6899C10__A2__7S6899C7[7]),  7,12},
  {&(_tg__ZTV7S6899C2__7S6899C88S6899C10__A1__7S6899C7[7]),  7,12},
  {&(_tg__ZTV7S6899C2__8S6899C10__7S6899C7[7]),  7,12},
  {&(_tg__ZTV7S6899C8__8S6899C10__7S6899C7[3]),  3,12},
};
extern VTBL_ENTRY _ZTI7S6899C7[];
extern  VTBL_ENTRY _ZTV7S6899C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C7[];
static VTBL_ENTRY alt_thunk_names175[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C7D0Ev,_ZTv0_n16_N7S6899C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6899C7D0Ev,_ZThn56_N7S6899C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C7D1Ev,_ZTv0_n16_N7S6899C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6899C7D1Ev,_ZThn56_N7S6899C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6899C7 = {  "S6899C7", // class name
  bases_S6899C7, 8,
  &(vtc_S6899C7[0]), // expected_vtbl_contents
  &(vtt_S6899C7[0]), // expected_vtt_contents
  ABISELECT(240,104), // object size
  NSPAIRA(_ZTI7S6899C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6899C7),83, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6899C7),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names175,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6899C5  : virtual S6899C2 , S6899C6 , virtual S6899C7 {
  virtual  ~S6899C5(); // _ZN7S6899C5D2Ev
  virtual void  v40(); // _ZN7S6899C53v40Ev
  virtual void  v41(); // _ZN7S6899C53v41Ev
  virtual void  v42(); // _ZN7S6899C53v42Ev
  S6899C5(); // tgen
};
//SIG(-1 S6899C5) C1{ VBC2{ v4 v5 v6 v7 v8 FD} BC3{ v9 v10 v11} VBC4{ BC5{ BC6{ VBC2 vd v12 v13 v14 v15 v16 FC2} v17 v18} BC2 VBC7{ VBC2 BC6 BC5 v19 v20 v21 v22 v23 v24 v25 Fc[8]} v26 v27 v28 v29 v30 v31 v32 Fi} vd v1 v2 v3}


 S6899C5 ::~S6899C5(){ note_dtor("S6899C5", this);}
void  S6899C5 ::v40(){vfunc_called(this, "_ZN7S6899C53v40Ev");}
void  S6899C5 ::v41(){vfunc_called(this, "_ZN7S6899C53v41Ev");}
void  S6899C5 ::v42(){vfunc_called(this, "_ZN7S6899C53v42Ev");}
S6899C5 ::S6899C5(){ note_ctor("S6899C5", this);} // tgen

static void Test_S6899C5()
{
  extern Class_Descriptor cd_S6899C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,28)];
    init_test(&cd_S6899C5, buf);
    S6899C5 *dp, &lv = *(dp=new (buf) S6899C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,108), "sizeof(S6899C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6899C5)");
    /*is_ambiguous_... S6899C5::S6899C2 */ AMB_check_base_class_offset(lv, (S6899C2*), ABISELECT(16,4), "S6899C5");
    /*is_ambiguous_... S6899C7::S6899C8 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C9*)(S6899C8*)(S6899C7*), ABISELECT(16,4), "S6899C5");
    check_base_class_offset(lv, (S6899C2*)(S6899C10*), ABISELECT(16,4), "S6899C5");
    /*is_ambiguous_... S6899C10::S6899C9 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C9*)(S6899C10*), ABISELECT(16,4), "S6899C5");
    check_base_class_offset(lv, (S6899C2*)(S6899C9*)(S6899C8*)(S6899C10*), ABISELECT(16,4), "S6899C5");
    check_base_class_offset(lv, (S6899C6*), 0, "S6899C5");
    /*is_ambiguous_... S6899C7::S6899C8 */ AMB_check_base_class_offset(lv, (S6899C9*)(S6899C8*)(S6899C7*), ABISELECT(48,20), "S6899C5");
    /*is_ambiguous_... S6899C7::S6899C8 */ AMB_check_base_class_offset(lv, (S6899C8*)(S6899C7*), ABISELECT(48,20), "S6899C5");
    /*is_ambiguous_... S6899C7::S6899C2 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C7*), ABISELECT(96,40), "S6899C5");
    /*is_ambiguous_... S6899C10::S6899C9 */ AMB_check_base_class_offset(lv, (S6899C9*)(S6899C10*), ABISELECT(144,60), "S6899C5");
    check_base_class_offset(lv, (S6899C9*)(S6899C8*)(S6899C10*), ABISELECT(192,80), "S6899C5");
    check_base_class_offset(lv, (S6899C8*)(S6899C10*), ABISELECT(192,80), "S6899C5");
    check_base_class_offset(lv, (S6899C10*)(S6899C7*), ABISELECT(144,60), "S6899C5");
    check_base_class_offset(lv, (S6899C7*), ABISELECT(48,20), "S6899C5");
    test_class_info(&lv, &cd_S6899C5);
    dp->~S6899C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6899C5(Test_S6899C5, "S6899C5", ABISELECT(256,108));

#else // __cplusplus

extern void _ZN7S6899C5C1Ev();
extern void _ZN7S6899C5D2Ev();
Name_Map name_map_S6899C5[] = {
  NSPAIR(_ZN7S6899C5C1Ev),
  NSPAIR(_ZN7S6899C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6899C2;
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
extern Class_Descriptor cd_S6899C6;
extern VTBL_ENTRY _ZTI7S6899C6[];
extern  VTBL_ENTRY _ZTV7S6899C6[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C8;
extern VTBL_ENTRY _ZTI7S6899C8[];
extern  VTBL_ENTRY _ZTV7S6899C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C8[];
extern Class_Descriptor cd_S6899C2;
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C8;
extern VTBL_ENTRY _ZTI7S6899C8[];
extern  VTBL_ENTRY _ZTV7S6899C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C8[];
extern Class_Descriptor cd_S6899C10;
extern VTBL_ENTRY _ZTI8S6899C10[];
extern  VTBL_ENTRY _ZTV8S6899C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6899C10[];
extern Class_Descriptor cd_S6899C7;
extern VTBL_ENTRY _ZTI7S6899C7[];
extern  VTBL_ENTRY _ZTV7S6899C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C7[];
static Base_Class bases_S6899C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6899C2,    ABISELECT(16,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6899C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6899C9,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6899C8,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6899C2,    ABISELECT(96,40), //bcp->offset
    65, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6899C9,    ABISELECT(144,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6899C9,    ABISELECT(192,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6899C8,    ABISELECT(192,80), //bcp->offset
    104, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6899C10,    ABISELECT(144,60), //bcp->offset
    72, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6899C7,    ABISELECT(48,20), //bcp->offset
    25, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    3, //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 _ZTI7S6899C5[];
extern void _ZN7S6899C63v16Ev();
extern void _ZN7S6899C63v17Ev();
extern void _ZN7S6899C63v18Ev();
extern void _ZN7S6899C5D1Ev();
extern void _ZN7S6899C5D0Ev();
extern void _ZN7S6899C53v40Ev();
extern void _ZN7S6899C53v41Ev();
extern void _ZN7S6899C53v42Ev();
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
extern void ABISELECT(_ZTv0_n40_N7S6899C5D1Ev,_ZTv0_n20_N7S6899C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6899C5D1Ev,_ZThn20_N7S6899C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6899C5D0Ev,_ZTv0_n20_N7S6899C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6899C5D0Ev,_ZThn20_N7S6899C5D0Ev)() __attribute__((weak));
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
extern void _ZN7S6899C73v33Ev();
extern void _ZN7S6899C73v34Ev();
extern void _ZN7S6899C73v35Ev();
extern void _ZN7S6899C73v36Ev();
extern void _ZN7S6899C73v37Ev();
extern void _ZN7S6899C73v38Ev();
extern void _ZN7S6899C73v39Ev();
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
extern void ABISELECT(_ZTv0_n32_N7S6899C5D1Ev,_ZTv0_n16_N7S6899C5D1Ev)();
extern void ABISELECT(_ZThn144_N7S6899C5D1Ev,_ZThn60_N7S6899C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6899C5D0Ev,_ZTv0_n16_N7S6899C5D0Ev)();
extern void ABISELECT(_ZThn144_N7S6899C5D0Ev,_ZThn60_N7S6899C5D0Ev)() __attribute__((weak));
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN8S6899C103v26Ev();
extern void _ZN8S6899C103v27Ev();
extern void _ZN8S6899C103v28Ev();
extern void _ZN8S6899C103v29Ev();
extern void _ZN8S6899C103v30Ev();
extern void _ZN8S6899C103v31Ev();
extern void _ZN8S6899C103v32Ev();
extern void ABISELECT(_ZTvn48_n32_N7S6899C5D1Ev,_ZTvn20_n16_N7S6899C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N7S6899C5D0Ev,_ZTvn20_n16_N7S6899C5D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY vtc_S6899C5[] = {
  ABISELECT(144,60),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&_ZN7S6899C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6899C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6899C63v18Ev,
  (VTBL_ENTRY)&_ZN7S6899C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C53v40Ev,
  (VTBL_ENTRY)&_ZN7S6899C53v41Ev,
  (VTBL_ENTRY)&_ZN7S6899C53v42Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  ABISELECT(96,40),
  ABISELECT(-32,-16),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6899C5D1Ev,_ZTv0_n20_N7S6899C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6899C5D0Ev,_ZTv0_n20_N7S6899C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v33Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v34Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v35Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v39Ev,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-60),
  ABISELECT(-128,-56),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C5D1Ev,_ZTv0_n16_N7S6899C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C5D0Ev,_ZTv0_n16_N7S6899C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v26Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v27Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v32Ev,
  ABISELECT(-176,-76),
  ABISELECT(-192,-80),
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C5D1Ev,_ZTvn20_n16_N7S6899C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C5D0Ev,_ZTvn20_n16_N7S6899C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern VTBL_ENTRY _ZTV7S6899C5[];
extern void _ZN7S6899C7D1Ev();
extern void _ZN7S6899C7D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
extern void _ZN7S6899C73v33Ev();
extern void _ZN7S6899C73v34Ev();
extern void _ZN7S6899C73v35Ev();
extern void _ZN7S6899C73v36Ev();
extern void _ZN7S6899C73v37Ev();
extern void _ZN7S6899C73v38Ev();
extern void _ZN7S6899C73v39Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C7__7S6899C5[] = {
  ABISELECT(96,40),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&_ZN7S6899C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v33Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v34Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v35Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v39Ev,
};
extern void _ZN7S6899C8D1Ev();
extern void _ZN7S6899C8D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C87S6899C7__7S6899C5[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C97S6899C87S6899C7__7S6899C5[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C97S6899C87S6899C7__7S6899C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C87S6899C7__7S6899C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C7__7S6899C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S6899C7D1Ev,_ZTv0_n16_N7S6899C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6899C7D1Ev,_ZThn40_N7S6899C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6899C7D0Ev,_ZTv0_n16_N7S6899C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6899C7D0Ev,_ZThn40_N7S6899C7D0Ev)() __attribute__((weak));
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN8S6899C103v26Ev();
extern void _ZN8S6899C103v27Ev();
extern void _ZN8S6899C103v28Ev();
extern void _ZN8S6899C103v29Ev();
extern void _ZN8S6899C103v30Ev();
extern void _ZN8S6899C103v31Ev();
extern void _ZN8S6899C103v32Ev();
static  VTBL_ENTRY _tg__ZTV8S6899C10__7S6899C7__7S6899C5[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  ABISELECT(-128,-56),
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C7D1Ev,_ZTv0_n16_N7S6899C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C7D0Ev,_ZTv0_n16_N7S6899C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v26Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v27Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v32Ev,
};
extern void ABISELECT(_ZTvn48_n32_N7S6899C7D1Ev,_ZTvn20_n16_N7S6899C7D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N7S6899C7D0Ev,_ZTvn20_n16_N7S6899C7D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C88S6899C10__A1__7S6899C7__7S6899C5[] = {
  ABISELECT(-176,-76),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C7D1Ev,_ZTvn20_n16_N7S6899C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C7D0Ev,_ZTvn20_n16_N7S6899C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN8S6899C10D1Ev();
extern void _ZN8S6899C10D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN8S6899C103v26Ev();
extern void _ZN8S6899C103v27Ev();
extern void _ZN8S6899C103v28Ev();
extern void _ZN8S6899C103v29Ev();
extern void _ZN8S6899C103v30Ev();
extern void _ZN8S6899C103v31Ev();
extern void _ZN8S6899C103v32Ev();
static  VTBL_ENTRY _tg__ZTV8S6899C10__7S6899C5[] = {
  ABISELECT(-128,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&_ZN8S6899C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6899C10D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v26Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v27Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v32Ev,
};
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C98S6899C10__A1__7S6899C5[] = {
  ABISELECT(-128,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C98S6899C10__A1__7S6899C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,56),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C8D1Ev();
extern void _ZN7S6899C8D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C88S6899C10__A1__7S6899C5[] = {
  ABISELECT(-176,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C97S6899C88S6899C10__A2__7S6899C5[] = {
  ABISELECT(-176,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C97S6899C88S6899C10__A2__7S6899C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,76),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C88S6899C10__A1__7S6899C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,76),
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__8S6899C10__7S6899C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,56),
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void ABISELECT(_ZThn48_N8S6899C10D1Ev,_ZThn20_N8S6899C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S6899C10D0Ev,_ZThn20_N8S6899C10D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C8__8S6899C10__7S6899C5[] = {
  ABISELECT(-176,-76),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6899C10D1Ev,_ZThn20_N8S6899C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6899C10D0Ev,_ZThn20_N8S6899C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
static  VTT_ENTRY vtt_S6899C5[] = {
  {&(_ZTV7S6899C5[5]),  5,116},
  {&(_ZTV7S6899C5[20]),  20,116},
  {&(_ZTV7S6899C5[49]),  49,116},
  {&(_ZTV7S6899C5[67]),  67,116},
  {&(_ZTV7S6899C5[90]),  90,116},
  {&(_ZTV7S6899C5[107]),  107,116},
  {&(_tg__ZTV7S6899C7__7S6899C5[4]),  4,20},
  {&(_tg__ZTV7S6899C87S6899C7__7S6899C5[3]),  3,12},
  {&(_tg__ZTV7S6899C97S6899C87S6899C7__7S6899C5[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C97S6899C87S6899C7__7S6899C5[7]),  7,12},
  {&(_tg__ZTV7S6899C2__7S6899C87S6899C7__7S6899C5[7]),  7,12},
  {&(_tg__ZTV7S6899C2__7S6899C7__7S6899C5[7]),  7,12},
  {&(_tg__ZTV8S6899C10__7S6899C7__7S6899C5[18]),  18,32},
  {&(_tg__ZTV7S6899C88S6899C10__A1__7S6899C7__7S6899C5[3]),  3,12},
  {&(_tg__ZTV8S6899C10__7S6899C5[3]),  3,17},
  {&(_tg__ZTV7S6899C98S6899C10__A1__7S6899C5[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C98S6899C10__A1__7S6899C5[7]),  7,12},
  {&(_tg__ZTV7S6899C88S6899C10__A1__7S6899C5[3]),  3,12},
  {&(_tg__ZTV7S6899C97S6899C88S6899C10__A2__7S6899C5[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C97S6899C88S6899C10__A2__7S6899C5[7]),  7,12},
  {&(_tg__ZTV7S6899C2__7S6899C88S6899C10__A1__7S6899C5[7]),  7,12},
  {&(_tg__ZTV7S6899C2__8S6899C10__7S6899C5[7]),  7,12},
  {&(_tg__ZTV7S6899C8__8S6899C10__7S6899C5[3]),  3,12},
};
extern VTBL_ENTRY _ZTI7S6899C5[];
extern  VTBL_ENTRY _ZTV7S6899C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C5[];
static VTBL_ENTRY alt_thunk_names176[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C7D0Ev,_ZTv0_n16_N7S6899C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6899C7D0Ev,_ZThn40_N7S6899C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C7D1Ev,_ZTv0_n16_N7S6899C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6899C7D1Ev,_ZThn40_N7S6899C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C5D0Ev,_ZTv0_n16_N7S6899C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6899C5D0Ev,_ZThn60_N7S6899C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C5D1Ev,_ZTv0_n16_N7S6899C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6899C5D1Ev,_ZThn60_N7S6899C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6899C5D0Ev,_ZTv0_n20_N7S6899C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6899C5D0Ev,_ZThn20_N7S6899C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6899C5D1Ev,_ZTv0_n20_N7S6899C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6899C5D1Ev,_ZThn20_N7S6899C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6899C5 = {  "S6899C5", // class name
  bases_S6899C5, 10,
  &(vtc_S6899C5[0]), // expected_vtbl_contents
  &(vtt_S6899C5[0]), // expected_vtt_contents
  ABISELECT(256,108), // object size
  NSPAIRA(_ZTI7S6899C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6899C5),116, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6899C5),23, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names176,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6899C1  : S6899C2 , virtual S6899C3 , S6899C4_nt , virtual S6899C5 , S6899C7 {
  int s6899c1f0;
  virtual void  v1(); // _ZN7S6899C12v1Ev
  virtual void  v2(); // _ZN7S6899C12v2Ev
  virtual void  v3(); // _ZN7S6899C12v3Ev
  virtual void  v4(); // _ZN7S6899C12v4Ev
  ~S6899C1(); // tgen
  S6899C1(); // tgen
};
//SIG(1 S6899C1) C1{ BC2{ v5 v6 v7 v8 v9 FD} VBC3{ v10} BC4{ v11 v12 v13 v14 v15} VBC5{ VBC2 BC6{ v16 v17 v18} VBC7{ BC8{ BC9{ VBC2 vd v19 v20 v21 v22 v23 FC2} v24 v25} BC2 VBC10{ VBC2 BC9 BC8 v26 v27 v28 v29 v30 v31 v32 Fc[8]} v33 v34 v35 v36 v37 v38 v39 Fi} vd v40 v41 v42} BC7 v1 v2 v3 v4 Fi}


void  S6899C1 ::v1(){vfunc_called(this, "_ZN7S6899C12v1Ev");}
void  S6899C1 ::v2(){vfunc_called(this, "_ZN7S6899C12v2Ev");}
void  S6899C1 ::v3(){vfunc_called(this, "_ZN7S6899C12v3Ev");}
void  S6899C1 ::v4(){vfunc_called(this, "_ZN7S6899C12v4Ev");}
S6899C1 ::~S6899C1(){ note_dtor("S6899C1", this);} // tgen
S6899C1 ::S6899C1(){ note_ctor("S6899C1", this);} // tgen

static void Test_S6899C1()
{
  extern Class_Descriptor cd_S6899C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(26,45)];
    init_test(&cd_S6899C1, buf);
    S6899C1 *dp, &lv = *(dp=new (buf) S6899C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,176), "sizeof(S6899C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6899C1)");
    /*is_ambiguous_... S6899C1::S6899C2 */ AMB_check_base_class_offset(lv, (S6899C2*), 0, "S6899C1");
    check_base_class_offset(lv, (S6899C3*), ABISELECT(136,64), "S6899C1");
    check_base_class_offset(lv, (S6899C4_nt*), ABISELECT(32,16), "S6899C1");
    /*is_ambiguous_... S6899C5::S6899C2 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C5*), ABISELECT(160,72), "S6899C1");
    /*is_ambiguous_... S6899C1::S6899C7 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C9*)(S6899C8*)(S6899C7*), ABISELECT(160,72), "S6899C1");
    check_base_class_offset(lv, (S6899C2*)(S6899C10*), ABISELECT(160,72), "S6899C1");
    /*is_ambiguous_... S6899C10::S6899C9 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C9*)(S6899C10*), ABISELECT(160,72), "S6899C1");
    check_base_class_offset(lv, (S6899C2*)(S6899C9*)(S6899C8*)(S6899C10*), ABISELECT(160,72), "S6899C1");
    /*is_ambiguous_... S6899C1::S6899C7 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C9*)(S6899C8*)(S6899C7*), ABISELECT(160,72), "S6899C1");
    check_base_class_offset(lv, (S6899C6*)(S6899C5*), ABISELECT(144,68), "S6899C1");
    /*is_ambiguous_... S6899C1::S6899C7 */ AMB_check_base_class_offset(lv, (S6899C9*)(S6899C8*)(S6899C7*), ABISELECT(192,88), "S6899C1");
    /*is_ambiguous_... S6899C1::S6899C7 */ AMB_check_base_class_offset(lv, (S6899C8*)(S6899C7*), ABISELECT(192,88), "S6899C1");
    /*is_ambiguous_... S6899C1::S6899C7 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C7*), ABISELECT(240,108), "S6899C1");
    /*is_ambiguous_... S6899C10::S6899C9 */ AMB_check_base_class_offset(lv, (S6899C9*)(S6899C10*), ABISELECT(288,128), "S6899C1");
    check_base_class_offset(lv, (S6899C9*)(S6899C8*)(S6899C10*), ABISELECT(336,148), "S6899C1");
    check_base_class_offset(lv, (S6899C8*)(S6899C10*), ABISELECT(336,148), "S6899C1");
    /*is_ambiguous_... S6899C1::S6899C7 */ AMB_check_base_class_offset(lv, (S6899C10*)(S6899C7*), ABISELECT(288,128), "S6899C1");
    /*is_ambiguous_... S6899C1::S6899C7 */ AMB_check_base_class_offset(lv, (S6899C10*)(S6899C7*), ABISELECT(288,128), "S6899C1");
    check_base_class_offset(lv, (S6899C7*)(S6899C5*), ABISELECT(192,88), "S6899C1");
    check_base_class_offset(lv, (S6899C5*), ABISELECT(144,68), "S6899C1");
    /*is_ambiguous_... S6899C1::S6899C7 */ AMB_check_base_class_offset(lv, (S6899C9*)(S6899C8*)(S6899C7*), ABISELECT(48,20), "S6899C1");
    /*is_ambiguous_... S6899C1::S6899C7 */ AMB_check_base_class_offset(lv, (S6899C8*)(S6899C7*), ABISELECT(48,20), "S6899C1");
    /*is_ambiguous_... S6899C1::S6899C7 */ AMB_check_base_class_offset(lv, (S6899C2*)(S6899C7*), ABISELECT(96,40), "S6899C1");
    /*is_ambiguous_... S6899C1::S6899C7 */ AMB_check_base_class_offset(lv, (S6899C7*), ABISELECT(48,20), "S6899C1");
    check_field_offset(lv, s6899c1f0, ABISELECT(132,60), "S6899C1.s6899c1f0");
    test_class_info(&lv, &cd_S6899C1);
    dp->~S6899C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6899C1(Test_S6899C1, "S6899C1", ABISELECT(400,176));

#else // __cplusplus

extern void _ZN7S6899C1C1Ev();
extern void _ZN7S6899C1D1Ev();
Name_Map name_map_S6899C1[] = {
  NSPAIR(_ZN7S6899C1C1Ev),
  NSPAIR(_ZN7S6899C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6899C2;
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
extern Class_Descriptor cd_S6899C3;
extern VTBL_ENTRY _ZTI7S6899C3[];
extern  VTBL_ENTRY _ZTV7S6899C3[];
extern Class_Descriptor cd_S6899C4_nt;
extern VTBL_ENTRY _ZTI10S6899C4_nt[];
extern  VTBL_ENTRY _ZTV10S6899C4_nt[];
extern Class_Descriptor cd_S6899C2;
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
extern Class_Descriptor cd_S6899C6;
extern VTBL_ENTRY _ZTI7S6899C6[];
extern  VTBL_ENTRY _ZTV7S6899C6[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C8;
extern VTBL_ENTRY _ZTI7S6899C8[];
extern  VTBL_ENTRY _ZTV7S6899C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C8[];
extern Class_Descriptor cd_S6899C2;
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C8;
extern VTBL_ENTRY _ZTI7S6899C8[];
extern  VTBL_ENTRY _ZTV7S6899C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C8[];
extern Class_Descriptor cd_S6899C10;
extern VTBL_ENTRY _ZTI8S6899C10[];
extern  VTBL_ENTRY _ZTV8S6899C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6899C10[];
extern Class_Descriptor cd_S6899C7;
extern VTBL_ENTRY _ZTI7S6899C7[];
extern  VTBL_ENTRY _ZTV7S6899C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C7[];
extern Class_Descriptor cd_S6899C5;
extern VTBL_ENTRY _ZTI7S6899C5[];
extern  VTBL_ENTRY _ZTV7S6899C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C5[];
extern Class_Descriptor cd_S6899C9;
extern VTBL_ENTRY _ZTI7S6899C9[];
extern  VTBL_ENTRY _ZTV7S6899C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C9[];
extern Class_Descriptor cd_S6899C8;
extern VTBL_ENTRY _ZTI7S6899C8[];
extern  VTBL_ENTRY _ZTV7S6899C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C8[];
extern Class_Descriptor cd_S6899C2;
extern VTBL_ENTRY _ZTI7S6899C2[];
extern  VTBL_ENTRY _ZTV7S6899C2[];
extern Class_Descriptor cd_S6899C7;
extern VTBL_ENTRY _ZTI7S6899C7[];
extern  VTBL_ENTRY _ZTV7S6899C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C7[];
static Base_Class bases_S6899C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6899C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6899C3,    ABISELECT(136,64), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6899C4_nt,    ABISELECT(32,16), //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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6899C2,    ABISELECT(160,72), //bcp->offset
    76, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6899C6,    ABISELECT(144,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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6899C9,    ABISELECT(192,88), //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
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6899C8,    ABISELECT(192,88), //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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6899C2,    ABISELECT(240,108), //bcp->offset
    128, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6899C9,    ABISELECT(288,128), //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
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6899C9,    ABISELECT(336,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6899C8,    ABISELECT(336,148), //bcp->offset
    167, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6899C10,    ABISELECT(288,128), //bcp->offset
    135, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6899C7,    ABISELECT(192,88), //bcp->offset
    88, //bcp->virtual_function_table_offset
    24, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6899C5,    ABISELECT(144,68), //bcp->offset
    56, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6899C9,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6899C8,    ABISELECT(48,20), //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
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6899C2,    ABISELECT(96,40), //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
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6899C7,    ABISELECT(48,20), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //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 _ZTI7S6899C1[];
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
extern void _ZN7S6899C12v1Ev();
extern void _ZN7S6899C12v2Ev();
extern void _ZN7S6899C12v3Ev();
extern void _ZN7S6899C12v4Ev();
extern void _ZN7S6899C1D1Ev();
extern void _ZN7S6899C1D0Ev();
extern void _ZN10S6899C4_nt3v11Ev();
extern void _ZN10S6899C4_nt3v12Ev();
extern void _ZN10S6899C4_nt3v13Ev();
extern void _ZN10S6899C4_nt3v14Ev();
extern void _ZN10S6899C4_nt3v15Ev();
extern void ABISELECT(_ZThn48_N7S6899C1D1Ev,_ZThn20_N7S6899C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S6899C1D0Ev,_ZThn20_N7S6899C1D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
extern void _ZN7S6899C73v33Ev();
extern void _ZN7S6899C73v34Ev();
extern void _ZN7S6899C73v35Ev();
extern void _ZN7S6899C73v36Ev();
extern void _ZN7S6899C73v37Ev();
extern void _ZN7S6899C73v38Ev();
extern void _ZN7S6899C73v39Ev();
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
extern void _ZN7S6899C33v10Ev();
extern void _ZN7S6899C63v16Ev();
extern void _ZN7S6899C63v17Ev();
extern void _ZN7S6899C63v18Ev();
extern void ABISELECT(_ZTv0_n72_N7S6899C1D1Ev,_ZTv0_n36_N7S6899C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S6899C1D1Ev,_ZThn68_N7S6899C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6899C1D0Ev,_ZTv0_n36_N7S6899C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S6899C1D0Ev,_ZThn68_N7S6899C1D0Ev)() __attribute__((weak));
extern void _ZN7S6899C53v40Ev();
extern void _ZN7S6899C53v41Ev();
extern void _ZN7S6899C53v42Ev();
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
extern void ABISELECT(_ZTv0_n40_N7S6899C1D1Ev,_ZTv0_n20_N7S6899C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S6899C1D1Ev,_ZThn88_N7S6899C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6899C1D0Ev,_ZTv0_n20_N7S6899C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S6899C1D0Ev,_ZThn88_N7S6899C1D0Ev)() __attribute__((weak));
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
extern void _ZN7S6899C73v33Ev();
extern void _ZN7S6899C73v34Ev();
extern void _ZN7S6899C73v35Ev();
extern void _ZN7S6899C73v36Ev();
extern void _ZN7S6899C73v37Ev();
extern void _ZN7S6899C73v38Ev();
extern void _ZN7S6899C73v39Ev();
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
extern void ABISELECT(_ZTv0_n32_N7S6899C1D1Ev,_ZTv0_n16_N7S6899C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S6899C1D1Ev,_ZThn128_N7S6899C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6899C1D0Ev,_ZTv0_n16_N7S6899C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S6899C1D0Ev,_ZThn128_N7S6899C1D0Ev)() __attribute__((weak));
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN8S6899C103v26Ev();
extern void _ZN8S6899C103v27Ev();
extern void _ZN8S6899C103v28Ev();
extern void _ZN8S6899C103v29Ev();
extern void _ZN8S6899C103v30Ev();
extern void _ZN8S6899C103v31Ev();
extern void _ZN8S6899C103v32Ev();
extern void ABISELECT(_ZTvn48_n32_N7S6899C1D1Ev,_ZTvn20_n16_N7S6899C1D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N7S6899C1D0Ev,_ZTvn20_n16_N7S6899C1D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY vtc_S6899C1[] = {
  ABISELECT(288,128),
  ABISELECT(192,88),
  ABISELECT(160,72),
  ABISELECT(144,68),
  ABISELECT(136,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C1[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6899C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6899C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6899C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6899C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6899C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C1D0Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6899C1[0]),
  (VTBL_ENTRY)&_ZN10S6899C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6899C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6899C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6899C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S6899C4_nt3v15Ev,
  ABISELECT(240,108),
  ABISELECT(112,52),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S6899C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6899C1D1Ev,_ZThn20_N7S6899C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6899C1D0Ev,_ZThn20_N7S6899C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v33Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v34Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v35Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v39Ev,
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S6899C1[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
  0,
  ABISELECT(-136,-64),
  (VTBL_ENTRY)&(_ZTI7S6899C1[0]),
  (VTBL_ENTRY)&_ZN7S6899C33v10Ev,
  0,
  0,
  0,
  ABISELECT(-144,-68),
  0,
  0,
  0,
  ABISELECT(144,60),
  ABISELECT(48,20),
  ABISELECT(16,4),
  ABISELECT(-144,-68),
  (VTBL_ENTRY)&(_ZTI7S6899C1[0]),
  (VTBL_ENTRY)&_ZN7S6899C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6899C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6899C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6899C1D1Ev,_ZTv0_n36_N7S6899C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6899C1D0Ev,_ZTv0_n36_N7S6899C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C53v40Ev,
  (VTBL_ENTRY)&_ZN7S6899C53v41Ev,
  (VTBL_ENTRY)&_ZN7S6899C53v42Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-72),
  (VTBL_ENTRY)&(_ZTI7S6899C1[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-88),
  ABISELECT(96,40),
  ABISELECT(-32,-16),
  ABISELECT(-192,-88),
  (VTBL_ENTRY)&(_ZTI7S6899C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6899C1D1Ev,_ZTv0_n20_N7S6899C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6899C1D0Ev,_ZTv0_n20_N7S6899C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v33Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v34Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v35Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v39Ev,
  ABISELECT(-240,-108),
  (VTBL_ENTRY)&(_ZTI7S6899C1[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-288,-128),
  ABISELECT(-128,-56),
  ABISELECT(-288,-128),
  (VTBL_ENTRY)&(_ZTI7S6899C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C1D1Ev,_ZTv0_n16_N7S6899C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C1D0Ev,_ZTv0_n16_N7S6899C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v26Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v27Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v32Ev,
  ABISELECT(-176,-76),
  ABISELECT(-336,-148),
  (VTBL_ENTRY)&(_ZTI7S6899C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C1D1Ev,_ZTvn20_n16_N7S6899C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C1D0Ev,_ZTvn20_n16_N7S6899C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern VTBL_ENTRY _ZTV7S6899C1[];
extern void _ZN7S6899C7D1Ev();
extern void _ZN7S6899C7D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
extern void _ZN7S6899C73v33Ev();
extern void _ZN7S6899C73v34Ev();
extern void _ZN7S6899C73v35Ev();
extern void _ZN7S6899C73v36Ev();
extern void _ZN7S6899C73v37Ev();
extern void _ZN7S6899C73v38Ev();
extern void _ZN7S6899C73v39Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C7__A__7S6899C1[] = {
  ABISELECT(240,108),
  ABISELECT(112,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&_ZN7S6899C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v33Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v34Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v35Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v39Ev,
};
extern void _ZN7S6899C8D1Ev();
extern void _ZN7S6899C8D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C87S6899C7__A2__7S6899C1[] = {
  ABISELECT(112,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C97S6899C87S6899C7__A3__7S6899C1[] = {
  ABISELECT(112,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C97S6899C87S6899C7__A3__7S6899C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C87S6899C7__A2__7S6899C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C7__A__7S6899C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S6899C7D1Ev,_ZTv0_n16_N7S6899C7D1Ev)();
extern void ABISELECT(_ZThn240_N7S6899C7D1Ev,_ZThn108_N7S6899C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6899C7D0Ev,_ZTv0_n16_N7S6899C7D0Ev)();
extern void ABISELECT(_ZThn240_N7S6899C7D0Ev,_ZThn108_N7S6899C7D0Ev)() __attribute__((weak));
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN8S6899C103v26Ev();
extern void _ZN8S6899C103v27Ev();
extern void _ZN8S6899C103v28Ev();
extern void _ZN8S6899C103v29Ev();
extern void _ZN8S6899C103v30Ev();
extern void _ZN8S6899C103v31Ev();
extern void _ZN8S6899C103v32Ev();
static  VTBL_ENTRY _tg__ZTV8S6899C10__7S6899C7__A__7S6899C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-108),
  ABISELECT(-128,-56),
  ABISELECT(-240,-108),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C7D1Ev,_ZTv0_n16_N7S6899C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C7D0Ev,_ZTv0_n16_N7S6899C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v26Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v27Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v32Ev,
};
extern void ABISELECT(_ZTvn48_n32_N7S6899C7D1Ev,_ZTvn20_n16_N7S6899C7D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N7S6899C7D0Ev,_ZTvn20_n16_N7S6899C7D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C88S6899C10__A1__7S6899C7__A__7S6899C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-288,-128),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C7D1Ev,_ZTvn20_n16_N7S6899C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C7D0Ev,_ZTvn20_n16_N7S6899C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN7S6899C63v16Ev();
extern void _ZN7S6899C63v17Ev();
extern void _ZN7S6899C63v18Ev();
extern void _ZN7S6899C5D1Ev();
extern void _ZN7S6899C5D0Ev();
extern void _ZN7S6899C53v40Ev();
extern void _ZN7S6899C53v41Ev();
extern void _ZN7S6899C53v42Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C5__7S6899C1[] = {
  ABISELECT(144,60),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&_ZN7S6899C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6899C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6899C63v18Ev,
  (VTBL_ENTRY)&_ZN7S6899C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C53v40Ev,
  (VTBL_ENTRY)&_ZN7S6899C53v41Ev,
  (VTBL_ENTRY)&_ZN7S6899C53v42Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C5__7S6899C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S6899C5D1Ev,_ZTv0_n20_N7S6899C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6899C5D1Ev,_ZThn20_N7S6899C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6899C5D0Ev,_ZTv0_n20_N7S6899C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6899C5D0Ev,_ZThn20_N7S6899C5D0Ev)() __attribute__((weak));
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
extern void _ZN7S6899C73v33Ev();
extern void _ZN7S6899C73v34Ev();
extern void _ZN7S6899C73v35Ev();
extern void _ZN7S6899C73v36Ev();
extern void _ZN7S6899C73v37Ev();
extern void _ZN7S6899C73v38Ev();
extern void _ZN7S6899C73v39Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C7__7S6899C5__7S6899C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  ABISELECT(96,40),
  ABISELECT(-32,-16),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6899C5D1Ev,_ZTv0_n20_N7S6899C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6899C5D0Ev,_ZTv0_n20_N7S6899C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v33Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v34Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v35Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v39Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C27S6899C7__A1__7S6899C5__7S6899C1[] = {
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S6899C5D1Ev,_ZTv0_n16_N7S6899C5D1Ev)();
extern void ABISELECT(_ZThn144_N7S6899C5D1Ev,_ZThn60_N7S6899C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6899C5D0Ev,_ZTv0_n16_N7S6899C5D0Ev)();
extern void ABISELECT(_ZThn144_N7S6899C5D0Ev,_ZThn60_N7S6899C5D0Ev)() __attribute__((weak));
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN8S6899C103v26Ev();
extern void _ZN8S6899C103v27Ev();
extern void _ZN8S6899C103v28Ev();
extern void _ZN8S6899C103v29Ev();
extern void _ZN8S6899C103v30Ev();
extern void _ZN8S6899C103v31Ev();
extern void _ZN8S6899C103v32Ev();
static  VTBL_ENTRY _tg__ZTV8S6899C10__7S6899C5__7S6899C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-60),
  ABISELECT(-128,-56),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C5D1Ev,_ZTv0_n16_N7S6899C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C5D0Ev,_ZTv0_n16_N7S6899C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v26Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v27Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v32Ev,
};
extern void ABISELECT(_ZTvn48_n32_N7S6899C5D1Ev,_ZTvn20_n16_N7S6899C5D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N7S6899C5D0Ev,_ZTvn20_n16_N7S6899C5D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C88S6899C10__A1__7S6899C5__7S6899C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-192,-80),
  (VTBL_ENTRY)&(_ZTI7S6899C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C5D1Ev,_ZTvn20_n16_N7S6899C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C5D0Ev,_ZTvn20_n16_N7S6899C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN7S6899C7D1Ev();
extern void _ZN7S6899C7D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
extern void _ZN7S6899C73v33Ev();
extern void _ZN7S6899C73v34Ev();
extern void _ZN7S6899C73v35Ev();
extern void _ZN7S6899C73v36Ev();
extern void _ZN7S6899C73v37Ev();
extern void _ZN7S6899C73v38Ev();
extern void _ZN7S6899C73v39Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C7__7S6899C1[] = {
  ABISELECT(96,40),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&_ZN7S6899C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v33Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v34Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v35Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6899C73v39Ev,
};
extern void _ZN7S6899C8D1Ev();
extern void _ZN7S6899C8D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C87S6899C7__7S6899C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C97S6899C87S6899C7__7S6899C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C97S6899C87S6899C7__7S6899C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C87S6899C7__7S6899C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C7__7S6899C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S6899C7D1Ev,_ZTv0_n16_N7S6899C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6899C7D1Ev,_ZThn40_N7S6899C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6899C7D0Ev,_ZTv0_n16_N7S6899C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6899C7D0Ev,_ZThn40_N7S6899C7D0Ev)() __attribute__((weak));
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN8S6899C103v26Ev();
extern void _ZN8S6899C103v27Ev();
extern void _ZN8S6899C103v28Ev();
extern void _ZN8S6899C103v29Ev();
extern void _ZN8S6899C103v30Ev();
extern void _ZN8S6899C103v31Ev();
extern void _ZN8S6899C103v32Ev();
static  VTBL_ENTRY _tg__ZTV8S6899C10__7S6899C7__7S6899C1[] = {
  ABISELECT(48,20),
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-40),
  ABISELECT(-128,-56),
  ABISELECT(-96,-40),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C7D1Ev,_ZTv0_n16_N7S6899C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6899C7D0Ev,_ZTv0_n16_N7S6899C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v26Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v27Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v32Ev,
};
extern void ABISELECT(_ZTvn48_n32_N7S6899C7D1Ev,_ZTvn20_n16_N7S6899C7D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N7S6899C7D0Ev,_ZTvn20_n16_N7S6899C7D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C88S6899C10__A1__7S6899C7__7S6899C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-144,-60),
  (VTBL_ENTRY)&(_ZTI7S6899C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C7D1Ev,_ZTvn20_n16_N7S6899C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S6899C7D0Ev,_ZTvn20_n16_N7S6899C7D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN8S6899C10D1Ev();
extern void _ZN8S6899C10D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN8S6899C103v26Ev();
extern void _ZN8S6899C103v27Ev();
extern void _ZN8S6899C103v28Ev();
extern void _ZN8S6899C103v29Ev();
extern void _ZN8S6899C103v30Ev();
extern void _ZN8S6899C103v31Ev();
extern void _ZN8S6899C103v32Ev();
static  VTBL_ENTRY _tg__ZTV8S6899C10__7S6899C1[] = {
  ABISELECT(-128,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&_ZN8S6899C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6899C10D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v26Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v27Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v28Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v29Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v30Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v31Ev,
  (VTBL_ENTRY)&_ZN8S6899C103v32Ev,
};
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C98S6899C10__A1__7S6899C1[] = {
  ABISELECT(-128,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C98S6899C10__A1__7S6899C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,56),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C8D1Ev();
extern void _ZN7S6899C8D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C88S6899C10__A1__7S6899C1[] = {
  ABISELECT(-176,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
extern void _ZN7S6899C9D1Ev();
extern void _ZN7S6899C9D0Ev();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C97S6899C88S6899C10__A2__7S6899C1[] = {
  ABISELECT(-176,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6899C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C97S6899C88S6899C10__A2__7S6899C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,76),
  (VTBL_ENTRY)&(_ZTI7S6899C9[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__7S6899C88S6899C10__A1__7S6899C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,76),
  (VTBL_ENTRY)&(_ZTI7S6899C8[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void _ZN7S6899C22v5Ev();
extern void _ZN7S6899C22v6Ev();
extern void _ZN7S6899C22v7Ev();
extern void _ZN7S6899C22v8Ev();
extern void _ZN7S6899C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C2__8S6899C10__7S6899C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,56),
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&_ZN7S6899C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6899C22v9Ev,
};
extern void ABISELECT(_ZThn48_N8S6899C10D1Ev,_ZThn20_N8S6899C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S6899C10D0Ev,_ZThn20_N8S6899C10D0Ev)();
extern void _ZN7S6899C93v19Ev();
extern void _ZN7S6899C93v20Ev();
extern void _ZN7S6899C93v21Ev();
extern void _ZN7S6899C93v22Ev();
extern void _ZN7S6899C93v23Ev();
extern void _ZN7S6899C83v24Ev();
extern void _ZN7S6899C83v25Ev();
static  VTBL_ENTRY _tg__ZTV7S6899C8__8S6899C10__7S6899C1[] = {
  ABISELECT(-176,-76),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S6899C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6899C10D1Ev,_ZThn20_N8S6899C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S6899C10D0Ev,_ZThn20_N8S6899C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6899C93v19Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v20Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v21Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v22Ev,
  (VTBL_ENTRY)&_ZN7S6899C93v23Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v24Ev,
  (VTBL_ENTRY)&_ZN7S6899C83v25Ev,
};
static  VTT_ENTRY vtt_S6899C1[] = {
  {&(_ZTV7S6899C1[7]),  7,179},
  {&(_tg__ZTV7S6899C7__A__7S6899C1[4]),  4,20},
  {&(_tg__ZTV7S6899C87S6899C7__A2__7S6899C1[3]),  3,12},
  {&(_tg__ZTV7S6899C97S6899C87S6899C7__A3__7S6899C1[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C97S6899C87S6899C7__A3__7S6899C1[7]),  7,12},
  {&(_tg__ZTV7S6899C2__7S6899C87S6899C7__A2__7S6899C1[7]),  7,12},
  {&(_tg__ZTV7S6899C2__7S6899C7__A__7S6899C1[7]),  7,12},
  {&(_tg__ZTV8S6899C10__7S6899C7__A__7S6899C1[18]),  18,32},
  {&(_tg__ZTV7S6899C88S6899C10__A1__7S6899C7__A__7S6899C1[3]),  3,12},
  {&(_ZTV7S6899C1[55]),  55,179},
  {&(_ZTV7S6899C1[68]),  68,179},
  {&(_ZTV7S6899C1[83]),  83,179},
  {&(_ZTV7S6899C1[112]),  112,179},
  {&(_ZTV7S6899C1[130]),  130,179},
  {&(_ZTV7S6899C1[153]),  153,179},
  {&(_ZTV7S6899C1[170]),  170,179},
  {&(_ZTV7S6899C1[29]),  29,179},
  {&(_tg__ZTV7S6899C5__7S6899C1[5]),  5,13},
  {&(_tg__ZTV7S6899C2__7S6899C5__7S6899C1[7]),  7,12},
  {&(_tg__ZTV7S6899C7__7S6899C5__7S6899C1[24]),  24,40},
  {&(_tg__ZTV7S6899C27S6899C7__A1__7S6899C5__7S6899C1[2]),  2,7},
  {&(_tg__ZTV8S6899C10__7S6899C5__7S6899C1[18]),  18,32},
  {&(_tg__ZTV7S6899C88S6899C10__A1__7S6899C5__7S6899C1[3]),  3,12},
  {&(_tg__ZTV7S6899C7__7S6899C1[4]),  4,20},
  {&(_tg__ZTV7S6899C87S6899C7__7S6899C1[3]),  3,12},
  {&(_tg__ZTV7S6899C97S6899C87S6899C7__7S6899C1[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C97S6899C87S6899C7__7S6899C1[7]),  7,12},
  {&(_tg__ZTV7S6899C2__7S6899C87S6899C7__7S6899C1[7]),  7,12},
  {&(_tg__ZTV7S6899C2__7S6899C7__7S6899C1[7]),  7,12},
  {&(_tg__ZTV8S6899C10__7S6899C7__7S6899C1[18]),  18,32},
  {&(_tg__ZTV7S6899C88S6899C10__A1__7S6899C7__7S6899C1[3]),  3,12},
  {&(_tg__ZTV8S6899C10__7S6899C1[3]),  3,17},
  {&(_tg__ZTV7S6899C98S6899C10__A1__7S6899C1[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C98S6899C10__A1__7S6899C1[7]),  7,12},
  {&(_tg__ZTV7S6899C88S6899C10__A1__7S6899C1[3]),  3,12},
  {&(_tg__ZTV7S6899C97S6899C88S6899C10__A2__7S6899C1[3]),  3,10},
  {&(_tg__ZTV7S6899C2__7S6899C97S6899C88S6899C10__A2__7S6899C1[7]),  7,12},
  {&(_tg__ZTV7S6899C2__7S6899C88S6899C10__A1__7S6899C1[7]),  7,12},
  {&(_tg__ZTV7S6899C2__8S6899C10__7S6899C1[7]),  7,12},
  {&(_tg__ZTV7S6899C8__8S6899C10__7S6899C1[3]),  3,12},
};
extern VTBL_ENTRY _ZTI7S6899C1[];
extern  VTBL_ENTRY _ZTV7S6899C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6899C1[];
static VTBL_ENTRY alt_thunk_names177[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C5D0Ev,_ZTv0_n16_N7S6899C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6899C5D0Ev,_ZThn60_N7S6899C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C5D1Ev,_ZTv0_n16_N7S6899C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6899C5D1Ev,_ZThn60_N7S6899C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6899C5D0Ev,_ZTv0_n20_N7S6899C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6899C5D0Ev,_ZThn20_N7S6899C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6899C5D1Ev,_ZTv0_n20_N7S6899C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6899C5D1Ev,_ZThn20_N7S6899C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C7D0Ev,_ZTv0_n16_N7S6899C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6899C7D0Ev,_ZThn40_N7S6899C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6899C7D0Ev,_ZThn108_N7S6899C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C7D1Ev,_ZTv0_n16_N7S6899C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6899C7D1Ev,_ZThn40_N7S6899C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6899C7D1Ev,_ZThn108_N7S6899C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C1D0Ev,_ZTv0_n16_N7S6899C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S6899C1D0Ev,_ZThn128_N7S6899C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6899C1D1Ev,_ZTv0_n16_N7S6899C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S6899C1D1Ev,_ZThn128_N7S6899C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6899C1D0Ev,_ZTv0_n20_N7S6899C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6899C1D0Ev,_ZThn88_N7S6899C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6899C1D1Ev,_ZTv0_n20_N7S6899C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6899C1D1Ev,_ZThn88_N7S6899C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6899C1D0Ev,_ZTv0_n36_N7S6899C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6899C1D0Ev,_ZThn68_N7S6899C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6899C1D1Ev,_ZTv0_n36_N7S6899C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6899C1D1Ev,_ZThn68_N7S6899C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6899C1 = {  "S6899C1", // class name
  bases_S6899C1, 18,
  &(vtc_S6899C1[0]), // expected_vtbl_contents
  &(vtt_S6899C1[0]), // expected_vtt_contents
  ABISELECT(400,176), // object size
  NSPAIRA(_ZTI7S6899C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6899C1),179, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6899C1),40, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names177,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21362C7_nt  {
  int s21362c7f0[2];
  void *s21362c7f1;
};
//SIG(-1 S21362C7_nt) C1{ Fi[2] Fp}



//skip512 S21362C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21362C1  {
  ::S21361C2_nt s21362c1f0;
  ::S21361C4_nt s21362c1f1;
  ::S21361C5 s21362c1f2;
  void *s21362c1f3[2];
  ::S21362C7_nt s21362c1f4;
  ::S21361C7 s21362c1f5;
  void *s21362c1f6;
  ::S21362C7_nt s21362c1f7;
  int s21362c1f8;
  int s21362c1f9;
  void *s21362c1f10;
  int s21362c1f11;
  int s21362c1f12;
  int s21362c1f13;
  int s21362c1f14;
  int s21362c1f15;
  void *s21362c1f16;
  void *s21362c1f17;
  void *s21362c1f18;
  int s21362c1f19;
  char s21362c1f20;
  char s21362c1f21;
  void  mf21362c1(); // _ZN8S21362C19mf21362c1Ev
  virtual  ~S21362C1(); // _ZN8S21362C1D1Ev
  S21362C1(); // tgen
};
//SIG(1 S21362C1) C1{ vd m FC2{ Fi FC3{ Fp Fi}} FC4{ Fi[3]} FC5{ FC6{ Fi[2]} FC6 FC3 FC3 FC3 Fi[2]} Fp[2] FC7{ Fi[2] Fp} FC8{ Fi FC9{ Fi[10] FU10{ Fc[16] FC11{ Fc Fc Fc[14]}} Fp[2]} FC12{ Fi Fi Fc Fc Fs Fs Fc Fc Fc Fc Fc[3] Fc[3] FC6}} Fp FC7 Fi Fi Fp Fi Fi Fi Fi Fi Fp Fp Fp Fi Fc Fc}


void  S21362C1 ::mf21362c1(){}
 S21362C1 ::~S21362C1(){ note_dtor("S21362C1", this);}
S21362C1 ::S21362C1(){ note_ctor("S21362C1", this);} // tgen

static void Test_S21362C1()
{
  extern Class_Descriptor cd_S21362C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(46,67)];
    init_test(&cd_S21362C1, buf);
    S21362C1 *dp, &lv = *(dp=new (buf) S21362C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(360,264), "sizeof(S21362C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21362C1)");
    check_field_offset(lv, s21362c1f0, ABISELECT(8,4), "S21362C1.s21362c1f0");
    check_field_offset(lv, s21362c1f1, ABISELECT(32,16), "S21362C1.s21362c1f1");
    check_field_offset(lv, s21362c1f2, ABISELECT(48,28), "S21362C1.s21362c1f2");
    check_field_offset(lv, s21362c1f3, ABISELECT(120,76), "S21362C1.s21362c1f3");
    check_field_offset(lv, s21362c1f4, ABISELECT(136,84), "S21362C1.s21362c1f4");
    check_field_offset(lv, s21362c1f5, ABISELECT(152,96), "S21362C1.s21362c1f5");
    check_field_offset(lv, s21362c1f6, ABISELECT(264,196), "S21362C1.s21362c1f6");
    check_field_offset(lv, s21362c1f7, ABISELECT(272,200), "S21362C1.s21362c1f7");
    check_field_offset(lv, s21362c1f8, ABISELECT(288,212), "S21362C1.s21362c1f8");
    check_field_offset(lv, s21362c1f9, ABISELECT(292,216), "S21362C1.s21362c1f9");
    check_field_offset(lv, s21362c1f10, ABISELECT(296,220), "S21362C1.s21362c1f10");
    check_field_offset(lv, s21362c1f11, ABISELECT(304,224), "S21362C1.s21362c1f11");
    check_field_offset(lv, s21362c1f12, ABISELECT(308,228), "S21362C1.s21362c1f12");
    check_field_offset(lv, s21362c1f13, ABISELECT(312,232), "S21362C1.s21362c1f13");
    check_field_offset(lv, s21362c1f14, ABISELECT(316,236), "S21362C1.s21362c1f14");
    check_field_offset(lv, s21362c1f15, ABISELECT(320,240), "S21362C1.s21362c1f15");
    check_field_offset(lv, s21362c1f16, ABISELECT(328,244), "S21362C1.s21362c1f16");
    check_field_offset(lv, s21362c1f17, ABISELECT(336,248), "S21362C1.s21362c1f17");
    check_field_offset(lv, s21362c1f18, ABISELECT(344,252), "S21362C1.s21362c1f18");
    check_field_offset(lv, s21362c1f19, ABISELECT(352,256), "S21362C1.s21362c1f19");
    check_field_offset(lv, s21362c1f20, ABISELECT(356,260), "S21362C1.s21362c1f20");
    check_field_offset(lv, s21362c1f21, ABISELECT(357,261), "S21362C1.s21362c1f21");
    test_class_info(&lv, &cd_S21362C1);
    dp->~S21362C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21362C1(Test_S21362C1, "S21362C1", ABISELECT(360,264));

#else // __cplusplus

extern void _ZN8S21362C1C1Ev();
extern void _ZN8S21362C1D1Ev();
Name_Map name_map_S21362C1[] = {
  NSPAIR(_ZN8S21362C1C1Ev),
  NSPAIR(_ZN8S21362C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21362C1[];
extern void _ZN8S21362C1D1Ev();
extern void _ZN8S21362C1D0Ev();
static  VTBL_ENTRY vtc_S21362C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21362C1[0]),
  (VTBL_ENTRY)&_ZN8S21362C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21362C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21362C1[];
extern  VTBL_ENTRY _ZTV8S21362C1[];
Class_Descriptor cd_S21362C1 = {  "S21362C1", // class name
  0,0,//no base classes
  &(vtc_S21362C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(360,264), // object size
  NSPAIRA(_ZTI8S21362C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21362C1),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  S21363C9  {
  int s21363c9f0;
  char s21363c9f1;
  char s21363c9f2;
  short s21363c9f3;
  short s21363c9f4;
  char s21363c9f5;
  char s21363c9f6[2];
  char s21363c9f7;
  char s21363c9f8;
  char s21363c9f9;
  ::S11608C17_nt s21363c9f10;
};
//SIG(-1 S21363C9) C1{ Fi Fc[2] Fs[2] Fc[6] FC2{ Fi[2]}}



static void Test_S21363C9()
{
  {
    init_simple_test("S21363C9");
    S21363C9 lv;
    check2(sizeof(lv), 24, "sizeof(S21363C9)");
    check2(__alignof__(lv), 4, "__alignof__(S21363C9)");
    check_field_offset(lv, s21363c9f0, 0, "S21363C9.s21363c9f0");
    check_field_offset(lv, s21363c9f1, 4, "S21363C9.s21363c9f1");
    check_field_offset(lv, s21363c9f2, 5, "S21363C9.s21363c9f2");
    check_field_offset(lv, s21363c9f3, 6, "S21363C9.s21363c9f3");
    check_field_offset(lv, s21363c9f4, 8, "S21363C9.s21363c9f4");
    check_field_offset(lv, s21363c9f5, 10, "S21363C9.s21363c9f5");
    check_field_offset(lv, s21363c9f6, 11, "S21363C9.s21363c9f6");
    check_field_offset(lv, s21363c9f7, 13, "S21363C9.s21363c9f7");
    check_field_offset(lv, s21363c9f8, 14, "S21363C9.s21363c9f8");
    check_field_offset(lv, s21363c9f9, 15, "S21363C9.s21363c9f9");
    check_field_offset(lv, s21363c9f10, 16, "S21363C9.s21363c9f10");
  }
}
static Arrange_To_Call_Me vS21363C9(Test_S21363C9, "S21363C9", 24);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21363C5  {
  int s21363c5f0;
  ::S21361C8_nt s21363c5f1;
  ::S21363C9 s21363c5f2;
};
//SIG(-1 S21363C5) C1{ Fi FC2{ Fi[10] FU3{ Fc[16] FC4{ Fc Fc Fc[14]}} Fp[2]} FC5{ Fi Fc Fc Fs Fs Fc Fc[2] Fc Fc Fc FC6{ Fi Fi}}}



static void Test_S21363C5()
{
  {
    init_simple_test("S21363C5");
    S21363C5 lv;
    check2(sizeof(lv), ABISELECT(104,92), "sizeof(S21363C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21363C5)");
    check_field_offset(lv, s21363c5f0, 0, "S21363C5.s21363c5f0");
    check_field_offset(lv, s21363c5f1, ABISELECT(8,4), "S21363C5.s21363c5f1");
    check_field_offset(lv, s21363c5f2, ABISELECT(80,68), "S21363C5.s21363c5f2");
  }
}
static Arrange_To_Call_Me vS21363C5(Test_S21363C5, "S21363C5", ABISELECT(104,92));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21363C12  {
  ::S11608C17_nt s21363c12f0;
  ::S11608C17_nt s21363c12f1;
  ::S11608C3_nt s21363c12f2;
};
//SIG(-1 S21363C12) C1{ FC2{ Fi[2]} FC2 FC3{ Fp Fi}}



static void Test_S21363C12()
{
  {
    init_simple_test("S21363C12");
    S21363C12 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S21363C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21363C12)");
    check_field_offset(lv, s21363c12f0, 0, "S21363C12.s21363c12f0");
    check_field_offset(lv, s21363c12f1, 8, "S21363C12.s21363c12f1");
    check_field_offset(lv, s21363c12f2, 16, "S21363C12.s21363c12f2");
  }
}
static Arrange_To_Call_Me vS21363C12(Test_S21363C12, "S21363C12", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21363C1  {
  ::S21361C2_nt s21363c1f0;
  ::S21361C4_nt s21363c1f1;
  ::S21363C5 s21363c1f2;
  void *s21363c1f3;
  ::S21361C12_nt s21363c1f4;
  ::S21363C5 s21363c1f5;
  void *s21363c1f6;
  ::S21361C12_nt s21363c1f7;
  ::S21363C12 s21363c1f8;
  int s21363c1f9;
  int s21363c1f10;
  void *s21363c1f11;
  __tsi64 s21363c1f12;
  __tsi64 s21363c1f13;
  int s21363c1f14;
  int s21363c1f15;
  int s21363c1f16;
  int s21363c1f17;
  int s21363c1f18;
  void *s21363c1f19;
  void *s21363c1f20;
  char s21363c1f21;
  char s21363c1f22;
  char s21363c1f23;
  void *s21363c1f24;
  void *s21363c1f25;
  long s21363c1f26;
  void  mf21363c1(); // _ZN8S21363C19mf21363c1Ev
  virtual  ~S21363C1(); // _ZN8S21363C1D1Ev
  S21363C1(); // tgen
};
//SIG(1 S21363C1) C1{ vd m FC2{ Fi FC3{ Fp Fi}} FC4{ Fi[3]} FC5{ Fi FC6{ Fi[10] FU7{ Fc[16] FC8{ Fc Fc Fc[14]}} Fp[2]} FC9{ Fi Fc Fc Fs Fs Fc Fc[2] Fc Fc Fc FC10{ Fi Fi}}} Fp FC11{ Fi Fi Fp} FC5 Fp FC11 FC12{ FC10 FC10 FC3} Fi Fi Fp FL FL Fi Fi Fi Fi Fi Fp Fp Fc Fc Fc Fp Fp Fl}


void  S21363C1 ::mf21363c1(){}
 S21363C1 ::~S21363C1(){ note_dtor("S21363C1", this);}
S21363C1 ::S21363C1(){ note_ctor("S21363C1", this);} // tgen

static void Test_S21363C1()
{
  extern Class_Descriptor cd_S21363C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(56,86)];
    init_test(&cd_S21363C1, buf);
    S21363C1 *dp, &lv = *(dp=new (buf) S21363C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(440,340), "sizeof(S21363C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21363C1)");
    check_field_offset(lv, s21363c1f0, ABISELECT(8,4), "S21363C1.s21363c1f0");
    check_field_offset(lv, s21363c1f1, ABISELECT(32,16), "S21363C1.s21363c1f1");
    check_field_offset(lv, s21363c1f2, ABISELECT(48,28), "S21363C1.s21363c1f2");
    check_field_offset(lv, s21363c1f3, ABISELECT(152,120), "S21363C1.s21363c1f3");
    check_field_offset(lv, s21363c1f4, ABISELECT(160,124), "S21363C1.s21363c1f4");
    check_field_offset(lv, s21363c1f5, ABISELECT(176,136), "S21363C1.s21363c1f5");
    check_field_offset(lv, s21363c1f6, ABISELECT(280,228), "S21363C1.s21363c1f6");
    check_field_offset(lv, s21363c1f7, ABISELECT(288,232), "S21363C1.s21363c1f7");
    check_field_offset(lv, s21363c1f8, ABISELECT(304,244), "S21363C1.s21363c1f8");
    check_field_offset(lv, s21363c1f9, ABISELECT(336,268), "S21363C1.s21363c1f9");
    check_field_offset(lv, s21363c1f10, ABISELECT(340,272), "S21363C1.s21363c1f10");
    check_field_offset(lv, s21363c1f11, ABISELECT(344,276), "S21363C1.s21363c1f11");
    check_field_offset(lv, s21363c1f12, ABISELECT(352,280), "S21363C1.s21363c1f12");
    check_field_offset(lv, s21363c1f13, ABISELECT(360,288), "S21363C1.s21363c1f13");
    check_field_offset(lv, s21363c1f14, ABISELECT(368,296), "S21363C1.s21363c1f14");
    check_field_offset(lv, s21363c1f15, ABISELECT(372,300), "S21363C1.s21363c1f15");
    check_field_offset(lv, s21363c1f16, ABISELECT(376,304), "S21363C1.s21363c1f16");
    check_field_offset(lv, s21363c1f17, ABISELECT(380,308), "S21363C1.s21363c1f17");
    check_field_offset(lv, s21363c1f18, ABISELECT(384,312), "S21363C1.s21363c1f18");
    check_field_offset(lv, s21363c1f19, ABISELECT(392,316), "S21363C1.s21363c1f19");
    check_field_offset(lv, s21363c1f20, ABISELECT(400,320), "S21363C1.s21363c1f20");
    check_field_offset(lv, s21363c1f21, ABISELECT(408,324), "S21363C1.s21363c1f21");
    check_field_offset(lv, s21363c1f22, ABISELECT(409,325), "S21363C1.s21363c1f22");
    check_field_offset(lv, s21363c1f23, ABISELECT(410,326), "S21363C1.s21363c1f23");
    check_field_offset(lv, s21363c1f24, ABISELECT(416,328), "S21363C1.s21363c1f24");
    check_field_offset(lv, s21363c1f25, ABISELECT(424,332), "S21363C1.s21363c1f25");
    check_field_offset(lv, s21363c1f26, ABISELECT(432,336), "S21363C1.s21363c1f26");
    test_class_info(&lv, &cd_S21363C1);
    dp->~S21363C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21363C1(Test_S21363C1, "S21363C1", ABISELECT(440,340));

#else // __cplusplus

extern void _ZN8S21363C1C1Ev();
extern void _ZN8S21363C1D1Ev();
Name_Map name_map_S21363C1[] = {
  NSPAIR(_ZN8S21363C1C1Ev),
  NSPAIR(_ZN8S21363C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21363C1[];
extern void _ZN8S21363C1D1Ev();
extern void _ZN8S21363C1D0Ev();
static  VTBL_ENTRY vtc_S21363C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21363C1[0]),
  (VTBL_ENTRY)&_ZN8S21363C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21363C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21363C1[];
extern  VTBL_ENTRY _ZTV8S21363C1[];
Class_Descriptor cd_S21363C1 = {  "S21363C1", // class name
  0,0,//no base classes
  &(vtc_S21363C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(440,340), // object size
  NSPAIRA(_ZTI8S21363C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21363C1),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  S1890C4_nt  {
  void  mf1890c4(); // _ZN10S1890C4_nt8mf1890c4Ev
  virtual  ~S1890C4_nt(); // _ZN10S1890C4_ntD1Ev
  S1890C4_nt(); // tgen
};
//SIG(-1 S1890C4_nt) C1{ vd m}


void  S1890C4_nt ::mf1890c4(){}
 S1890C4_nt ::~S1890C4_nt(){ note_dtor("S1890C4_nt", this);}
S1890C4_nt ::S1890C4_nt(){ note_ctor("S1890C4_nt", this);} // tgen

//skip512 S1890C4_nt

#else // __cplusplus

extern void _ZN10S1890C4_ntC1Ev();
extern void _ZN10S1890C4_ntD1Ev();
Name_Map name_map_S1890C4_nt[] = {
  NSPAIR(_ZN10S1890C4_ntC1Ev),
  NSPAIR(_ZN10S1890C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S1890C4_nt[];
extern void _ZN10S1890C4_ntD1Ev();
extern void _ZN10S1890C4_ntD0Ev();
static  VTBL_ENTRY vtc_S1890C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1890C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S1890C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1890C4_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S1890C4_nt[];
VTBL_ENTRY *P__ZTI10S1890C4_nt = _ZTI10S1890C4_nt; 
extern  VTBL_ENTRY _ZTV10S1890C4_nt[];
Class_Descriptor cd_S1890C4_nt = {  "S1890C4_nt", // class name
  0,0,//no base classes
  &(vtc_S1890C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1890C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S1890C4_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  S1890C3_nt  : S1890C4_nt {
  short s1890c3f0[2];
  virtual  ~S1890C3_nt(); // _ZN10S1890C3_ntD1Ev
  virtual void  v2(); // _ZN10S1890C3_nt2v2Ev
  S1890C3_nt(); // tgen
};
//SIG(-1 S1890C3_nt) C1{ BC2{ vd m} vd v1 Fs[2]}


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

//skip512 S1890C3_nt

#else // __cplusplus

extern void _ZN10S1890C3_ntC1Ev();
extern void _ZN10S1890C3_ntD1Ev();
Name_Map name_map_S1890C3_nt[] = {
  NSPAIR(_ZN10S1890C3_ntC1Ev),
  NSPAIR(_ZN10S1890C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1890C4_nt;
extern VTBL_ENTRY _ZTI10S1890C4_nt[];
extern  VTBL_ENTRY _ZTV10S1890C4_nt[];
static Base_Class bases_S1890C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1890C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1890C3_nt[];
extern void _ZN10S1890C3_ntD1Ev();
extern void _ZN10S1890C3_ntD0Ev();
extern void _ZN10S1890C3_nt2v2Ev();
static  VTBL_ENTRY vtc_S1890C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1890C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1890C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1890C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1890C3_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI10S1890C3_nt[];
VTBL_ENTRY *P__ZTI10S1890C3_nt = _ZTI10S1890C3_nt; 
extern  VTBL_ENTRY _ZTV10S1890C3_nt[];
Class_Descriptor cd_S1890C3_nt = {  "S1890C3_nt", // class name
  bases_S1890C3_nt, 1,
  &(vtc_S1890C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S1890C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1890C3_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  S1890C7_nt  {
  void *s1890c7f0;
  int s1890c7f1[2];
  void  mf1890c7(); // _ZN10S1890C7_nt8mf1890c7Ev
};
//SIG(-1 S1890C7_nt) C1{ m Fp Fi[2]}


void  S1890C7_nt ::mf1890c7(){}

//skip512 S1890C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1890C6_nt  {
  ::S1890C7_nt s1890c6f0;
  void  mf1890c6(); // _ZN10S1890C6_nt8mf1890c6Ev
};
//SIG(-1 S1890C6_nt) C1{ m FC2{ m Fp Fi[2]}}


void  S1890C6_nt ::mf1890c6(){}

//skip512 S1890C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1890C9  {
  ::S1890C7_nt s1890c9f0;
  void  mf1890c9(); // _ZN7S1890C98mf1890c9Ev
};
//SIG(-1 S1890C9) C1{ m FC2{ m Fp Fi[2]}}


void  S1890C9 ::mf1890c9(){}

static void Test_S1890C9()
{
  {
    init_simple_test("S1890C9");
    S1890C9 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1890C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1890C9)");
    check_field_offset(lv, s1890c9f0, 0, "S1890C9.s1890c9f0");
  }
}
static Arrange_To_Call_Me vS1890C9(Test_S1890C9, "S1890C9", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1890C12  {
  ::S1890C7_nt s1890c12f0;
  void  mf1890c12(); // _ZN8S1890C129mf1890c12Ev
};
//SIG(-1 S1890C12) C1{ m FC2{ m Fp Fi[2]}}


void  S1890C12 ::mf1890c12(){}

static void Test_S1890C12()
{
  {
    init_simple_test("S1890C12");
    S1890C12 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1890C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1890C12)");
    check_field_offset(lv, s1890c12f0, 0, "S1890C12.s1890c12f0");
  }
}
static Arrange_To_Call_Me vS1890C12(Test_S1890C12, "S1890C12", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1890C13  {
  void *s1890c13f0;
  int s1890c13f1[2];
  void  mf1890c13(); // _ZN8S1890C139mf1890c13Ev
};
//SIG(-1 S1890C13) C1{ m Fp Fi[2]}


void  S1890C13 ::mf1890c13(){}

static void Test_S1890C13()
{
  {
    init_simple_test("S1890C13");
    S1890C13 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1890C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1890C13)");
    check_field_offset(lv, s1890c13f0, 0, "S1890C13.s1890c13f0");
    check_field_offset(lv, s1890c13f1, ABISELECT(8,4), "S1890C13.s1890c13f1");
  }
}
static Arrange_To_Call_Me vS1890C13(Test_S1890C13, "S1890C13", ABISELECT(16,12));

#else // __cplusplus

Class_Descriptor cd_S1890C13 = {  "S1890C13", // 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  S1890C16  {
  ::S1890C7_nt s1890c16f0;
  void  mf1890c16(); // _ZN8S1890C169mf1890c16Ev
};
//SIG(-1 S1890C16) C1{ m FC2{ m Fp Fi[2]}}


void  S1890C16 ::mf1890c16(){}

static void Test_S1890C16()
{
  {
    init_simple_test("S1890C16");
    S1890C16 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1890C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1890C16)");
    check_field_offset(lv, s1890c16f0, 0, "S1890C16.s1890c16f0");
  }
}
static Arrange_To_Call_Me vS1890C16(Test_S1890C16, "S1890C16", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1890C2  : S1890C3_nt {
  ::S1604C11_nt s1890c2f0;
  ::S1890C6_nt s1890c2f1;
  ::S1890C6_nt s1890c2f2;
  ::S1890C6_nt s1890c2f3;
  ::S1890C9 s1890c2f4;
  ::S1890C9 s1890c2f5;
  ::S1890C12 s1890c2f6;
  ::S1890C13 s1890c2f7;
  ::S1890C12 s1890c2f8;
  ::S1890C13 s1890c2f9;
  int s1890c2f10[4];
  ::S1890C16 s1890c2f11;
  ::S1890C16 s1890c2f12;
  virtual  ~S1890C2(); // _ZN7S1890C2D1Ev
  virtual void  v3(); // _ZN7S1890C22v3Ev
  virtual void  v4(); // _ZN7S1890C22v4Ev
  virtual void  v5(); // _ZN7S1890C22v5Ev
  virtual void  v6(); // _ZN7S1890C22v6Ev
  virtual void  v7(); // _ZN7S1890C22v7Ev
  virtual void  v8(); // _ZN7S1890C22v8Ev
  virtual void  v9(); // _ZN7S1890C22v9Ev
  virtual void  v10(); // _ZN7S1890C23v10Ev
  S1890C2(); // tgen
};
//SIG(-1 S1890C2) C1{ BC2{ BC3{ vd m} vd v9 Fs[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 FC4{ m Fp Fi[2]} FC5{ m FC6{ m Fp Fi[2]}} FC5 FC5 FC7{ m FC6} FC7 FC8{ m FC6} FC9{ m Fp Fi[2]} FC8 FC9 Fi[4] FC10{ m FC6} FC10}


 S1890C2 ::~S1890C2(){ note_dtor("S1890C2", this);}
void  S1890C2 ::v3(){vfunc_called(this, "_ZN7S1890C22v3Ev");}
void  S1890C2 ::v4(){vfunc_called(this, "_ZN7S1890C22v4Ev");}
void  S1890C2 ::v5(){vfunc_called(this, "_ZN7S1890C22v5Ev");}
void  S1890C2 ::v6(){vfunc_called(this, "_ZN7S1890C22v6Ev");}
void  S1890C2 ::v7(){vfunc_called(this, "_ZN7S1890C22v7Ev");}
void  S1890C2 ::v8(){vfunc_called(this, "_ZN7S1890C22v8Ev");}
void  S1890C2 ::v9(){vfunc_called(this, "_ZN7S1890C22v9Ev");}
void  S1890C2 ::v10(){vfunc_called(this, "_ZN7S1890C23v10Ev");}
S1890C2 ::S1890C2(){ note_ctor("S1890C2", this);} // tgen

static void Test_S1890C2()
{
  extern Class_Descriptor cd_S1890C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,43)];
    init_test(&cd_S1890C2, buf);
    S1890C2 *dp, &lv = *(dp=new (buf) S1890C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,168), "sizeof(S1890C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1890C2)");
    check_base_class_offset(lv, (S1890C4_nt*)(S1890C3_nt*), 0, "S1890C2");
    check_base_class_offset(lv, (S1890C3_nt*), 0, "S1890C2");
    check_field_offset(lv, s1890c2f0, ABISELECT(16,8), "S1890C2.s1890c2f0");
    check_field_offset(lv, s1890c2f1, ABISELECT(32,20), "S1890C2.s1890c2f1");
    check_field_offset(lv, s1890c2f2, ABISELECT(48,32), "S1890C2.s1890c2f2");
    check_field_offset(lv, s1890c2f3, ABISELECT(64,44), "S1890C2.s1890c2f3");
    check_field_offset(lv, s1890c2f4, ABISELECT(80,56), "S1890C2.s1890c2f4");
    check_field_offset(lv, s1890c2f5, ABISELECT(96,68), "S1890C2.s1890c2f5");
    check_field_offset(lv, s1890c2f6, ABISELECT(112,80), "S1890C2.s1890c2f6");
    check_field_offset(lv, s1890c2f7, ABISELECT(128,92), "S1890C2.s1890c2f7");
    check_field_offset(lv, s1890c2f8, ABISELECT(144,104), "S1890C2.s1890c2f8");
    check_field_offset(lv, s1890c2f9, ABISELECT(160,116), "S1890C2.s1890c2f9");
    check_field_offset(lv, s1890c2f10, ABISELECT(176,128), "S1890C2.s1890c2f10");
    check_field_offset(lv, s1890c2f11, ABISELECT(192,144), "S1890C2.s1890c2f11");
    check_field_offset(lv, s1890c2f12, ABISELECT(208,156), "S1890C2.s1890c2f12");
    test_class_info(&lv, &cd_S1890C2);
    dp->~S1890C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1890C2(Test_S1890C2, "S1890C2", ABISELECT(224,168));

#else // __cplusplus

extern void _ZN7S1890C2C1Ev();
extern void _ZN7S1890C2D1Ev();
Name_Map name_map_S1890C2[] = {
  NSPAIR(_ZN7S1890C2C1Ev),
  NSPAIR(_ZN7S1890C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1890C4_nt;
extern VTBL_ENTRY _ZTI10S1890C4_nt[];
extern  VTBL_ENTRY _ZTV10S1890C4_nt[];
extern Class_Descriptor cd_S1890C3_nt;
extern VTBL_ENTRY _ZTI10S1890C3_nt[];
extern  VTBL_ENTRY _ZTV10S1890C3_nt[];
static Base_Class bases_S1890C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1890C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1890C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1890C2[];
extern void _ZN7S1890C2D1Ev();
extern void _ZN7S1890C2D0Ev();
extern void _ZN10S1890C3_nt2v2Ev();
extern void _ZN7S1890C22v3Ev();
extern void _ZN7S1890C22v4Ev();
extern void _ZN7S1890C22v5Ev();
extern void _ZN7S1890C22v6Ev();
extern void _ZN7S1890C22v7Ev();
extern void _ZN7S1890C22v8Ev();
extern void _ZN7S1890C22v9Ev();
extern void _ZN7S1890C23v10Ev();
static  VTBL_ENTRY vtc_S1890C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1890C2[0]),
  (VTBL_ENTRY)&_ZN7S1890C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1890C2D0Ev,
  (VTBL_ENTRY)&_ZN10S1890C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v3Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v4Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1890C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S1890C2[];
extern  VTBL_ENTRY _ZTV7S1890C2[];
Class_Descriptor cd_S1890C2 = {  "S1890C2", // class name
  bases_S1890C2, 2,
  &(vtc_S1890C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,168), // object size
  NSPAIRA(_ZTI7S1890C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1890C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1890C1  : S1890C2 {
  virtual  ~S1890C1(); // _ZN7S1890C1D1Ev
  virtual void  v1(); // _ZN7S1890C12v1Ev
  S1890C1(); // tgen
};
//SIG(1 S1890C1) C1{ BC2{ BC3{ BC4{ vd m} vd v2 Fs[2]} vd v3 v4 v5 v6 v7 v8 v9 v10 FC5{ m Fp Fi[2]} FC6{ m FC7{ m Fp Fi[2]}} FC6 FC6 FC8{ m FC7} FC8 FC9{ m FC7} FC10{ m Fp Fi[2]} FC9 FC10 Fi[4] FC11{ m FC7} FC11} vd v1}


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

static void Test_S1890C1()
{
  extern Class_Descriptor cd_S1890C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,43)];
    init_test(&cd_S1890C1, buf);
    S1890C1 *dp, &lv = *(dp=new (buf) S1890C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,168), "sizeof(S1890C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1890C1)");
    check_base_class_offset(lv, (S1890C4_nt*)(S1890C3_nt*)(S1890C2*), 0, "S1890C1");
    check_base_class_offset(lv, (S1890C3_nt*)(S1890C2*), 0, "S1890C1");
    check_base_class_offset(lv, (S1890C2*), 0, "S1890C1");
    test_class_info(&lv, &cd_S1890C1);
    dp->~S1890C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1890C1(Test_S1890C1, "S1890C1", ABISELECT(224,168));

#else // __cplusplus

extern void _ZN7S1890C1C1Ev();
extern void _ZN7S1890C1D1Ev();
Name_Map name_map_S1890C1[] = {
  NSPAIR(_ZN7S1890C1C1Ev),
  NSPAIR(_ZN7S1890C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1890C4_nt;
extern VTBL_ENTRY _ZTI10S1890C4_nt[];
extern  VTBL_ENTRY _ZTV10S1890C4_nt[];
extern Class_Descriptor cd_S1890C3_nt;
extern VTBL_ENTRY _ZTI10S1890C3_nt[];
extern  VTBL_ENTRY _ZTV10S1890C3_nt[];
extern Class_Descriptor cd_S1890C2;
extern VTBL_ENTRY _ZTI7S1890C2[];
extern  VTBL_ENTRY _ZTV7S1890C2[];
static Base_Class bases_S1890C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1890C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1890C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1890C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1890C1[];
extern void _ZN7S1890C1D1Ev();
extern void _ZN7S1890C1D0Ev();
extern void _ZN10S1890C3_nt2v2Ev();
extern void _ZN7S1890C22v3Ev();
extern void _ZN7S1890C22v4Ev();
extern void _ZN7S1890C22v5Ev();
extern void _ZN7S1890C22v6Ev();
extern void _ZN7S1890C22v7Ev();
extern void _ZN7S1890C22v8Ev();
extern void _ZN7S1890C22v9Ev();
extern void _ZN7S1890C23v10Ev();
extern void _ZN7S1890C12v1Ev();
static  VTBL_ENTRY vtc_S1890C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1890C1[0]),
  (VTBL_ENTRY)&_ZN7S1890C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1890C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1890C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v3Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v4Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1890C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1890C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1890C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S1890C1[];
extern  VTBL_ENTRY _ZTV7S1890C1[];
Class_Descriptor cd_S1890C1 = {  "S1890C1", // class name
  bases_S1890C1, 3,
  &(vtc_S1890C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,168), // object size
  NSPAIRA(_ZTI7S1890C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1890C1),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  S1231C3_nt  : S11969C29_nt {
  virtual  ~S1231C3_nt(); // _ZN10S1231C3_ntD1Ev
  virtual void  v4(); // _ZN10S1231C3_nt2v4Ev
  S1231C3_nt(); // tgen
};
//SIG(-1 S1231C3_nt) C1{ BC2{ m} vd v1}


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

//skip512 S1231C3_nt

#else // __cplusplus

extern void _ZN10S1231C3_ntC1Ev();
extern void _ZN10S1231C3_ntD1Ev();
Name_Map name_map_S1231C3_nt[] = {
  NSPAIR(_ZN10S1231C3_ntC1Ev),
  NSPAIR(_ZN10S1231C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C29_nt;
extern VTBL_ENTRY _ZTI12S11969C29_nt[];
static Base_Class bases_S1231C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1231C3_nt[];
extern void _ZN10S1231C3_ntD1Ev();
extern void _ZN10S1231C3_ntD0Ev();
extern void _ZN10S1231C3_nt2v4Ev();
static  VTBL_ENTRY vtc_S1231C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1231C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1231C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1231C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1231C3_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S1231C3_nt[];
VTBL_ENTRY *P__ZTI10S1231C3_nt = _ZTI10S1231C3_nt; 
extern  VTBL_ENTRY _ZTV10S1231C3_nt[];
Class_Descriptor cd_S1231C3_nt = {  "S1231C3_nt", // class name
  bases_S1231C3_nt, 1,
  &(vtc_S1231C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1231C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1231C3_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  S1231C6_nt  : S1231C3_nt {
  virtual  ~S1231C6_nt(); // _ZN10S1231C6_ntD1Ev
  virtual void  v29(); // _ZN10S1231C6_nt3v29Ev
  virtual void  v30(); // _ZN10S1231C6_nt3v30Ev
  virtual void  v31(); // _ZN10S1231C6_nt3v31Ev
  virtual void  v32(); // _ZN10S1231C6_nt3v32Ev
  virtual void  v33(); // _ZN10S1231C6_nt3v33Ev
  virtual void  v34(); // _ZN10S1231C6_nt3v34Ev
  virtual void  v35(); // _ZN10S1231C6_nt3v35Ev
  virtual void  v36(); // _ZN10S1231C6_nt3v36Ev
  S1231C6_nt(); // tgen
};
//SIG(-1 S1231C6_nt) C1{ BC2{ BC3{ m} vd v9} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S1231C6_nt ::~S1231C6_nt(){ note_dtor("S1231C6_nt", this);}
void  S1231C6_nt ::v29(){vfunc_called(this, "_ZN10S1231C6_nt3v29Ev");}
void  S1231C6_nt ::v30(){vfunc_called(this, "_ZN10S1231C6_nt3v30Ev");}
void  S1231C6_nt ::v31(){vfunc_called(this, "_ZN10S1231C6_nt3v31Ev");}
void  S1231C6_nt ::v32(){vfunc_called(this, "_ZN10S1231C6_nt3v32Ev");}
void  S1231C6_nt ::v33(){vfunc_called(this, "_ZN10S1231C6_nt3v33Ev");}
void  S1231C6_nt ::v34(){vfunc_called(this, "_ZN10S1231C6_nt3v34Ev");}
void  S1231C6_nt ::v35(){vfunc_called(this, "_ZN10S1231C6_nt3v35Ev");}
void  S1231C6_nt ::v36(){vfunc_called(this, "_ZN10S1231C6_nt3v36Ev");}
S1231C6_nt ::S1231C6_nt(){ note_ctor("S1231C6_nt", this);} // tgen

//skip512 S1231C6_nt

#else // __cplusplus

extern void _ZN10S1231C6_ntC1Ev();
extern void _ZN10S1231C6_ntD1Ev();
Name_Map name_map_S1231C6_nt[] = {
  NSPAIR(_ZN10S1231C6_ntC1Ev),
  NSPAIR(_ZN10S1231C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C29_nt;
extern VTBL_ENTRY _ZTI12S11969C29_nt[];
extern Class_Descriptor cd_S1231C3_nt;
extern VTBL_ENTRY _ZTI10S1231C3_nt[];
extern  VTBL_ENTRY _ZTV10S1231C3_nt[];
static Base_Class bases_S1231C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1231C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1231C6_nt[];
extern void _ZN10S1231C6_ntD1Ev();
extern void _ZN10S1231C6_ntD0Ev();
extern void _ZN10S1231C3_nt2v4Ev();
extern void _ZN10S1231C6_nt3v29Ev();
extern void _ZN10S1231C6_nt3v30Ev();
extern void _ZN10S1231C6_nt3v31Ev();
extern void _ZN10S1231C6_nt3v32Ev();
extern void _ZN10S1231C6_nt3v33Ev();
extern void _ZN10S1231C6_nt3v34Ev();
extern void _ZN10S1231C6_nt3v35Ev();
extern void _ZN10S1231C6_nt3v36Ev();
static  VTBL_ENTRY vtc_S1231C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1231C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S1231C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1231C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v36Ev,
};
extern VTBL_ENTRY _ZTI10S1231C6_nt[];
VTBL_ENTRY *P__ZTI10S1231C6_nt = _ZTI10S1231C6_nt; 
extern  VTBL_ENTRY _ZTV10S1231C6_nt[];
Class_Descriptor cd_S1231C6_nt = {  "S1231C6_nt", // class name
  bases_S1231C6_nt, 2,
  &(vtc_S1231C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1231C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1231C6_nt),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1231C8_nt  {
  short s1231c8f0;
  int s1231c8f1;
  void *s1231c8f2;
  int s1231c8f3;
};
//SIG(1 S1231C8_nt) C1{ Fs Fi Fp Fi}



//skip512 S1231C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S1231C7_nt  {
  short s1231c7f0[15];
  ::S1231C8_nt s1231c7f1;
};
//SIG(1 S1231C7_nt) U1{ Fs[15] FC2{ Fs Fi Fp Fi}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S1231C5_nt  : S1231C6_nt {
  char s1231c5f0[2];
  ::S1231C7_nt s1231c5f1;
  virtual  ~S1231C5_nt(); // _ZN10S1231C5_ntD1Ev
  virtual void  v20(); // _ZN10S1231C5_nt3v20Ev
  virtual void  v21(); // _ZN10S1231C5_nt3v21Ev
  virtual void  v22(); // _ZN10S1231C5_nt3v22Ev
  virtual void  v23(); // _ZN10S1231C5_nt3v23Ev
  virtual void  v24(); // _ZN10S1231C5_nt3v24Ev
  virtual void  v25(); // _ZN10S1231C5_nt3v25Ev
  virtual void  v26(); // _ZN10S1231C5_nt3v26Ev
  virtual void  v27(); // _ZN10S1231C5_nt3v27Ev
  virtual void  v28(); // _ZN10S1231C5_nt3v28Ev
  S1231C5_nt(); // tgen
};
//SIG(-1 S1231C5_nt) C1{ BC2{ BC3{ BC4{ m} vd v10} vd v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fc[2] FU5{ Fs[15] FC6{ Fs Fi Fp Fi}}}


 S1231C5_nt ::~S1231C5_nt(){ note_dtor("S1231C5_nt", this);}
void  S1231C5_nt ::v20(){vfunc_called(this, "_ZN10S1231C5_nt3v20Ev");}
void  S1231C5_nt ::v21(){vfunc_called(this, "_ZN10S1231C5_nt3v21Ev");}
void  S1231C5_nt ::v22(){vfunc_called(this, "_ZN10S1231C5_nt3v22Ev");}
void  S1231C5_nt ::v23(){vfunc_called(this, "_ZN10S1231C5_nt3v23Ev");}
void  S1231C5_nt ::v24(){vfunc_called(this, "_ZN10S1231C5_nt3v24Ev");}
void  S1231C5_nt ::v25(){vfunc_called(this, "_ZN10S1231C5_nt3v25Ev");}
void  S1231C5_nt ::v26(){vfunc_called(this, "_ZN10S1231C5_nt3v26Ev");}
void  S1231C5_nt ::v27(){vfunc_called(this, "_ZN10S1231C5_nt3v27Ev");}
void  S1231C5_nt ::v28(){vfunc_called(this, "_ZN10S1231C5_nt3v28Ev");}
S1231C5_nt ::S1231C5_nt(){ note_ctor("S1231C5_nt", this);} // tgen

//skip512 S1231C5_nt

#else // __cplusplus

extern void _ZN10S1231C5_ntC1Ev();
extern void _ZN10S1231C5_ntD1Ev();
Name_Map name_map_S1231C5_nt[] = {
  NSPAIR(_ZN10S1231C5_ntC1Ev),
  NSPAIR(_ZN10S1231C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C29_nt;
extern VTBL_ENTRY _ZTI12S11969C29_nt[];
extern Class_Descriptor cd_S1231C3_nt;
extern VTBL_ENTRY _ZTI10S1231C3_nt[];
extern  VTBL_ENTRY _ZTV10S1231C3_nt[];
extern Class_Descriptor cd_S1231C6_nt;
extern VTBL_ENTRY _ZTI10S1231C6_nt[];
extern  VTBL_ENTRY _ZTV10S1231C6_nt[];
static Base_Class bases_S1231C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1231C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1231C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S1231C5_nt[];
extern void _ZN10S1231C5_ntD1Ev();
extern void _ZN10S1231C5_ntD0Ev();
extern void _ZN10S1231C3_nt2v4Ev();
extern void _ZN10S1231C6_nt3v29Ev();
extern void _ZN10S1231C6_nt3v30Ev();
extern void _ZN10S1231C6_nt3v31Ev();
extern void _ZN10S1231C6_nt3v32Ev();
extern void _ZN10S1231C6_nt3v33Ev();
extern void _ZN10S1231C6_nt3v34Ev();
extern void _ZN10S1231C6_nt3v35Ev();
extern void _ZN10S1231C6_nt3v36Ev();
extern void _ZN10S1231C5_nt3v20Ev();
extern void _ZN10S1231C5_nt3v21Ev();
extern void _ZN10S1231C5_nt3v22Ev();
extern void _ZN10S1231C5_nt3v23Ev();
extern void _ZN10S1231C5_nt3v24Ev();
extern void _ZN10S1231C5_nt3v25Ev();
extern void _ZN10S1231C5_nt3v26Ev();
extern void _ZN10S1231C5_nt3v27Ev();
extern void _ZN10S1231C5_nt3v28Ev();
static  VTBL_ENTRY vtc_S1231C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1231C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S1231C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1231C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1231C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1231C6_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1231C5_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1231C5_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1231C5_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1231C5_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1231C5_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1231C5_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1231C5_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1231C5_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1231C5_nt3v28Ev,
};
extern VTBL_ENTRY _ZTI10S1231C5_nt[];
VTBL_ENTRY *P__ZTI10S1231C5_nt = _ZTI10S1231C5_nt; 
extern  VTBL_ENTRY _ZTV10S1231C5_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1231C2_nt  : S1231C3_nt {
  ::S1231C5_nt s1231c2f0;
  void *s1231c2f1;
  int s1231c2f2;
  virtual  ~S1231C2_nt(); // _ZN10S1231C2_ntD1Ev
  virtual void  v5(); // _ZN10S1231C2_nt2v5Ev
  virtual void  v6(); // _ZN10S1231C2_nt2v6Ev
  virtual void  v7(); // _ZN10S1231C2_nt2v7Ev
  virtual void  v8(); // _ZN10S1231C2_nt2v8Ev
  virtual void  v9(); // _ZN10S1231C2_nt2v9Ev
  virtual void  v10(); // _ZN10S1231C2_nt3v10Ev
  virtual void  v11(); // _ZN10S1231C2_nt3v11Ev
  virtual void  v12(); // _ZN10S1231C2_nt3v12Ev
  virtual void  v13(); // _ZN10S1231C2_nt3v13Ev
  virtual void  v14(); // _ZN10S1231C2_nt3v14Ev
  virtual void  v15(); // _ZN10S1231C2_nt3v15Ev
  virtual void  v16(); // _ZN10S1231C2_nt3v16Ev
  virtual void  v17(); // _ZN10S1231C2_nt3v17Ev
  virtual void  v18(); // _ZN10S1231C2_nt3v18Ev
  virtual void  v19(); // _ZN10S1231C2_nt3v19Ev
  S1231C2_nt(); // tgen
};
//SIG(-1 S1231C2_nt) C1{ BC2{ BC3{ m} vd v16} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 FC4{ BC5{ BC2 vd v26 v27 v28 v29 v30 v31 v32 v33} vd v17 v18 v19 v20 v21 v22 v23 v24 v25 Fc[2] FU6{ Fs[15] FC7{ Fs Fi Fp Fi}}} Fp Fi}


 S1231C2_nt ::~S1231C2_nt(){ note_dtor("S1231C2_nt", this);}
void  S1231C2_nt ::v5(){vfunc_called(this, "_ZN10S1231C2_nt2v5Ev");}
void  S1231C2_nt ::v6(){vfunc_called(this, "_ZN10S1231C2_nt2v6Ev");}
void  S1231C2_nt ::v7(){vfunc_called(this, "_ZN10S1231C2_nt2v7Ev");}
void  S1231C2_nt ::v8(){vfunc_called(this, "_ZN10S1231C2_nt2v8Ev");}
void  S1231C2_nt ::v9(){vfunc_called(this, "_ZN10S1231C2_nt2v9Ev");}
void  S1231C2_nt ::v10(){vfunc_called(this, "_ZN10S1231C2_nt3v10Ev");}
void  S1231C2_nt ::v11(){vfunc_called(this, "_ZN10S1231C2_nt3v11Ev");}
void  S1231C2_nt ::v12(){vfunc_called(this, "_ZN10S1231C2_nt3v12Ev");}
void  S1231C2_nt ::v13(){vfunc_called(this, "_ZN10S1231C2_nt3v13Ev");}
void  S1231C2_nt ::v14(){vfunc_called(this, "_ZN10S1231C2_nt3v14Ev");}
void  S1231C2_nt ::v15(){vfunc_called(this, "_ZN10S1231C2_nt3v15Ev");}
void  S1231C2_nt ::v16(){vfunc_called(this, "_ZN10S1231C2_nt3v16Ev");}
void  S1231C2_nt ::v17(){vfunc_called(this, "_ZN10S1231C2_nt3v17Ev");}
void  S1231C2_nt ::v18(){vfunc_called(this, "_ZN10S1231C2_nt3v18Ev");}
void  S1231C2_nt ::v19(){vfunc_called(this, "_ZN10S1231C2_nt3v19Ev");}
S1231C2_nt ::S1231C2_nt(){ note_ctor("S1231C2_nt", this);} // tgen

//skip512 S1231C2_nt

#else // __cplusplus

extern void _ZN10S1231C2_ntC1Ev();
extern void _ZN10S1231C2_ntD1Ev();
Name_Map name_map_S1231C2_nt[] = {
  NSPAIR(_ZN10S1231C2_ntC1Ev),
  NSPAIR(_ZN10S1231C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C29_nt;
extern VTBL_ENTRY _ZTI12S11969C29_nt[];
extern Class_Descriptor cd_S1231C3_nt;
extern VTBL_ENTRY _ZTI10S1231C3_nt[];
extern  VTBL_ENTRY _ZTV10S1231C3_nt[];
static Base_Class bases_S1231C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1231C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1231C2_nt[];
extern void _ZN10S1231C2_ntD1Ev();
extern void _ZN10S1231C2_ntD0Ev();
extern void _ZN10S1231C3_nt2v4Ev();
extern void _ZN10S1231C2_nt2v5Ev();
extern void _ZN10S1231C2_nt2v6Ev();
extern void _ZN10S1231C2_nt2v7Ev();
extern void _ZN10S1231C2_nt2v8Ev();
extern void _ZN10S1231C2_nt2v9Ev();
extern void _ZN10S1231C2_nt3v10Ev();
extern void _ZN10S1231C2_nt3v11Ev();
extern void _ZN10S1231C2_nt3v12Ev();
extern void _ZN10S1231C2_nt3v13Ev();
extern void _ZN10S1231C2_nt3v14Ev();
extern void _ZN10S1231C2_nt3v15Ev();
extern void _ZN10S1231C2_nt3v16Ev();
extern void _ZN10S1231C2_nt3v17Ev();
extern void _ZN10S1231C2_nt3v18Ev();
extern void _ZN10S1231C2_nt3v19Ev();
static  VTBL_ENTRY vtc_S1231C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1231C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1231C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1231C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI10S1231C2_nt[];
VTBL_ENTRY *P__ZTI10S1231C2_nt = _ZTI10S1231C2_nt; 
extern  VTBL_ENTRY _ZTV10S1231C2_nt[];
Class_Descriptor cd_S1231C2_nt = {  "S1231C2_nt", // class name
  bases_S1231C2_nt, 2,
  &(vtc_S1231C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI10S1231C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1231C2_nt),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1231C1  : S1231C2_nt {
  void *s1231c1f0;
  ::S1231C5_nt s1231c1f1;
  int s1231c1f2;
  virtual  ~S1231C1(); // _ZN7S1231C1D1Ev
  virtual void  v1(); // _ZN7S1231C12v1Ev
  virtual void  v2(); // _ZN7S1231C12v2Ev
  virtual void  v3(); // _ZN7S1231C12v3Ev
  S1231C1(); // tgen
};
//SIG(1 S1231C1) C1{ BC2{ BC3{ BC4{ m} vd v4} vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 FC5{ BC6{ BC3 vd v29 v30 v31 v32 v33 v34 v35 v36} vd v20 v21 v22 v23 v24 v25 v26 v27 v28 Fc[2] FU7{ Fs[15] FC8{ Fs Fi Fp Fi}}} Fp Fi} vd v1 v2 v3 Fp FC5 Fi}


 S1231C1 ::~S1231C1(){ note_dtor("S1231C1", this);}
void  S1231C1 ::v1(){vfunc_called(this, "_ZN7S1231C12v1Ev");}
void  S1231C1 ::v2(){vfunc_called(this, "_ZN7S1231C12v2Ev");}
void  S1231C1 ::v3(){vfunc_called(this, "_ZN7S1231C12v3Ev");}
S1231C1 ::S1231C1(){ note_ctor("S1231C1", this);} // tgen

static void Test_S1231C1()
{
  extern Class_Descriptor cd_S1231C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,26)];
    init_test(&cd_S1231C1, buf);
    S1231C1 *dp, &lv = *(dp=new (buf) S1231C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,100), "sizeof(S1231C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1231C1)");
    check_base_class_offset(lv, (S11969C29_nt*)(S1231C3_nt*)(S1231C2_nt*), 0, "S1231C1");
    check_base_class_offset(lv, (S1231C3_nt*)(S1231C2_nt*), 0, "S1231C1");
    check_base_class_offset(lv, (S1231C2_nt*), 0, "S1231C1");
    check_field_offset(lv, s1231c1f0, ABISELECT(72,52), "S1231C1.s1231c1f0");
    check_field_offset(lv, s1231c1f1, ABISELECT(80,56), "S1231C1.s1231c1f1");
    check_field_offset(lv, s1231c1f2, ABISELECT(128,96), "S1231C1.s1231c1f2");
    test_class_info(&lv, &cd_S1231C1);
    dp->~S1231C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1231C1(Test_S1231C1, "S1231C1", ABISELECT(136,100));

#else // __cplusplus

extern void _ZN7S1231C1C1Ev();
extern void _ZN7S1231C1D1Ev();
Name_Map name_map_S1231C1[] = {
  NSPAIR(_ZN7S1231C1C1Ev),
  NSPAIR(_ZN7S1231C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C29_nt;
extern VTBL_ENTRY _ZTI12S11969C29_nt[];
extern Class_Descriptor cd_S1231C3_nt;
extern VTBL_ENTRY _ZTI10S1231C3_nt[];
extern  VTBL_ENTRY _ZTV10S1231C3_nt[];
extern Class_Descriptor cd_S1231C2_nt;
extern VTBL_ENTRY _ZTI10S1231C2_nt[];
extern  VTBL_ENTRY _ZTV10S1231C2_nt[];
static Base_Class bases_S1231C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1231C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1231C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1231C1[];
extern void _ZN7S1231C1D1Ev();
extern void _ZN7S1231C1D0Ev();
extern void _ZN10S1231C3_nt2v4Ev();
extern void _ZN10S1231C2_nt2v5Ev();
extern void _ZN10S1231C2_nt2v6Ev();
extern void _ZN10S1231C2_nt2v7Ev();
extern void _ZN10S1231C2_nt2v8Ev();
extern void _ZN10S1231C2_nt2v9Ev();
extern void _ZN10S1231C2_nt3v10Ev();
extern void _ZN10S1231C2_nt3v11Ev();
extern void _ZN10S1231C2_nt3v12Ev();
extern void _ZN10S1231C2_nt3v13Ev();
extern void _ZN10S1231C2_nt3v14Ev();
extern void _ZN10S1231C2_nt3v15Ev();
extern void _ZN10S1231C2_nt3v16Ev();
extern void _ZN10S1231C2_nt3v17Ev();
extern void _ZN10S1231C2_nt3v18Ev();
extern void _ZN10S1231C2_nt3v19Ev();
extern void _ZN7S1231C12v1Ev();
extern void _ZN7S1231C12v2Ev();
extern void _ZN7S1231C12v3Ev();
static  VTBL_ENTRY vtc_S1231C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1231C1[0]),
  (VTBL_ENTRY)&_ZN7S1231C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1231C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1231C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1231C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN7S1231C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1231C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1231C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1231C1[];
extern  VTBL_ENTRY _ZTV7S1231C1[];
Class_Descriptor cd_S1231C1 = {  "S1231C1", // class name
  bases_S1231C1, 3,
  &(vtc_S1231C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,100), // object size
  NSPAIRA(_ZTI7S1231C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1231C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S438C4  : S11969C29_nt {
  virtual  ~S438C4(); // _ZN6S438C4D1Ev
  virtual void  v19(); // _ZN6S438C43v19Ev
  S438C4(); // tgen
};
//SIG(-1 S438C4) C1{ BC2{ m} vd v1}


 S438C4 ::~S438C4(){ note_dtor("S438C4", this);}
void  S438C4 ::v19(){vfunc_called(this, "_ZN6S438C43v19Ev");}
S438C4 ::S438C4(){ note_ctor("S438C4", this);} // tgen

static void Test_S438C4()
{
  extern Class_Descriptor cd_S438C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S438C4, buf);
    S438C4 *dp, &lv = *(dp=new (buf) S438C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S438C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S438C4)");
    check_base_class_offset(lv, (S11969C29_nt*), 0, "S438C4");
    test_class_info(&lv, &cd_S438C4);
    dp->~S438C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS438C4(Test_S438C4, "S438C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN6S438C4C1Ev();
extern void _ZN6S438C4D1Ev();
Name_Map name_map_S438C4[] = {
  NSPAIR(_ZN6S438C4C1Ev),
  NSPAIR(_ZN6S438C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C29_nt;
extern VTBL_ENTRY _ZTI12S11969C29_nt[];
static Base_Class bases_S438C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S438C4[];
extern void _ZN6S438C4D1Ev();
extern void _ZN6S438C4D0Ev();
extern void _ZN6S438C43v19Ev();
static  VTBL_ENTRY vtc_S438C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S438C4[0]),
  (VTBL_ENTRY)&_ZN6S438C4D1Ev,
  (VTBL_ENTRY)&_ZN6S438C4D0Ev,
  (VTBL_ENTRY)&_ZN6S438C43v19Ev,
};
extern VTBL_ENTRY _ZTI6S438C4[];
extern  VTBL_ENTRY _ZTV6S438C4[];
Class_Descriptor cd_S438C4 = {  "S438C4", // class name
  bases_S438C4, 1,
  &(vtc_S438C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI6S438C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S438C4),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  S438C3_nt  : S438C4 {
  char s438c3f0[112];
  virtual  ~S438C3_nt(); // _ZN9S438C3_ntD1Ev
  virtual void  v20(); // _ZN9S438C3_nt3v20Ev
  virtual void  v21(); // _ZN9S438C3_nt3v21Ev
  virtual void  v22(); // _ZN9S438C3_nt3v22Ev
  virtual void  v23(); // _ZN9S438C3_nt3v23Ev
  virtual void  v24(); // _ZN9S438C3_nt3v24Ev
  S438C3_nt(); // tgen
};
//SIG(-1 S438C3_nt) C1{ BC2{ BC3{ m} vd v6} vd v1 v2 v3 v4 v5 Fc[112]}


 S438C3_nt ::~S438C3_nt(){ note_dtor("S438C3_nt", this);}
void  S438C3_nt ::v20(){vfunc_called(this, "_ZN9S438C3_nt3v20Ev");}
void  S438C3_nt ::v21(){vfunc_called(this, "_ZN9S438C3_nt3v21Ev");}
void  S438C3_nt ::v22(){vfunc_called(this, "_ZN9S438C3_nt3v22Ev");}
void  S438C3_nt ::v23(){vfunc_called(this, "_ZN9S438C3_nt3v23Ev");}
void  S438C3_nt ::v24(){vfunc_called(this, "_ZN9S438C3_nt3v24Ev");}
S438C3_nt ::S438C3_nt(){ note_ctor("S438C3_nt", this);} // tgen

//skip512 S438C3_nt

#else // __cplusplus

extern void _ZN9S438C3_ntC1Ev();
extern void _ZN9S438C3_ntD1Ev();
Name_Map name_map_S438C3_nt[] = {
  NSPAIR(_ZN9S438C3_ntC1Ev),
  NSPAIR(_ZN9S438C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C29_nt;
extern VTBL_ENTRY _ZTI12S11969C29_nt[];
extern Class_Descriptor cd_S438C4;
extern VTBL_ENTRY _ZTI6S438C4[];
extern  VTBL_ENTRY _ZTV6S438C4[];
static Base_Class bases_S438C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S438C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S438C3_nt[];
extern void _ZN9S438C3_ntD1Ev();
extern void _ZN9S438C3_ntD0Ev();
extern void _ZN6S438C43v19Ev();
extern void _ZN9S438C3_nt3v20Ev();
extern void _ZN9S438C3_nt3v21Ev();
extern void _ZN9S438C3_nt3v22Ev();
extern void _ZN9S438C3_nt3v23Ev();
extern void _ZN9S438C3_nt3v24Ev();
static  VTBL_ENTRY vtc_S438C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S438C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S438C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S438C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S438C43v19Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI9S438C3_nt[];
VTBL_ENTRY *P__ZTI9S438C3_nt = _ZTI9S438C3_nt; 
extern  VTBL_ENTRY _ZTV9S438C3_nt[];
Class_Descriptor cd_S438C3_nt = {  "S438C3_nt", // class name
  bases_S438C3_nt, 2,
  &(vtc_S438C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,116), // object size
  NSPAIRA(_ZTI9S438C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S438C3_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S438C2_nt  : S438C3_nt {
  char s438c2f0;
  int s438c2f1[4];
  char s438c2f2;
  short s438c2f3[4];
  virtual  ~S438C2_nt(); // _ZN9S438C2_ntD1Ev
  virtual void  v25(); // _ZN9S438C2_nt3v25Ev
  virtual void  v26(); // _ZN9S438C2_nt3v26Ev
  virtual void  v27(); // _ZN9S438C2_nt3v27Ev
  virtual void  v28(); // _ZN9S438C2_nt3v28Ev
  virtual void  v29(); // _ZN9S438C2_nt3v29Ev
  virtual void  v30(); // _ZN9S438C2_nt3v30Ev
  virtual void  v31(); // _ZN9S438C2_nt3v31Ev
  virtual void  v32(); // _ZN9S438C2_nt3v32Ev
  virtual void  v33(); // _ZN9S438C2_nt3v33Ev
  virtual void  v34(); // _ZN9S438C2_nt3v34Ev
  virtual void  v35(); // _ZN9S438C2_nt3v35Ev
  virtual void  v36(); // _ZN9S438C2_nt3v36Ev
  virtual void  v37(); // _ZN9S438C2_nt3v37Ev
  virtual void  v38(); // _ZN9S438C2_nt3v38Ev
  virtual void  v39(); // _ZN9S438C2_nt3v39Ev
  virtual void  v40(); // _ZN9S438C2_nt3v40Ev
  virtual void  v41(); // _ZN9S438C2_nt3v41Ev
  virtual void  v42(); // _ZN9S438C2_nt3v42Ev
  S438C2_nt(); // tgen
};
//SIG(-1 S438C2_nt) C1{ BC2{ BC3{ BC4{ m} vd v19} vd v20 v21 v22 v23 v24 Fc[112]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fc Fi[4] Fc Fs[4]}


 S438C2_nt ::~S438C2_nt(){ note_dtor("S438C2_nt", this);}
void  S438C2_nt ::v25(){vfunc_called(this, "_ZN9S438C2_nt3v25Ev");}
void  S438C2_nt ::v26(){vfunc_called(this, "_ZN9S438C2_nt3v26Ev");}
void  S438C2_nt ::v27(){vfunc_called(this, "_ZN9S438C2_nt3v27Ev");}
void  S438C2_nt ::v28(){vfunc_called(this, "_ZN9S438C2_nt3v28Ev");}
void  S438C2_nt ::v29(){vfunc_called(this, "_ZN9S438C2_nt3v29Ev");}
void  S438C2_nt ::v30(){vfunc_called(this, "_ZN9S438C2_nt3v30Ev");}
void  S438C2_nt ::v31(){vfunc_called(this, "_ZN9S438C2_nt3v31Ev");}
void  S438C2_nt ::v32(){vfunc_called(this, "_ZN9S438C2_nt3v32Ev");}
void  S438C2_nt ::v33(){vfunc_called(this, "_ZN9S438C2_nt3v33Ev");}
void  S438C2_nt ::v34(){vfunc_called(this, "_ZN9S438C2_nt3v34Ev");}
void  S438C2_nt ::v35(){vfunc_called(this, "_ZN9S438C2_nt3v35Ev");}
void  S438C2_nt ::v36(){vfunc_called(this, "_ZN9S438C2_nt3v36Ev");}
void  S438C2_nt ::v37(){vfunc_called(this, "_ZN9S438C2_nt3v37Ev");}
void  S438C2_nt ::v38(){vfunc_called(this, "_ZN9S438C2_nt3v38Ev");}
void  S438C2_nt ::v39(){vfunc_called(this, "_ZN9S438C2_nt3v39Ev");}
void  S438C2_nt ::v40(){vfunc_called(this, "_ZN9S438C2_nt3v40Ev");}
void  S438C2_nt ::v41(){vfunc_called(this, "_ZN9S438C2_nt3v41Ev");}
void  S438C2_nt ::v42(){vfunc_called(this, "_ZN9S438C2_nt3v42Ev");}
S438C2_nt ::S438C2_nt(){ note_ctor("S438C2_nt", this);} // tgen

//skip512 S438C2_nt

#else // __cplusplus

extern void _ZN9S438C2_ntC1Ev();
extern void _ZN9S438C2_ntD1Ev();
Name_Map name_map_S438C2_nt[] = {
  NSPAIR(_ZN9S438C2_ntC1Ev),
  NSPAIR(_ZN9S438C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C29_nt;
extern VTBL_ENTRY _ZTI12S11969C29_nt[];
extern Class_Descriptor cd_S438C4;
extern VTBL_ENTRY _ZTI6S438C4[];
extern  VTBL_ENTRY _ZTV6S438C4[];
extern Class_Descriptor cd_S438C3_nt;
extern VTBL_ENTRY _ZTI9S438C3_nt[];
extern  VTBL_ENTRY _ZTV9S438C3_nt[];
static Base_Class bases_S438C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S438C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S438C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S438C2_nt[];
extern void _ZN9S438C2_ntD1Ev();
extern void _ZN9S438C2_ntD0Ev();
extern void _ZN6S438C43v19Ev();
extern void _ZN9S438C3_nt3v20Ev();
extern void _ZN9S438C3_nt3v21Ev();
extern void _ZN9S438C3_nt3v22Ev();
extern void _ZN9S438C3_nt3v23Ev();
extern void _ZN9S438C3_nt3v24Ev();
extern void _ZN9S438C2_nt3v25Ev();
extern void _ZN9S438C2_nt3v26Ev();
extern void _ZN9S438C2_nt3v27Ev();
extern void _ZN9S438C2_nt3v28Ev();
extern void _ZN9S438C2_nt3v29Ev();
extern void _ZN9S438C2_nt3v30Ev();
extern void _ZN9S438C2_nt3v31Ev();
extern void _ZN9S438C2_nt3v32Ev();
extern void _ZN9S438C2_nt3v33Ev();
extern void _ZN9S438C2_nt3v34Ev();
extern void _ZN9S438C2_nt3v35Ev();
extern void _ZN9S438C2_nt3v36Ev();
extern void _ZN9S438C2_nt3v37Ev();
extern void _ZN9S438C2_nt3v38Ev();
extern void _ZN9S438C2_nt3v39Ev();
extern void _ZN9S438C2_nt3v40Ev();
extern void _ZN9S438C2_nt3v41Ev();
extern void _ZN9S438C2_nt3v42Ev();
static  VTBL_ENTRY vtc_S438C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S438C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S438C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S438C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S438C43v19Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v42Ev,
};
extern VTBL_ENTRY _ZTI9S438C2_nt[];
VTBL_ENTRY *P__ZTI9S438C2_nt = _ZTI9S438C2_nt; 
extern  VTBL_ENTRY _ZTV9S438C2_nt[];
Class_Descriptor cd_S438C2_nt = {  "S438C2_nt", // class name
  bases_S438C2_nt, 3,
  &(vtc_S438C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,148), // object size
  NSPAIRA(_ZTI9S438C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S438C2_nt),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S438C1  : S438C2_nt {
  void *s438c1f0[3];
  int s438c1f1;
  virtual  ~S438C1(); // _ZN6S438C1D1Ev
  virtual void  v1(); // _ZN6S438C12v1Ev
  virtual void  v2(); // _ZN6S438C12v2Ev
  virtual void  v3(); // _ZN6S438C12v3Ev
  virtual void  v4(); // _ZN6S438C12v4Ev
  virtual void  v5(); // _ZN6S438C12v5Ev
  virtual void  v6(); // _ZN6S438C12v6Ev
  virtual void  v7(); // _ZN6S438C12v7Ev
  virtual void  v8(); // _ZN6S438C12v8Ev
  virtual void  v9(); // _ZN6S438C12v9Ev
  virtual void  v10(); // _ZN6S438C13v10Ev
  virtual void  v11(); // _ZN6S438C13v11Ev
  virtual void  v12(); // _ZN6S438C13v12Ev
  virtual void  v13(); // _ZN6S438C13v13Ev
  virtual void  v14(); // _ZN6S438C13v14Ev
  virtual void  v15(); // _ZN6S438C13v15Ev
  virtual void  v16(); // _ZN6S438C13v16Ev
  virtual void  v17(); // _ZN6S438C13v17Ev
  virtual void  v18(); // _ZN6S438C13v18Ev
  S438C1(); // tgen
};
//SIG(1 S438C1) C1{ BC2{ BC3{ BC4{ BC5{ m} vd v19} vd v20 v21 v22 v23 v24 Fc[112]} vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 Fc Fi[4] Fc Fs[4]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp[3] Fi}


 S438C1 ::~S438C1(){ note_dtor("S438C1", this);}
void  S438C1 ::v1(){vfunc_called(this, "_ZN6S438C12v1Ev");}
void  S438C1 ::v2(){vfunc_called(this, "_ZN6S438C12v2Ev");}
void  S438C1 ::v3(){vfunc_called(this, "_ZN6S438C12v3Ev");}
void  S438C1 ::v4(){vfunc_called(this, "_ZN6S438C12v4Ev");}
void  S438C1 ::v5(){vfunc_called(this, "_ZN6S438C12v5Ev");}
void  S438C1 ::v6(){vfunc_called(this, "_ZN6S438C12v6Ev");}
void  S438C1 ::v7(){vfunc_called(this, "_ZN6S438C12v7Ev");}
void  S438C1 ::v8(){vfunc_called(this, "_ZN6S438C12v8Ev");}
void  S438C1 ::v9(){vfunc_called(this, "_ZN6S438C12v9Ev");}
void  S438C1 ::v10(){vfunc_called(this, "_ZN6S438C13v10Ev");}
void  S438C1 ::v11(){vfunc_called(this, "_ZN6S438C13v11Ev");}
void  S438C1 ::v12(){vfunc_called(this, "_ZN6S438C13v12Ev");}
void  S438C1 ::v13(){vfunc_called(this, "_ZN6S438C13v13Ev");}
void  S438C1 ::v14(){vfunc_called(this, "_ZN6S438C13v14Ev");}
void  S438C1 ::v15(){vfunc_called(this, "_ZN6S438C13v15Ev");}
void  S438C1 ::v16(){vfunc_called(this, "_ZN6S438C13v16Ev");}
void  S438C1 ::v17(){vfunc_called(this, "_ZN6S438C13v17Ev");}
void  S438C1 ::v18(){vfunc_called(this, "_ZN6S438C13v18Ev");}
S438C1 ::S438C1(){ note_ctor("S438C1", this);} // tgen

static void Test_S438C1()
{
  extern Class_Descriptor cd_S438C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,42)];
    init_test(&cd_S438C1, buf);
    S438C1 *dp, &lv = *(dp=new (buf) S438C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,164), "sizeof(S438C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S438C1)");
    check_base_class_offset(lv, (S11969C29_nt*)(S438C4*)(S438C3_nt*)(S438C2_nt*), 0, "S438C1");
    check_base_class_offset(lv, (S438C4*)(S438C3_nt*)(S438C2_nt*), 0, "S438C1");
    check_base_class_offset(lv, (S438C3_nt*)(S438C2_nt*), 0, "S438C1");
    check_base_class_offset(lv, (S438C2_nt*), 0, "S438C1");
    check_field_offset(lv, s438c1f0, ABISELECT(152,148), "S438C1.s438c1f0");
    check_field_offset(lv, s438c1f1, ABISELECT(176,160), "S438C1.s438c1f1");
    test_class_info(&lv, &cd_S438C1);
    dp->~S438C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS438C1(Test_S438C1, "S438C1", ABISELECT(184,164));

#else // __cplusplus

extern void _ZN6S438C1C1Ev();
extern void _ZN6S438C1D1Ev();
Name_Map name_map_S438C1[] = {
  NSPAIR(_ZN6S438C1C1Ev),
  NSPAIR(_ZN6S438C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C29_nt;
extern VTBL_ENTRY _ZTI12S11969C29_nt[];
extern Class_Descriptor cd_S438C4;
extern VTBL_ENTRY _ZTI6S438C4[];
extern  VTBL_ENTRY _ZTV6S438C4[];
extern Class_Descriptor cd_S438C3_nt;
extern VTBL_ENTRY _ZTI9S438C3_nt[];
extern  VTBL_ENTRY _ZTV9S438C3_nt[];
extern Class_Descriptor cd_S438C2_nt;
extern VTBL_ENTRY _ZTI9S438C2_nt[];
extern  VTBL_ENTRY _ZTV9S438C2_nt[];
static Base_Class bases_S438C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S438C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S438C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S438C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S438C1[];
extern void _ZN6S438C1D1Ev();
extern void _ZN6S438C1D0Ev();
extern void _ZN6S438C43v19Ev();
extern void _ZN9S438C3_nt3v20Ev();
extern void _ZN9S438C3_nt3v21Ev();
extern void _ZN9S438C3_nt3v22Ev();
extern void _ZN9S438C3_nt3v23Ev();
extern void _ZN9S438C3_nt3v24Ev();
extern void _ZN9S438C2_nt3v25Ev();
extern void _ZN9S438C2_nt3v26Ev();
extern void _ZN9S438C2_nt3v27Ev();
extern void _ZN9S438C2_nt3v28Ev();
extern void _ZN9S438C2_nt3v29Ev();
extern void _ZN9S438C2_nt3v30Ev();
extern void _ZN9S438C2_nt3v31Ev();
extern void _ZN9S438C2_nt3v32Ev();
extern void _ZN9S438C2_nt3v33Ev();
extern void _ZN9S438C2_nt3v34Ev();
extern void _ZN9S438C2_nt3v35Ev();
extern void _ZN9S438C2_nt3v36Ev();
extern void _ZN9S438C2_nt3v37Ev();
extern void _ZN9S438C2_nt3v38Ev();
extern void _ZN9S438C2_nt3v39Ev();
extern void _ZN9S438C2_nt3v40Ev();
extern void _ZN9S438C2_nt3v41Ev();
extern void _ZN9S438C2_nt3v42Ev();
extern void _ZN6S438C12v1Ev();
extern void _ZN6S438C12v2Ev();
extern void _ZN6S438C12v3Ev();
extern void _ZN6S438C12v4Ev();
extern void _ZN6S438C12v5Ev();
extern void _ZN6S438C12v6Ev();
extern void _ZN6S438C12v7Ev();
extern void _ZN6S438C12v8Ev();
extern void _ZN6S438C12v9Ev();
extern void _ZN6S438C13v10Ev();
extern void _ZN6S438C13v11Ev();
extern void _ZN6S438C13v12Ev();
extern void _ZN6S438C13v13Ev();
extern void _ZN6S438C13v14Ev();
extern void _ZN6S438C13v15Ev();
extern void _ZN6S438C13v16Ev();
extern void _ZN6S438C13v17Ev();
extern void _ZN6S438C13v18Ev();
static  VTBL_ENTRY vtc_S438C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S438C1[0]),
  (VTBL_ENTRY)&_ZN6S438C1D1Ev,
  (VTBL_ENTRY)&_ZN6S438C1D0Ev,
  (VTBL_ENTRY)&_ZN6S438C43v19Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN9S438C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN9S438C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN6S438C12v1Ev,
  (VTBL_ENTRY)&_ZN6S438C12v2Ev,
  (VTBL_ENTRY)&_ZN6S438C12v3Ev,
  (VTBL_ENTRY)&_ZN6S438C12v4Ev,
  (VTBL_ENTRY)&_ZN6S438C12v5Ev,
  (VTBL_ENTRY)&_ZN6S438C12v6Ev,
  (VTBL_ENTRY)&_ZN6S438C12v7Ev,
  (VTBL_ENTRY)&_ZN6S438C12v8Ev,
  (VTBL_ENTRY)&_ZN6S438C12v9Ev,
  (VTBL_ENTRY)&_ZN6S438C13v10Ev,
  (VTBL_ENTRY)&_ZN6S438C13v11Ev,
  (VTBL_ENTRY)&_ZN6S438C13v12Ev,
  (VTBL_ENTRY)&_ZN6S438C13v13Ev,
  (VTBL_ENTRY)&_ZN6S438C13v14Ev,
  (VTBL_ENTRY)&_ZN6S438C13v15Ev,
  (VTBL_ENTRY)&_ZN6S438C13v16Ev,
  (VTBL_ENTRY)&_ZN6S438C13v17Ev,
  (VTBL_ENTRY)&_ZN6S438C13v18Ev,
};
extern VTBL_ENTRY _ZTI6S438C1[];
extern  VTBL_ENTRY _ZTV6S438C1[];
Class_Descriptor cd_S438C1 = {  "S438C1", // class name
  bases_S438C1, 4,
  &(vtc_S438C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,164), // object size
  NSPAIRA(_ZTI6S438C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S438C1),46, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7312C4  {
  void *s7312c4f0;
  short s7312c4f1;
  virtual void  v3(); // _ZN7S7312C42v3Ev
  virtual void  v4(); // _ZN7S7312C42v4Ev
  virtual void  v5(); // _ZN7S7312C42v5Ev
  virtual void  v6(); // _ZN7S7312C42v6Ev
  virtual void  v7(); // _ZN7S7312C42v7Ev
  virtual void  v8(); // _ZN7S7312C42v8Ev
  ~S7312C4(); // tgen
  S7312C4(); // tgen
};
//SIG(-1 S7312C4) C1{ v1 v2 v3 v4 v5 v6 Fp Fs}


void  S7312C4 ::v3(){vfunc_called(this, "_ZN7S7312C42v3Ev");}
void  S7312C4 ::v4(){vfunc_called(this, "_ZN7S7312C42v4Ev");}
void  S7312C4 ::v5(){vfunc_called(this, "_ZN7S7312C42v5Ev");}
void  S7312C4 ::v6(){vfunc_called(this, "_ZN7S7312C42v6Ev");}
void  S7312C4 ::v7(){vfunc_called(this, "_ZN7S7312C42v7Ev");}
void  S7312C4 ::v8(){vfunc_called(this, "_ZN7S7312C42v8Ev");}
S7312C4 ::~S7312C4(){ note_dtor("S7312C4", this);} // tgen
S7312C4 ::S7312C4(){ note_ctor("S7312C4", this);} // tgen

static void Test_S7312C4()
{
  extern Class_Descriptor cd_S7312C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7312C4, buf);
    S7312C4 *dp, &lv = *(dp=new (buf) S7312C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7312C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7312C4)");
    check_field_offset(lv, s7312c4f0, ABISELECT(8,4), "S7312C4.s7312c4f0");
    check_field_offset(lv, s7312c4f1, ABISELECT(16,8), "S7312C4.s7312c4f1");
    test_class_info(&lv, &cd_S7312C4);
    dp->~S7312C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7312C4(Test_S7312C4, "S7312C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7312C4C1Ev();
extern void _ZN7S7312C4D1Ev();
Name_Map name_map_S7312C4[] = {
  NSPAIR(_ZN7S7312C4C1Ev),
  NSPAIR(_ZN7S7312C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7312C4[];
extern void _ZN7S7312C42v3Ev();
extern void _ZN7S7312C42v4Ev();
extern void _ZN7S7312C42v5Ev();
extern void _ZN7S7312C42v6Ev();
extern void _ZN7S7312C42v7Ev();
extern void _ZN7S7312C42v8Ev();
static  VTBL_ENTRY vtc_S7312C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C4[0]),
  (VTBL_ENTRY)&_ZN7S7312C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v8Ev,
};
extern VTBL_ENTRY _ZTI7S7312C4[];
extern  VTBL_ENTRY _ZTV7S7312C4[];
Class_Descriptor cd_S7312C4 = {  "S7312C4", // class name
  0,0,//no base classes
  &(vtc_S7312C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7312C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7312C4),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  S7312C10  {
  virtual void  v16(); // _ZN8S7312C103v16Ev
  ~S7312C10(); // tgen
  S7312C10(); // tgen
};
//SIG(-1 S7312C10) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S7312C10C1Ev();
extern void _ZN8S7312C10D1Ev();
Name_Map name_map_S7312C10[] = {
  NSPAIR(_ZN8S7312C10C1Ev),
  NSPAIR(_ZN8S7312C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7312C10[];
extern void _ZN8S7312C103v16Ev();
static  VTBL_ENTRY vtc_S7312C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7312C10[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
};
extern VTBL_ENTRY _ZTI8S7312C10[];
extern  VTBL_ENTRY _ZTV8S7312C10[];
Class_Descriptor cd_S7312C10 = {  "S7312C10", // class name
  0,0,//no base classes
  &(vtc_S7312C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7312C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7312C10),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  S7312C11  {
  void *s7312c11f0;
  ::S7312C10 s7312c11f1;
  virtual void  v17(); // _ZN8S7312C113v17Ev
  virtual void  v18(); // _ZN8S7312C113v18Ev
  virtual void  v19(); // _ZN8S7312C113v19Ev
  virtual void  v20(); // _ZN8S7312C113v20Ev
  virtual void  v21(); // _ZN8S7312C113v21Ev
  ~S7312C11(); // tgen
  S7312C11(); // tgen
};
//SIG(-1 S7312C11) C1{ v1 v2 v3 v4 v5 Fp FC2{ v6}}


void  S7312C11 ::v17(){vfunc_called(this, "_ZN8S7312C113v17Ev");}
void  S7312C11 ::v18(){vfunc_called(this, "_ZN8S7312C113v18Ev");}
void  S7312C11 ::v19(){vfunc_called(this, "_ZN8S7312C113v19Ev");}
void  S7312C11 ::v20(){vfunc_called(this, "_ZN8S7312C113v20Ev");}
void  S7312C11 ::v21(){vfunc_called(this, "_ZN8S7312C113v21Ev");}
S7312C11 ::~S7312C11(){ note_dtor("S7312C11", this);} // tgen
S7312C11 ::S7312C11(){ note_ctor("S7312C11", this);} // tgen

static void Test_S7312C11()
{
  extern Class_Descriptor cd_S7312C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7312C11, buf);
    S7312C11 *dp, &lv = *(dp=new (buf) S7312C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7312C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7312C11)");
    check_field_offset(lv, s7312c11f0, ABISELECT(8,4), "S7312C11.s7312c11f0");
    check_field_offset(lv, s7312c11f1, ABISELECT(16,8), "S7312C11.s7312c11f1");
    test_class_info(&lv, &cd_S7312C11);
    dp->~S7312C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7312C11(Test_S7312C11, "S7312C11", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S7312C11C1Ev();
extern void _ZN8S7312C11D1Ev();
Name_Map name_map_S7312C11[] = {
  NSPAIR(_ZN8S7312C11C1Ev),
  NSPAIR(_ZN8S7312C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7312C11[];
extern void _ZN8S7312C113v17Ev();
extern void _ZN8S7312C113v18Ev();
extern void _ZN8S7312C113v19Ev();
extern void _ZN8S7312C113v20Ev();
extern void _ZN8S7312C113v21Ev();
static  VTBL_ENTRY vtc_S7312C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7312C11[0]),
  (VTBL_ENTRY)&_ZN8S7312C113v17Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v18Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v19Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v20Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v21Ev,
};
extern VTBL_ENTRY _ZTI8S7312C11[];
extern  VTBL_ENTRY _ZTV8S7312C11[];
Class_Descriptor cd_S7312C11 = {  "S7312C11", // class name
  0,0,//no base classes
  &(vtc_S7312C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S7312C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7312C11),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  S7312C9  : virtual S7312C10 , virtual S7312C11 {
  void *s7312c9f0[6];
  virtual  ~S7312C9(); // _ZN7S7312C9D2Ev
  virtual void  v22(); // _ZN7S7312C93v22Ev
  virtual void  v23(); // _ZN7S7312C93v23Ev
  virtual void  v24(); // _ZN7S7312C93v24Ev
  S7312C9(); // tgen
};
//SIG(-1 S7312C9) C1{ VBC2{ v4} VBC3{ v5 v6 v7 v8 v9 Fp FC2} vd v1 v2 v3 Fp[6]}


 S7312C9 ::~S7312C9(){ note_dtor("S7312C9", this);}
void  S7312C9 ::v22(){vfunc_called(this, "_ZN7S7312C93v22Ev");}
void  S7312C9 ::v23(){vfunc_called(this, "_ZN7S7312C93v23Ev");}
void  S7312C9 ::v24(){vfunc_called(this, "_ZN7S7312C93v24Ev");}
S7312C9 ::S7312C9(){ note_ctor("S7312C9", this);} // tgen

static void Test_S7312C9()
{
  extern Class_Descriptor cd_S7312C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S7312C9, buf);
    S7312C9 *dp, &lv = *(dp=new (buf) S7312C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S7312C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7312C9)");
    check_base_class_offset(lv, (S7312C10*), 0, "S7312C9");
    check_base_class_offset(lv, (S7312C11*), ABISELECT(56,28), "S7312C9");
    check_field_offset(lv, s7312c9f0, ABISELECT(8,4), "S7312C9.s7312c9f0");
    test_class_info(&lv, &cd_S7312C9);
    dp->~S7312C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7312C9(Test_S7312C9, "S7312C9", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S7312C9C1Ev();
extern void _ZN7S7312C9D2Ev();
Name_Map name_map_S7312C9[] = {
  NSPAIR(_ZN7S7312C9C1Ev),
  NSPAIR(_ZN7S7312C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7312C10;
extern VTBL_ENTRY _ZTI8S7312C10[];
extern  VTBL_ENTRY _ZTV8S7312C10[];
extern Class_Descriptor cd_S7312C11;
extern VTBL_ENTRY _ZTI8S7312C11[];
extern  VTBL_ENTRY _ZTV8S7312C11[];
static Base_Class bases_S7312C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7312C10,    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_S7312C11,    ABISELECT(56,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7312C9[];
extern void _ZN8S7312C103v16Ev();
extern void _ZN7S7312C9D1Ev();
extern void _ZN7S7312C9D0Ev();
extern void _ZN7S7312C93v22Ev();
extern void _ZN7S7312C93v23Ev();
extern void _ZN7S7312C93v24Ev();
extern void _ZN8S7312C113v17Ev();
extern void _ZN8S7312C113v18Ev();
extern void _ZN8S7312C113v19Ev();
extern void _ZN8S7312C113v20Ev();
extern void _ZN8S7312C113v21Ev();
static  VTBL_ENTRY vtc_S7312C9[] = {
  ABISELECT(56,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C9[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&_ZN7S7312C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v24Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7312C9[0]),
  (VTBL_ENTRY)&_ZN8S7312C113v17Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v18Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v19Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v20Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v21Ev,
};
extern VTBL_ENTRY _ZTV7S7312C9[];
static  VTT_ENTRY vtt_S7312C9[] = {
  {&(_ZTV7S7312C9[5]),  5,23},
  {&(_ZTV7S7312C9[5]),  5,23},
  {&(_ZTV7S7312C9[18]),  18,23},
};
extern VTBL_ENTRY _ZTI7S7312C9[];
extern  VTBL_ENTRY _ZTV7S7312C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C9[];
Class_Descriptor cd_S7312C9 = {  "S7312C9", // class name
  bases_S7312C9, 2,
  &(vtc_S7312C9[0]), // expected_vtbl_contents
  &(vtt_S7312C9[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S7312C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7312C9),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7312C9),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  S7312C8  : virtual S7312C9 {
  __tsi64 s7312c8f0;
  virtual void  v25(); // _ZN7S7312C83v25Ev
  virtual void  v26(); // _ZN7S7312C83v26Ev
  virtual void  v27(); // _ZN7S7312C83v27Ev
  ~S7312C8(); // tgen
  S7312C8(); // tgen
};
//SIG(-1 S7312C8) C1{ VBC2{ VBC3{ v4} VBC4{ v5 v6 v7 v8 v9 Fp FC3} vd v10 v11 v12 Fp[6]} v1 v2 v3 FL}


void  S7312C8 ::v25(){vfunc_called(this, "_ZN7S7312C83v25Ev");}
void  S7312C8 ::v26(){vfunc_called(this, "_ZN7S7312C83v26Ev");}
void  S7312C8 ::v27(){vfunc_called(this, "_ZN7S7312C83v27Ev");}
S7312C8 ::~S7312C8(){ note_dtor("S7312C8", this);} // tgen
S7312C8 ::S7312C8(){ note_ctor("S7312C8", this);} // tgen

static void Test_S7312C8()
{
  extern Class_Descriptor cd_S7312C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S7312C8, buf);
    S7312C8 *dp, &lv = *(dp=new (buf) S7312C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S7312C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7312C8)");
    check_base_class_offset(lv, (S7312C10*)(S7312C9*), 0, "S7312C8");
    check_base_class_offset(lv, (S7312C11*)(S7312C9*), ABISELECT(72,40), "S7312C8");
    check_base_class_offset(lv, (S7312C9*), ABISELECT(16,12), "S7312C8");
    check_field_offset(lv, s7312c8f0, ABISELECT(8,4), "S7312C8.s7312c8f0");
    test_class_info(&lv, &cd_S7312C8);
    dp->~S7312C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7312C8(Test_S7312C8, "S7312C8", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S7312C8C1Ev();
extern void _ZN7S7312C8D1Ev();
Name_Map name_map_S7312C8[] = {
  NSPAIR(_ZN7S7312C8C1Ev),
  NSPAIR(_ZN7S7312C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7312C10;
extern VTBL_ENTRY _ZTI8S7312C10[];
extern  VTBL_ENTRY _ZTV8S7312C10[];
extern Class_Descriptor cd_S7312C11;
extern VTBL_ENTRY _ZTI8S7312C11[];
extern  VTBL_ENTRY _ZTV8S7312C11[];
extern Class_Descriptor cd_S7312C9;
extern VTBL_ENTRY _ZTI7S7312C9[];
extern  VTBL_ENTRY _ZTV7S7312C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C9[];
static Base_Class bases_S7312C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7312C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7312C11,    ABISELECT(72,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7312C9,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7312C8[];
extern void _ZN8S7312C103v16Ev();
extern void _ZN7S7312C83v25Ev();
extern void _ZN7S7312C83v26Ev();
extern void _ZN7S7312C83v27Ev();
extern void _ZN7S7312C8D1Ev();
extern void _ZN7S7312C8D0Ev();
extern void _ZN8S7312C103v16Ev();
extern void ABISELECT(_ZTv0_n48_N7S7312C8D1Ev,_ZTv0_n24_N7S7312C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7312C8D1Ev,_ZThn12_N7S7312C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7312C8D0Ev,_ZTv0_n24_N7S7312C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7312C8D0Ev,_ZThn12_N7S7312C8D0Ev)() __attribute__((weak));
extern void _ZN7S7312C93v22Ev();
extern void _ZN7S7312C93v23Ev();
extern void _ZN7S7312C93v24Ev();
extern void _ZN8S7312C113v17Ev();
extern void _ZN8S7312C113v18Ev();
extern void _ZN8S7312C113v19Ev();
extern void _ZN8S7312C113v20Ev();
extern void _ZN8S7312C113v21Ev();
static  VTBL_ENTRY vtc_S7312C8[] = {
  ABISELECT(72,40),
  0,
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C8[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7312C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C8D0Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7312C8[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C8D1Ev,_ZTv0_n24_N7S7312C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C8D0Ev,_ZTv0_n24_N7S7312C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7312C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v24Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7312C8[0]),
  (VTBL_ENTRY)&_ZN8S7312C113v17Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v18Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v19Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v20Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v21Ev,
};
extern VTBL_ENTRY _ZTV7S7312C8[];
extern void _ZN8S7312C103v16Ev();
extern void _ZN7S7312C9D1Ev();
extern void _ZN7S7312C9D0Ev();
extern void _ZN7S7312C93v22Ev();
extern void _ZN7S7312C93v23Ev();
extern void _ZN7S7312C93v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C9__7S7312C8[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C9[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&_ZN7S7312C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v24Ev,
};
extern void _ZN8S7312C103v16Ev();
static  VTBL_ENTRY _tg__ZTV8S7312C10__7S7312C9__7S7312C8[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7312C9[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
};
extern void _ZN8S7312C113v17Ev();
extern void _ZN8S7312C113v18Ev();
extern void _ZN8S7312C113v19Ev();
extern void _ZN8S7312C113v20Ev();
extern void _ZN8S7312C113v21Ev();
static  VTBL_ENTRY _tg__ZTV8S7312C11__7S7312C9__7S7312C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7312C9[0]),
  (VTBL_ENTRY)&_ZN8S7312C113v17Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v18Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v19Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v20Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v21Ev,
};
static  VTT_ENTRY vtt_S7312C8[] = {
  {&(_ZTV7S7312C8[6]),  6,39},
  {&(_ZTV7S7312C8[21]),  21,39},
  {&(_ZTV7S7312C8[6]),  6,39},
  {&(_ZTV7S7312C8[34]),  34,39},
  {&(_tg__ZTV7S7312C9__7S7312C8[5]),  5,11},
  {&(_tg__ZTV8S7312C10__7S7312C9__7S7312C8[3]),  3,4},
  {&(_tg__ZTV8S7312C11__7S7312C9__7S7312C8[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7312C8[];
extern  VTBL_ENTRY _ZTV7S7312C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C8[];
static VTBL_ENTRY alt_thunk_names178[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C8D0Ev,_ZTv0_n24_N7S7312C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7312C8D0Ev,_ZThn12_N7S7312C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C8D1Ev,_ZTv0_n24_N7S7312C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7312C8D1Ev,_ZThn12_N7S7312C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7312C8 = {  "S7312C8", // class name
  bases_S7312C8, 3,
  &(vtc_S7312C8[0]), // expected_vtbl_contents
  &(vtt_S7312C8[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S7312C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7312C8),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7312C8),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names178,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7312C7  : S7312C8 {
  ::S7312C4 s7312c7f0[4];
  virtual  ~S7312C7(); // _ZN7S7312C7D2Ev
  virtual void  v28(); // _ZN7S7312C73v28Ev
  virtual void  v29(); // _ZN7S7312C73v29Ev
  virtual void  v30(); // _ZN7S7312C73v30Ev
  virtual void  v31(); // _ZN7S7312C73v31Ev
  virtual void  v32(); // _ZN7S7312C73v32Ev
  S7312C7(); // tgen
};
//SIG(-1 S7312C7) C1{ BC2{ VBC3{ VBC4{ v6} VBC5{ v7 v8 v9 v10 v11 Fp FC4} vd v12 v13 v14 Fp[6]} v15 v16 v17 FL} vd v1 v2 v3 v4 v5 FC6{ v18 v19 v20 v21 v22 v23 Fp Fs}[4]}


 S7312C7 ::~S7312C7(){ note_dtor("S7312C7", this);}
void  S7312C7 ::v28(){vfunc_called(this, "_ZN7S7312C73v28Ev");}
void  S7312C7 ::v29(){vfunc_called(this, "_ZN7S7312C73v29Ev");}
void  S7312C7 ::v30(){vfunc_called(this, "_ZN7S7312C73v30Ev");}
void  S7312C7 ::v31(){vfunc_called(this, "_ZN7S7312C73v31Ev");}
void  S7312C7 ::v32(){vfunc_called(this, "_ZN7S7312C73v32Ev");}
S7312C7 ::S7312C7(){ note_ctor("S7312C7", this);} // tgen

static void Test_S7312C7()
{
  extern Class_Descriptor cd_S7312C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,26)];
    init_test(&cd_S7312C7, buf);
    S7312C7 *dp, &lv = *(dp=new (buf) S7312C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S7312C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7312C7)");
    check_base_class_offset(lv, (S7312C10*)(S7312C9*), 0, "S7312C7");
    check_base_class_offset(lv, (S7312C11*)(S7312C9*), ABISELECT(168,88), "S7312C7");
    check_base_class_offset(lv, (S7312C9*)(S7312C8*), ABISELECT(112,60), "S7312C7");
    check_base_class_offset(lv, (S7312C8*), 0, "S7312C7");
    check_field_offset(lv, s7312c7f0, ABISELECT(16,12), "S7312C7.s7312c7f0");
    test_class_info(&lv, &cd_S7312C7);
    dp->~S7312C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7312C7(Test_S7312C7, "S7312C7", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN7S7312C7C1Ev();
extern void _ZN7S7312C7D2Ev();
Name_Map name_map_S7312C7[] = {
  NSPAIR(_ZN7S7312C7C1Ev),
  NSPAIR(_ZN7S7312C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7312C10;
extern VTBL_ENTRY _ZTI8S7312C10[];
extern  VTBL_ENTRY _ZTV8S7312C10[];
extern Class_Descriptor cd_S7312C11;
extern VTBL_ENTRY _ZTI8S7312C11[];
extern  VTBL_ENTRY _ZTV8S7312C11[];
extern Class_Descriptor cd_S7312C9;
extern VTBL_ENTRY _ZTI7S7312C9[];
extern  VTBL_ENTRY _ZTV7S7312C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C9[];
extern Class_Descriptor cd_S7312C8;
extern VTBL_ENTRY _ZTI7S7312C8[];
extern  VTBL_ENTRY _ZTV7S7312C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C8[];
static Base_Class bases_S7312C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7312C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7312C11,    ABISELECT(168,88), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7312C9,    ABISELECT(112,60), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7312C8,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7312C7[];
extern void _ZN8S7312C103v16Ev();
extern void _ZN7S7312C83v25Ev();
extern void _ZN7S7312C83v26Ev();
extern void _ZN7S7312C83v27Ev();
extern void _ZN7S7312C7D1Ev();
extern void _ZN7S7312C7D0Ev();
extern void _ZN7S7312C73v28Ev();
extern void _ZN7S7312C73v29Ev();
extern void _ZN7S7312C73v30Ev();
extern void _ZN7S7312C73v31Ev();
extern void _ZN7S7312C73v32Ev();
extern void _ZN8S7312C103v16Ev();
extern void ABISELECT(_ZTv0_n48_N7S7312C7D1Ev,_ZTv0_n24_N7S7312C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S7312C7D1Ev,_ZThn60_N7S7312C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7312C7D0Ev,_ZTv0_n24_N7S7312C7D0Ev)();
extern void ABISELECT(_ZThn112_N7S7312C7D0Ev,_ZThn60_N7S7312C7D0Ev)() __attribute__((weak));
extern void _ZN7S7312C93v22Ev();
extern void _ZN7S7312C93v23Ev();
extern void _ZN7S7312C93v24Ev();
extern void _ZN8S7312C113v17Ev();
extern void _ZN8S7312C113v18Ev();
extern void _ZN8S7312C113v19Ev();
extern void _ZN8S7312C113v20Ev();
extern void _ZN8S7312C113v21Ev();
static  VTBL_ENTRY vtc_S7312C7[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C7[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7312C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v28Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v29Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v32Ev,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7312C7[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C7D1Ev,_ZTv0_n24_N7S7312C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C7D0Ev,_ZTv0_n24_N7S7312C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7312C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v24Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7312C7[0]),
  (VTBL_ENTRY)&_ZN8S7312C113v17Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v18Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v19Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v20Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v21Ev,
};
extern VTBL_ENTRY _ZTV7S7312C7[];
extern void _ZN8S7312C103v16Ev();
extern void _ZN7S7312C83v25Ev();
extern void _ZN7S7312C83v26Ev();
extern void _ZN7S7312C83v27Ev();
extern void _ZN7S7312C8D1Ev();
extern void _ZN7S7312C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C8__7S7312C7[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C8[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7312C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C8D0Ev,
};
extern void _ZN8S7312C103v16Ev();
extern void ABISELECT(_ZTv0_n48_N7S7312C8D1Ev,_ZTv0_n24_N7S7312C8D1Ev)();
extern void ABISELECT(_ZThn112_N7S7312C8D1Ev,_ZThn60_N7S7312C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7312C8D0Ev,_ZTv0_n24_N7S7312C8D0Ev)();
extern void ABISELECT(_ZThn112_N7S7312C8D0Ev,_ZThn60_N7S7312C8D0Ev)() __attribute__((weak));
extern void _ZN7S7312C93v22Ev();
extern void _ZN7S7312C93v23Ev();
extern void _ZN7S7312C93v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C9__7S7312C8__7S7312C7[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7312C8[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C8D1Ev,_ZTv0_n24_N7S7312C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C8D0Ev,_ZTv0_n24_N7S7312C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7312C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v24Ev,
};
extern void _ZN8S7312C113v17Ev();
extern void _ZN8S7312C113v18Ev();
extern void _ZN8S7312C113v19Ev();
extern void _ZN8S7312C113v20Ev();
extern void _ZN8S7312C113v21Ev();
static  VTBL_ENTRY _tg__ZTV8S7312C11__7S7312C8__7S7312C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7312C8[0]),
  (VTBL_ENTRY)&_ZN8S7312C113v17Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v18Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v19Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v20Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v21Ev,
};
extern void _ZN8S7312C103v16Ev();
extern void _ZN7S7312C9D1Ev();
extern void _ZN7S7312C9D0Ev();
extern void _ZN7S7312C93v22Ev();
extern void _ZN7S7312C93v23Ev();
extern void _ZN7S7312C93v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C9__7S7312C7[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C9[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&_ZN7S7312C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v24Ev,
};
extern void _ZN8S7312C103v16Ev();
static  VTBL_ENTRY _tg__ZTV8S7312C10__7S7312C9__7S7312C7[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7312C9[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
};
extern void _ZN8S7312C113v17Ev();
extern void _ZN8S7312C113v18Ev();
extern void _ZN8S7312C113v19Ev();
extern void _ZN8S7312C113v20Ev();
extern void _ZN8S7312C113v21Ev();
static  VTBL_ENTRY _tg__ZTV8S7312C11__7S7312C9__7S7312C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7312C9[0]),
  (VTBL_ENTRY)&_ZN8S7312C113v17Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v18Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v19Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v20Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v21Ev,
};
static  VTT_ENTRY vtt_S7312C7[] = {
  {&(_ZTV7S7312C7[6]),  6,44},
  {&(_tg__ZTV7S7312C8__7S7312C7[6]),  6,12},
  {&(_tg__ZTV7S7312C9__7S7312C8__7S7312C7[9]),  9,15},
  {&(_tg__ZTV7S7312C8__7S7312C7[6]),  6,12},
  {&(_tg__ZTV8S7312C11__7S7312C8__7S7312C7[7]),  7,12},
  {&(_ZTV7S7312C7[26]),  26,44},
  {&(_ZTV7S7312C7[6]),  6,44},
  {&(_ZTV7S7312C7[39]),  39,44},
  {&(_tg__ZTV7S7312C9__7S7312C7[5]),  5,11},
  {&(_tg__ZTV8S7312C10__7S7312C9__7S7312C7[3]),  3,4},
  {&(_tg__ZTV8S7312C11__7S7312C9__7S7312C7[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7312C7[];
extern  VTBL_ENTRY _ZTV7S7312C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C7[];
static VTBL_ENTRY alt_thunk_names179[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C8D0Ev,_ZTv0_n24_N7S7312C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7312C8D0Ev,_ZThn60_N7S7312C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C8D1Ev,_ZTv0_n24_N7S7312C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7312C8D1Ev,_ZThn60_N7S7312C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C7D0Ev,_ZTv0_n24_N7S7312C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7312C7D0Ev,_ZThn60_N7S7312C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C7D1Ev,_ZTv0_n24_N7S7312C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7312C7D1Ev,_ZThn60_N7S7312C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7312C7 = {  "S7312C7", // class name
  bases_S7312C7, 4,
  &(vtc_S7312C7[0]), // expected_vtbl_contents
  &(vtt_S7312C7[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI7S7312C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7312C7),44, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7312C7),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names179,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7312C6  : S7312C4 , S7312C7 {
  virtual void  v13(); // _ZN7S7312C63v13Ev
  virtual void  v14(); // _ZN7S7312C63v14Ev
  virtual void  v15(); // _ZN7S7312C63v15Ev
  ~S7312C6(); // tgen
  S7312C6(); // tgen
};
//SIG(-1 S7312C6) C1{ BC2{ v4 v5 v6 v7 v8 v9 Fp Fs} BC3{ BC4{ VBC5{ VBC6{ v10} VBC7{ v11 v12 v13 v14 v15 Fp FC6} vd v16 v17 v18 Fp[6]} v19 v20 v21 FL} vd v22 v23 v24 v25 v26 FC2[4]} v1 v2 v3}


void  S7312C6 ::v13(){vfunc_called(this, "_ZN7S7312C63v13Ev");}
void  S7312C6 ::v14(){vfunc_called(this, "_ZN7S7312C63v14Ev");}
void  S7312C6 ::v15(){vfunc_called(this, "_ZN7S7312C63v15Ev");}
S7312C6 ::~S7312C6(){ note_dtor("S7312C6", this);} // tgen
S7312C6 ::S7312C6(){ note_ctor("S7312C6", this);} // tgen

static void Test_S7312C6()
{
  extern Class_Descriptor cd_S7312C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,29)];
    init_test(&cd_S7312C6, buf);
    S7312C6 *dp, &lv = *(dp=new (buf) S7312C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,112), "sizeof(S7312C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7312C6)");
    check_base_class_offset(lv, (S7312C4*), 0, "S7312C6");
    check_base_class_offset(lv, (S7312C10*)(S7312C9*), ABISELECT(24,12), "S7312C6");
    check_base_class_offset(lv, (S7312C11*)(S7312C9*), ABISELECT(192,100), "S7312C6");
    check_base_class_offset(lv, (S7312C9*)(S7312C8*)(S7312C7*), ABISELECT(136,72), "S7312C6");
    check_base_class_offset(lv, (S7312C8*)(S7312C7*), ABISELECT(24,12), "S7312C6");
    check_base_class_offset(lv, (S7312C7*), ABISELECT(24,12), "S7312C6");
    test_class_info(&lv, &cd_S7312C6);
    dp->~S7312C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7312C6(Test_S7312C6, "S7312C6", ABISELECT(216,112));

#else // __cplusplus

extern void _ZN7S7312C6C1Ev();
extern void _ZN7S7312C6D1Ev();
Name_Map name_map_S7312C6[] = {
  NSPAIR(_ZN7S7312C6C1Ev),
  NSPAIR(_ZN7S7312C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7312C4;
extern VTBL_ENTRY _ZTI7S7312C4[];
extern  VTBL_ENTRY _ZTV7S7312C4[];
extern Class_Descriptor cd_S7312C10;
extern VTBL_ENTRY _ZTI8S7312C10[];
extern  VTBL_ENTRY _ZTV8S7312C10[];
extern Class_Descriptor cd_S7312C11;
extern VTBL_ENTRY _ZTI8S7312C11[];
extern  VTBL_ENTRY _ZTV8S7312C11[];
extern Class_Descriptor cd_S7312C9;
extern VTBL_ENTRY _ZTI7S7312C9[];
extern  VTBL_ENTRY _ZTV7S7312C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C9[];
extern Class_Descriptor cd_S7312C8;
extern VTBL_ENTRY _ZTI7S7312C8[];
extern  VTBL_ENTRY _ZTV7S7312C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C8[];
extern Class_Descriptor cd_S7312C7;
extern VTBL_ENTRY _ZTI7S7312C7[];
extern  VTBL_ENTRY _ZTV7S7312C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C7[];
static Base_Class bases_S7312C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7312C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7312C10,    ABISELECT(24,12), //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
    3, //immediately_derived
  0, 1},
  {&cd_S7312C11,    ABISELECT(192,100), //bcp->offset
    48, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7312C9,    ABISELECT(136,72), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7312C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7312C7,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7312C6[];
extern void _ZN7S7312C42v3Ev();
extern void _ZN7S7312C42v4Ev();
extern void _ZN7S7312C42v5Ev();
extern void _ZN7S7312C42v6Ev();
extern void _ZN7S7312C42v7Ev();
extern void _ZN7S7312C42v8Ev();
extern void _ZN7S7312C63v13Ev();
extern void _ZN7S7312C63v14Ev();
extern void _ZN7S7312C63v15Ev();
extern void _ZN7S7312C6D1Ev();
extern void _ZN7S7312C6D0Ev();
extern void _ZN8S7312C103v16Ev();
extern void _ZN7S7312C83v25Ev();
extern void _ZN7S7312C83v26Ev();
extern void _ZN7S7312C83v27Ev();
extern void ABISELECT(_ZThn24_N7S7312C6D1Ev,_ZThn12_N7S7312C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7312C6D0Ev,_ZThn12_N7S7312C6D0Ev)();
extern void _ZN7S7312C73v28Ev();
extern void _ZN7S7312C73v29Ev();
extern void _ZN7S7312C73v30Ev();
extern void _ZN7S7312C73v31Ev();
extern void _ZN7S7312C73v32Ev();
extern void _ZN8S7312C103v16Ev();
extern void ABISELECT(_ZTv0_n48_N7S7312C6D1Ev,_ZTv0_n24_N7S7312C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S7312C6D1Ev,_ZThn72_N7S7312C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7312C6D0Ev,_ZTv0_n24_N7S7312C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S7312C6D0Ev,_ZThn72_N7S7312C6D0Ev)() __attribute__((weak));
extern void _ZN7S7312C93v22Ev();
extern void _ZN7S7312C93v23Ev();
extern void _ZN7S7312C93v24Ev();
extern void _ZN8S7312C113v17Ev();
extern void _ZN8S7312C113v18Ev();
extern void _ZN8S7312C113v19Ev();
extern void _ZN8S7312C113v20Ev();
extern void _ZN8S7312C113v21Ev();
static  VTBL_ENTRY vtc_S7312C6[] = {
  ABISELECT(192,100),
  ABISELECT(24,12),
  ABISELECT(136,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C6[0]),
  (VTBL_ENTRY)&_ZN7S7312C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7312C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7312C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7312C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7312C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C6D0Ev,
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7312C6[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v27Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7312C6D1Ev,_ZThn12_N7S7312C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7312C6D0Ev,_ZThn12_N7S7312C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7312C73v28Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v29Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v32Ev,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7312C6[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C6D1Ev,_ZTv0_n24_N7S7312C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C6D0Ev,_ZTv0_n24_N7S7312C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7312C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v24Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S7312C6[0]),
  (VTBL_ENTRY)&_ZN8S7312C113v17Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v18Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v19Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v20Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v21Ev,
};
extern VTBL_ENTRY _ZTV7S7312C6[];
extern void _ZN8S7312C103v16Ev();
extern void _ZN7S7312C83v25Ev();
extern void _ZN7S7312C83v26Ev();
extern void _ZN7S7312C83v27Ev();
extern void _ZN7S7312C7D1Ev();
extern void _ZN7S7312C7D0Ev();
extern void _ZN7S7312C73v28Ev();
extern void _ZN7S7312C73v29Ev();
extern void _ZN7S7312C73v30Ev();
extern void _ZN7S7312C73v31Ev();
extern void _ZN7S7312C73v32Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C7__7S7312C6[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C7[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7312C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v28Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v29Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v30Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7312C73v32Ev,
};
extern void _ZN8S7312C103v16Ev();
extern void _ZN7S7312C83v25Ev();
extern void _ZN7S7312C83v26Ev();
extern void _ZN7S7312C83v27Ev();
extern void _ZN7S7312C8D1Ev();
extern void _ZN7S7312C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C87S7312C7__7S7312C6[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C8[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7312C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7312C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C8D0Ev,
};
extern void _ZN8S7312C103v16Ev();
extern void ABISELECT(_ZTv0_n48_N7S7312C8D1Ev,_ZTv0_n24_N7S7312C8D1Ev)();
extern void ABISELECT(_ZThn112_N7S7312C8D1Ev,_ZThn60_N7S7312C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7312C8D0Ev,_ZTv0_n24_N7S7312C8D0Ev)();
extern void ABISELECT(_ZThn112_N7S7312C8D0Ev,_ZThn60_N7S7312C8D0Ev)() __attribute__((weak));
extern void _ZN7S7312C93v22Ev();
extern void _ZN7S7312C93v23Ev();
extern void _ZN7S7312C93v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C9__7S7312C87S7312C7__7S7312C6[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7312C8[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C8D1Ev,_ZTv0_n24_N7S7312C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C8D0Ev,_ZTv0_n24_N7S7312C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7312C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v24Ev,
};
extern void _ZN8S7312C113v17Ev();
extern void _ZN8S7312C113v18Ev();
extern void _ZN8S7312C113v19Ev();
extern void _ZN8S7312C113v20Ev();
extern void _ZN8S7312C113v21Ev();
static  VTBL_ENTRY _tg__ZTV8S7312C11__7S7312C87S7312C7__7S7312C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7312C8[0]),
  (VTBL_ENTRY)&_ZN8S7312C113v17Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v18Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v19Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v20Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v21Ev,
};
extern void _ZN8S7312C103v16Ev();
extern void ABISELECT(_ZTv0_n48_N7S7312C7D1Ev,_ZTv0_n24_N7S7312C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S7312C7D1Ev,_ZThn60_N7S7312C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7312C7D0Ev,_ZTv0_n24_N7S7312C7D0Ev)();
extern void ABISELECT(_ZThn112_N7S7312C7D0Ev,_ZThn60_N7S7312C7D0Ev)() __attribute__((weak));
extern void _ZN7S7312C93v22Ev();
extern void _ZN7S7312C93v23Ev();
extern void _ZN7S7312C93v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C9__7S7312C7__7S7312C6[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7312C7[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C7D1Ev,_ZTv0_n24_N7S7312C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7312C7D0Ev,_ZTv0_n24_N7S7312C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7312C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v24Ev,
};
extern void _ZN8S7312C113v17Ev();
extern void _ZN8S7312C113v18Ev();
extern void _ZN8S7312C113v19Ev();
extern void _ZN8S7312C113v20Ev();
extern void _ZN8S7312C113v21Ev();
static  VTBL_ENTRY _tg__ZTV8S7312C11__7S7312C7__7S7312C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S7312C7[0]),
  (VTBL_ENTRY)&_ZN8S7312C113v17Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v18Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v19Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v20Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v21Ev,
};
extern void _ZN8S7312C103v16Ev();
extern void _ZN7S7312C9D1Ev();
extern void _ZN7S7312C9D0Ev();
extern void _ZN7S7312C93v22Ev();
extern void _ZN7S7312C93v23Ev();
extern void _ZN7S7312C93v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C9__7S7312C6[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C9[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
  (VTBL_ENTRY)&_ZN7S7312C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7312C93v24Ev,
};
extern void _ZN8S7312C103v16Ev();
static  VTBL_ENTRY _tg__ZTV8S7312C10__7S7312C9__7S7312C6[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7312C9[0]),
  (VTBL_ENTRY)&_ZN8S7312C103v16Ev,
};
extern void _ZN8S7312C113v17Ev();
extern void _ZN8S7312C113v18Ev();
extern void _ZN8S7312C113v19Ev();
extern void _ZN8S7312C113v20Ev();
extern void _ZN8S7312C113v21Ev();
static  VTBL_ENTRY _tg__ZTV8S7312C11__7S7312C9__7S7312C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7312C9[0]),
  (VTBL_ENTRY)&_ZN8S7312C113v17Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v18Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v19Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v20Ev,
  (VTBL_ENTRY)&_ZN8S7312C113v21Ev,
};
static  VTT_ENTRY vtt_S7312C6[] = {
  {&(_ZTV7S7312C6[5]),  5,60},
  {&(_tg__ZTV7S7312C7__7S7312C6[6]),  6,17},
  {&(_tg__ZTV7S7312C87S7312C7__7S7312C6[6]),  6,12},
  {&(_tg__ZTV7S7312C9__7S7312C87S7312C7__7S7312C6[9]),  9,15},
  {&(_tg__ZTV7S7312C87S7312C7__7S7312C6[6]),  6,12},
  {&(_tg__ZTV8S7312C11__7S7312C87S7312C7__7S7312C6[7]),  7,12},
  {&(_tg__ZTV7S7312C9__7S7312C7__7S7312C6[9]),  9,15},
  {&(_tg__ZTV7S7312C7__7S7312C6[6]),  6,17},
  {&(_tg__ZTV8S7312C11__7S7312C7__7S7312C6[7]),  7,12},
  {&(_ZTV7S7312C6[22]),  22,60},
  {&(_ZTV7S7312C6[42]),  42,60},
  {&(_ZTV7S7312C6[22]),  22,60},
  {&(_ZTV7S7312C6[55]),  55,60},
  {&(_tg__ZTV7S7312C9__7S7312C6[5]),  5,11},
  {&(_tg__ZTV8S7312C10__7S7312C9__7S7312C6[3]),  3,4},
  {&(_tg__ZTV8S7312C11__7S7312C9__7S7312C6[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S7312C6[];
extern  VTBL_ENTRY _ZTV7S7312C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C6[];
static VTBL_ENTRY alt_thunk_names180[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C7D0Ev,_ZTv0_n24_N7S7312C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7312C7D0Ev,_ZThn60_N7S7312C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C7D1Ev,_ZTv0_n24_N7S7312C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7312C7D1Ev,_ZThn60_N7S7312C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C8D0Ev,_ZTv0_n24_N7S7312C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7312C8D0Ev,_ZThn60_N7S7312C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C8D1Ev,_ZTv0_n24_N7S7312C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7312C8D1Ev,_ZThn60_N7S7312C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C6D0Ev,_ZTv0_n24_N7S7312C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7312C6D0Ev,_ZThn72_N7S7312C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7312C6D1Ev,_ZTv0_n24_N7S7312C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7312C6D1Ev,_ZThn72_N7S7312C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7312C6 = {  "S7312C6", // class name
  bases_S7312C6, 6,
  &(vtc_S7312C6[0]), // expected_vtbl_contents
  &(vtt_S7312C6[0]), // expected_vtt_contents
  ABISELECT(216,112), // object size
  NSPAIRA(_ZTI7S7312C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7312C6),60, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7312C6),16, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names180,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7312C5  {
  ::S7312C6 s7312c5f0;
  int s7312c5f1[2];
  virtual void  v9(); // _ZN7S7312C52v9Ev
  virtual void  v10(); // _ZN7S7312C53v10Ev
  ~S7312C5(); // tgen
  S7312C5(); // tgen
};
//SIG(-1 S7312C5) C1{ v1 v2 FC2{ BC3{ v6 v7 v8 v9 v10 v11 Fp Fs} BC4{ BC5{ VBC6{ VBC7{ v12} VBC8{ v13 v14 v15 v16 v17 Fp FC7} vd v18 v19 v20 Fp[6]} v21 v22 v23 FL} vd v24 v25 v26 v27 v28 FC3[4]} v3 v4 v5} Fi[2]}


void  S7312C5 ::v9(){vfunc_called(this, "_ZN7S7312C52v9Ev");}
void  S7312C5 ::v10(){vfunc_called(this, "_ZN7S7312C53v10Ev");}
S7312C5 ::~S7312C5(){ note_dtor("S7312C5", this);} // tgen
S7312C5 ::S7312C5(){ note_ctor("S7312C5", this);} // tgen

static void Test_S7312C5()
{
  extern Class_Descriptor cd_S7312C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,32)];
    init_test(&cd_S7312C5, buf);
    S7312C5 *dp, &lv = *(dp=new (buf) S7312C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,124), "sizeof(S7312C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7312C5)");
    check_field_offset(lv, s7312c5f0, ABISELECT(8,4), "S7312C5.s7312c5f0");
    check_field_offset(lv, s7312c5f1, ABISELECT(224,116), "S7312C5.s7312c5f1");
    test_class_info(&lv, &cd_S7312C5);
    dp->~S7312C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7312C5(Test_S7312C5, "S7312C5", ABISELECT(232,124));

#else // __cplusplus

extern void _ZN7S7312C5C1Ev();
extern void _ZN7S7312C5D1Ev();
Name_Map name_map_S7312C5[] = {
  NSPAIR(_ZN7S7312C5C1Ev),
  NSPAIR(_ZN7S7312C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7312C5[];
extern void _ZN7S7312C52v9Ev();
extern void _ZN7S7312C53v10Ev();
static  VTBL_ENTRY vtc_S7312C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C5[0]),
  (VTBL_ENTRY)&_ZN7S7312C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7312C53v10Ev,
};
extern VTBL_ENTRY _ZTI7S7312C5[];
extern  VTBL_ENTRY _ZTV7S7312C5[];
Class_Descriptor cd_S7312C5 = {  "S7312C5", // class name
  0,0,//no base classes
  &(vtc_S7312C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,124), // object size
  NSPAIRA(_ZTI7S7312C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7312C5),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  S7312C3  : S7312C4 , S7312C5 {
  virtual void  v11(); // _ZN7S7312C33v11Ev
  ~S7312C3(); // tgen
  S7312C3(); // tgen
};
//SIG(-1 S7312C3) C1{ BC2{ v2 v3 v4 v5 v6 v7 Fp Fs} BC3{ v8 v9 FC4{ BC2 BC5{ BC6{ VBC7{ VBC8{ v13} VBC9{ v14 v15 v16 v17 v18 Fp FC8} vd v19 v20 v21 Fp[6]} v22 v23 v24 FL} vd v25 v26 v27 v28 v29 FC2[4]} v10 v11 v12} Fi[2]} v1}


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

static void Test_S7312C3()
{
  extern Class_Descriptor cd_S7312C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,35)];
    init_test(&cd_S7312C3, buf);
    S7312C3 *dp, &lv = *(dp=new (buf) S7312C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,136), "sizeof(S7312C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7312C3)");
    check_base_class_offset(lv, (S7312C4*), 0, "S7312C3");
    check_base_class_offset(lv, (S7312C5*), ABISELECT(24,12), "S7312C3");
    test_class_info(&lv, &cd_S7312C3);
    dp->~S7312C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7312C3(Test_S7312C3, "S7312C3", ABISELECT(256,136));

#else // __cplusplus

extern void _ZN7S7312C3C1Ev();
extern void _ZN7S7312C3D1Ev();
Name_Map name_map_S7312C3[] = {
  NSPAIR(_ZN7S7312C3C1Ev),
  NSPAIR(_ZN7S7312C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7312C4;
extern VTBL_ENTRY _ZTI7S7312C4[];
extern  VTBL_ENTRY _ZTV7S7312C4[];
extern Class_Descriptor cd_S7312C5;
extern VTBL_ENTRY _ZTI7S7312C5[];
extern  VTBL_ENTRY _ZTV7S7312C5[];
static Base_Class bases_S7312C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7312C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7312C5,    ABISELECT(24,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7312C3[];
extern void _ZN7S7312C42v3Ev();
extern void _ZN7S7312C42v4Ev();
extern void _ZN7S7312C42v5Ev();
extern void _ZN7S7312C42v6Ev();
extern void _ZN7S7312C42v7Ev();
extern void _ZN7S7312C42v8Ev();
extern void _ZN7S7312C33v11Ev();
extern void _ZN7S7312C52v9Ev();
extern void _ZN7S7312C53v10Ev();
static  VTBL_ENTRY vtc_S7312C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C3[0]),
  (VTBL_ENTRY)&_ZN7S7312C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7312C33v11Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7312C3[0]),
  (VTBL_ENTRY)&_ZN7S7312C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7312C53v10Ev,
};
extern VTBL_ENTRY _ZTI7S7312C3[];
extern  VTBL_ENTRY _ZTV7S7312C3[];
Class_Descriptor cd_S7312C3 = {  "S7312C3", // class name
  bases_S7312C3, 2,
  &(vtc_S7312C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,136), // object size
  NSPAIRA(_ZTI7S7312C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7312C3),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7312C2  : virtual S7312C3 {
  int s7312c2f0;
  virtual  ~S7312C2(); // _ZN7S7312C2D2Ev
  virtual void  v12(); // _ZN7S7312C23v12Ev
  S7312C2(); // tgen
};
//SIG(-1 S7312C2) C1{ VBC2{ BC3{ v2 v3 v4 v5 v6 v7 Fp Fs} BC4{ v8 v9 FC5{ BC3 BC6{ BC7{ VBC8{ VBC9{ v14} VBC10{ v15 v16 v17 v18 v19 Fp FC9} vd v20 v21 v22 Fp[6]} v23 v24 v25 FL} vd v26 v27 v28 v29 v30 FC3[4]} v11 v12 v13} Fi[2]} v10} vd v1 Fi}


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

static void Test_S7312C2()
{
  extern Class_Descriptor cd_S7312C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,37)];
    init_test(&cd_S7312C2, buf);
    S7312C2 *dp, &lv = *(dp=new (buf) S7312C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,144), "sizeof(S7312C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7312C2)");
    check_base_class_offset(lv, (S7312C4*)(S7312C3*), ABISELECT(16,8), "S7312C2");
    check_base_class_offset(lv, (S7312C5*)(S7312C3*), ABISELECT(40,20), "S7312C2");
    check_base_class_offset(lv, (S7312C3*), ABISELECT(16,8), "S7312C2");
    check_field_offset(lv, s7312c2f0, ABISELECT(8,4), "S7312C2.s7312c2f0");
    test_class_info(&lv, &cd_S7312C2);
    dp->~S7312C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7312C2(Test_S7312C2, "S7312C2", ABISELECT(272,144));

#else // __cplusplus

extern void _ZN7S7312C2C1Ev();
extern void _ZN7S7312C2D2Ev();
Name_Map name_map_S7312C2[] = {
  NSPAIR(_ZN7S7312C2C1Ev),
  NSPAIR(_ZN7S7312C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7312C4;
extern VTBL_ENTRY _ZTI7S7312C4[];
extern  VTBL_ENTRY _ZTV7S7312C4[];
extern Class_Descriptor cd_S7312C5;
extern VTBL_ENTRY _ZTI7S7312C5[];
extern  VTBL_ENTRY _ZTV7S7312C5[];
extern Class_Descriptor cd_S7312C3;
extern VTBL_ENTRY _ZTI7S7312C3[];
extern  VTBL_ENTRY _ZTV7S7312C3[];
static Base_Class bases_S7312C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7312C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7312C5,    ABISELECT(40,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7312C3,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7312C2[];
extern void _ZN7S7312C2D1Ev();
extern void _ZN7S7312C2D0Ev();
extern void _ZN7S7312C23v12Ev();
extern void _ZN7S7312C42v3Ev();
extern void _ZN7S7312C42v4Ev();
extern void _ZN7S7312C42v5Ev();
extern void _ZN7S7312C42v6Ev();
extern void _ZN7S7312C42v7Ev();
extern void _ZN7S7312C42v8Ev();
extern void _ZN7S7312C33v11Ev();
extern void _ZN7S7312C52v9Ev();
extern void _ZN7S7312C53v10Ev();
static  VTBL_ENTRY vtc_S7312C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C2[0]),
  (VTBL_ENTRY)&_ZN7S7312C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7312C23v12Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7312C2[0]),
  (VTBL_ENTRY)&_ZN7S7312C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7312C33v11Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7312C2[0]),
  (VTBL_ENTRY)&_ZN7S7312C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7312C53v10Ev,
};
extern VTBL_ENTRY _ZTV7S7312C2[];
static  VTT_ENTRY vtt_S7312C2[] = {
  {&(_ZTV7S7312C2[3]),  3,28},
  {&(_ZTV7S7312C2[17]),  17,28},
  {&(_ZTV7S7312C2[26]),  26,28},
};
extern VTBL_ENTRY _ZTI7S7312C2[];
extern  VTBL_ENTRY _ZTV7S7312C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C2[];
Class_Descriptor cd_S7312C2 = {  "S7312C2", // class name
  bases_S7312C2, 3,
  &(vtc_S7312C2[0]), // expected_vtbl_contents
  &(vtt_S7312C2[0]), // expected_vtt_contents
  ABISELECT(272,144), // object size
  NSPAIRA(_ZTI7S7312C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7312C2),28, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7312C2),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7312C1  : S7312C2 {
  __tsi64 s7312c1f0;
  virtual  ~S7312C1(); // _ZN7S7312C1D2Ev
  virtual void  v1(); // _ZN7S7312C12v1Ev
  virtual void  v2(); // _ZN7S7312C12v2Ev
  S7312C1(); // tgen
};
//SIG(1 S7312C1) C1{ BC2{ VBC3{ BC4{ v3 v4 v5 v6 v7 v8 Fp Fs} BC5{ v9 v10 FC6{ BC4 BC7{ BC8{ VBC9{ VBC10{ v16} VBC11{ v17 v18 v19 v20 v21 Fp FC10} vd v22 v23 v24 Fp[6]} v25 v26 v27 FL} vd v28 v29 v30 v31 v32 FC4[4]} v13 v14 v15} Fi[2]} v11} vd v12 Fi} vd v1 v2 FL}


 S7312C1 ::~S7312C1(){ note_dtor("S7312C1", this);}
void  S7312C1 ::v1(){vfunc_called(this, "_ZN7S7312C12v1Ev");}
void  S7312C1 ::v2(){vfunc_called(this, "_ZN7S7312C12v2Ev");}
S7312C1 ::S7312C1(){ note_ctor("S7312C1", this);} // tgen

static void Test_S7312C1()
{
  extern Class_Descriptor cd_S7312C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,39)];
    init_test(&cd_S7312C1, buf);
    S7312C1 *dp, &lv = *(dp=new (buf) S7312C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,152), "sizeof(S7312C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7312C1)");
    check_base_class_offset(lv, (S7312C4*)(S7312C3*), ABISELECT(24,16), "S7312C1");
    check_base_class_offset(lv, (S7312C5*)(S7312C3*), ABISELECT(48,28), "S7312C1");
    check_base_class_offset(lv, (S7312C3*)(S7312C2*), ABISELECT(24,16), "S7312C1");
    check_base_class_offset(lv, (S7312C2*), 0, "S7312C1");
    check_field_offset(lv, s7312c1f0, ABISELECT(16,8), "S7312C1.s7312c1f0");
    test_class_info(&lv, &cd_S7312C1);
    dp->~S7312C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7312C1(Test_S7312C1, "S7312C1", ABISELECT(280,152));

#else // __cplusplus

extern void _ZN7S7312C1C1Ev();
extern void _ZN7S7312C1D2Ev();
Name_Map name_map_S7312C1[] = {
  NSPAIR(_ZN7S7312C1C1Ev),
  NSPAIR(_ZN7S7312C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7312C4;
extern VTBL_ENTRY _ZTI7S7312C4[];
extern  VTBL_ENTRY _ZTV7S7312C4[];
extern Class_Descriptor cd_S7312C5;
extern VTBL_ENTRY _ZTI7S7312C5[];
extern  VTBL_ENTRY _ZTV7S7312C5[];
extern Class_Descriptor cd_S7312C3;
extern VTBL_ENTRY _ZTI7S7312C3[];
extern  VTBL_ENTRY _ZTV7S7312C3[];
extern Class_Descriptor cd_S7312C2;
extern VTBL_ENTRY _ZTI7S7312C2[];
extern  VTBL_ENTRY _ZTV7S7312C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C2[];
static Base_Class bases_S7312C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7312C4,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7312C5,    ABISELECT(48,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7312C3,    ABISELECT(24,16), //bcp->offset
    8, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7312C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7312C1[];
extern void _ZN7S7312C1D1Ev();
extern void _ZN7S7312C1D0Ev();
extern void _ZN7S7312C23v12Ev();
extern void _ZN7S7312C12v1Ev();
extern void _ZN7S7312C12v2Ev();
extern void _ZN7S7312C42v3Ev();
extern void _ZN7S7312C42v4Ev();
extern void _ZN7S7312C42v5Ev();
extern void _ZN7S7312C42v6Ev();
extern void _ZN7S7312C42v7Ev();
extern void _ZN7S7312C42v8Ev();
extern void _ZN7S7312C33v11Ev();
extern void _ZN7S7312C52v9Ev();
extern void _ZN7S7312C53v10Ev();
static  VTBL_ENTRY vtc_S7312C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C1[0]),
  (VTBL_ENTRY)&_ZN7S7312C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7312C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7312C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7312C12v2Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7312C1[0]),
  (VTBL_ENTRY)&_ZN7S7312C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7312C33v11Ev,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7312C1[0]),
  (VTBL_ENTRY)&_ZN7S7312C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7312C53v10Ev,
};
extern VTBL_ENTRY _ZTV7S7312C1[];
extern void _ZN7S7312C2D1Ev();
extern void _ZN7S7312C2D0Ev();
extern void _ZN7S7312C23v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C2__7S7312C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7312C2[0]),
  (VTBL_ENTRY)&_ZN7S7312C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7312C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7312C23v12Ev,
};
extern void _ZN7S7312C42v3Ev();
extern void _ZN7S7312C42v4Ev();
extern void _ZN7S7312C42v5Ev();
extern void _ZN7S7312C42v6Ev();
extern void _ZN7S7312C42v7Ev();
extern void _ZN7S7312C42v8Ev();
extern void _ZN7S7312C33v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C3__7S7312C2__7S7312C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7312C2[0]),
  (VTBL_ENTRY)&_ZN7S7312C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7312C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7312C33v11Ev,
};
extern void _ZN7S7312C52v9Ev();
extern void _ZN7S7312C53v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7312C57S7312C3__7S7312C2__7S7312C1[] = {
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7312C2[0]),
  (VTBL_ENTRY)&_ZN7S7312C52v9Ev,
  (VTBL_ENTRY)&_ZN7S7312C53v10Ev,
};
static  VTT_ENTRY vtt_S7312C1[] = {
  {&(_ZTV7S7312C1[3]),  3,30},
  {&(_tg__ZTV7S7312C2__7S7312C1[3]),  3,6},
  {&(_tg__ZTV7S7312C3__7S7312C2__7S7312C1[11]),  11,18},
  {&(_tg__ZTV7S7312C57S7312C3__7S7312C2__7S7312C1[2]),  2,4},
  {&(_ZTV7S7312C1[19]),  19,30},
  {&(_ZTV7S7312C1[28]),  28,30},
};
extern VTBL_ENTRY _ZTI7S7312C1[];
extern  VTBL_ENTRY _ZTV7S7312C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7312C1[];
Class_Descriptor cd_S7312C1 = {  "S7312C1", // class name
  bases_S7312C1, 4,
  &(vtc_S7312C1[0]), // expected_vtbl_contents
  &(vtt_S7312C1[0]), // expected_vtt_contents
  ABISELECT(280,152), // object size
  NSPAIRA(_ZTI7S7312C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7312C1),30, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7312C1),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20361C2  {
  virtual void  v7(); // _ZN8S20361C22v7Ev
  virtual void  v8(); // _ZN8S20361C22v8Ev
  virtual void  v9(); // _ZN8S20361C22v9Ev
  virtual void  v10(); // _ZN8S20361C23v10Ev
  ~S20361C2(); // tgen
  S20361C2(); // tgen
};
//SIG(-1 S20361C2) C1{ v1 v2 v3 v4}


void  S20361C2 ::v7(){vfunc_called(this, "_ZN8S20361C22v7Ev");}
void  S20361C2 ::v8(){vfunc_called(this, "_ZN8S20361C22v8Ev");}
void  S20361C2 ::v9(){vfunc_called(this, "_ZN8S20361C22v9Ev");}
void  S20361C2 ::v10(){vfunc_called(this, "_ZN8S20361C23v10Ev");}
S20361C2 ::~S20361C2(){ note_dtor("S20361C2", this);} // tgen
S20361C2 ::S20361C2(){ note_ctor("S20361C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20361C2C1Ev();
extern void _ZN8S20361C2D1Ev();
Name_Map name_map_S20361C2[] = {
  NSPAIR(_ZN8S20361C2C1Ev),
  NSPAIR(_ZN8S20361C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20361C2[];
extern void _ZN8S20361C22v7Ev();
extern void _ZN8S20361C22v8Ev();
extern void _ZN8S20361C22v9Ev();
extern void _ZN8S20361C23v10Ev();
static  VTBL_ENTRY vtc_S20361C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C2[0]),
  (VTBL_ENTRY)&_ZN8S20361C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20361C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20361C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20361C23v10Ev,
};
extern VTBL_ENTRY _ZTI8S20361C2[];
extern  VTBL_ENTRY _ZTV8S20361C2[];
Class_Descriptor cd_S20361C2 = {  "S20361C2", // class name
  0,0,//no base classes
  &(vtc_S20361C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20361C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20361C2),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  S20361C4  {
  void *s20361c4f0;
  short s20361c4f1;
  virtual void  v11(); // _ZN8S20361C43v11Ev
  virtual void  v12(); // _ZN8S20361C43v12Ev
  virtual void  v13(); // _ZN8S20361C43v13Ev
  virtual void  v14(); // _ZN8S20361C43v14Ev
  virtual void  v15(); // _ZN8S20361C43v15Ev
  virtual void  v16(); // _ZN8S20361C43v16Ev
  ~S20361C4(); // tgen
  S20361C4(); // tgen
};
//SIG(-1 S20361C4) C1{ v1 v2 v3 v4 v5 v6 Fp Fs}


void  S20361C4 ::v11(){vfunc_called(this, "_ZN8S20361C43v11Ev");}
void  S20361C4 ::v12(){vfunc_called(this, "_ZN8S20361C43v12Ev");}
void  S20361C4 ::v13(){vfunc_called(this, "_ZN8S20361C43v13Ev");}
void  S20361C4 ::v14(){vfunc_called(this, "_ZN8S20361C43v14Ev");}
void  S20361C4 ::v15(){vfunc_called(this, "_ZN8S20361C43v15Ev");}
void  S20361C4 ::v16(){vfunc_called(this, "_ZN8S20361C43v16Ev");}
S20361C4 ::~S20361C4(){ note_dtor("S20361C4", this);} // tgen
S20361C4 ::S20361C4(){ note_ctor("S20361C4", this);} // tgen

static void Test_S20361C4()
{
  extern Class_Descriptor cd_S20361C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20361C4, buf);
    S20361C4 *dp, &lv = *(dp=new (buf) S20361C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20361C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20361C4)");
    check_field_offset(lv, s20361c4f0, ABISELECT(8,4), "S20361C4.s20361c4f0");
    check_field_offset(lv, s20361c4f1, ABISELECT(16,8), "S20361C4.s20361c4f1");
    test_class_info(&lv, &cd_S20361C4);
    dp->~S20361C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20361C4(Test_S20361C4, "S20361C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20361C4C1Ev();
extern void _ZN8S20361C4D1Ev();
Name_Map name_map_S20361C4[] = {
  NSPAIR(_ZN8S20361C4C1Ev),
  NSPAIR(_ZN8S20361C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20361C4[];
extern void _ZN8S20361C43v11Ev();
extern void _ZN8S20361C43v12Ev();
extern void _ZN8S20361C43v13Ev();
extern void _ZN8S20361C43v14Ev();
extern void _ZN8S20361C43v15Ev();
extern void _ZN8S20361C43v16Ev();
static  VTBL_ENTRY vtc_S20361C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C4[0]),
  (VTBL_ENTRY)&_ZN8S20361C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v16Ev,
};
extern VTBL_ENTRY _ZTI8S20361C4[];
extern  VTBL_ENTRY _ZTV8S20361C4[];
Class_Descriptor cd_S20361C4 = {  "S20361C4", // class name
  0,0,//no base classes
  &(vtc_S20361C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20361C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20361C4),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  S20361C8  {
  virtual void  v17(); // _ZN8S20361C83v17Ev
  ~S20361C8(); // tgen
  S20361C8(); // tgen
};
//SIG(-1 S20361C8) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20361C8C1Ev();
extern void _ZN8S20361C8D1Ev();
Name_Map name_map_S20361C8[] = {
  NSPAIR(_ZN8S20361C8C1Ev),
  NSPAIR(_ZN8S20361C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20361C8[];
extern void _ZN8S20361C83v17Ev();
static  VTBL_ENTRY vtc_S20361C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C8[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
};
extern VTBL_ENTRY _ZTI8S20361C8[];
extern  VTBL_ENTRY _ZTV8S20361C8[];
Class_Descriptor cd_S20361C8 = {  "S20361C8", // class name
  0,0,//no base classes
  &(vtc_S20361C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20361C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20361C8),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  S20361C9  {
  void *s20361c9f0;
  ::S20361C8 s20361c9f1;
  virtual void  v18(); // _ZN8S20361C93v18Ev
  virtual void  v19(); // _ZN8S20361C93v19Ev
  virtual void  v20(); // _ZN8S20361C93v20Ev
  virtual void  v21(); // _ZN8S20361C93v21Ev
  virtual void  v22(); // _ZN8S20361C93v22Ev
  ~S20361C9(); // tgen
  S20361C9(); // tgen
};
//SIG(-1 S20361C9) C1{ v1 v2 v3 v4 v5 Fp FC2{ v6}}


void  S20361C9 ::v18(){vfunc_called(this, "_ZN8S20361C93v18Ev");}
void  S20361C9 ::v19(){vfunc_called(this, "_ZN8S20361C93v19Ev");}
void  S20361C9 ::v20(){vfunc_called(this, "_ZN8S20361C93v20Ev");}
void  S20361C9 ::v21(){vfunc_called(this, "_ZN8S20361C93v21Ev");}
void  S20361C9 ::v22(){vfunc_called(this, "_ZN8S20361C93v22Ev");}
S20361C9 ::~S20361C9(){ note_dtor("S20361C9", this);} // tgen
S20361C9 ::S20361C9(){ note_ctor("S20361C9", this);} // tgen

static void Test_S20361C9()
{
  extern Class_Descriptor cd_S20361C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20361C9, buf);
    S20361C9 *dp, &lv = *(dp=new (buf) S20361C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20361C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20361C9)");
    check_field_offset(lv, s20361c9f0, ABISELECT(8,4), "S20361C9.s20361c9f0");
    check_field_offset(lv, s20361c9f1, ABISELECT(16,8), "S20361C9.s20361c9f1");
    test_class_info(&lv, &cd_S20361C9);
    dp->~S20361C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20361C9(Test_S20361C9, "S20361C9", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20361C9C1Ev();
extern void _ZN8S20361C9D1Ev();
Name_Map name_map_S20361C9[] = {
  NSPAIR(_ZN8S20361C9C1Ev),
  NSPAIR(_ZN8S20361C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20361C9[];
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY vtc_S20361C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C9[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern VTBL_ENTRY _ZTI8S20361C9[];
extern  VTBL_ENTRY _ZTV8S20361C9[];
Class_Descriptor cd_S20361C9 = {  "S20361C9", // class name
  0,0,//no base classes
  &(vtc_S20361C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20361C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20361C9),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  S20361C7  : virtual S20361C8 , virtual S20361C9 {
  void *s20361c7f0[6];
  virtual  ~S20361C7(); // _ZN8S20361C7D2Ev
  virtual void  v23(); // _ZN8S20361C73v23Ev
  virtual void  v24(); // _ZN8S20361C73v24Ev
  virtual void  v25(); // _ZN8S20361C73v25Ev
  S20361C7(); // tgen
};
//SIG(-1 S20361C7) C1{ VBC2{ v4} VBC3{ v5 v6 v7 v8 v9 Fp FC2} vd v1 v2 v3 Fp[6]}


 S20361C7 ::~S20361C7(){ note_dtor("S20361C7", this);}
void  S20361C7 ::v23(){vfunc_called(this, "_ZN8S20361C73v23Ev");}
void  S20361C7 ::v24(){vfunc_called(this, "_ZN8S20361C73v24Ev");}
void  S20361C7 ::v25(){vfunc_called(this, "_ZN8S20361C73v25Ev");}
S20361C7 ::S20361C7(){ note_ctor("S20361C7", this);} // tgen

static void Test_S20361C7()
{
  extern Class_Descriptor cd_S20361C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S20361C7, buf);
    S20361C7 *dp, &lv = *(dp=new (buf) S20361C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20361C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20361C7)");
    check_base_class_offset(lv, (S20361C8*), 0, "S20361C7");
    check_base_class_offset(lv, (S20361C9*), ABISELECT(56,28), "S20361C7");
    check_field_offset(lv, s20361c7f0, ABISELECT(8,4), "S20361C7.s20361c7f0");
    test_class_info(&lv, &cd_S20361C7);
    dp->~S20361C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20361C7(Test_S20361C7, "S20361C7", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S20361C7C1Ev();
extern void _ZN8S20361C7D2Ev();
Name_Map name_map_S20361C7[] = {
  NSPAIR(_ZN8S20361C7C1Ev),
  NSPAIR(_ZN8S20361C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20361C8;
extern VTBL_ENTRY _ZTI8S20361C8[];
extern  VTBL_ENTRY _ZTV8S20361C8[];
extern Class_Descriptor cd_S20361C9;
extern VTBL_ENTRY _ZTI8S20361C9[];
extern  VTBL_ENTRY _ZTV8S20361C9[];
static Base_Class bases_S20361C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20361C8,    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_S20361C9,    ABISELECT(56,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20361C7[];
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C7D1Ev();
extern void _ZN8S20361C7D0Ev();
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY vtc_S20361C7[] = {
  ABISELECT(56,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern VTBL_ENTRY _ZTV8S20361C7[];
static  VTT_ENTRY vtt_S20361C7[] = {
  {&(_ZTV8S20361C7[5]),  5,23},
  {&(_ZTV8S20361C7[5]),  5,23},
  {&(_ZTV8S20361C7[18]),  18,23},
};
extern VTBL_ENTRY _ZTI8S20361C7[];
extern  VTBL_ENTRY _ZTV8S20361C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C7[];
Class_Descriptor cd_S20361C7 = {  "S20361C7", // class name
  bases_S20361C7, 2,
  &(vtc_S20361C7[0]), // expected_vtbl_contents
  &(vtt_S20361C7[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S20361C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20361C7),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20361C7),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  S20361C6  : virtual S20361C7 {
  __tsi64 s20361c6f0;
  virtual void  v26(); // _ZN8S20361C63v26Ev
  virtual void  v27(); // _ZN8S20361C63v27Ev
  virtual void  v28(); // _ZN8S20361C63v28Ev
  ~S20361C6(); // tgen
  S20361C6(); // tgen
};
//SIG(-1 S20361C6) C1{ VBC2{ VBC3{ v4} VBC4{ v5 v6 v7 v8 v9 Fp FC3} vd v10 v11 v12 Fp[6]} v1 v2 v3 FL}


void  S20361C6 ::v26(){vfunc_called(this, "_ZN8S20361C63v26Ev");}
void  S20361C6 ::v27(){vfunc_called(this, "_ZN8S20361C63v27Ev");}
void  S20361C6 ::v28(){vfunc_called(this, "_ZN8S20361C63v28Ev");}
S20361C6 ::~S20361C6(){ note_dtor("S20361C6", this);} // tgen
S20361C6 ::S20361C6(){ note_ctor("S20361C6", this);} // tgen

static void Test_S20361C6()
{
  extern Class_Descriptor cd_S20361C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S20361C6, buf);
    S20361C6 *dp, &lv = *(dp=new (buf) S20361C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S20361C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20361C6)");
    check_base_class_offset(lv, (S20361C8*)(S20361C7*), 0, "S20361C6");
    check_base_class_offset(lv, (S20361C9*)(S20361C7*), ABISELECT(72,40), "S20361C6");
    check_base_class_offset(lv, (S20361C7*), ABISELECT(16,12), "S20361C6");
    check_field_offset(lv, s20361c6f0, ABISELECT(8,4), "S20361C6.s20361c6f0");
    test_class_info(&lv, &cd_S20361C6);
    dp->~S20361C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20361C6(Test_S20361C6, "S20361C6", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S20361C6C1Ev();
extern void _ZN8S20361C6D1Ev();
Name_Map name_map_S20361C6[] = {
  NSPAIR(_ZN8S20361C6C1Ev),
  NSPAIR(_ZN8S20361C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20361C8;
extern VTBL_ENTRY _ZTI8S20361C8[];
extern  VTBL_ENTRY _ZTV8S20361C8[];
extern Class_Descriptor cd_S20361C9;
extern VTBL_ENTRY _ZTI8S20361C9[];
extern  VTBL_ENTRY _ZTV8S20361C9[];
extern Class_Descriptor cd_S20361C7;
extern VTBL_ENTRY _ZTI8S20361C7[];
extern  VTBL_ENTRY _ZTV8S20361C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C7[];
static Base_Class bases_S20361C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20361C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20361C9,    ABISELECT(72,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20361C7,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20361C6[];
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C63v26Ev();
extern void _ZN8S20361C63v27Ev();
extern void _ZN8S20361C63v28Ev();
extern void _ZN8S20361C6D1Ev();
extern void _ZN8S20361C6D0Ev();
extern void _ZN8S20361C83v17Ev();
extern void ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S20361C6D1Ev,_ZThn12_N8S20361C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S20361C6D0Ev,_ZThn12_N8S20361C6D0Ev)() __attribute__((weak));
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY vtc_S20361C6[] = {
  ABISELECT(72,40),
  0,
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v26Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v27Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v28Ev,
  (VTBL_ENTRY)&_ZN8S20361C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C6D0Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern VTBL_ENTRY _ZTV8S20361C6[];
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C7D1Ev();
extern void _ZN8S20361C7D0Ev();
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C7__8S20361C6[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
};
extern void _ZN8S20361C83v17Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C8__8S20361C7__8S20361C6[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
};
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C9__8S20361C7__8S20361C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
static  VTT_ENTRY vtt_S20361C6[] = {
  {&(_ZTV8S20361C6[6]),  6,39},
  {&(_ZTV8S20361C6[21]),  21,39},
  {&(_ZTV8S20361C6[6]),  6,39},
  {&(_ZTV8S20361C6[34]),  34,39},
  {&(_tg__ZTV8S20361C7__8S20361C6[5]),  5,11},
  {&(_tg__ZTV8S20361C8__8S20361C7__8S20361C6[3]),  3,4},
  {&(_tg__ZTV8S20361C9__8S20361C7__8S20361C6[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20361C6[];
extern  VTBL_ENTRY _ZTV8S20361C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C6[];
static VTBL_ENTRY alt_thunk_names181[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20361C6D0Ev,_ZThn12_N8S20361C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20361C6D1Ev,_ZThn12_N8S20361C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20361C6 = {  "S20361C6", // class name
  bases_S20361C6, 3,
  &(vtc_S20361C6[0]), // expected_vtbl_contents
  &(vtt_S20361C6[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S20361C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20361C6),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20361C6),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names181,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20361C5  : S20361C6 {
  ::S20361C4 s20361c5f0[4];
  virtual  ~S20361C5(); // _ZN8S20361C5D2Ev
  virtual void  v29(); // _ZN8S20361C53v29Ev
  virtual void  v30(); // _ZN8S20361C53v30Ev
  virtual void  v31(); // _ZN8S20361C53v31Ev
  virtual void  v32(); // _ZN8S20361C53v32Ev
  virtual void  v33(); // _ZN8S20361C53v33Ev
  S20361C5(); // tgen
};
//SIG(-1 S20361C5) C1{ BC2{ VBC3{ VBC4{ v6} VBC5{ v7 v8 v9 v10 v11 Fp FC4} vd v12 v13 v14 Fp[6]} v15 v16 v17 FL} vd v1 v2 v3 v4 v5 FC6{ v18 v19 v20 v21 v22 v23 Fp Fs}[4]}


 S20361C5 ::~S20361C5(){ note_dtor("S20361C5", this);}
void  S20361C5 ::v29(){vfunc_called(this, "_ZN8S20361C53v29Ev");}
void  S20361C5 ::v30(){vfunc_called(this, "_ZN8S20361C53v30Ev");}
void  S20361C5 ::v31(){vfunc_called(this, "_ZN8S20361C53v31Ev");}
void  S20361C5 ::v32(){vfunc_called(this, "_ZN8S20361C53v32Ev");}
void  S20361C5 ::v33(){vfunc_called(this, "_ZN8S20361C53v33Ev");}
S20361C5 ::S20361C5(){ note_ctor("S20361C5", this);} // tgen

static void Test_S20361C5()
{
  extern Class_Descriptor cd_S20361C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,26)];
    init_test(&cd_S20361C5, buf);
    S20361C5 *dp, &lv = *(dp=new (buf) S20361C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S20361C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20361C5)");
    check_base_class_offset(lv, (S20361C8*)(S20361C7*), 0, "S20361C5");
    check_base_class_offset(lv, (S20361C9*)(S20361C7*), ABISELECT(168,88), "S20361C5");
    check_base_class_offset(lv, (S20361C7*)(S20361C6*), ABISELECT(112,60), "S20361C5");
    check_base_class_offset(lv, (S20361C6*), 0, "S20361C5");
    check_field_offset(lv, s20361c5f0, ABISELECT(16,12), "S20361C5.s20361c5f0");
    test_class_info(&lv, &cd_S20361C5);
    dp->~S20361C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20361C5(Test_S20361C5, "S20361C5", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN8S20361C5C1Ev();
extern void _ZN8S20361C5D2Ev();
Name_Map name_map_S20361C5[] = {
  NSPAIR(_ZN8S20361C5C1Ev),
  NSPAIR(_ZN8S20361C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20361C8;
extern VTBL_ENTRY _ZTI8S20361C8[];
extern  VTBL_ENTRY _ZTV8S20361C8[];
extern Class_Descriptor cd_S20361C9;
extern VTBL_ENTRY _ZTI8S20361C9[];
extern  VTBL_ENTRY _ZTV8S20361C9[];
extern Class_Descriptor cd_S20361C7;
extern VTBL_ENTRY _ZTI8S20361C7[];
extern  VTBL_ENTRY _ZTV8S20361C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C7[];
extern Class_Descriptor cd_S20361C6;
extern VTBL_ENTRY _ZTI8S20361C6[];
extern  VTBL_ENTRY _ZTV8S20361C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C6[];
static Base_Class bases_S20361C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20361C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20361C9,    ABISELECT(168,88), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20361C7,    ABISELECT(112,60), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20361C6,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20361C5[];
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C63v26Ev();
extern void _ZN8S20361C63v27Ev();
extern void _ZN8S20361C63v28Ev();
extern void _ZN8S20361C5D1Ev();
extern void _ZN8S20361C5D0Ev();
extern void _ZN8S20361C53v29Ev();
extern void _ZN8S20361C53v30Ev();
extern void _ZN8S20361C53v31Ev();
extern void _ZN8S20361C53v32Ev();
extern void _ZN8S20361C53v33Ev();
extern void _ZN8S20361C83v17Ev();
extern void ABISELECT(_ZTv0_n48_N8S20361C5D1Ev,_ZTv0_n24_N8S20361C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S20361C5D1Ev,_ZThn60_N8S20361C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20361C5D0Ev,_ZTv0_n24_N8S20361C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S20361C5D0Ev,_ZThn60_N8S20361C5D0Ev)() __attribute__((weak));
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY vtc_S20361C5[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C5[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v26Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v27Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v28Ev,
  (VTBL_ENTRY)&_ZN8S20361C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v33Ev,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S20361C5[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C5D1Ev,_ZTv0_n24_N8S20361C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C5D0Ev,_ZTv0_n24_N8S20361C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20361C5[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern VTBL_ENTRY _ZTV8S20361C5[];
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C63v26Ev();
extern void _ZN8S20361C63v27Ev();
extern void _ZN8S20361C63v28Ev();
extern void _ZN8S20361C6D1Ev();
extern void _ZN8S20361C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C6__8S20361C5[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v26Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v27Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v28Ev,
  (VTBL_ENTRY)&_ZN8S20361C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C6D0Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S20361C6D1Ev,_ZThn60_N8S20361C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S20361C6D0Ev,_ZThn60_N8S20361C6D0Ev)() __attribute__((weak));
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C7__8S20361C6__8S20361C5[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
};
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C9__8S20361C6__8S20361C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C7D1Ev();
extern void _ZN8S20361C7D0Ev();
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C7__8S20361C5[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
};
extern void _ZN8S20361C83v17Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C8__8S20361C7__8S20361C5[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
};
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C9__8S20361C7__8S20361C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
static  VTT_ENTRY vtt_S20361C5[] = {
  {&(_ZTV8S20361C5[6]),  6,44},
  {&(_tg__ZTV8S20361C6__8S20361C5[6]),  6,12},
  {&(_tg__ZTV8S20361C7__8S20361C6__8S20361C5[9]),  9,15},
  {&(_tg__ZTV8S20361C6__8S20361C5[6]),  6,12},
  {&(_tg__ZTV8S20361C9__8S20361C6__8S20361C5[7]),  7,12},
  {&(_ZTV8S20361C5[26]),  26,44},
  {&(_ZTV8S20361C5[6]),  6,44},
  {&(_ZTV8S20361C5[39]),  39,44},
  {&(_tg__ZTV8S20361C7__8S20361C5[5]),  5,11},
  {&(_tg__ZTV8S20361C8__8S20361C7__8S20361C5[3]),  3,4},
  {&(_tg__ZTV8S20361C9__8S20361C7__8S20361C5[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20361C5[];
extern  VTBL_ENTRY _ZTV8S20361C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C5[];
static VTBL_ENTRY alt_thunk_names182[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20361C6D0Ev,_ZThn60_N8S20361C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20361C6D1Ev,_ZThn60_N8S20361C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C5D0Ev,_ZTv0_n24_N8S20361C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20361C5D0Ev,_ZThn60_N8S20361C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C5D1Ev,_ZTv0_n24_N8S20361C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20361C5D1Ev,_ZThn60_N8S20361C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20361C5 = {  "S20361C5", // class name
  bases_S20361C5, 4,
  &(vtc_S20361C5[0]), // expected_vtbl_contents
  &(vtt_S20361C5[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI8S20361C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20361C5),44, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20361C5),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names182,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20361C3  : S20361C4 , S20361C5 {
  virtual void  v34(); // _ZN8S20361C33v34Ev
  virtual void  v35(); // _ZN8S20361C33v35Ev
  virtual void  v36(); // _ZN8S20361C33v36Ev
  ~S20361C3(); // tgen
  S20361C3(); // tgen
};
//SIG(-1 S20361C3) C1{ BC2{ v4 v5 v6 v7 v8 v9 Fp Fs} BC3{ BC4{ VBC5{ VBC6{ v10} VBC7{ v11 v12 v13 v14 v15 Fp FC6} vd v16 v17 v18 Fp[6]} v19 v20 v21 FL} vd v22 v23 v24 v25 v26 FC2[4]} v1 v2 v3}


void  S20361C3 ::v34(){vfunc_called(this, "_ZN8S20361C33v34Ev");}
void  S20361C3 ::v35(){vfunc_called(this, "_ZN8S20361C33v35Ev");}
void  S20361C3 ::v36(){vfunc_called(this, "_ZN8S20361C33v36Ev");}
S20361C3 ::~S20361C3(){ note_dtor("S20361C3", this);} // tgen
S20361C3 ::S20361C3(){ note_ctor("S20361C3", this);} // tgen

static void Test_S20361C3()
{
  extern Class_Descriptor cd_S20361C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,29)];
    init_test(&cd_S20361C3, buf);
    S20361C3 *dp, &lv = *(dp=new (buf) S20361C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,112), "sizeof(S20361C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20361C3)");
    check_base_class_offset(lv, (S20361C4*), 0, "S20361C3");
    check_base_class_offset(lv, (S20361C8*)(S20361C7*), ABISELECT(24,12), "S20361C3");
    check_base_class_offset(lv, (S20361C9*)(S20361C7*), ABISELECT(192,100), "S20361C3");
    check_base_class_offset(lv, (S20361C7*)(S20361C6*)(S20361C5*), ABISELECT(136,72), "S20361C3");
    check_base_class_offset(lv, (S20361C6*)(S20361C5*), ABISELECT(24,12), "S20361C3");
    check_base_class_offset(lv, (S20361C5*), ABISELECT(24,12), "S20361C3");
    test_class_info(&lv, &cd_S20361C3);
    dp->~S20361C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20361C3(Test_S20361C3, "S20361C3", ABISELECT(216,112));

#else // __cplusplus

extern void _ZN8S20361C3C1Ev();
extern void _ZN8S20361C3D1Ev();
Name_Map name_map_S20361C3[] = {
  NSPAIR(_ZN8S20361C3C1Ev),
  NSPAIR(_ZN8S20361C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20361C4;
extern VTBL_ENTRY _ZTI8S20361C4[];
extern  VTBL_ENTRY _ZTV8S20361C4[];
extern Class_Descriptor cd_S20361C8;
extern VTBL_ENTRY _ZTI8S20361C8[];
extern  VTBL_ENTRY _ZTV8S20361C8[];
extern Class_Descriptor cd_S20361C9;
extern VTBL_ENTRY _ZTI8S20361C9[];
extern  VTBL_ENTRY _ZTV8S20361C9[];
extern Class_Descriptor cd_S20361C7;
extern VTBL_ENTRY _ZTI8S20361C7[];
extern  VTBL_ENTRY _ZTV8S20361C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C7[];
extern Class_Descriptor cd_S20361C6;
extern VTBL_ENTRY _ZTI8S20361C6[];
extern  VTBL_ENTRY _ZTV8S20361C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C6[];
extern Class_Descriptor cd_S20361C5;
extern VTBL_ENTRY _ZTI8S20361C5[];
extern  VTBL_ENTRY _ZTV8S20361C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C5[];
static Base_Class bases_S20361C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20361C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20361C8,    ABISELECT(24,12), //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
    3, //immediately_derived
  0, 1},
  {&cd_S20361C9,    ABISELECT(192,100), //bcp->offset
    48, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20361C7,    ABISELECT(136,72), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20361C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20361C5,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20361C3[];
extern void _ZN8S20361C43v11Ev();
extern void _ZN8S20361C43v12Ev();
extern void _ZN8S20361C43v13Ev();
extern void _ZN8S20361C43v14Ev();
extern void _ZN8S20361C43v15Ev();
extern void _ZN8S20361C43v16Ev();
extern void _ZN8S20361C33v34Ev();
extern void _ZN8S20361C33v35Ev();
extern void _ZN8S20361C33v36Ev();
extern void _ZN8S20361C3D1Ev();
extern void _ZN8S20361C3D0Ev();
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C63v26Ev();
extern void _ZN8S20361C63v27Ev();
extern void _ZN8S20361C63v28Ev();
extern void ABISELECT(_ZThn24_N8S20361C3D1Ev,_ZThn12_N8S20361C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S20361C3D0Ev,_ZThn12_N8S20361C3D0Ev)();
extern void _ZN8S20361C53v29Ev();
extern void _ZN8S20361C53v30Ev();
extern void _ZN8S20361C53v31Ev();
extern void _ZN8S20361C53v32Ev();
extern void _ZN8S20361C53v33Ev();
extern void _ZN8S20361C83v17Ev();
extern void ABISELECT(_ZTv0_n48_N8S20361C3D1Ev,_ZTv0_n24_N8S20361C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S20361C3D1Ev,_ZThn72_N8S20361C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20361C3D0Ev,_ZTv0_n24_N8S20361C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S20361C3D0Ev,_ZThn72_N8S20361C3D0Ev)() __attribute__((weak));
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY vtc_S20361C3[] = {
  ABISELECT(192,100),
  ABISELECT(24,12),
  ABISELECT(136,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C3[0]),
  (VTBL_ENTRY)&_ZN8S20361C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20361C33v34Ev,
  (VTBL_ENTRY)&_ZN8S20361C33v35Ev,
  (VTBL_ENTRY)&_ZN8S20361C33v36Ev,
  (VTBL_ENTRY)&_ZN8S20361C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C3D0Ev,
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20361C3[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v26Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v27Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20361C3D1Ev,_ZThn12_N8S20361C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20361C3D0Ev,_ZThn12_N8S20361C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v33Ev,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S20361C3[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C3D1Ev,_ZTv0_n24_N8S20361C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C3D0Ev,_ZTv0_n24_N8S20361C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S20361C3[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern VTBL_ENTRY _ZTV8S20361C3[];
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C63v26Ev();
extern void _ZN8S20361C63v27Ev();
extern void _ZN8S20361C63v28Ev();
extern void _ZN8S20361C5D1Ev();
extern void _ZN8S20361C5D0Ev();
extern void _ZN8S20361C53v29Ev();
extern void _ZN8S20361C53v30Ev();
extern void _ZN8S20361C53v31Ev();
extern void _ZN8S20361C53v32Ev();
extern void _ZN8S20361C53v33Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C5__8S20361C3[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C5[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v26Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v27Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v28Ev,
  (VTBL_ENTRY)&_ZN8S20361C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v33Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C63v26Ev();
extern void _ZN8S20361C63v27Ev();
extern void _ZN8S20361C63v28Ev();
extern void _ZN8S20361C6D1Ev();
extern void _ZN8S20361C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C68S20361C5__8S20361C3[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v26Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v27Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v28Ev,
  (VTBL_ENTRY)&_ZN8S20361C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C6D0Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S20361C6D1Ev,_ZThn60_N8S20361C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S20361C6D0Ev,_ZThn60_N8S20361C6D0Ev)() __attribute__((weak));
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C7__8S20361C68S20361C5__8S20361C3[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
};
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C9__8S20361C68S20361C5__8S20361C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void ABISELECT(_ZTv0_n48_N8S20361C5D1Ev,_ZTv0_n24_N8S20361C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S20361C5D1Ev,_ZThn60_N8S20361C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20361C5D0Ev,_ZTv0_n24_N8S20361C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S20361C5D0Ev,_ZThn60_N8S20361C5D0Ev)() __attribute__((weak));
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C7__8S20361C5__8S20361C3[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S20361C5[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C5D1Ev,_ZTv0_n24_N8S20361C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C5D0Ev,_ZTv0_n24_N8S20361C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
};
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C9__8S20361C5__8S20361C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20361C5[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C7D1Ev();
extern void _ZN8S20361C7D0Ev();
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C7__8S20361C3[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
};
extern void _ZN8S20361C83v17Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C8__8S20361C7__8S20361C3[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
};
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C9__8S20361C7__8S20361C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
static  VTT_ENTRY vtt_S20361C3[] = {
  {&(_ZTV8S20361C3[5]),  5,60},
  {&(_tg__ZTV8S20361C5__8S20361C3[6]),  6,17},
  {&(_tg__ZTV8S20361C68S20361C5__8S20361C3[6]),  6,12},
  {&(_tg__ZTV8S20361C7__8S20361C68S20361C5__8S20361C3[9]),  9,15},
  {&(_tg__ZTV8S20361C68S20361C5__8S20361C3[6]),  6,12},
  {&(_tg__ZTV8S20361C9__8S20361C68S20361C5__8S20361C3[7]),  7,12},
  {&(_tg__ZTV8S20361C7__8S20361C5__8S20361C3[9]),  9,15},
  {&(_tg__ZTV8S20361C5__8S20361C3[6]),  6,17},
  {&(_tg__ZTV8S20361C9__8S20361C5__8S20361C3[7]),  7,12},
  {&(_ZTV8S20361C3[22]),  22,60},
  {&(_ZTV8S20361C3[42]),  42,60},
  {&(_ZTV8S20361C3[22]),  22,60},
  {&(_ZTV8S20361C3[55]),  55,60},
  {&(_tg__ZTV8S20361C7__8S20361C3[5]),  5,11},
  {&(_tg__ZTV8S20361C8__8S20361C7__8S20361C3[3]),  3,4},
  {&(_tg__ZTV8S20361C9__8S20361C7__8S20361C3[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20361C3[];
extern  VTBL_ENTRY _ZTV8S20361C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C3[];
static VTBL_ENTRY alt_thunk_names183[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C5D0Ev,_ZTv0_n24_N8S20361C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20361C5D0Ev,_ZThn60_N8S20361C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C5D1Ev,_ZTv0_n24_N8S20361C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20361C5D1Ev,_ZThn60_N8S20361C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20361C6D0Ev,_ZThn60_N8S20361C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20361C6D1Ev,_ZThn60_N8S20361C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C3D0Ev,_ZTv0_n24_N8S20361C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20361C3D0Ev,_ZThn72_N8S20361C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C3D1Ev,_ZTv0_n24_N8S20361C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20361C3D1Ev,_ZThn72_N8S20361C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20361C3 = {  "S20361C3", // class name
  bases_S20361C3, 6,
  &(vtc_S20361C3[0]), // expected_vtbl_contents
  &(vtt_S20361C3[0]), // expected_vtt_contents
  ABISELECT(216,112), // object size
  NSPAIRA(_ZTI8S20361C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20361C3),60, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20361C3),16, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names183,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20361C1  : virtual S20361C2 , S20361C3 {
  long double s20361c1f0[18];
  int s20361c1f1:32;
  virtual  ~S20361C1(); // _ZN8S20361C1D2Ev
  virtual void  v1(); // _ZN8S20361C12v1Ev
  virtual void  v2(); // _ZN8S20361C12v2Ev
  virtual void  v3(); // _ZN8S20361C12v3Ev
  virtual void  v4(); // _ZN8S20361C12v4Ev
  virtual void  v5(); // _ZN8S20361C12v5Ev
  virtual void  v6(); // _ZN8S20361C12v6Ev
  S20361C1(); // tgen
};
//SIG(1 S20361C1) C1{ VBC2{ v7 v8 v9 v10} BC3{ BC4{ v11 v12 v13 v14 v15 v16 Fp Fs} BC5{ BC6{ VBC7{ VBC8{ v17} VBC9{ v18 v19 v20 v21 v22 Fp FC8} vd v23 v24 v25 Fp[6]} v26 v27 v28 FL} vd v29 v30 v31 v32 v33 FC4[4]} v34 v35 v36} vd v1 v2 v3 v4 v5 v6 FD[18] Fi:32}


 S20361C1 ::~S20361C1(){ note_dtor("S20361C1", this);}
void  S20361C1 ::v1(){vfunc_called(this, "_ZN8S20361C12v1Ev");}
void  S20361C1 ::v2(){vfunc_called(this, "_ZN8S20361C12v2Ev");}
void  S20361C1 ::v3(){vfunc_called(this, "_ZN8S20361C12v3Ev");}
void  S20361C1 ::v4(){vfunc_called(this, "_ZN8S20361C12v4Ev");}
void  S20361C1 ::v5(){vfunc_called(this, "_ZN8S20361C12v5Ev");}
void  S20361C1 ::v6(){vfunc_called(this, "_ZN8S20361C12v6Ev");}
S20361C1 ::S20361C1(){ note_ctor("S20361C1", this);} // tgen

static void Test_S20361C1()
{
  extern Class_Descriptor cd_S20361C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(34,85)];
    init_test(&cd_S20361C1, buf);
    S20361C1 *dp, &lv = *(dp=new (buf) S20361C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,336), "sizeof(S20361C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20361C1)");
    check_base_class_offset(lv, (S20361C2*), ABISELECT(440,292), "S20361C1");
    check_base_class_offset(lv, (S20361C4*)(S20361C3*), 0, "S20361C1");
    check_base_class_offset(lv, (S20361C8*)(S20361C7*), ABISELECT(24,12), "S20361C1");
    check_base_class_offset(lv, (S20361C9*)(S20361C7*), ABISELECT(504,324), "S20361C1");
    check_base_class_offset(lv, (S20361C7*)(S20361C6*)(S20361C5*)(S20361C3*), ABISELECT(448,296), "S20361C1");
    check_base_class_offset(lv, (S20361C6*)(S20361C5*)(S20361C3*), ABISELECT(24,12), "S20361C1");
    check_base_class_offset(lv, (S20361C5*)(S20361C3*), ABISELECT(24,12), "S20361C1");
    check_base_class_offset(lv, (S20361C3*), 0, "S20361C1");
    check_field_offset(lv, s20361c1f0, ABISELECT(144,72), "S20361C1.s20361c1f0");
    set_bf_and_test(lv, s20361c1f1, ABISELECT(432,288), 0, 32, 1, "S20361C1");
    set_bf_and_test(lv, s20361c1f1, ABISELECT(432,288), 0, 32, hide_sll(1LL<<31), "S20361C1");
    test_class_info(&lv, &cd_S20361C1);
    dp->~S20361C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20361C1(Test_S20361C1, "S20361C1", ABISELECT(528,336));

#else // __cplusplus

extern void _ZN8S20361C1C1Ev();
extern void _ZN8S20361C1D2Ev();
Name_Map name_map_S20361C1[] = {
  NSPAIR(_ZN8S20361C1C1Ev),
  NSPAIR(_ZN8S20361C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20361C2;
extern VTBL_ENTRY _ZTI8S20361C2[];
extern  VTBL_ENTRY _ZTV8S20361C2[];
extern Class_Descriptor cd_S20361C4;
extern VTBL_ENTRY _ZTI8S20361C4[];
extern  VTBL_ENTRY _ZTV8S20361C4[];
extern Class_Descriptor cd_S20361C8;
extern VTBL_ENTRY _ZTI8S20361C8[];
extern  VTBL_ENTRY _ZTV8S20361C8[];
extern Class_Descriptor cd_S20361C9;
extern VTBL_ENTRY _ZTI8S20361C9[];
extern  VTBL_ENTRY _ZTV8S20361C9[];
extern Class_Descriptor cd_S20361C7;
extern VTBL_ENTRY _ZTI8S20361C7[];
extern  VTBL_ENTRY _ZTV8S20361C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C7[];
extern Class_Descriptor cd_S20361C6;
extern VTBL_ENTRY _ZTI8S20361C6[];
extern  VTBL_ENTRY _ZTV8S20361C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C6[];
extern Class_Descriptor cd_S20361C5;
extern VTBL_ENTRY _ZTI8S20361C5[];
extern  VTBL_ENTRY _ZTV8S20361C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C5[];
extern Class_Descriptor cd_S20361C3;
extern VTBL_ENTRY _ZTI8S20361C3[];
extern  VTBL_ENTRY _ZTV8S20361C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C3[];
static Base_Class bases_S20361C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20361C2,    ABISELECT(440,292), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S20361C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20361C8,    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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20361C9,    ABISELECT(504,324), //bcp->offset
    65, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20361C7,    ABISELECT(448,296), //bcp->offset
    50, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20361C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20361C5,    ABISELECT(24,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20361C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20361C1[];
extern void _ZN8S20361C43v11Ev();
extern void _ZN8S20361C43v12Ev();
extern void _ZN8S20361C43v13Ev();
extern void _ZN8S20361C43v14Ev();
extern void _ZN8S20361C43v15Ev();
extern void _ZN8S20361C43v16Ev();
extern void _ZN8S20361C33v34Ev();
extern void _ZN8S20361C33v35Ev();
extern void _ZN8S20361C33v36Ev();
extern void _ZN8S20361C1D1Ev();
extern void _ZN8S20361C1D0Ev();
extern void _ZN8S20361C12v1Ev();
extern void _ZN8S20361C12v2Ev();
extern void _ZN8S20361C12v3Ev();
extern void _ZN8S20361C12v4Ev();
extern void _ZN8S20361C12v5Ev();
extern void _ZN8S20361C12v6Ev();
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C63v26Ev();
extern void _ZN8S20361C63v27Ev();
extern void _ZN8S20361C63v28Ev();
extern void ABISELECT(_ZThn24_N8S20361C1D1Ev,_ZThn12_N8S20361C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S20361C1D0Ev,_ZThn12_N8S20361C1D0Ev)();
extern void _ZN8S20361C53v29Ev();
extern void _ZN8S20361C53v30Ev();
extern void _ZN8S20361C53v31Ev();
extern void _ZN8S20361C53v32Ev();
extern void _ZN8S20361C53v33Ev();
extern void _ZN8S20361C22v7Ev();
extern void _ZN8S20361C22v8Ev();
extern void _ZN8S20361C22v9Ev();
extern void _ZN8S20361C23v10Ev();
extern void _ZN8S20361C83v17Ev();
extern void ABISELECT(_ZTv0_n48_N8S20361C1D1Ev,_ZTv0_n24_N8S20361C1D1Ev)();
extern void ABISELECT(_ZThn448_N8S20361C1D1Ev,_ZThn296_N8S20361C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20361C1D0Ev,_ZTv0_n24_N8S20361C1D0Ev)();
extern void ABISELECT(_ZThn448_N8S20361C1D0Ev,_ZThn296_N8S20361C1D0Ev)() __attribute__((weak));
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY vtc_S20361C1[] = {
  ABISELECT(440,292),
  ABISELECT(504,324),
  ABISELECT(24,12),
  ABISELECT(448,296),
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C1[0]),
  (VTBL_ENTRY)&_ZN8S20361C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20361C33v34Ev,
  (VTBL_ENTRY)&_ZN8S20361C33v35Ev,
  (VTBL_ENTRY)&_ZN8S20361C33v36Ev,
  (VTBL_ENTRY)&_ZN8S20361C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20361C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20361C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20361C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20361C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20361C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20361C12v6Ev,
  ABISELECT(480,312),
  0,
  ABISELECT(424,284),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20361C1[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v26Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v27Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20361C1D1Ev,_ZThn12_N8S20361C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20361C1D0Ev,_ZThn12_N8S20361C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v33Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-440,-292),
  (VTBL_ENTRY)&(_ZTI8S20361C1[0]),
  (VTBL_ENTRY)&_ZN8S20361C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20361C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20361C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20361C23v10Ev,
  0,
  0,
  0,
  ABISELECT(-448,-296),
  ABISELECT(56,28),
  ABISELECT(-424,-284),
  ABISELECT(-424,-284),
  ABISELECT(-448,-296),
  (VTBL_ENTRY)&(_ZTI8S20361C1[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C1D1Ev,_ZTv0_n24_N8S20361C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C1D0Ev,_ZTv0_n24_N8S20361C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-504,-324),
  (VTBL_ENTRY)&(_ZTI8S20361C1[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern VTBL_ENTRY _ZTV8S20361C1[];
extern void _ZN8S20361C43v11Ev();
extern void _ZN8S20361C43v12Ev();
extern void _ZN8S20361C43v13Ev();
extern void _ZN8S20361C43v14Ev();
extern void _ZN8S20361C43v15Ev();
extern void _ZN8S20361C43v16Ev();
extern void _ZN8S20361C33v34Ev();
extern void _ZN8S20361C33v35Ev();
extern void _ZN8S20361C33v36Ev();
extern void _ZN8S20361C3D1Ev();
extern void _ZN8S20361C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C3__8S20361C1[] = {
  ABISELECT(504,324),
  ABISELECT(24,12),
  ABISELECT(448,296),
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C3[0]),
  (VTBL_ENTRY)&_ZN8S20361C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20361C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20361C33v34Ev,
  (VTBL_ENTRY)&_ZN8S20361C33v35Ev,
  (VTBL_ENTRY)&_ZN8S20361C33v36Ev,
  (VTBL_ENTRY)&_ZN8S20361C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C3D0Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C63v26Ev();
extern void _ZN8S20361C63v27Ev();
extern void _ZN8S20361C63v28Ev();
extern void _ZN8S20361C5D1Ev();
extern void _ZN8S20361C5D0Ev();
extern void _ZN8S20361C53v29Ev();
extern void _ZN8S20361C53v30Ev();
extern void _ZN8S20361C53v31Ev();
extern void _ZN8S20361C53v32Ev();
extern void _ZN8S20361C53v33Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C58S20361C3__8S20361C1[] = {
  ABISELECT(480,312),
  0,
  ABISELECT(424,284),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C5[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v26Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v27Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v28Ev,
  (VTBL_ENTRY)&_ZN8S20361C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v33Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C63v26Ev();
extern void _ZN8S20361C63v27Ev();
extern void _ZN8S20361C63v28Ev();
extern void _ZN8S20361C6D1Ev();
extern void _ZN8S20361C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C68S20361C58S20361C3__8S20361C1[] = {
  ABISELECT(480,312),
  0,
  ABISELECT(424,284),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v26Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v27Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v28Ev,
  (VTBL_ENTRY)&_ZN8S20361C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C6D0Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev)();
extern void ABISELECT(_ZThn424_N8S20361C6D1Ev,_ZThn284_N8S20361C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev)();
extern void ABISELECT(_ZThn424_N8S20361C6D0Ev,_ZThn284_N8S20361C6D0Ev)() __attribute__((weak));
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C7__8S20361C68S20361C58S20361C3__8S20361C1[] = {
  0,
  0,
  0,
  ABISELECT(-424,-284),
  ABISELECT(56,28),
  ABISELECT(-424,-284),
  ABISELECT(-424,-284),
  ABISELECT(-424,-284),
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
};
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C9__8S20361C68S20361C58S20361C3__8S20361C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-312),
  (VTBL_ENTRY)&(_ZTI8S20361C6[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void ABISELECT(_ZTv0_n48_N8S20361C5D1Ev,_ZTv0_n24_N8S20361C5D1Ev)();
extern void ABISELECT(_ZThn424_N8S20361C5D1Ev,_ZThn284_N8S20361C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20361C5D0Ev,_ZTv0_n24_N8S20361C5D0Ev)();
extern void ABISELECT(_ZThn424_N8S20361C5D0Ev,_ZThn284_N8S20361C5D0Ev)() __attribute__((weak));
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C7__8S20361C58S20361C3__8S20361C1[] = {
  0,
  0,
  0,
  ABISELECT(-424,-284),
  ABISELECT(56,28),
  ABISELECT(-424,-284),
  ABISELECT(-424,-284),
  ABISELECT(-424,-284),
  (VTBL_ENTRY)&(_ZTI8S20361C5[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C5D1Ev,_ZTv0_n24_N8S20361C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C5D0Ev,_ZTv0_n24_N8S20361C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
};
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C9__8S20361C58S20361C3__8S20361C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-312),
  (VTBL_ENTRY)&(_ZTI8S20361C5[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C63v26Ev();
extern void _ZN8S20361C63v27Ev();
extern void _ZN8S20361C63v28Ev();
extern void ABISELECT(_ZThn24_N8S20361C3D1Ev,_ZThn12_N8S20361C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S20361C3D0Ev,_ZThn12_N8S20361C3D0Ev)();
extern void _ZN8S20361C53v29Ev();
extern void _ZN8S20361C53v30Ev();
extern void _ZN8S20361C53v31Ev();
extern void _ZN8S20361C53v32Ev();
extern void _ZN8S20361C53v33Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C5__8S20361C3__8S20361C1[] = {
  ABISELECT(480,312),
  0,
  ABISELECT(424,284),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20361C3[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v26Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v27Ev,
  (VTBL_ENTRY)&_ZN8S20361C63v28Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20361C3D1Ev,_ZThn12_N8S20361C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20361C3D0Ev,_ZThn12_N8S20361C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v30Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v31Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v32Ev,
  (VTBL_ENTRY)&_ZN8S20361C53v33Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void ABISELECT(_ZTv0_n48_N8S20361C3D1Ev,_ZTv0_n24_N8S20361C3D1Ev)();
extern void ABISELECT(_ZThn448_N8S20361C3D1Ev,_ZThn296_N8S20361C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20361C3D0Ev,_ZTv0_n24_N8S20361C3D0Ev)();
extern void ABISELECT(_ZThn448_N8S20361C3D0Ev,_ZThn296_N8S20361C3D0Ev)() __attribute__((weak));
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C7__8S20361C3__8S20361C1[] = {
  0,
  0,
  0,
  ABISELECT(-448,-296),
  ABISELECT(56,28),
  ABISELECT(-424,-284),
  ABISELECT(-424,-284),
  ABISELECT(-448,-296),
  (VTBL_ENTRY)&(_ZTI8S20361C3[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C3D1Ev,_ZTv0_n24_N8S20361C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20361C3D0Ev,_ZTv0_n24_N8S20361C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
};
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C9__8S20361C3__8S20361C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-504,-324),
  (VTBL_ENTRY)&(_ZTI8S20361C3[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
extern void _ZN8S20361C83v17Ev();
extern void _ZN8S20361C7D1Ev();
extern void _ZN8S20361C7D0Ev();
extern void _ZN8S20361C73v23Ev();
extern void _ZN8S20361C73v24Ev();
extern void _ZN8S20361C73v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C7__8S20361C1[] = {
  ABISELECT(56,28),
  ABISELECT(-424,-284),
  ABISELECT(-424,-284),
  0,
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20361C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20361C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20361C73v25Ev,
};
extern void _ZN8S20361C83v17Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C8__8S20361C7__8S20361C1[] = {
  0,
  ABISELECT(424,284),
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C83v17Ev,
};
extern void _ZN8S20361C93v18Ev();
extern void _ZN8S20361C93v19Ev();
extern void _ZN8S20361C93v20Ev();
extern void _ZN8S20361C93v21Ev();
extern void _ZN8S20361C93v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20361C9__8S20361C7__8S20361C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20361C7[0]),
  (VTBL_ENTRY)&_ZN8S20361C93v18Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v19Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20361C93v22Ev,
};
static  VTT_ENTRY vtt_S20361C1[] = {
  {&(_ZTV8S20361C1[6]),  6,77},
  {&(_tg__ZTV8S20361C3__8S20361C1[5]),  5,16},
  {&(_tg__ZTV8S20361C58S20361C3__8S20361C1[6]),  6,17},
  {&(_tg__ZTV8S20361C68S20361C58S20361C3__8S20361C1[6]),  6,12},
  {&(_tg__ZTV8S20361C7__8S20361C68S20361C58S20361C3__8S20361C1[9]),  9,15},
  {&(_tg__ZTV8S20361C68S20361C58S20361C3__8S20361C1[6]),  6,12},
  {&(_tg__ZTV8S20361C9__8S20361C68S20361C58S20361C3__8S20361C1[7]),  7,12},
  {&(_tg__ZTV8S20361C7__8S20361C58S20361C3__8S20361C1[9]),  9,15},
  {&(_tg__ZTV8S20361C58S20361C3__8S20361C1[6]),  6,17},
  {&(_tg__ZTV8S20361C9__8S20361C58S20361C3__8S20361C1[7]),  7,12},
  {&(_tg__ZTV8S20361C5__8S20361C3__8S20361C1[6]),  6,17},
  {&(_tg__ZTV8S20361C7__8S20361C3__8S20361C1[9]),  9,15},
  {&(_tg__ZTV8S20361C5__8S20361C3__8S20361C1[6]),  6,17},
  {&(_tg__ZTV8S20361C9__8S20361C3__8S20361C1[7]),  7,12},
  {&(_ZTV8S20361C1[46]),  46,77},
  {&(_ZTV8S20361C1[29]),  29,77},
  {&(_ZTV8S20361C1[59]),  59,77},
  {&(_ZTV8S20361C1[29]),  29,77},
  {&(_ZTV8S20361C1[72]),  72,77},
  {&(_tg__ZTV8S20361C7__8S20361C1[5]),  5,11},
  {&(_tg__ZTV8S20361C8__8S20361C7__8S20361C1[3]),  3,4},
  {&(_tg__ZTV8S20361C9__8S20361C7__8S20361C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20361C1[];
extern  VTBL_ENTRY _ZTV8S20361C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20361C1[];
static VTBL_ENTRY alt_thunk_names184[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C3D0Ev,_ZTv0_n24_N8S20361C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20361C3D0Ev,_ZThn296_N8S20361C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C3D1Ev,_ZTv0_n24_N8S20361C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20361C3D1Ev,_ZThn296_N8S20361C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C5D0Ev,_ZTv0_n24_N8S20361C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S20361C5D0Ev,_ZThn284_N8S20361C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C5D1Ev,_ZTv0_n24_N8S20361C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S20361C5D1Ev,_ZThn284_N8S20361C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C6D0Ev,_ZTv0_n24_N8S20361C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S20361C6D0Ev,_ZThn284_N8S20361C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C6D1Ev,_ZTv0_n24_N8S20361C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S20361C6D1Ev,_ZThn284_N8S20361C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C1D0Ev,_ZTv0_n24_N8S20361C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20361C1D0Ev,_ZThn296_N8S20361C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20361C1D1Ev,_ZTv0_n24_N8S20361C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20361C1D1Ev,_ZThn296_N8S20361C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20361C1 = {  "S20361C1", // class name
  bases_S20361C1, 8,
  &(vtc_S20361C1[0]), // expected_vtbl_contents
  &(vtt_S20361C1[0]), // expected_vtt_contents
  ABISELECT(528,336), // object size
  NSPAIRA(_ZTI8S20361C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20361C1),77, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20361C1),22, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names184,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5331C3  {
  virtual  ~S5331C3(); // _ZN7S5331C3D1Ev
  virtual void  v6(); // _ZN7S5331C32v6Ev
  virtual void  v7(); // _ZN7S5331C32v7Ev
  virtual void  v8(); // _ZN7S5331C32v8Ev
  virtual void  v9(); // _ZN7S5331C32v9Ev
  virtual void  v10(); // _ZN7S5331C33v10Ev
  virtual void  v11(); // _ZN7S5331C33v11Ev
  virtual void  v12(); // _ZN7S5331C33v12Ev
  virtual void  v13(); // _ZN7S5331C33v13Ev
  virtual void  v14(); // _ZN7S5331C33v14Ev
  virtual void  v15(); // _ZN7S5331C33v15Ev
  virtual void  v16(); // _ZN7S5331C33v16Ev
  virtual void  v17(); // _ZN7S5331C33v17Ev
  virtual void  v18(); // _ZN7S5331C33v18Ev
  virtual void  v19(); // _ZN7S5331C33v19Ev
  virtual void  v20(); // _ZN7S5331C33v20Ev
  virtual void  v21(); // _ZN7S5331C33v21Ev
  virtual void  v22(); // _ZN7S5331C33v22Ev
  virtual void  v23(); // _ZN7S5331C33v23Ev
  virtual void  v24(); // _ZN7S5331C33v24Ev
  virtual void  v25(); // _ZN7S5331C33v25Ev
  virtual void  v26(); // _ZN7S5331C33v26Ev
  S5331C3(); // tgen
};
//SIG(-1 S5331C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21}


 S5331C3 ::~S5331C3(){ note_dtor("S5331C3", this);}
void  S5331C3 ::v6(){vfunc_called(this, "_ZN7S5331C32v6Ev");}
void  S5331C3 ::v7(){vfunc_called(this, "_ZN7S5331C32v7Ev");}
void  S5331C3 ::v8(){vfunc_called(this, "_ZN7S5331C32v8Ev");}
void  S5331C3 ::v9(){vfunc_called(this, "_ZN7S5331C32v9Ev");}
void  S5331C3 ::v10(){vfunc_called(this, "_ZN7S5331C33v10Ev");}
void  S5331C3 ::v11(){vfunc_called(this, "_ZN7S5331C33v11Ev");}
void  S5331C3 ::v12(){vfunc_called(this, "_ZN7S5331C33v12Ev");}
void  S5331C3 ::v13(){vfunc_called(this, "_ZN7S5331C33v13Ev");}
void  S5331C3 ::v14(){vfunc_called(this, "_ZN7S5331C33v14Ev");}
void  S5331C3 ::v15(){vfunc_called(this, "_ZN7S5331C33v15Ev");}
void  S5331C3 ::v16(){vfunc_called(this, "_ZN7S5331C33v16Ev");}
void  S5331C3 ::v17(){vfunc_called(this, "_ZN7S5331C33v17Ev");}
void  S5331C3 ::v18(){vfunc_called(this, "_ZN7S5331C33v18Ev");}
void  S5331C3 ::v19(){vfunc_called(this, "_ZN7S5331C33v19Ev");}
void  S5331C3 ::v20(){vfunc_called(this, "_ZN7S5331C33v20Ev");}
void  S5331C3 ::v21(){vfunc_called(this, "_ZN7S5331C33v21Ev");}
void  S5331C3 ::v22(){vfunc_called(this, "_ZN7S5331C33v22Ev");}
void  S5331C3 ::v23(){vfunc_called(this, "_ZN7S5331C33v23Ev");}
void  S5331C3 ::v24(){vfunc_called(this, "_ZN7S5331C33v24Ev");}
void  S5331C3 ::v25(){vfunc_called(this, "_ZN7S5331C33v25Ev");}
void  S5331C3 ::v26(){vfunc_called(this, "_ZN7S5331C33v26Ev");}
S5331C3 ::S5331C3(){ note_ctor("S5331C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S5331C3C1Ev();
extern void _ZN7S5331C3D1Ev();
Name_Map name_map_S5331C3[] = {
  NSPAIR(_ZN7S5331C3C1Ev),
  NSPAIR(_ZN7S5331C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5331C3[];
extern void _ZN7S5331C3D1Ev();
extern void _ZN7S5331C3D0Ev();
extern void _ZN7S5331C32v6Ev();
extern void _ZN7S5331C32v7Ev();
extern void _ZN7S5331C32v8Ev();
extern void _ZN7S5331C32v9Ev();
extern void _ZN7S5331C33v10Ev();
extern void _ZN7S5331C33v11Ev();
extern void _ZN7S5331C33v12Ev();
extern void _ZN7S5331C33v13Ev();
extern void _ZN7S5331C33v14Ev();
extern void _ZN7S5331C33v15Ev();
extern void _ZN7S5331C33v16Ev();
extern void _ZN7S5331C33v17Ev();
extern void _ZN7S5331C33v18Ev();
extern void _ZN7S5331C33v19Ev();
extern void _ZN7S5331C33v20Ev();
extern void _ZN7S5331C33v21Ev();
extern void _ZN7S5331C33v22Ev();
extern void _ZN7S5331C33v23Ev();
extern void _ZN7S5331C33v24Ev();
extern void _ZN7S5331C33v25Ev();
extern void _ZN7S5331C33v26Ev();
static  VTBL_ENTRY vtc_S5331C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5331C3[0]),
  (VTBL_ENTRY)&_ZN7S5331C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5331C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v25Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v26Ev,
};
extern VTBL_ENTRY _ZTI7S5331C3[];
extern  VTBL_ENTRY _ZTV7S5331C3[];
Class_Descriptor cd_S5331C3 = {  "S5331C3", // class name
  0,0,//no base classes
  &(vtc_S5331C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S5331C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5331C3),25, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5331C2  : S5331C3 {
  void *s5331c2f0;
  ::S11969C23_nt s5331c2f1;
  virtual void  v27(); // _ZN7S5331C23v27Ev
  virtual void  v28(); // _ZN7S5331C23v28Ev
  virtual void  v29(); // _ZN7S5331C23v29Ev
  virtual void  v30(); // _ZN7S5331C23v30Ev
  virtual void  v31(); // _ZN7S5331C23v31Ev
  virtual void  v32(); // _ZN7S5331C23v32Ev
  virtual void  v33(); // _ZN7S5331C23v33Ev
  virtual void  v34(); // _ZN7S5331C23v34Ev
  virtual void  v35(); // _ZN7S5331C23v35Ev
  virtual void  v36(); // _ZN7S5331C23v36Ev
  virtual void  v37(); // _ZN7S5331C23v37Ev
  virtual void  v38(); // _ZN7S5331C23v38Ev
  virtual void  v39(); // _ZN7S5331C23v39Ev
  virtual void  v40(); // _ZN7S5331C23v40Ev
  virtual void  v41(); // _ZN7S5331C23v41Ev
  virtual void  v42(); // _ZN7S5331C23v42Ev
  virtual void  v43(); // _ZN7S5331C23v43Ev
  virtual void  v44(); // _ZN7S5331C23v44Ev
  virtual void  v45(); // _ZN7S5331C23v45Ev
  virtual void  v46(); // _ZN7S5331C23v46Ev
  virtual void  v47(); // _ZN7S5331C23v47Ev
  virtual void  v48(); // _ZN7S5331C23v48Ev
  virtual void  v49(); // _ZN7S5331C23v49Ev
  ~S5331C2(); // tgen
  S5331C2(); // tgen
};
//SIG(-1 S5331C2) C1{ BC2{ vd v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp FC3{ m Fp}}


void  S5331C2 ::v27(){vfunc_called(this, "_ZN7S5331C23v27Ev");}
void  S5331C2 ::v28(){vfunc_called(this, "_ZN7S5331C23v28Ev");}
void  S5331C2 ::v29(){vfunc_called(this, "_ZN7S5331C23v29Ev");}
void  S5331C2 ::v30(){vfunc_called(this, "_ZN7S5331C23v30Ev");}
void  S5331C2 ::v31(){vfunc_called(this, "_ZN7S5331C23v31Ev");}
void  S5331C2 ::v32(){vfunc_called(this, "_ZN7S5331C23v32Ev");}
void  S5331C2 ::v33(){vfunc_called(this, "_ZN7S5331C23v33Ev");}
void  S5331C2 ::v34(){vfunc_called(this, "_ZN7S5331C23v34Ev");}
void  S5331C2 ::v35(){vfunc_called(this, "_ZN7S5331C23v35Ev");}
void  S5331C2 ::v36(){vfunc_called(this, "_ZN7S5331C23v36Ev");}
void  S5331C2 ::v37(){vfunc_called(this, "_ZN7S5331C23v37Ev");}
void  S5331C2 ::v38(){vfunc_called(this, "_ZN7S5331C23v38Ev");}
void  S5331C2 ::v39(){vfunc_called(this, "_ZN7S5331C23v39Ev");}
void  S5331C2 ::v40(){vfunc_called(this, "_ZN7S5331C23v40Ev");}
void  S5331C2 ::v41(){vfunc_called(this, "_ZN7S5331C23v41Ev");}
void  S5331C2 ::v42(){vfunc_called(this, "_ZN7S5331C23v42Ev");}
void  S5331C2 ::v43(){vfunc_called(this, "_ZN7S5331C23v43Ev");}
void  S5331C2 ::v44(){vfunc_called(this, "_ZN7S5331C23v44Ev");}
void  S5331C2 ::v45(){vfunc_called(this, "_ZN7S5331C23v45Ev");}
void  S5331C2 ::v46(){vfunc_called(this, "_ZN7S5331C23v46Ev");}
void  S5331C2 ::v47(){vfunc_called(this, "_ZN7S5331C23v47Ev");}
void  S5331C2 ::v48(){vfunc_called(this, "_ZN7S5331C23v48Ev");}
void  S5331C2 ::v49(){vfunc_called(this, "_ZN7S5331C23v49Ev");}
S5331C2 ::~S5331C2(){ note_dtor("S5331C2", this);} // tgen
S5331C2 ::S5331C2(){ note_ctor("S5331C2", this);} // tgen

static void Test_S5331C2()
{
  extern Class_Descriptor cd_S5331C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S5331C2, buf);
    S5331C2 *dp, &lv = *(dp=new (buf) S5331C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S5331C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5331C2)");
    check_base_class_offset(lv, (S5331C3*), 0, "S5331C2");
    check_field_offset(lv, s5331c2f0, ABISELECT(8,4), "S5331C2.s5331c2f0");
    check_field_offset(lv, s5331c2f1, ABISELECT(16,8), "S5331C2.s5331c2f1");
    test_class_info(&lv, &cd_S5331C2);
    dp->~S5331C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5331C2(Test_S5331C2, "S5331C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S5331C2C1Ev();
extern void _ZN7S5331C2D1Ev();
Name_Map name_map_S5331C2[] = {
  NSPAIR(_ZN7S5331C2C1Ev),
  NSPAIR(_ZN7S5331C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5331C3;
extern VTBL_ENTRY _ZTI7S5331C3[];
extern  VTBL_ENTRY _ZTV7S5331C3[];
static Base_Class bases_S5331C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5331C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5331C2[];
extern void _ZN7S5331C2D1Ev();
extern void _ZN7S5331C2D0Ev();
extern void _ZN7S5331C32v6Ev();
extern void _ZN7S5331C32v7Ev();
extern void _ZN7S5331C32v8Ev();
extern void _ZN7S5331C32v9Ev();
extern void _ZN7S5331C33v10Ev();
extern void _ZN7S5331C33v11Ev();
extern void _ZN7S5331C33v12Ev();
extern void _ZN7S5331C33v13Ev();
extern void _ZN7S5331C33v14Ev();
extern void _ZN7S5331C33v15Ev();
extern void _ZN7S5331C33v16Ev();
extern void _ZN7S5331C33v17Ev();
extern void _ZN7S5331C33v18Ev();
extern void _ZN7S5331C33v19Ev();
extern void _ZN7S5331C33v20Ev();
extern void _ZN7S5331C33v21Ev();
extern void _ZN7S5331C33v22Ev();
extern void _ZN7S5331C33v23Ev();
extern void _ZN7S5331C33v24Ev();
extern void _ZN7S5331C33v25Ev();
extern void _ZN7S5331C33v26Ev();
extern void _ZN7S5331C23v27Ev();
extern void _ZN7S5331C23v28Ev();
extern void _ZN7S5331C23v29Ev();
extern void _ZN7S5331C23v30Ev();
extern void _ZN7S5331C23v31Ev();
extern void _ZN7S5331C23v32Ev();
extern void _ZN7S5331C23v33Ev();
extern void _ZN7S5331C23v34Ev();
extern void _ZN7S5331C23v35Ev();
extern void _ZN7S5331C23v36Ev();
extern void _ZN7S5331C23v37Ev();
extern void _ZN7S5331C23v38Ev();
extern void _ZN7S5331C23v39Ev();
extern void _ZN7S5331C23v40Ev();
extern void _ZN7S5331C23v41Ev();
extern void _ZN7S5331C23v42Ev();
extern void _ZN7S5331C23v43Ev();
extern void _ZN7S5331C23v44Ev();
extern void _ZN7S5331C23v45Ev();
extern void _ZN7S5331C23v46Ev();
extern void _ZN7S5331C23v47Ev();
extern void _ZN7S5331C23v48Ev();
extern void _ZN7S5331C23v49Ev();
static  VTBL_ENTRY vtc_S5331C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5331C2[0]),
  (VTBL_ENTRY)&_ZN7S5331C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5331C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v25Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v26Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v35Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v40Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v41Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v42Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v43Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v44Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v45Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v46Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v47Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v48Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v49Ev,
};
extern VTBL_ENTRY _ZTI7S5331C2[];
extern  VTBL_ENTRY _ZTV7S5331C2[];
Class_Descriptor cd_S5331C2 = {  "S5331C2", // class name
  bases_S5331C2, 1,
  &(vtc_S5331C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S5331C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5331C2),48, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5331C1  : S5331C2 {
  int s5331c1f0;
  void *s5331c1f1;
  virtual  ~S5331C1(); // _ZN7S5331C1D1Ev
  virtual void  v1(); // _ZN7S5331C12v1Ev
  virtual void  v2(); // _ZN7S5331C12v2Ev
  virtual void  v3(); // _ZN7S5331C12v3Ev
  virtual void  v4(); // _ZN7S5331C12v4Ev
  virtual void  v5(); // _ZN7S5331C12v5Ev
  S5331C1(); // tgen
};
//SIG(1 S5331C1) C1{ BC2{ BC3{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26} v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 Fp FC4{ m Fp}} vd v1 v2 v3 v4 v5 Fi Fp}


 S5331C1 ::~S5331C1(){ note_dtor("S5331C1", this);}
void  S5331C1 ::v1(){vfunc_called(this, "_ZN7S5331C12v1Ev");}
void  S5331C1 ::v2(){vfunc_called(this, "_ZN7S5331C12v2Ev");}
void  S5331C1 ::v3(){vfunc_called(this, "_ZN7S5331C12v3Ev");}
void  S5331C1 ::v4(){vfunc_called(this, "_ZN7S5331C12v4Ev");}
void  S5331C1 ::v5(){vfunc_called(this, "_ZN7S5331C12v5Ev");}
S5331C1 ::S5331C1(){ note_ctor("S5331C1", this);} // tgen

static void Test_S5331C1()
{
  extern Class_Descriptor cd_S5331C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S5331C1, buf);
    S5331C1 *dp, &lv = *(dp=new (buf) S5331C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S5331C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5331C1)");
    check_base_class_offset(lv, (S5331C3*)(S5331C2*), 0, "S5331C1");
    check_base_class_offset(lv, (S5331C2*), 0, "S5331C1");
    check_field_offset(lv, s5331c1f0, ABISELECT(24,12), "S5331C1.s5331c1f0");
    check_field_offset(lv, s5331c1f1, ABISELECT(32,16), "S5331C1.s5331c1f1");
    test_class_info(&lv, &cd_S5331C1);
    dp->~S5331C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5331C1(Test_S5331C1, "S5331C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S5331C1C1Ev();
extern void _ZN7S5331C1D1Ev();
Name_Map name_map_S5331C1[] = {
  NSPAIR(_ZN7S5331C1C1Ev),
  NSPAIR(_ZN7S5331C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5331C3;
extern VTBL_ENTRY _ZTI7S5331C3[];
extern  VTBL_ENTRY _ZTV7S5331C3[];
extern Class_Descriptor cd_S5331C2;
extern VTBL_ENTRY _ZTI7S5331C2[];
extern  VTBL_ENTRY _ZTV7S5331C2[];
static Base_Class bases_S5331C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5331C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5331C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5331C1[];
extern void _ZN7S5331C1D1Ev();
extern void _ZN7S5331C1D0Ev();
extern void _ZN7S5331C32v6Ev();
extern void _ZN7S5331C32v7Ev();
extern void _ZN7S5331C32v8Ev();
extern void _ZN7S5331C32v9Ev();
extern void _ZN7S5331C33v10Ev();
extern void _ZN7S5331C33v11Ev();
extern void _ZN7S5331C33v12Ev();
extern void _ZN7S5331C33v13Ev();
extern void _ZN7S5331C33v14Ev();
extern void _ZN7S5331C33v15Ev();
extern void _ZN7S5331C33v16Ev();
extern void _ZN7S5331C33v17Ev();
extern void _ZN7S5331C33v18Ev();
extern void _ZN7S5331C33v19Ev();
extern void _ZN7S5331C33v20Ev();
extern void _ZN7S5331C33v21Ev();
extern void _ZN7S5331C33v22Ev();
extern void _ZN7S5331C33v23Ev();
extern void _ZN7S5331C33v24Ev();
extern void _ZN7S5331C33v25Ev();
extern void _ZN7S5331C33v26Ev();
extern void _ZN7S5331C23v27Ev();
extern void _ZN7S5331C23v28Ev();
extern void _ZN7S5331C23v29Ev();
extern void _ZN7S5331C23v30Ev();
extern void _ZN7S5331C23v31Ev();
extern void _ZN7S5331C23v32Ev();
extern void _ZN7S5331C23v33Ev();
extern void _ZN7S5331C23v34Ev();
extern void _ZN7S5331C23v35Ev();
extern void _ZN7S5331C23v36Ev();
extern void _ZN7S5331C23v37Ev();
extern void _ZN7S5331C23v38Ev();
extern void _ZN7S5331C23v39Ev();
extern void _ZN7S5331C23v40Ev();
extern void _ZN7S5331C23v41Ev();
extern void _ZN7S5331C23v42Ev();
extern void _ZN7S5331C23v43Ev();
extern void _ZN7S5331C23v44Ev();
extern void _ZN7S5331C23v45Ev();
extern void _ZN7S5331C23v46Ev();
extern void _ZN7S5331C23v47Ev();
extern void _ZN7S5331C23v48Ev();
extern void _ZN7S5331C23v49Ev();
extern void _ZN7S5331C12v1Ev();
extern void _ZN7S5331C12v2Ev();
extern void _ZN7S5331C12v3Ev();
extern void _ZN7S5331C12v4Ev();
extern void _ZN7S5331C12v5Ev();
static  VTBL_ENTRY vtc_S5331C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5331C1[0]),
  (VTBL_ENTRY)&_ZN7S5331C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5331C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5331C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v25Ev,
  (VTBL_ENTRY)&_ZN7S5331C33v26Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v35Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v40Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v41Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v42Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v43Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v44Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v45Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v46Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v47Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v48Ev,
  (VTBL_ENTRY)&_ZN7S5331C23v49Ev,
  (VTBL_ENTRY)&_ZN7S5331C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5331C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5331C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5331C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5331C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S5331C1[];
extern  VTBL_ENTRY _ZTV7S5331C1[];
Class_Descriptor cd_S5331C1 = {  "S5331C1", // class name
  bases_S5331C1, 2,
  &(vtc_S5331C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S5331C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5331C1),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  S20974C5  {
  int s20974c5f0;
  virtual void  v5(); // _ZN8S20974C52v5Ev
  virtual void  v6(); // _ZN8S20974C52v6Ev
  virtual void  v7(); // _ZN8S20974C52v7Ev
  virtual void  v8(); // _ZN8S20974C52v8Ev
  virtual void  v9(); // _ZN8S20974C52v9Ev
  ~S20974C5(); // tgen
  S20974C5(); // tgen
};
//SIG(-1 S20974C5) C1{ v1 v2 v3 v4 v5 Fi}


void  S20974C5 ::v5(){vfunc_called(this, "_ZN8S20974C52v5Ev");}
void  S20974C5 ::v6(){vfunc_called(this, "_ZN8S20974C52v6Ev");}
void  S20974C5 ::v7(){vfunc_called(this, "_ZN8S20974C52v7Ev");}
void  S20974C5 ::v8(){vfunc_called(this, "_ZN8S20974C52v8Ev");}
void  S20974C5 ::v9(){vfunc_called(this, "_ZN8S20974C52v9Ev");}
S20974C5 ::~S20974C5(){ note_dtor("S20974C5", this);} // tgen
S20974C5 ::S20974C5(){ note_ctor("S20974C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20974C5C1Ev();
extern void _ZN8S20974C5D1Ev();
Name_Map name_map_S20974C5[] = {
  NSPAIR(_ZN8S20974C5C1Ev),
  NSPAIR(_ZN8S20974C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20974C5[];
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY vtc_S20974C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C5[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
Class_Descriptor cd_S20974C5 = {  "S20974C5", // class name
  0,0,//no base classes
  &(vtc_S20974C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20974C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20974C5),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20974C4  : S20974C5 {
  virtual void  v10(); // _ZN8S20974C43v10Ev
  virtual void  v11(); // _ZN8S20974C43v11Ev
  ~S20974C4(); // tgen
  S20974C4(); // tgen
};
//SIG(-1 S20974C4) C1{ BC2{ v3 v4 v5 v6 v7 Fi} v1 v2}


void  S20974C4 ::v10(){vfunc_called(this, "_ZN8S20974C43v10Ev");}
void  S20974C4 ::v11(){vfunc_called(this, "_ZN8S20974C43v11Ev");}
S20974C4 ::~S20974C4(){ note_dtor("S20974C4", this);} // tgen
S20974C4 ::S20974C4(){ note_ctor("S20974C4", this);} // tgen

static void Test_S20974C4()
{
  extern Class_Descriptor cd_S20974C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20974C4, buf);
    S20974C4 *dp, &lv = *(dp=new (buf) S20974C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20974C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20974C4)");
    check_base_class_offset(lv, (S20974C5*), 0, "S20974C4");
    test_class_info(&lv, &cd_S20974C4);
    dp->~S20974C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20974C4(Test_S20974C4, "S20974C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20974C4C1Ev();
extern void _ZN8S20974C4D1Ev();
Name_Map name_map_S20974C4[] = {
  NSPAIR(_ZN8S20974C4C1Ev),
  NSPAIR(_ZN8S20974C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
static Base_Class bases_S20974C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20974C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20974C4[];
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY vtc_S20974C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C4[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern VTBL_ENTRY _ZTI8S20974C4[];
extern  VTBL_ENTRY _ZTV8S20974C4[];
Class_Descriptor cd_S20974C4 = {  "S20974C4", // class name
  bases_S20974C4, 1,
  &(vtc_S20974C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20974C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20974C4),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20974C9  : virtual S20974C5 , virtual S20974C4 {
  void *s20974c9f0;
  virtual void  v12(); // _ZN8S20974C93v12Ev
  virtual void  v13(); // _ZN8S20974C93v13Ev
  virtual void  v14(); // _ZN8S20974C93v14Ev
  ~S20974C9(); // tgen
  S20974C9(); // tgen
};
//SIG(-1 S20974C9) C1{ VBC2{ v4 v5 v6 v7 v8 Fi} VBC3{ BC2 v9 v10} v1 v2 v3 Fp}


void  S20974C9 ::v12(){vfunc_called(this, "_ZN8S20974C93v12Ev");}
void  S20974C9 ::v13(){vfunc_called(this, "_ZN8S20974C93v13Ev");}
void  S20974C9 ::v14(){vfunc_called(this, "_ZN8S20974C93v14Ev");}
S20974C9 ::~S20974C9(){ note_dtor("S20974C9", this);} // tgen
S20974C9 ::S20974C9(){ note_ctor("S20974C9", this);} // tgen

static void Test_S20974C9()
{
  extern Class_Descriptor cd_S20974C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20974C9, buf);
    S20974C9 *dp, &lv = *(dp=new (buf) S20974C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20974C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20974C9)");
    /*is_ambiguous_... S20974C9::S20974C5 */ AMB_check_base_class_offset(lv, (S20974C5*), ABISELECT(16,8), "S20974C9");
    check_base_class_offset(lv, (S20974C5*)(S20974C4*), ABISELECT(32,16), "S20974C9");
    check_base_class_offset(lv, (S20974C4*), ABISELECT(32,16), "S20974C9");
    check_field_offset(lv, s20974c9f0, ABISELECT(8,4), "S20974C9.s20974c9f0");
    test_class_info(&lv, &cd_S20974C9);
    dp->~S20974C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20974C9(Test_S20974C9, "S20974C9", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S20974C9C1Ev();
extern void _ZN8S20974C9D1Ev();
Name_Map name_map_S20974C9[] = {
  NSPAIR(_ZN8S20974C9C1Ev),
  NSPAIR(_ZN8S20974C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C4;
extern VTBL_ENTRY _ZTI8S20974C4[];
extern  VTBL_ENTRY _ZTV8S20974C4[];
static Base_Class bases_S20974C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20974C5,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20974C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20974C4,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20974C9[];
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY vtc_S20974C9[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S20974C9[];
static  VTT_ENTRY vtt_S20974C9[] = {
  {&(_ZTV8S20974C9[4]),  4,35},
  {&(_ZTV8S20974C9[14]),  14,35},
  {&(_ZTV8S20974C9[28]),  28,35},
};
extern VTBL_ENTRY _ZTI8S20974C9[];
extern  VTBL_ENTRY _ZTV8S20974C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C9[];
Class_Descriptor cd_S20974C9 = {  "S20974C9", // class name
  bases_S20974C9, 3,
  &(vtc_S20974C9[0]), // expected_vtbl_contents
  &(vtt_S20974C9[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S20974C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20974C9),35, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20974C9),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20974C8  : S20974C9 {
  int s20974c8f0[5];
  virtual void  v15(); // _ZN8S20974C83v15Ev
  virtual void  v16(); // _ZN8S20974C83v16Ev
  virtual void  v17(); // _ZN8S20974C83v17Ev
  virtual void  v18(); // _ZN8S20974C83v18Ev
  ~S20974C8(); // tgen
  S20974C8(); // tgen
};
//SIG(-1 S20974C8) C1{ BC2{ VBC3{ v5 v6 v7 v8 v9 Fi} VBC4{ BC3 v10 v11} v12 v13 v14 Fp} v1 v2 v3 v4 Fi[5]}


void  S20974C8 ::v15(){vfunc_called(this, "_ZN8S20974C83v15Ev");}
void  S20974C8 ::v16(){vfunc_called(this, "_ZN8S20974C83v16Ev");}
void  S20974C8 ::v17(){vfunc_called(this, "_ZN8S20974C83v17Ev");}
void  S20974C8 ::v18(){vfunc_called(this, "_ZN8S20974C83v18Ev");}
S20974C8 ::~S20974C8(){ note_dtor("S20974C8", this);} // tgen
S20974C8 ::S20974C8(){ note_ctor("S20974C8", this);} // tgen

static void Test_S20974C8()
{
  extern Class_Descriptor cd_S20974C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S20974C8, buf);
    S20974C8 *dp, &lv = *(dp=new (buf) S20974C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S20974C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20974C8)");
    /*is_ambiguous_... S20974C9::S20974C5 */ AMB_check_base_class_offset(lv, (S20974C5*)(S20974C9*), ABISELECT(40,28), "S20974C8");
    check_base_class_offset(lv, (S20974C5*)(S20974C4*), ABISELECT(56,36), "S20974C8");
    check_base_class_offset(lv, (S20974C4*)(S20974C9*), ABISELECT(56,36), "S20974C8");
    check_base_class_offset(lv, (S20974C9*), 0, "S20974C8");
    check_field_offset(lv, s20974c8f0, ABISELECT(16,8), "S20974C8.s20974c8f0");
    test_class_info(&lv, &cd_S20974C8);
    dp->~S20974C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20974C8(Test_S20974C8, "S20974C8", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S20974C8C1Ev();
extern void _ZN8S20974C8D1Ev();
Name_Map name_map_S20974C8[] = {
  NSPAIR(_ZN8S20974C8C1Ev),
  NSPAIR(_ZN8S20974C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C4;
extern VTBL_ENTRY _ZTI8S20974C4[];
extern  VTBL_ENTRY _ZTV8S20974C4[];
extern Class_Descriptor cd_S20974C9;
extern VTBL_ENTRY _ZTI8S20974C9[];
extern  VTBL_ENTRY _ZTV8S20974C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C9[];
static Base_Class bases_S20974C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20974C5,    ABISELECT(40,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20974C5,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20974C4,    ABISELECT(56,36), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20974C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20974C8[];
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY vtc_S20974C8[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S20974C8[];
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C9__8S20974C8[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C9__8S20974C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C9__8S20974C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
static  VTT_ENTRY vtt_S20974C8[] = {
  {&(_ZTV8S20974C8[4]),  4,39},
  {&(_tg__ZTV8S20974C9__8S20974C8[4]),  4,7},
  {&(_tg__ZTV8S20974C5__8S20974C9__8S20974C8[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C9__8S20974C8[9]),  9,16},
  {&(_ZTV8S20974C8[18]),  18,39},
  {&(_ZTV8S20974C8[32]),  32,39},
};
extern VTBL_ENTRY _ZTI8S20974C8[];
extern  VTBL_ENTRY _ZTV8S20974C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C8[];
Class_Descriptor cd_S20974C8 = {  "S20974C8", // class name
  bases_S20974C8, 4,
  &(vtc_S20974C8[0]), // expected_vtbl_contents
  &(vtt_S20974C8[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S20974C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20974C8),39, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20974C8),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20974C7  : virtual S20974C8 {
  virtual void  v19(); // _ZN8S20974C73v19Ev
  virtual void  v20(); // _ZN8S20974C73v20Ev
  virtual void  v21(); // _ZN8S20974C73v21Ev
  virtual void  v22(); // _ZN8S20974C73v22Ev
  virtual void  v23(); // _ZN8S20974C73v23Ev
  virtual void  v24(); // _ZN8S20974C73v24Ev
  ~S20974C7(); // tgen
  S20974C7(); // tgen
};
//SIG(-1 S20974C7) C1{ VBC2{ BC3{ VBC4{ v7 v8 v9 v10 v11 Fi} VBC5{ BC4 v12 v13} v14 v15 v16 Fp} v17 v18 v19 v20 Fi[5]} v1 v2 v3 v4 v5 v6}


void  S20974C7 ::v19(){vfunc_called(this, "_ZN8S20974C73v19Ev");}
void  S20974C7 ::v20(){vfunc_called(this, "_ZN8S20974C73v20Ev");}
void  S20974C7 ::v21(){vfunc_called(this, "_ZN8S20974C73v21Ev");}
void  S20974C7 ::v22(){vfunc_called(this, "_ZN8S20974C73v22Ev");}
void  S20974C7 ::v23(){vfunc_called(this, "_ZN8S20974C73v23Ev");}
void  S20974C7 ::v24(){vfunc_called(this, "_ZN8S20974C73v24Ev");}
S20974C7 ::~S20974C7(){ note_dtor("S20974C7", this);} // tgen
S20974C7 ::S20974C7(){ note_ctor("S20974C7", this);} // tgen

static void Test_S20974C7()
{
  extern Class_Descriptor cd_S20974C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S20974C7, buf);
    S20974C7 *dp, &lv = *(dp=new (buf) S20974C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S20974C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20974C7)");
    /*is_ambiguous_... S20974C9::S20974C5 */ AMB_check_base_class_offset(lv, (S20974C5*)(S20974C9*)(S20974C8*), ABISELECT(48,32), "S20974C7");
    check_base_class_offset(lv, (S20974C5*)(S20974C4*), ABISELECT(64,40), "S20974C7");
    check_base_class_offset(lv, (S20974C4*)(S20974C9*)(S20974C8*), ABISELECT(64,40), "S20974C7");
    check_base_class_offset(lv, (S20974C9*)(S20974C8*), ABISELECT(8,4), "S20974C7");
    check_base_class_offset(lv, (S20974C8*), ABISELECT(8,4), "S20974C7");
    test_class_info(&lv, &cd_S20974C7);
    dp->~S20974C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20974C7(Test_S20974C7, "S20974C7", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S20974C7C1Ev();
extern void _ZN8S20974C7D1Ev();
Name_Map name_map_S20974C7[] = {
  NSPAIR(_ZN8S20974C7C1Ev),
  NSPAIR(_ZN8S20974C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C4;
extern VTBL_ENTRY _ZTI8S20974C4[];
extern  VTBL_ENTRY _ZTV8S20974C4[];
extern Class_Descriptor cd_S20974C9;
extern VTBL_ENTRY _ZTI8S20974C9[];
extern  VTBL_ENTRY _ZTV8S20974C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C9[];
extern Class_Descriptor cd_S20974C8;
extern VTBL_ENTRY _ZTI8S20974C8[];
extern  VTBL_ENTRY _ZTV8S20974C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C8[];
static Base_Class bases_S20974C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20974C5,    ABISELECT(48,32), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20974C5,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20974C4,    ABISELECT(64,40), //bcp->offset
    41, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20974C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20974C8,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20974C7[];
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY vtc_S20974C7[] = {
  ABISELECT(64,40),
  ABISELECT(48,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S20974C7[];
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C7[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C98S20974C8__8S20974C7[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C98S20974C8__8S20974C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C98S20974C8__8S20974C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C8__8S20974C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C8__8S20974C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
static  VTT_ENTRY vtt_S20974C7[] = {
  {&(_ZTV8S20974C7[5]),  5,57},
  {&(_ZTV8S20974C7[22]),  22,57},
  {&(_ZTV8S20974C7[36]),  36,57},
  {&(_ZTV8S20974C7[50]),  50,57},
  {&(_tg__ZTV8S20974C8__8S20974C7[4]),  4,11},
  {&(_tg__ZTV8S20974C98S20974C8__8S20974C7[4]),  4,7},
  {&(_tg__ZTV8S20974C5__8S20974C98S20974C8__8S20974C7[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C98S20974C8__8S20974C7[9]),  9,16},
  {&(_tg__ZTV8S20974C5__8S20974C8__8S20974C7[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C8__8S20974C7[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S20974C7[];
extern  VTBL_ENTRY _ZTV8S20974C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C7[];
Class_Descriptor cd_S20974C7 = {  "S20974C7", // class name
  bases_S20974C7, 5,
  &(vtc_S20974C7[0]), // expected_vtbl_contents
  &(vtt_S20974C7[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S20974C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20974C7),57, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20974C7),10, //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  S20974C6  : S20974C7 {
  long double s20974c6f0;
  ~S20974C6(); // tgen
  S20974C6(); // tgen
};
//SIG(-1 S20974C6) C1{ BC2{ VBC3{ BC4{ VBC5{ v1 v2 v3 v4 v5 Fi} VBC6{ BC5 v6 v7} v8 v9 v10 Fp} v11 v12 v13 v14 Fi[5]} v15 v16 v17 v18 v19 v20} FD}


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

static void Test_S20974C6()
{
  extern Class_Descriptor cd_S20974C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S20974C6, buf);
    S20974C6 *dp, &lv = *(dp=new (buf) S20974C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S20974C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20974C6)");
    /*is_ambiguous_... S20974C9::S20974C5 */ AMB_check_base_class_offset(lv, (S20974C5*)(S20974C9*)(S20974C8*), ABISELECT(72,44), "S20974C6");
    check_base_class_offset(lv, (S20974C5*)(S20974C4*), ABISELECT(88,52), "S20974C6");
    check_base_class_offset(lv, (S20974C4*)(S20974C9*)(S20974C8*), ABISELECT(88,52), "S20974C6");
    check_base_class_offset(lv, (S20974C9*)(S20974C8*), ABISELECT(32,16), "S20974C6");
    check_base_class_offset(lv, (S20974C8*)(S20974C7*), ABISELECT(32,16), "S20974C6");
    check_base_class_offset(lv, (S20974C7*), 0, "S20974C6");
    check_field_offset(lv, s20974c6f0, ABISELECT(16,4), "S20974C6.s20974c6f0");
    test_class_info(&lv, &cd_S20974C6);
    dp->~S20974C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20974C6(Test_S20974C6, "S20974C6", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S20974C6C1Ev();
extern void _ZN8S20974C6D1Ev();
Name_Map name_map_S20974C6[] = {
  NSPAIR(_ZN8S20974C6C1Ev),
  NSPAIR(_ZN8S20974C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C4;
extern VTBL_ENTRY _ZTI8S20974C4[];
extern  VTBL_ENTRY _ZTV8S20974C4[];
extern Class_Descriptor cd_S20974C9;
extern VTBL_ENTRY _ZTI8S20974C9[];
extern  VTBL_ENTRY _ZTV8S20974C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C9[];
extern Class_Descriptor cd_S20974C8;
extern VTBL_ENTRY _ZTI8S20974C8[];
extern  VTBL_ENTRY _ZTV8S20974C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C8[];
extern Class_Descriptor cd_S20974C7;
extern VTBL_ENTRY _ZTI8S20974C7[];
extern  VTBL_ENTRY _ZTV8S20974C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C7[];
static Base_Class bases_S20974C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20974C5,    ABISELECT(72,44), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20974C5,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20974C4,    ABISELECT(88,52), //bcp->offset
    41, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20974C9,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20974C8,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20974C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20974C6[];
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY vtc_S20974C6[] = {
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S20974C6[];
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C7__8S20974C6[] = {
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C7__8S20974C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C7__8S20974C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C7__8S20974C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C6[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C98S20974C8__8S20974C6[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C98S20974C8__8S20974C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C98S20974C8__8S20974C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C8__8S20974C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C8__8S20974C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
static  VTT_ENTRY vtt_S20974C6[] = {
  {&(_ZTV8S20974C6[5]),  5,57},
  {&(_tg__ZTV8S20974C7__8S20974C6[5]),  5,11},
  {&(_tg__ZTV8S20974C8__8S20974C7__8S20974C6[11]),  11,18},
  {&(_tg__ZTV8S20974C5__8S20974C7__8S20974C6[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C7__8S20974C6[9]),  9,16},
  {&(_ZTV8S20974C6[22]),  22,57},
  {&(_ZTV8S20974C6[36]),  36,57},
  {&(_ZTV8S20974C6[50]),  50,57},
  {&(_tg__ZTV8S20974C8__8S20974C6[4]),  4,11},
  {&(_tg__ZTV8S20974C98S20974C8__8S20974C6[4]),  4,7},
  {&(_tg__ZTV8S20974C5__8S20974C98S20974C8__8S20974C6[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C98S20974C8__8S20974C6[9]),  9,16},
  {&(_tg__ZTV8S20974C5__8S20974C8__8S20974C6[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C8__8S20974C6[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S20974C6[];
extern  VTBL_ENTRY _ZTV8S20974C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C6[];
Class_Descriptor cd_S20974C6 = {  "S20974C6", // class name
  bases_S20974C6, 6,
  &(vtc_S20974C6[0]), // expected_vtbl_contents
  &(vtt_S20974C6[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S20974C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20974C6),57, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20974C6),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20974C3  : virtual S20974C4 , virtual S20974C6 {
  virtual void  v25(); // _ZN8S20974C33v25Ev
  virtual void  v26(); // _ZN8S20974C33v26Ev
  virtual void  v27(); // _ZN8S20974C33v27Ev
  virtual void  v28(); // _ZN8S20974C33v28Ev
  virtual void  v29(); // _ZN8S20974C33v29Ev
  virtual void  v30(); // _ZN8S20974C33v30Ev
  ~S20974C3(); // tgen
  S20974C3(); // tgen
};
//SIG(-1 S20974C3) C1{ VBC2{ BC3{ v7 v8 v9 v10 v11 Fi} v12 v13} VBC4{ BC5{ VBC6{ BC7{ VBC3 VBC2 v14 v15 v16 Fp} v17 v18 v19 v20 Fi[5]} v21 v22 v23 v24 v25 v26} FD} v1 v2 v3 v4 v5 v6}


void  S20974C3 ::v25(){vfunc_called(this, "_ZN8S20974C33v25Ev");}
void  S20974C3 ::v26(){vfunc_called(this, "_ZN8S20974C33v26Ev");}
void  S20974C3 ::v27(){vfunc_called(this, "_ZN8S20974C33v27Ev");}
void  S20974C3 ::v28(){vfunc_called(this, "_ZN8S20974C33v28Ev");}
void  S20974C3 ::v29(){vfunc_called(this, "_ZN8S20974C33v29Ev");}
void  S20974C3 ::v30(){vfunc_called(this, "_ZN8S20974C33v30Ev");}
S20974C3 ::~S20974C3(){ note_dtor("S20974C3", this);} // tgen
S20974C3 ::S20974C3(){ note_ctor("S20974C3", this);} // tgen

static void Test_S20974C3()
{
  extern Class_Descriptor cd_S20974C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S20974C3, buf);
    S20974C3 *dp, &lv = *(dp=new (buf) S20974C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S20974C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20974C3)");
    check_base_class_offset(lv, (S20974C5*)(S20974C4*), ABISELECT(8,4), "S20974C3");
    check_base_class_offset(lv, (S20974C4*), ABISELECT(8,4), "S20974C3");
    check_base_class_offset(lv, (S20974C4*)(S20974C9*)(S20974C8*), ABISELECT(8,4), "S20974C3");
    /*is_ambiguous_... S20974C9::S20974C5 */ AMB_check_base_class_offset(lv, (S20974C5*)(S20974C9*)(S20974C8*), ABISELECT(104,56), "S20974C3");
    check_base_class_offset(lv, (S20974C9*)(S20974C8*), ABISELECT(64,28), "S20974C3");
    check_base_class_offset(lv, (S20974C8*)(S20974C7*)(S20974C6*), ABISELECT(64,28), "S20974C3");
    check_base_class_offset(lv, (S20974C7*)(S20974C6*), ABISELECT(32,12), "S20974C3");
    check_base_class_offset(lv, (S20974C6*), ABISELECT(32,12), "S20974C3");
    test_class_info(&lv, &cd_S20974C3);
    dp->~S20974C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20974C3(Test_S20974C3, "S20974C3", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN8S20974C3C1Ev();
extern void _ZN8S20974C3D1Ev();
Name_Map name_map_S20974C3[] = {
  NSPAIR(_ZN8S20974C3C1Ev),
  NSPAIR(_ZN8S20974C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C4;
extern VTBL_ENTRY _ZTI8S20974C4[];
extern  VTBL_ENTRY _ZTV8S20974C4[];
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C9;
extern VTBL_ENTRY _ZTI8S20974C9[];
extern  VTBL_ENTRY _ZTV8S20974C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C9[];
extern Class_Descriptor cd_S20974C8;
extern VTBL_ENTRY _ZTI8S20974C8[];
extern  VTBL_ENTRY _ZTV8S20974C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C8[];
extern Class_Descriptor cd_S20974C7;
extern VTBL_ENTRY _ZTI8S20974C7[];
extern  VTBL_ENTRY _ZTV8S20974C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C7[];
extern Class_Descriptor cd_S20974C6;
extern VTBL_ENTRY _ZTI8S20974C6[];
extern  VTBL_ENTRY _ZTV8S20974C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C6[];
static Base_Class bases_S20974C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20974C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20974C4,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20974C5,    ABISELECT(104,56), //bcp->offset
    63, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20974C9,    ABISELECT(64,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20974C8,    ABISELECT(64,28), //bcp->offset
    45, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20974C7,    ABISELECT(32,12), //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20974C6,    ABISELECT(32,12), //bcp->offset
    28, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20974C3[];
extern void _ZN8S20974C33v25Ev();
extern void _ZN8S20974C33v26Ev();
extern void _ZN8S20974C33v27Ev();
extern void _ZN8S20974C33v28Ev();
extern void _ZN8S20974C33v29Ev();
extern void _ZN8S20974C33v30Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY vtc_S20974C3[] = {
  ABISELECT(104,56),
  ABISELECT(64,28),
  ABISELECT(32,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v27Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v28Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  ABISELECT(40,28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern VTBL_ENTRY _ZTV8S20974C3[];
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C6__8S20974C3[] = {
  ABISELECT(-24,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
};
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C78S20974C6__8S20974C3[] = {
  ABISELECT(-24,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C78S20974C6__8S20974C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C78S20974C6__8S20974C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C78S20974C6__8S20974C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C6__8S20974C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C6__8S20974C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C6__8S20974C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C3[] = {
  ABISELECT(-56,-24),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C98S20974C8__8S20974C3[] = {
  ABISELECT(-56,-24),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C98S20974C8__8S20974C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C98S20974C8__8S20974C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C8__8S20974C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C8__8S20974C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
static  VTT_ENTRY vtt_S20974C3[] = {
  {&(_ZTV8S20974C3[6]),  6,75},
  {&(_ZTV8S20974C3[21]),  21,75},
  {&(_ZTV8S20974C3[39]),  39,75},
  {&(_ZTV8S20974C3[56]),  56,75},
  {&(_ZTV8S20974C3[70]),  70,75},
  {&(_tg__ZTV8S20974C6__8S20974C3[5]),  5,11},
  {&(_tg__ZTV8S20974C78S20974C6__8S20974C3[5]),  5,11},
  {&(_tg__ZTV8S20974C8__8S20974C78S20974C6__8S20974C3[11]),  11,18},
  {&(_tg__ZTV8S20974C5__8S20974C78S20974C6__8S20974C3[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C78S20974C6__8S20974C3[9]),  9,16},
  {&(_tg__ZTV8S20974C8__8S20974C6__8S20974C3[11]),  11,18},
  {&(_tg__ZTV8S20974C5__8S20974C6__8S20974C3[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C6__8S20974C3[9]),  9,16},
  {&(_tg__ZTV8S20974C8__8S20974C3[4]),  4,11},
  {&(_tg__ZTV8S20974C98S20974C8__8S20974C3[4]),  4,7},
  {&(_tg__ZTV8S20974C5__8S20974C98S20974C8__8S20974C3[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C98S20974C8__8S20974C3[9]),  9,16},
  {&(_tg__ZTV8S20974C5__8S20974C8__8S20974C3[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C8__8S20974C3[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S20974C3[];
extern  VTBL_ENTRY _ZTV8S20974C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C3[];
Class_Descriptor cd_S20974C3 = {  "S20974C3", // class name
  bases_S20974C3, 7,
  &(vtc_S20974C3[0]), // expected_vtbl_contents
  &(vtt_S20974C3[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI8S20974C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20974C3),75, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20974C3),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20974C2  : virtual S20974C3 {
  virtual void  v31(); // _ZN8S20974C23v31Ev
  virtual void  v32(); // _ZN8S20974C23v32Ev
  virtual void  v33(); // _ZN8S20974C23v33Ev
  virtual void  v34(); // _ZN8S20974C23v34Ev
  virtual void  v35(); // _ZN8S20974C23v35Ev
  virtual void  v36(); // _ZN8S20974C23v36Ev
  virtual void  v37(); // _ZN8S20974C23v37Ev
  virtual void  v38(); // _ZN8S20974C23v38Ev
  virtual void  v39(); // _ZN8S20974C23v39Ev
  ~S20974C2(); // tgen
  S20974C2(); // tgen
};
//SIG(-1 S20974C2) C1{ VBC2{ VBC3{ BC4{ v10 v11 v12 v13 v14 Fi} v15 v16} VBC5{ BC6{ VBC7{ BC8{ VBC4 VBC3 v17 v18 v19 Fp} v20 v21 v22 v23 Fi[5]} v24 v25 v26 v27 v28 v29} FD} v30 v31 v32 v33 v34 v35} v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S20974C2 ::v31(){vfunc_called(this, "_ZN8S20974C23v31Ev");}
void  S20974C2 ::v32(){vfunc_called(this, "_ZN8S20974C23v32Ev");}
void  S20974C2 ::v33(){vfunc_called(this, "_ZN8S20974C23v33Ev");}
void  S20974C2 ::v34(){vfunc_called(this, "_ZN8S20974C23v34Ev");}
void  S20974C2 ::v35(){vfunc_called(this, "_ZN8S20974C23v35Ev");}
void  S20974C2 ::v36(){vfunc_called(this, "_ZN8S20974C23v36Ev");}
void  S20974C2 ::v37(){vfunc_called(this, "_ZN8S20974C23v37Ev");}
void  S20974C2 ::v38(){vfunc_called(this, "_ZN8S20974C23v38Ev");}
void  S20974C2 ::v39(){vfunc_called(this, "_ZN8S20974C23v39Ev");}
S20974C2 ::~S20974C2(){ note_dtor("S20974C2", this);} // tgen
S20974C2 ::S20974C2(){ note_ctor("S20974C2", this);} // tgen

static void Test_S20974C2()
{
  extern Class_Descriptor cd_S20974C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S20974C2, buf);
    S20974C2 *dp, &lv = *(dp=new (buf) S20974C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S20974C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20974C2)");
    check_base_class_offset(lv, (S20974C5*)(S20974C4*), ABISELECT(8,4), "S20974C2");
    check_base_class_offset(lv, (S20974C4*)(S20974C3*), ABISELECT(8,4), "S20974C2");
    check_base_class_offset(lv, (S20974C4*)(S20974C9*)(S20974C8*), ABISELECT(8,4), "S20974C2");
    /*is_ambiguous_... S20974C9::S20974C5 */ AMB_check_base_class_offset(lv, (S20974C5*)(S20974C9*)(S20974C8*), ABISELECT(104,56), "S20974C2");
    check_base_class_offset(lv, (S20974C9*)(S20974C8*), ABISELECT(64,28), "S20974C2");
    check_base_class_offset(lv, (S20974C8*)(S20974C7*)(S20974C6*), ABISELECT(64,28), "S20974C2");
    check_base_class_offset(lv, (S20974C7*)(S20974C6*), ABISELECT(32,12), "S20974C2");
    check_base_class_offset(lv, (S20974C6*)(S20974C3*), ABISELECT(32,12), "S20974C2");
    check_base_class_offset(lv, (S20974C3*), 0, "S20974C2");
    test_class_info(&lv, &cd_S20974C2);
    dp->~S20974C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20974C2(Test_S20974C2, "S20974C2", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN8S20974C2C1Ev();
extern void _ZN8S20974C2D1Ev();
Name_Map name_map_S20974C2[] = {
  NSPAIR(_ZN8S20974C2C1Ev),
  NSPAIR(_ZN8S20974C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C4;
extern VTBL_ENTRY _ZTI8S20974C4[];
extern  VTBL_ENTRY _ZTV8S20974C4[];
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C9;
extern VTBL_ENTRY _ZTI8S20974C9[];
extern  VTBL_ENTRY _ZTV8S20974C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C9[];
extern Class_Descriptor cd_S20974C8;
extern VTBL_ENTRY _ZTI8S20974C8[];
extern  VTBL_ENTRY _ZTV8S20974C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C8[];
extern Class_Descriptor cd_S20974C7;
extern VTBL_ENTRY _ZTI8S20974C7[];
extern  VTBL_ENTRY _ZTV8S20974C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C7[];
extern Class_Descriptor cd_S20974C6;
extern VTBL_ENTRY _ZTI8S20974C6[];
extern  VTBL_ENTRY _ZTV8S20974C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C6[];
extern Class_Descriptor cd_S20974C3;
extern VTBL_ENTRY _ZTI8S20974C3[];
extern  VTBL_ENTRY _ZTV8S20974C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C3[];
static Base_Class bases_S20974C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20974C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20974C4,    ABISELECT(8,4), //bcp->offset
    28, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20974C5,    ABISELECT(104,56), //bcp->offset
    79, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20974C9,    ABISELECT(64,28), //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
    4, //immediately_derived
  0, 0},
  {&cd_S20974C8,    ABISELECT(64,28), //bcp->offset
    61, //bcp->virtual_function_table_offset
    11, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20974C7,    ABISELECT(32,12), //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20974C6,    ABISELECT(32,12), //bcp->offset
    44, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20974C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20974C2[];
extern void _ZN8S20974C33v25Ev();
extern void _ZN8S20974C33v26Ev();
extern void _ZN8S20974C33v27Ev();
extern void _ZN8S20974C33v28Ev();
extern void _ZN8S20974C33v29Ev();
extern void _ZN8S20974C33v30Ev();
extern void _ZN8S20974C23v31Ev();
extern void _ZN8S20974C23v32Ev();
extern void _ZN8S20974C23v33Ev();
extern void _ZN8S20974C23v34Ev();
extern void _ZN8S20974C23v35Ev();
extern void _ZN8S20974C23v36Ev();
extern void _ZN8S20974C23v37Ev();
extern void _ZN8S20974C23v38Ev();
extern void _ZN8S20974C23v39Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY vtc_S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,56),
  ABISELECT(64,28),
  ABISELECT(32,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C2[0]),
  (VTBL_ENTRY)&_ZN8S20974C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v27Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v28Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v30Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v32Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v34Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v35Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v36Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v37Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v38Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v39Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20974C2[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20974C2[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  ABISELECT(40,28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C2[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20974C2[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern VTBL_ENTRY _ZTV8S20974C2[];
extern void _ZN8S20974C33v25Ev();
extern void _ZN8S20974C33v26Ev();
extern void _ZN8S20974C33v27Ev();
extern void _ZN8S20974C33v28Ev();
extern void _ZN8S20974C33v29Ev();
extern void _ZN8S20974C33v30Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C3__8S20974C2[] = {
  ABISELECT(104,56),
  ABISELECT(64,28),
  ABISELECT(32,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v27Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v28Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v30Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C3__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C6__8S20974C3__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C3__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  ABISELECT(40,28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__A1__8S20974C3__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C6__8S20974C2[] = {
  ABISELECT(-24,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
};
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C78S20974C6__8S20974C2[] = {
  ABISELECT(-24,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C78S20974C6__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C78S20974C6__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C78S20974C6__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C6__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C6__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C6__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C98S20974C8__8S20974C2[] = {
  ABISELECT(-56,-24),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C98S20974C8__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C98S20974C8__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C8__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C8__8S20974C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,24),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
static  VTT_ENTRY vtt_S20974C2[] = {
  {&(_ZTV8S20974C2[13]),  13,91},
  {&(_ZTV8S20974C2[13]),  13,91},
  {&(_ZTV8S20974C2[37]),  37,91},
  {&(_ZTV8S20974C2[55]),  55,91},
  {&(_ZTV8S20974C2[72]),  72,91},
  {&(_ZTV8S20974C2[86]),  86,91},
  {&(_tg__ZTV8S20974C3__8S20974C2[6]),  6,12},
  {&(_tg__ZTV8S20974C4__8S20974C3__8S20974C2[9]),  9,16},
  {&(_tg__ZTV8S20974C6__8S20974C3__8S20974C2[11]),  11,17},
  {&(_tg__ZTV8S20974C8__8S20974C3__8S20974C2[11]),  11,18},
  {&(_tg__ZTV8S20974C5__A1__8S20974C3__8S20974C2[7]),  7,12},
  {&(_tg__ZTV8S20974C6__8S20974C2[5]),  5,11},
  {&(_tg__ZTV8S20974C78S20974C6__8S20974C2[5]),  5,11},
  {&(_tg__ZTV8S20974C8__8S20974C78S20974C6__8S20974C2[11]),  11,18},
  {&(_tg__ZTV8S20974C5__8S20974C78S20974C6__8S20974C2[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C78S20974C6__8S20974C2[9]),  9,16},
  {&(_tg__ZTV8S20974C8__8S20974C6__8S20974C2[11]),  11,18},
  {&(_tg__ZTV8S20974C5__8S20974C6__8S20974C2[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C6__8S20974C2[9]),  9,16},
  {&(_tg__ZTV8S20974C8__8S20974C2[4]),  4,11},
  {&(_tg__ZTV8S20974C98S20974C8__8S20974C2[4]),  4,7},
  {&(_tg__ZTV8S20974C5__8S20974C98S20974C8__8S20974C2[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C98S20974C8__8S20974C2[9]),  9,16},
  {&(_tg__ZTV8S20974C5__8S20974C8__8S20974C2[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C8__8S20974C2[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S20974C2[];
extern  VTBL_ENTRY _ZTV8S20974C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C2[];
Class_Descriptor cd_S20974C2 = {  "S20974C2", // class name
  bases_S20974C2, 8,
  &(vtc_S20974C2[0]), // expected_vtbl_contents
  &(vtt_S20974C2[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI8S20974C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20974C2),91, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20974C2),25, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20974C1  : virtual S20974C2 {
  int s20974c1f0;
  void *s20974c1f1;
  int s20974c1f2;
  virtual void  v1(); // _ZN8S20974C12v1Ev
  virtual void  v2(); // _ZN8S20974C12v2Ev
  virtual void  v3(); // _ZN8S20974C12v3Ev
  virtual void  v4(); // _ZN8S20974C12v4Ev
  ~S20974C1(); // tgen
  S20974C1(); // tgen
};
//SIG(1 S20974C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ v5 v6 v7 v8 v9 Fi} v10 v11} VBC6{ BC7{ VBC8{ BC9{ VBC5 VBC4 v12 v13 v14 Fp} v15 v16 v17 v18 Fi[5]} v19 v20 v21 v22 v23 v24} FD} v25 v26 v27 v28 v29 v30} v31 v32 v33 v34 v35 v36 v37 v38 v39} v1 v2 v3 v4 Fi Fp Fi}


void  S20974C1 ::v1(){vfunc_called(this, "_ZN8S20974C12v1Ev");}
void  S20974C1 ::v2(){vfunc_called(this, "_ZN8S20974C12v2Ev");}
void  S20974C1 ::v3(){vfunc_called(this, "_ZN8S20974C12v3Ev");}
void  S20974C1 ::v4(){vfunc_called(this, "_ZN8S20974C12v4Ev");}
S20974C1 ::~S20974C1(){ note_dtor("S20974C1", this);} // tgen
S20974C1 ::S20974C1(){ note_ctor("S20974C1", this);} // tgen

static void Test_S20974C1()
{
  extern Class_Descriptor cd_S20974C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,20)];
    init_test(&cd_S20974C1, buf);
    S20974C1 *dp, &lv = *(dp=new (buf) S20974C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S20974C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20974C1)");
    check_base_class_offset(lv, (S20974C5*)(S20974C4*), ABISELECT(32,16), "S20974C1");
    check_base_class_offset(lv, (S20974C4*)(S20974C3*), ABISELECT(32,16), "S20974C1");
    check_base_class_offset(lv, (S20974C4*)(S20974C9*)(S20974C8*), ABISELECT(32,16), "S20974C1");
    /*is_ambiguous_... S20974C9::S20974C5 */ AMB_check_base_class_offset(lv, (S20974C5*)(S20974C9*)(S20974C8*), ABISELECT(120,68), "S20974C1");
    check_base_class_offset(lv, (S20974C9*)(S20974C8*), ABISELECT(80,40), "S20974C1");
    check_base_class_offset(lv, (S20974C8*)(S20974C7*)(S20974C6*), ABISELECT(80,40), "S20974C1");
    check_base_class_offset(lv, (S20974C7*)(S20974C6*), ABISELECT(48,24), "S20974C1");
    check_base_class_offset(lv, (S20974C6*)(S20974C3*), ABISELECT(48,24), "S20974C1");
    check_base_class_offset(lv, (S20974C3*)(S20974C2*), 0, "S20974C1");
    check_base_class_offset(lv, (S20974C2*), 0, "S20974C1");
    check_field_offset(lv, s20974c1f0, ABISELECT(8,4), "S20974C1.s20974c1f0");
    check_field_offset(lv, s20974c1f1, ABISELECT(16,8), "S20974C1.s20974c1f1");
    check_field_offset(lv, s20974c1f2, ABISELECT(24,12), "S20974C1.s20974c1f2");
    test_class_info(&lv, &cd_S20974C1);
    dp->~S20974C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20974C1(Test_S20974C1, "S20974C1", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S20974C1C1Ev();
extern void _ZN8S20974C1D1Ev();
Name_Map name_map_S20974C1[] = {
  NSPAIR(_ZN8S20974C1C1Ev),
  NSPAIR(_ZN8S20974C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C4;
extern VTBL_ENTRY _ZTI8S20974C4[];
extern  VTBL_ENTRY _ZTV8S20974C4[];
extern Class_Descriptor cd_S20974C5;
extern VTBL_ENTRY _ZTI8S20974C5[];
extern  VTBL_ENTRY _ZTV8S20974C5[];
extern Class_Descriptor cd_S20974C9;
extern VTBL_ENTRY _ZTI8S20974C9[];
extern  VTBL_ENTRY _ZTV8S20974C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C9[];
extern Class_Descriptor cd_S20974C8;
extern VTBL_ENTRY _ZTI8S20974C8[];
extern  VTBL_ENTRY _ZTV8S20974C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C8[];
extern Class_Descriptor cd_S20974C7;
extern VTBL_ENTRY _ZTI8S20974C7[];
extern  VTBL_ENTRY _ZTV8S20974C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C7[];
extern Class_Descriptor cd_S20974C6;
extern VTBL_ENTRY _ZTI8S20974C6[];
extern  VTBL_ENTRY _ZTV8S20974C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C6[];
extern Class_Descriptor cd_S20974C3;
extern VTBL_ENTRY _ZTI8S20974C3[];
extern  VTBL_ENTRY _ZTV8S20974C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C3[];
extern Class_Descriptor cd_S20974C2;
extern VTBL_ENTRY _ZTI8S20974C2[];
extern  VTBL_ENTRY _ZTV8S20974C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C2[];
static Base_Class bases_S20974C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20974C5,    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_S20974C4,    ABISELECT(32,16), //bcp->offset
    42, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20974C5,    ABISELECT(120,68), //bcp->offset
    93, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20974C9,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20974C8,    ABISELECT(80,40), //bcp->offset
    75, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20974C7,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20974C6,    ABISELECT(48,24), //bcp->offset
    58, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20974C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20974C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20974C1[];
extern void _ZN8S20974C33v25Ev();
extern void _ZN8S20974C33v26Ev();
extern void _ZN8S20974C33v27Ev();
extern void _ZN8S20974C33v28Ev();
extern void _ZN8S20974C33v29Ev();
extern void _ZN8S20974C33v30Ev();
extern void _ZN8S20974C23v31Ev();
extern void _ZN8S20974C23v32Ev();
extern void _ZN8S20974C23v33Ev();
extern void _ZN8S20974C23v34Ev();
extern void _ZN8S20974C23v35Ev();
extern void _ZN8S20974C23v36Ev();
extern void _ZN8S20974C23v37Ev();
extern void _ZN8S20974C23v38Ev();
extern void _ZN8S20974C23v39Ev();
extern void _ZN8S20974C12v1Ev();
extern void _ZN8S20974C12v2Ev();
extern void _ZN8S20974C12v3Ev();
extern void _ZN8S20974C12v4Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY vtc_S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,68),
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C1[0]),
  (VTBL_ENTRY)&_ZN8S20974C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v27Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v28Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v30Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v32Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v34Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v35Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v36Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v37Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v38Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v39Ev,
  (VTBL_ENTRY)&_ZN8S20974C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20974C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20974C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20974C12v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C1[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20974C1[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(40,28),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20974C1[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S20974C1[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern VTBL_ENTRY _ZTV8S20974C1[];
extern void _ZN8S20974C33v25Ev();
extern void _ZN8S20974C33v26Ev();
extern void _ZN8S20974C33v27Ev();
extern void _ZN8S20974C33v28Ev();
extern void _ZN8S20974C33v29Ev();
extern void _ZN8S20974C33v30Ev();
extern void _ZN8S20974C23v31Ev();
extern void _ZN8S20974C23v32Ev();
extern void _ZN8S20974C23v33Ev();
extern void _ZN8S20974C23v34Ev();
extern void _ZN8S20974C23v35Ev();
extern void _ZN8S20974C23v36Ev();
extern void _ZN8S20974C23v37Ev();
extern void _ZN8S20974C23v38Ev();
extern void _ZN8S20974C23v39Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C2__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,68),
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C2[0]),
  (VTBL_ENTRY)&_ZN8S20974C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v27Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v28Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v30Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v32Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v34Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v35Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v36Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v37Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v38Ev,
  (VTBL_ENTRY)&_ZN8S20974C23v39Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C2__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C2[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C6__8S20974C2__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20974C2[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C2__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(40,28),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20974C2[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__A1__8S20974C2__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S20974C2[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C33v25Ev();
extern void _ZN8S20974C33v26Ev();
extern void _ZN8S20974C33v27Ev();
extern void _ZN8S20974C33v28Ev();
extern void _ZN8S20974C33v29Ev();
extern void _ZN8S20974C33v30Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C3__8S20974C1[] = {
  ABISELECT(120,68),
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C33v25Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v27Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v28Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20974C33v30Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C3__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C6__8S20974C3__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C3__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(40,28),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__A1__8S20974C3__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S20974C3[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C6__8S20974C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
};
extern void _ZN8S20974C73v19Ev();
extern void _ZN8S20974C73v20Ev();
extern void _ZN8S20974C73v21Ev();
extern void _ZN8S20974C73v22Ev();
extern void _ZN8S20974C73v23Ev();
extern void _ZN8S20974C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C78S20974C6__8S20974C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20974C73v24Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C78S20974C6__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C78S20974C6__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C78S20974C6__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20974C7[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C6__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C6__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C6__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20974C6[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
extern void _ZN8S20974C83v15Ev();
extern void _ZN8S20974C83v16Ev();
extern void _ZN8S20974C83v17Ev();
extern void _ZN8S20974C83v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C8__8S20974C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v15Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20974C83v18Ev,
};
extern void _ZN8S20974C93v12Ev();
extern void _ZN8S20974C93v13Ev();
extern void _ZN8S20974C93v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C98S20974C8__8S20974C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C93v12Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v13Ev,
  (VTBL_ENTRY)&_ZN8S20974C93v14Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C98S20974C8__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C98S20974C8__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20974C9[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C5__8S20974C8__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
};
extern void _ZN8S20974C52v5Ev();
extern void _ZN8S20974C52v6Ev();
extern void _ZN8S20974C52v7Ev();
extern void _ZN8S20974C52v8Ev();
extern void _ZN8S20974C52v9Ev();
extern void _ZN8S20974C43v10Ev();
extern void _ZN8S20974C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20974C4__8S20974C8__8S20974C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20974C8[0]),
  (VTBL_ENTRY)&_ZN8S20974C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20974C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20974C43v11Ev,
};
static  VTT_ENTRY vtt_S20974C1[] = {
  {&(_ZTV8S20974C1[23]),  23,105},
  {&(_ZTV8S20974C1[23]),  23,105},
  {&(_ZTV8S20974C1[23]),  23,105},
  {&(_ZTV8S20974C1[51]),  51,105},
  {&(_ZTV8S20974C1[69]),  69,105},
  {&(_ZTV8S20974C1[86]),  86,105},
  {&(_ZTV8S20974C1[100]),  100,105},
  {&(_tg__ZTV8S20974C2__8S20974C1[13]),  13,28},
  {&(_tg__ZTV8S20974C2__8S20974C1[13]),  13,28},
  {&(_tg__ZTV8S20974C4__8S20974C2__8S20974C1[9]),  9,16},
  {&(_tg__ZTV8S20974C6__8S20974C2__8S20974C1[11]),  11,17},
  {&(_tg__ZTV8S20974C8__8S20974C2__8S20974C1[11]),  11,18},
  {&(_tg__ZTV8S20974C5__A1__8S20974C2__8S20974C1[7]),  7,12},
  {&(_tg__ZTV8S20974C3__8S20974C1[6]),  6,12},
  {&(_tg__ZTV8S20974C4__8S20974C3__8S20974C1[9]),  9,16},
  {&(_tg__ZTV8S20974C6__8S20974C3__8S20974C1[11]),  11,17},
  {&(_tg__ZTV8S20974C8__8S20974C3__8S20974C1[11]),  11,18},
  {&(_tg__ZTV8S20974C5__A1__8S20974C3__8S20974C1[7]),  7,12},
  {&(_tg__ZTV8S20974C6__8S20974C1[5]),  5,11},
  {&(_tg__ZTV8S20974C78S20974C6__8S20974C1[5]),  5,11},
  {&(_tg__ZTV8S20974C8__8S20974C78S20974C6__8S20974C1[11]),  11,18},
  {&(_tg__ZTV8S20974C5__8S20974C78S20974C6__8S20974C1[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C78S20974C6__8S20974C1[9]),  9,16},
  {&(_tg__ZTV8S20974C8__8S20974C6__8S20974C1[11]),  11,18},
  {&(_tg__ZTV8S20974C5__8S20974C6__8S20974C1[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C6__8S20974C1[9]),  9,16},
  {&(_tg__ZTV8S20974C8__8S20974C1[4]),  4,11},
  {&(_tg__ZTV8S20974C98S20974C8__8S20974C1[4]),  4,7},
  {&(_tg__ZTV8S20974C5__8S20974C98S20974C8__8S20974C1[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C98S20974C8__8S20974C1[9]),  9,16},
  {&(_tg__ZTV8S20974C5__8S20974C8__8S20974C1[7]),  7,12},
  {&(_tg__ZTV8S20974C4__8S20974C8__8S20974C1[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S20974C1[];
extern  VTBL_ENTRY _ZTV8S20974C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20974C1[];
Class_Descriptor cd_S20974C1 = {  "S20974C1", // class name
  bases_S20974C1, 9,
  &(vtc_S20974C1[0]), // expected_vtbl_contents
  &(vtt_S20974C1[0]), // expected_vtt_contents
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S20974C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20974C1),105, //virtual function table var
  23, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20974C1),32, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20972C5  {
  virtual void  v3(); // _ZN8S20972C52v3Ev
  virtual void  v4(); // _ZN8S20972C52v4Ev
  virtual void  v5(); // _ZN8S20972C52v5Ev
  virtual void  v6(); // _ZN8S20972C52v6Ev
  ~S20972C5(); // tgen
  S20972C5(); // tgen
};
//SIG(-1 S20972C5) C1{ v1 v2 v3 v4}


void  S20972C5 ::v3(){vfunc_called(this, "_ZN8S20972C52v3Ev");}
void  S20972C5 ::v4(){vfunc_called(this, "_ZN8S20972C52v4Ev");}
void  S20972C5 ::v5(){vfunc_called(this, "_ZN8S20972C52v5Ev");}
void  S20972C5 ::v6(){vfunc_called(this, "_ZN8S20972C52v6Ev");}
S20972C5 ::~S20972C5(){ note_dtor("S20972C5", this);} // tgen
S20972C5 ::S20972C5(){ note_ctor("S20972C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20972C5C1Ev();
extern void _ZN8S20972C5D1Ev();
Name_Map name_map_S20972C5[] = {
  NSPAIR(_ZN8S20972C5C1Ev),
  NSPAIR(_ZN8S20972C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20972C5[];
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
static  VTBL_ENTRY vtc_S20972C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20972C5[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
};
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
Class_Descriptor cd_S20972C5 = {  "S20972C5", // class name
  0,0,//no base classes
  &(vtc_S20972C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20972C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20972C5),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  S20972C4  : S20972C5 {
  ::S20972C5 s20972c4f0;
  virtual void  v7(); // _ZN8S20972C42v7Ev
  virtual void  v8(); // _ZN8S20972C42v8Ev
  ~S20972C4(); // tgen
  S20972C4(); // tgen
};
//SIG(-1 S20972C4) C1{ BC2{ v3 v4 v5 v6} v1 v2 FC2}


void  S20972C4 ::v7(){vfunc_called(this, "_ZN8S20972C42v7Ev");}
void  S20972C4 ::v8(){vfunc_called(this, "_ZN8S20972C42v8Ev");}
S20972C4 ::~S20972C4(){ note_dtor("S20972C4", this);} // tgen
S20972C4 ::S20972C4(){ note_ctor("S20972C4", this);} // tgen

static void Test_S20972C4()
{
  extern Class_Descriptor cd_S20972C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20972C4, buf);
    S20972C4 *dp, &lv = *(dp=new (buf) S20972C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20972C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20972C4)");
    check_base_class_offset(lv, (S20972C5*), 0, "S20972C4");
    check_field_offset(lv, s20972c4f0, ABISELECT(8,4), "S20972C4.s20972c4f0");
    test_class_info(&lv, &cd_S20972C4);
    dp->~S20972C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20972C4(Test_S20972C4, "S20972C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20972C4C1Ev();
extern void _ZN8S20972C4D1Ev();
Name_Map name_map_S20972C4[] = {
  NSPAIR(_ZN8S20972C4C1Ev),
  NSPAIR(_ZN8S20972C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
static Base_Class bases_S20972C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20972C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20972C4[];
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
static  VTBL_ENTRY vtc_S20972C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20972C4[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
Class_Descriptor cd_S20972C4 = {  "S20972C4", // class name
  bases_S20972C4, 1,
  &(vtc_S20972C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20972C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20972C4),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  S20972C3  : virtual S20972C4 {
  ::S20972C4 s20972c3f0;
  long double s20972c3f1;
  virtual  ~S20972C3(); // _ZN8S20972C3D2Ev
  virtual void  v9(); // _ZN8S20972C32v9Ev
  virtual void  v10(); // _ZN8S20972C33v10Ev
  virtual void  v11(); // _ZN8S20972C33v11Ev
  S20972C3(); // tgen
};
//SIG(-1 S20972C3) C1{ VBC2{ BC3{ v4 v5 v6 v7} v8 v9 FC3} vd v1 v2 v3 FC2 FD}


 S20972C3 ::~S20972C3(){ note_dtor("S20972C3", this);}
void  S20972C3 ::v9(){vfunc_called(this, "_ZN8S20972C32v9Ev");}
void  S20972C3 ::v10(){vfunc_called(this, "_ZN8S20972C33v10Ev");}
void  S20972C3 ::v11(){vfunc_called(this, "_ZN8S20972C33v11Ev");}
S20972C3 ::S20972C3(){ note_ctor("S20972C3", this);} // tgen

static void Test_S20972C3()
{
  extern Class_Descriptor cd_S20972C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S20972C3, buf);
    S20972C3 *dp, &lv = *(dp=new (buf) S20972C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20972C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20972C3)");
    check_base_class_offset(lv, (S20972C5*)(S20972C4*), ABISELECT(48,24), "S20972C3");
    check_base_class_offset(lv, (S20972C4*), ABISELECT(48,24), "S20972C3");
    check_field_offset(lv, s20972c3f0, ABISELECT(8,4), "S20972C3.s20972c3f0");
    check_field_offset(lv, s20972c3f1, ABISELECT(32,12), "S20972C3.s20972c3f1");
    test_class_info(&lv, &cd_S20972C3);
    dp->~S20972C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20972C3(Test_S20972C3, "S20972C3", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S20972C3C1Ev();
extern void _ZN8S20972C3D2Ev();
Name_Map name_map_S20972C3[] = {
  NSPAIR(_ZN8S20972C3C1Ev),
  NSPAIR(_ZN8S20972C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
static Base_Class bases_S20972C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20972C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20972C4,    ABISELECT(48,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20972C3[];
extern void _ZN8S20972C3D1Ev();
extern void _ZN8S20972C3D0Ev();
extern void _ZN8S20972C32v9Ev();
extern void _ZN8S20972C33v10Ev();
extern void _ZN8S20972C33v11Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
static  VTBL_ENTRY vtc_S20972C3[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20972C3[0]),
  (VTBL_ENTRY)&_ZN8S20972C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20972C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20972C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20972C3[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S20972C3[];
static  VTT_ENTRY vtt_S20972C3[] = {
  {&(_ZTV8S20972C3[3]),  3,22},
  {&(_ZTV8S20972C3[16]),  16,22},
};
extern VTBL_ENTRY _ZTI8S20972C3[];
extern  VTBL_ENTRY _ZTV8S20972C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20972C3[];
Class_Descriptor cd_S20972C3 = {  "S20972C3", // class name
  bases_S20972C3, 2,
  &(vtc_S20972C3[0]), // expected_vtbl_contents
  &(vtt_S20972C3[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S20972C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20972C3),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20972C3),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20972C6  : S20972C4 , S20972C5 {
  int s20972c6f0;
  virtual  ~S20972C6(); // _ZN8S20972C6D1Ev
  virtual void  v12(); // _ZN8S20972C63v12Ev
  virtual void  v13(); // _ZN8S20972C63v13Ev
  virtual void  v14(); // _ZN8S20972C63v14Ev
  virtual void  v15(); // _ZN8S20972C63v15Ev
  virtual void  v16(); // _ZN8S20972C63v16Ev
  virtual void  v17(); // _ZN8S20972C63v17Ev
  S20972C6(); // tgen
};
//SIG(-1 S20972C6) C1{ BC2{ BC3{ v7 v8 v9 v10} v11 v12 FC3} BC3 vd v1 v2 v3 v4 v5 v6 Fi}


 S20972C6 ::~S20972C6(){ note_dtor("S20972C6", this);}
void  S20972C6 ::v12(){vfunc_called(this, "_ZN8S20972C63v12Ev");}
void  S20972C6 ::v13(){vfunc_called(this, "_ZN8S20972C63v13Ev");}
void  S20972C6 ::v14(){vfunc_called(this, "_ZN8S20972C63v14Ev");}
void  S20972C6 ::v15(){vfunc_called(this, "_ZN8S20972C63v15Ev");}
void  S20972C6 ::v16(){vfunc_called(this, "_ZN8S20972C63v16Ev");}
void  S20972C6 ::v17(){vfunc_called(this, "_ZN8S20972C63v17Ev");}
S20972C6 ::S20972C6(){ note_ctor("S20972C6", this);} // tgen

static void Test_S20972C6()
{
  extern Class_Descriptor cd_S20972C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20972C6, buf);
    S20972C6 *dp, &lv = *(dp=new (buf) S20972C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20972C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20972C6)");
    check_base_class_offset(lv, (S20972C5*)(S20972C4*), 0, "S20972C6");
    check_base_class_offset(lv, (S20972C4*), 0, "S20972C6");
    /*is_ambiguous_... S20972C6::S20972C5 */ AMB_check_base_class_offset(lv, (S20972C5*), ABISELECT(16,8), "S20972C6");
    check_field_offset(lv, s20972c6f0, ABISELECT(24,12), "S20972C6.s20972c6f0");
    test_class_info(&lv, &cd_S20972C6);
    dp->~S20972C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20972C6(Test_S20972C6, "S20972C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20972C6C1Ev();
extern void _ZN8S20972C6D1Ev();
Name_Map name_map_S20972C6[] = {
  NSPAIR(_ZN8S20972C6C1Ev),
  NSPAIR(_ZN8S20972C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
static Base_Class bases_S20972C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20972C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20972C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20972C5,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20972C6[];
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void _ZN8S20972C6D1Ev();
extern void _ZN8S20972C6D0Ev();
extern void _ZN8S20972C63v12Ev();
extern void _ZN8S20972C63v13Ev();
extern void _ZN8S20972C63v14Ev();
extern void _ZN8S20972C63v15Ev();
extern void _ZN8S20972C63v16Ev();
extern void _ZN8S20972C63v17Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
static  VTBL_ENTRY vtc_S20972C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20972C6[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20972C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20972C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v17Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20972C6[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
};
extern VTBL_ENTRY _ZTI8S20972C6[];
extern  VTBL_ENTRY _ZTV8S20972C6[];
Class_Descriptor cd_S20972C6 = {  "S20972C6", // class name
  bases_S20972C6, 3,
  &(vtc_S20972C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20972C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20972C6),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20972C7  : S20972C4 , S20972C5 {
  ::S20980C9 s20972c7f0;
  ::S20980C10_nt s20972c7f1;
  ::S20980C10_nt s20972c7f2;
  int s20972c7f3;
  virtual void  v18(); // _ZN8S20972C73v18Ev
  virtual void  v19(); // _ZN8S20972C73v19Ev
  virtual void  v20(); // _ZN8S20972C73v20Ev
  virtual void  v21(); // _ZN8S20972C73v21Ev
  ~S20972C7(); // tgen
  S20972C7(); // tgen
};
//SIG(-1 S20972C7) C1{ BC2{ BC3{ v5 v6 v7 v8} v9 v10 FC3} BC3 v1 v2 v3 v4 FC4{ VBC5{ v12 v13 v14 v15} BC6{ BC5 v16 v17 FC5} vd v11} FU7{ m} FU7 Fi}


void  S20972C7 ::v18(){vfunc_called(this, "_ZN8S20972C73v18Ev");}
void  S20972C7 ::v19(){vfunc_called(this, "_ZN8S20972C73v19Ev");}
void  S20972C7 ::v20(){vfunc_called(this, "_ZN8S20972C73v20Ev");}
void  S20972C7 ::v21(){vfunc_called(this, "_ZN8S20972C73v21Ev");}
S20972C7 ::~S20972C7(){ note_dtor("S20972C7", this);} // tgen
S20972C7 ::S20972C7(){ note_ctor("S20972C7", this);} // tgen

static void Test_S20972C7()
{
  extern Class_Descriptor cd_S20972C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S20972C7, buf);
    S20972C7 *dp, &lv = *(dp=new (buf) S20972C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S20972C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20972C7)");
    check_base_class_offset(lv, (S20972C5*)(S20972C4*), 0, "S20972C7");
    check_base_class_offset(lv, (S20972C4*), 0, "S20972C7");
    /*is_ambiguous_... S20972C7::S20972C5 */ AMB_check_base_class_offset(lv, (S20972C5*), ABISELECT(16,8), "S20972C7");
    check_field_offset(lv, s20972c7f0, ABISELECT(24,12), "S20972C7.s20972c7f0");
    check_field_offset(lv, s20972c7f1, ABISELECT(48,24), "S20972C7.s20972c7f1");
    check_field_offset(lv, s20972c7f2, ABISELECT(49,25), "S20972C7.s20972c7f2");
    check_field_offset(lv, s20972c7f3, ABISELECT(52,28), "S20972C7.s20972c7f3");
    test_class_info(&lv, &cd_S20972C7);
    dp->~S20972C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20972C7(Test_S20972C7, "S20972C7", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S20972C7C1Ev();
extern void _ZN8S20972C7D1Ev();
Name_Map name_map_S20972C7[] = {
  NSPAIR(_ZN8S20972C7C1Ev),
  NSPAIR(_ZN8S20972C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
static Base_Class bases_S20972C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20972C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20972C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20972C5,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20972C7[];
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void _ZN8S20972C73v18Ev();
extern void _ZN8S20972C73v19Ev();
extern void _ZN8S20972C73v20Ev();
extern void _ZN8S20972C73v21Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
static  VTBL_ENTRY vtc_S20972C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20972C7[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v21Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20972C7[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
};
extern VTBL_ENTRY _ZTI8S20972C7[];
extern  VTBL_ENTRY _ZTV8S20972C7[];
Class_Descriptor cd_S20972C7 = {  "S20972C7", // class name
  bases_S20972C7, 3,
  &(vtc_S20972C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S20972C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20972C7),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20972C2  : virtual S20972C3 , S20972C6 , S20972C7 , S20972C4 {
  long double s20972c2f0;
  virtual  ~S20972C2(); // _ZN8S20972C2D2Ev
  S20972C2(); // tgen
};
//SIG(-1 S20972C2) C1{ VBC2{ VBC3{ BC4{ v1 v2 v3 v4} v5 v6 FC4} vd v7 v8 v9 FC3 FD} BC5{ BC3 BC4 vd v10 v11 v12 v13 v14 v15 Fi} BC6{ BC3 BC4 v16 v17 v18 v19 FC7{ VBC8{ v21 v22 v23 v24} BC9{ BC8 v25 v26 FC8} vd v20} FU10{ m} FU10 Fi} BC3 vd FD}


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

static void Test_S20972C2()
{
  extern Class_Descriptor cd_S20972C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,26)];
    init_test(&cd_S20972C2, buf);
    S20972C2 *dp, &lv = *(dp=new (buf) S20972C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S20972C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20972C2)");
    /*is_ambiguous_... S20972C2::S20972C4 */ AMB_check_base_class_offset(lv, (S20972C5*)(S20972C4*), ABISELECT(176,92), "S20972C2");
    check_base_class_offset(lv, (S20972C4*)(S20972C3*), ABISELECT(176,92), "S20972C2");
    check_base_class_offset(lv, (S20972C3*), ABISELECT(128,68), "S20972C2");
    check_base_class_offset(lv, (S20972C5*)(S20972C4*)(S20972C6*), 0, "S20972C2");
    check_base_class_offset(lv, (S20972C4*)(S20972C6*), 0, "S20972C2");
    /*is_ambiguous_... S20972C6::S20972C5 */ AMB_check_base_class_offset(lv, (S20972C5*)(S20972C6*), ABISELECT(16,8), "S20972C2");
    check_base_class_offset(lv, (S20972C6*), 0, "S20972C2");
    check_base_class_offset(lv, (S20972C5*)(S20972C4*)(S20972C7*), ABISELECT(32,16), "S20972C2");
    check_base_class_offset(lv, (S20972C4*)(S20972C7*), ABISELECT(32,16), "S20972C2");
    /*is_ambiguous_... S20972C7::S20972C5 */ AMB_check_base_class_offset(lv, (S20972C5*)(S20972C7*), ABISELECT(48,24), "S20972C2");
    check_base_class_offset(lv, (S20972C7*), ABISELECT(32,16), "S20972C2");
    /*is_ambiguous_... S20972C2::S20972C4 */ AMB_check_base_class_offset(lv, (S20972C5*)(S20972C4*), ABISELECT(88,48), "S20972C2");
    /*is_ambiguous_... S20972C2::S20972C4 */ AMB_check_base_class_offset(lv, (S20972C4*), ABISELECT(88,48), "S20972C2");
    check_field_offset(lv, s20972c2f0, ABISELECT(112,56), "S20972C2.s20972c2f0");
    test_class_info(&lv, &cd_S20972C2);
    dp->~S20972C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20972C2(Test_S20972C2, "S20972C2", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN8S20972C2C1Ev();
extern void _ZN8S20972C2D2Ev();
Name_Map name_map_S20972C2[] = {
  NSPAIR(_ZN8S20972C2C1Ev),
  NSPAIR(_ZN8S20972C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
extern Class_Descriptor cd_S20972C3;
extern VTBL_ENTRY _ZTI8S20972C3[];
extern  VTBL_ENTRY _ZTV8S20972C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20972C3[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C6;
extern VTBL_ENTRY _ZTI8S20972C6[];
extern  VTBL_ENTRY _ZTV8S20972C6[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C7;
extern VTBL_ENTRY _ZTI8S20972C7[];
extern  VTBL_ENTRY _ZTV8S20972C7[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
static Base_Class bases_S20972C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20972C5,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20972C4,    ABISELECT(176,92), //bcp->offset
    62, //bcp->virtual_function_table_offset
    8, //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
    2, //immediately_derived
  0, 1},
  {&cd_S20972C3,    ABISELECT(128,68), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20972C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20972C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20972C5,    ABISELECT(16,8), //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
    6, //immediately_derived
  0, 0},
  {&cd_S20972C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20972C5,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20972C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20972C5,    ABISELECT(48,24), //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20972C7,    ABISELECT(32,16), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20972C5,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20972C4,    ABISELECT(88,48), //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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20972C2[];
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void _ZN8S20972C2D1Ev();
extern void _ZN8S20972C2D0Ev();
extern void _ZN8S20972C63v12Ev();
extern void _ZN8S20972C63v13Ev();
extern void _ZN8S20972C63v14Ev();
extern void _ZN8S20972C63v15Ev();
extern void _ZN8S20972C63v16Ev();
extern void _ZN8S20972C63v17Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void _ZN8S20972C73v18Ev();
extern void _ZN8S20972C73v19Ev();
extern void _ZN8S20972C73v20Ev();
extern void _ZN8S20972C73v21Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void ABISELECT(_ZTv0_n32_N8S20972C2D1Ev,_ZTv0_n16_N8S20972C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20972C2D1Ev,_ZThn68_N8S20972C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20972C2D0Ev,_ZTv0_n16_N8S20972C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20972C2D0Ev,_ZThn68_N8S20972C2D0Ev)() __attribute__((weak));
extern void _ZN8S20972C32v9Ev();
extern void _ZN8S20972C33v10Ev();
extern void _ZN8S20972C33v11Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
static  VTBL_ENTRY vtc_S20972C2[] = {
  ABISELECT(176,92),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20972C2[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20972C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20972C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v17Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20972C2[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20972C2[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v21Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20972C2[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20972C2[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20972C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20972C2D1Ev,_ZTv0_n16_N8S20972C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20972C2D0Ev,_ZTv0_n16_N8S20972C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20972C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S20972C2[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S20972C2[];
extern void _ZN8S20972C3D1Ev();
extern void _ZN8S20972C3D0Ev();
extern void _ZN8S20972C32v9Ev();
extern void _ZN8S20972C33v10Ev();
extern void _ZN8S20972C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20972C3__8S20972C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20972C3[0]),
  (VTBL_ENTRY)&_ZN8S20972C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20972C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20972C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v11Ev,
};
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20972C4__8S20972C3__8S20972C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20972C3[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
};
static  VTT_ENTRY vtt_S20972C2[] = {
  {&(_ZTV8S20972C2[4]),  4,76},
  {&(_ZTV8S20972C2[57]),  57,76},
  {&(_ZTV8S20972C2[70]),  70,76},
  {&(_tg__ZTV8S20972C3__8S20972C2[3]),  3,8},
  {&(_tg__ZTV8S20972C4__8S20972C3__8S20972C2[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S20972C2[];
extern  VTBL_ENTRY _ZTV8S20972C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20972C2[];
static VTBL_ENTRY alt_thunk_names185[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20972C2D0Ev,_ZTv0_n16_N8S20972C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20972C2D0Ev,_ZThn68_N8S20972C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20972C2D1Ev,_ZTv0_n16_N8S20972C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20972C2D1Ev,_ZThn68_N8S20972C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20972C2 = {  "S20972C2", // class name
  bases_S20972C2, 13,
  &(vtc_S20972C2[0]), // expected_vtbl_contents
  &(vtt_S20972C2[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI8S20972C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20972C2),76, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20972C2),5, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names185,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20972C10  : virtual S20972C6 {
  void *s20972c10f0;
  virtual  ~S20972C10(); // _ZN9S20972C10D2Ev
  virtual void  v22(); // _ZN9S20972C103v22Ev
  virtual void  v23(); // _ZN9S20972C103v23Ev
  virtual void  v24(); // _ZN9S20972C103v24Ev
  virtual void  v25(); // _ZN9S20972C103v25Ev
  S20972C10(); // tgen
};
//SIG(-1 S20972C10) C1{ VBC2{ BC3{ BC4{ v5 v6 v7 v8} v9 v10 FC4} BC4 vd v11 v12 v13 v14 v15 v16 Fi} vd v1 v2 v3 v4 Fp}


 S20972C10 ::~S20972C10(){ note_dtor("S20972C10", this);}
void  S20972C10 ::v22(){vfunc_called(this, "_ZN9S20972C103v22Ev");}
void  S20972C10 ::v23(){vfunc_called(this, "_ZN9S20972C103v23Ev");}
void  S20972C10 ::v24(){vfunc_called(this, "_ZN9S20972C103v24Ev");}
void  S20972C10 ::v25(){vfunc_called(this, "_ZN9S20972C103v25Ev");}
S20972C10 ::S20972C10(){ note_ctor("S20972C10", this);} // tgen

static void Test_S20972C10()
{
  extern Class_Descriptor cd_S20972C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20972C10, buf);
    S20972C10 *dp, &lv = *(dp=new (buf) S20972C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20972C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20972C10)");
    check_base_class_offset(lv, (S20972C5*)(S20972C4*)(S20972C6*), ABISELECT(16,8), "S20972C10");
    check_base_class_offset(lv, (S20972C4*)(S20972C6*), ABISELECT(16,8), "S20972C10");
    /*is_ambiguous_... S20972C6::S20972C5 */ AMB_check_base_class_offset(lv, (S20972C5*)(S20972C6*), ABISELECT(32,16), "S20972C10");
    check_base_class_offset(lv, (S20972C6*), ABISELECT(16,8), "S20972C10");
    check_field_offset(lv, s20972c10f0, ABISELECT(8,4), "S20972C10.s20972c10f0");
    test_class_info(&lv, &cd_S20972C10);
    dp->~S20972C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20972C10(Test_S20972C10, "S20972C10", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S20972C10C1Ev();
extern void _ZN9S20972C10D2Ev();
Name_Map name_map_S20972C10[] = {
  NSPAIR(_ZN9S20972C10C1Ev),
  NSPAIR(_ZN9S20972C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C6;
extern VTBL_ENTRY _ZTI8S20972C6[];
extern  VTBL_ENTRY _ZTV8S20972C6[];
static Base_Class bases_S20972C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20972C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20972C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20972C5,    ABISELECT(32,16), //bcp->offset
    38, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20972C6,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20972C10[];
extern void _ZN9S20972C10D1Ev();
extern void _ZN9S20972C10D0Ev();
extern void _ZN9S20972C103v22Ev();
extern void _ZN9S20972C103v23Ev();
extern void _ZN9S20972C103v24Ev();
extern void _ZN9S20972C103v25Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void ABISELECT(_ZTv0_n72_N9S20972C10D1Ev,_ZTv0_n36_N9S20972C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S20972C10D1Ev,_ZThn8_N9S20972C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20972C10D0Ev,_ZTv0_n36_N9S20972C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S20972C10D0Ev,_ZThn8_N9S20972C10D0Ev)() __attribute__((weak));
extern void _ZN8S20972C63v12Ev();
extern void _ZN8S20972C63v13Ev();
extern void _ZN8S20972C63v14Ev();
extern void _ZN8S20972C63v15Ev();
extern void _ZN8S20972C63v16Ev();
extern void _ZN8S20972C63v17Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
static  VTBL_ENTRY vtc_S20972C10[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20972C10[0]),
  (VTBL_ENTRY)&_ZN9S20972C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20972C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v22Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v23Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v24Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20972C10[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20972C10D1Ev,_ZTv0_n36_N9S20972C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20972C10D0Ev,_ZTv0_n36_N9S20972C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20972C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v17Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20972C10[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
};
extern VTBL_ENTRY _ZTV9S20972C10[];
static  VTT_ENTRY vtt_S20972C10[] = {
  {&(_ZTV9S20972C10[3]),  3,44},
  {&(_ZTV9S20972C10[24]),  24,44},
  {&(_ZTV9S20972C10[40]),  40,44},
};
extern VTBL_ENTRY _ZTI9S20972C10[];
extern  VTBL_ENTRY _ZTV9S20972C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20972C10[];
static VTBL_ENTRY alt_thunk_names186[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20972C10D0Ev,_ZTv0_n36_N9S20972C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20972C10D0Ev,_ZThn8_N9S20972C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20972C10D1Ev,_ZTv0_n36_N9S20972C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20972C10D1Ev,_ZThn8_N9S20972C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20972C10 = {  "S20972C10", // class name
  bases_S20972C10, 4,
  &(vtc_S20972C10[0]), // expected_vtbl_contents
  &(vtt_S20972C10[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S20972C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20972C10),44, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20972C10),3, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names186,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20972C1  : virtual S20972C2 , S20972C10 {
  virtual void  v1(); // _ZN8S20972C12v1Ev
  virtual void  v2(); // _ZN8S20972C12v2Ev
  ~S20972C1(); // tgen
  S20972C1(); // tgen
};
//SIG(1 S20972C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ v3 v4 v5 v6} v7 v8 FC5} vd v9 v10 v11 FC4 FD} BC6{ BC4 BC5 vd v12 v13 v14 v15 v16 v17 Fi} BC7{ BC4 BC5 v18 v19 v20 v21 FC8{ VBC9{ v27 v28 v29 v30} BC10{ BC9 v31 v32 FC9} vd v26} FU11{ m} FU11 Fi} BC4 vd FD} BC12{ VBC6 vd v22 v23 v24 v25 Fp} v1 v2}


void  S20972C1 ::v1(){vfunc_called(this, "_ZN8S20972C12v1Ev");}
void  S20972C1 ::v2(){vfunc_called(this, "_ZN8S20972C12v2Ev");}
S20972C1 ::~S20972C1(){ note_dtor("S20972C1", this);} // tgen
S20972C1 ::S20972C1(){ note_ctor("S20972C1", this);} // tgen

static void Test_S20972C1()
{
  extern Class_Descriptor cd_S20972C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,32)];
    init_test(&cd_S20972C1, buf);
    S20972C1 *dp, &lv = *(dp=new (buf) S20972C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,124), "sizeof(S20972C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20972C1)");
    /*is_ambiguous_... S20972C1::S20972C4 */ AMB_check_base_class_offset(lv, (S20972C5*)(S20972C4*), ABISELECT(192,100), "S20972C1");
    check_base_class_offset(lv, (S20972C4*)(S20972C3*), ABISELECT(192,100), "S20972C1");
    check_base_class_offset(lv, (S20972C3*)(S20972C2*), ABISELECT(144,76), "S20972C1");
    check_base_class_offset(lv, (S20972C5*)(S20972C4*)(S20972C6*)(S20972C2*), ABISELECT(16,8), "S20972C1");
    check_base_class_offset(lv, (S20972C4*)(S20972C6*)(S20972C2*), ABISELECT(16,8), "S20972C1");
    /*is_ambiguous_... S20972C6::S20972C5 */ AMB_check_base_class_offset(lv, (S20972C5*)(S20972C6*)(S20972C2*), ABISELECT(32,16), "S20972C1");
    check_base_class_offset(lv, (S20972C6*)(S20972C2*), ABISELECT(16,8), "S20972C1");
    check_base_class_offset(lv, (S20972C5*)(S20972C4*)(S20972C7*)(S20972C2*), ABISELECT(48,24), "S20972C1");
    check_base_class_offset(lv, (S20972C4*)(S20972C7*)(S20972C2*), ABISELECT(48,24), "S20972C1");
    /*is_ambiguous_... S20972C7::S20972C5 */ AMB_check_base_class_offset(lv, (S20972C5*)(S20972C7*)(S20972C2*), ABISELECT(64,32), "S20972C1");
    check_base_class_offset(lv, (S20972C7*)(S20972C2*), ABISELECT(48,24), "S20972C1");
    /*is_ambiguous_... S20972C2::S20972C4 */ AMB_check_base_class_offset(lv, (S20972C5*)(S20972C4*)(S20972C2*), ABISELECT(104,56), "S20972C1");
    /*is_ambiguous_... S20972C2::S20972C4 */ AMB_check_base_class_offset(lv, (S20972C4*)(S20972C2*), ABISELECT(104,56), "S20972C1");
    check_base_class_offset(lv, (S20972C2*), ABISELECT(16,8), "S20972C1");
    /*is_ambiguous_... S20972C1::S20972C6 */ AMB_check_base_class_offset(lv, (S20972C5*)(S20972C4*)(S20972C6*), ABISELECT(208,108), "S20972C1");
    /*is_ambiguous_... S20972C1::S20972C6 */ AMB_check_base_class_offset(lv, (S20972C4*)(S20972C6*), ABISELECT(208,108), "S20972C1");
    /*is_ambiguous_... S20972C1::S20972C6 */ AMB_check_base_class_offset(lv, (S20972C5*)(S20972C6*), ABISELECT(224,116), "S20972C1");
    check_base_class_offset(lv, (S20972C6*)(S20972C10*), ABISELECT(208,108), "S20972C1");
    check_base_class_offset(lv, (S20972C10*), 0, "S20972C1");
    test_class_info(&lv, &cd_S20972C1);
    dp->~S20972C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20972C1(Test_S20972C1, "S20972C1", ABISELECT(240,124));

#else // __cplusplus

extern void _ZN8S20972C1C1Ev();
extern void _ZN8S20972C1D1Ev();
Name_Map name_map_S20972C1[] = {
  NSPAIR(_ZN8S20972C1C1Ev),
  NSPAIR(_ZN8S20972C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
extern Class_Descriptor cd_S20972C3;
extern VTBL_ENTRY _ZTI8S20972C3[];
extern  VTBL_ENTRY _ZTV8S20972C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20972C3[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C6;
extern VTBL_ENTRY _ZTI8S20972C6[];
extern  VTBL_ENTRY _ZTV8S20972C6[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C7;
extern VTBL_ENTRY _ZTI8S20972C7[];
extern  VTBL_ENTRY _ZTV8S20972C7[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
extern Class_Descriptor cd_S20972C2;
extern VTBL_ENTRY _ZTI8S20972C2[];
extern  VTBL_ENTRY _ZTV8S20972C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20972C2[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C4;
extern VTBL_ENTRY _ZTI8S20972C4[];
extern  VTBL_ENTRY _ZTV8S20972C4[];
extern Class_Descriptor cd_S20972C5;
extern VTBL_ENTRY _ZTI8S20972C5[];
extern  VTBL_ENTRY _ZTV8S20972C5[];
extern Class_Descriptor cd_S20972C6;
extern VTBL_ENTRY _ZTI8S20972C6[];
extern  VTBL_ENTRY _ZTV8S20972C6[];
extern Class_Descriptor cd_S20972C10;
extern VTBL_ENTRY _ZTI9S20972C10[];
extern  VTBL_ENTRY _ZTV9S20972C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20972C10[];
static Base_Class bases_S20972C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20972C5,    ABISELECT(192,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20972C4,    ABISELECT(192,100), //bcp->offset
    93, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20972C3,    ABISELECT(144,76), //bcp->offset
    81, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20972C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20972C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20972C5,    ABISELECT(32,16), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20972C6,    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
    13, //immediately_derived
  0, 0},
  {&cd_S20972C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20972C4,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20972C5,    ABISELECT(64,32), //bcp->offset
    67, //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20972C7,    ABISELECT(48,24), //bcp->offset
    55, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20972C5,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20972C4,    ABISELECT(104,56), //bcp->offset
    73, //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
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20972C2,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20972C5,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20972C4,    ABISELECT(208,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20972C5,    ABISELECT(224,116), //bcp->offset
    136, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20972C6,    ABISELECT(208,108), //bcp->offset
    107, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20972C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20972C1[];
extern void _ZN8S20972C1D1Ev();
extern void _ZN8S20972C1D0Ev();
extern void _ZN9S20972C103v22Ev();
extern void _ZN9S20972C103v23Ev();
extern void _ZN9S20972C103v24Ev();
extern void _ZN9S20972C103v25Ev();
extern void _ZN8S20972C12v1Ev();
extern void _ZN8S20972C12v2Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void ABISELECT(_ZTv0_n88_N8S20972C1D1Ev,_ZTv0_n44_N8S20972C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20972C1D1Ev,_ZThn8_N8S20972C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20972C1D0Ev,_ZTv0_n44_N8S20972C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20972C1D0Ev,_ZThn8_N8S20972C1D0Ev)() __attribute__((weak));
extern void _ZN8S20972C63v12Ev();
extern void _ZN8S20972C63v13Ev();
extern void _ZN8S20972C63v14Ev();
extern void _ZN8S20972C63v15Ev();
extern void _ZN8S20972C63v16Ev();
extern void _ZN8S20972C63v17Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void _ZN8S20972C73v18Ev();
extern void _ZN8S20972C73v19Ev();
extern void _ZN8S20972C73v20Ev();
extern void _ZN8S20972C73v21Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void ABISELECT(_ZTv0_n32_N8S20972C1D1Ev,_ZTv0_n16_N8S20972C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S20972C1D1Ev,_ZThn76_N8S20972C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20972C1D0Ev,_ZTv0_n16_N8S20972C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S20972C1D0Ev,_ZThn76_N8S20972C1D0Ev)() __attribute__((weak));
extern void _ZN8S20972C32v9Ev();
extern void _ZN8S20972C33v10Ev();
extern void _ZN8S20972C33v11Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void ABISELECT(_ZTv0_n72_N8S20972C1D1Ev,_ZTv0_n36_N8S20972C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S20972C1D1Ev,_ZThn108_N8S20972C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20972C1D0Ev,_ZTv0_n36_N8S20972C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S20972C1D0Ev,_ZThn108_N8S20972C1D0Ev)() __attribute__((weak));
extern void _ZN8S20972C63v12Ev();
extern void _ZN8S20972C63v13Ev();
extern void _ZN8S20972C63v14Ev();
extern void _ZN8S20972C63v15Ev();
extern void _ZN8S20972C63v16Ev();
extern void _ZN8S20972C63v17Ev();
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
static  VTBL_ENTRY vtc_S20972C1[] = {
  ABISELECT(192,100),
  ABISELECT(144,76),
  ABISELECT(16,8),
  ABISELECT(208,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20972C1[0]),
  (VTBL_ENTRY)&_ZN8S20972C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20972C1D0Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v22Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v23Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v24Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v25Ev,
  (VTBL_ENTRY)&_ZN8S20972C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20972C12v2Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(176,92),
  ABISELECT(128,68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20972C1[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20972C1D1Ev,_ZTv0_n44_N8S20972C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20972C1D0Ev,_ZTv0_n44_N8S20972C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20972C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v17Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20972C1[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20972C1[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v19Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20972C73v21Ev,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S20972C1[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20972C1[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  0,
  0,
  0,
  ABISELECT(-144,-76),
  ABISELECT(48,24),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S20972C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20972C1D1Ev,_ZTv0_n16_N8S20972C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20972C1D0Ev,_ZTv0_n16_N8S20972C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20972C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S20972C1[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-108),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S20972C1[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20972C1D1Ev,_ZTv0_n36_N8S20972C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20972C1D0Ev,_ZTv0_n36_N8S20972C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20972C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v17Ev,
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI8S20972C1[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
};
extern VTBL_ENTRY _ZTV8S20972C1[];
extern void _ZN9S20972C10D1Ev();
extern void _ZN9S20972C10D0Ev();
extern void _ZN9S20972C103v22Ev();
extern void _ZN9S20972C103v23Ev();
extern void _ZN9S20972C103v24Ev();
extern void _ZN9S20972C103v25Ev();
static  VTBL_ENTRY _tg__ZTV9S20972C10__8S20972C1[] = {
  ABISELECT(208,108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20972C10[0]),
  (VTBL_ENTRY)&_ZN9S20972C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20972C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v22Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v23Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v24Ev,
  (VTBL_ENTRY)&_ZN9S20972C103v25Ev,
};
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void ABISELECT(_ZTv0_n72_N9S20972C10D1Ev,_ZTv0_n36_N9S20972C10D1Ev)();
extern void ABISELECT(_ZThn208_N9S20972C10D1Ev,_ZThn108_N9S20972C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20972C10D0Ev,_ZTv0_n36_N9S20972C10D0Ev)();
extern void ABISELECT(_ZThn208_N9S20972C10D0Ev,_ZThn108_N9S20972C10D0Ev)() __attribute__((weak));
extern void _ZN8S20972C63v12Ev();
extern void _ZN8S20972C63v13Ev();
extern void _ZN8S20972C63v14Ev();
extern void _ZN8S20972C63v15Ev();
extern void _ZN8S20972C63v16Ev();
extern void _ZN8S20972C63v17Ev();
static  VTBL_ENTRY _tg__ZTV8S20972C6__9S20972C10__8S20972C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-108),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI9S20972C10[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20972C10D1Ev,_ZTv0_n36_N9S20972C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20972C10D0Ev,_ZTv0_n36_N9S20972C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20972C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v17Ev,
};
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20972C58S20972C6__A1__9S20972C10__8S20972C1[] = {
  ABISELECT(-224,-116),
  (VTBL_ENTRY)&(_ZTI9S20972C10[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
};
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
extern void _ZN8S20972C2D1Ev();
extern void _ZN8S20972C2D0Ev();
extern void _ZN8S20972C63v12Ev();
extern void _ZN8S20972C63v13Ev();
extern void _ZN8S20972C63v14Ev();
extern void _ZN8S20972C63v15Ev();
extern void _ZN8S20972C63v16Ev();
extern void _ZN8S20972C63v17Ev();
static  VTBL_ENTRY _tg__ZTV8S20972C2__8S20972C1[] = {
  ABISELECT(176,92),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20972C2[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20972C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20972C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v15Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20972C63v17Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20972C2D1Ev,_ZTv0_n16_N8S20972C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20972C2D1Ev,_ZThn68_N8S20972C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20972C2D0Ev,_ZTv0_n16_N8S20972C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20972C2D0Ev,_ZThn68_N8S20972C2D0Ev)() __attribute__((weak));
extern void _ZN8S20972C32v9Ev();
extern void _ZN8S20972C33v10Ev();
extern void _ZN8S20972C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20972C3__8S20972C2__8S20972C1[] = {
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20972C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20972C2D1Ev,_ZTv0_n16_N8S20972C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20972C2D0Ev,_ZTv0_n16_N8S20972C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20972C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v11Ev,
};
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20972C4__8S20972C2__8S20972C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S20972C2[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
};
extern void _ZN8S20972C3D1Ev();
extern void _ZN8S20972C3D0Ev();
extern void _ZN8S20972C32v9Ev();
extern void _ZN8S20972C33v10Ev();
extern void _ZN8S20972C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20972C3__8S20972C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20972C3[0]),
  (VTBL_ENTRY)&_ZN8S20972C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20972C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20972C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20972C33v11Ev,
};
extern void _ZN8S20972C52v3Ev();
extern void _ZN8S20972C52v4Ev();
extern void _ZN8S20972C52v5Ev();
extern void _ZN8S20972C52v6Ev();
extern void _ZN8S20972C42v7Ev();
extern void _ZN8S20972C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20972C4__8S20972C3__8S20972C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20972C3[0]),
  (VTBL_ENTRY)&_ZN8S20972C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v4Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v5Ev,
  (VTBL_ENTRY)&_ZN8S20972C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20972C42v8Ev,
};
static  VTT_ENTRY vtt_S20972C1[] = {
  {&(_ZTV8S20972C1[6]),  6,142},
  {&(_tg__ZTV9S20972C10__8S20972C1[3]),  3,9},
  {&(_tg__ZTV8S20972C6__9S20972C10__8S20972C1[15]),  15,29},
  {&(_tg__ZTV8S20972C58S20972C6__A1__9S20972C10__8S20972C1[2]),  2,6},
  {&(_ZTV8S20972C1[35]),  35,142},
  {&(_ZTV8S20972C1[88]),  88,142},
  {&(_ZTV8S20972C1[101]),  101,142},
  {&(_ZTV8S20972C1[51]),  51,142},
  {&(_ZTV8S20972C1[57]),  57,142},
  {&(_ZTV8S20972C1[69]),  69,142},
  {&(_ZTV8S20972C1[75]),  75,142},
  {&(_ZTV8S20972C1[122]),  122,142},
  {&(_ZTV8S20972C1[138]),  138,142},
  {&(_tg__ZTV8S20972C2__8S20972C1[4]),  4,18},
  {&(_tg__ZTV8S20972C3__8S20972C2__8S20972C1[7]),  7,12},
  {&(_tg__ZTV8S20972C4__8S20972C2__8S20972C1[8]),  8,14},
  {&(_tg__ZTV8S20972C3__8S20972C1[3]),  3,8},
  {&(_tg__ZTV8S20972C4__8S20972C3__8S20972C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S20972C1[];
extern  VTBL_ENTRY _ZTV8S20972C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20972C1[];
static VTBL_ENTRY alt_thunk_names187[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20972C2D0Ev,_ZTv0_n16_N8S20972C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20972C2D0Ev,_ZThn68_N8S20972C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20972C2D1Ev,_ZTv0_n16_N8S20972C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20972C2D1Ev,_ZThn68_N8S20972C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20972C10D0Ev,_ZTv0_n36_N9S20972C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20972C10D0Ev,_ZThn108_N9S20972C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20972C10D1Ev,_ZTv0_n36_N9S20972C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20972C10D1Ev,_ZThn108_N9S20972C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20972C1D0Ev,_ZTv0_n36_N8S20972C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20972C1D0Ev,_ZThn108_N8S20972C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20972C1D1Ev,_ZTv0_n36_N8S20972C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20972C1D1Ev,_ZThn108_N8S20972C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20972C1D0Ev,_ZTv0_n16_N8S20972C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20972C1D0Ev,_ZThn76_N8S20972C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20972C1D1Ev,_ZTv0_n16_N8S20972C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20972C1D1Ev,_ZThn76_N8S20972C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20972C1D0Ev,_ZTv0_n44_N8S20972C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20972C1D0Ev,_ZThn8_N8S20972C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20972C1D1Ev,_ZTv0_n44_N8S20972C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20972C1D1Ev,_ZThn8_N8S20972C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20972C1 = {  "S20972C1", // class name
  bases_S20972C1, 19,
  &(vtc_S20972C1[0]), // expected_vtbl_contents
  &(vtt_S20972C1[0]), // expected_vtt_contents
  ABISELECT(240,124), // object size
  NSPAIRA(_ZTI8S20972C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20972C1),142, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20972C1),18, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names187,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5268C3  {
  virtual  ~S5268C3(); // _ZN7S5268C3D1Ev
  virtual void  v5(); // _ZN7S5268C32v5Ev
  virtual void  v6(); // _ZN7S5268C32v6Ev
  virtual void  v7(); // _ZN7S5268C32v7Ev
  virtual void  v8(); // _ZN7S5268C32v8Ev
  virtual void  v9(); // _ZN7S5268C32v9Ev
  virtual void  v10(); // _ZN7S5268C33v10Ev
  virtual void  v11(); // _ZN7S5268C33v11Ev
  virtual void  v12(); // _ZN7S5268C33v12Ev
  virtual void  v13(); // _ZN7S5268C33v13Ev
  virtual void  v14(); // _ZN7S5268C33v14Ev
  virtual void  v15(); // _ZN7S5268C33v15Ev
  virtual void  v16(); // _ZN7S5268C33v16Ev
  virtual void  v17(); // _ZN7S5268C33v17Ev
  virtual void  v18(); // _ZN7S5268C33v18Ev
  virtual void  v19(); // _ZN7S5268C33v19Ev
  virtual void  v20(); // _ZN7S5268C33v20Ev
  virtual void  v21(); // _ZN7S5268C33v21Ev
  virtual void  v22(); // _ZN7S5268C33v22Ev
  virtual void  v23(); // _ZN7S5268C33v23Ev
  virtual void  v24(); // _ZN7S5268C33v24Ev
  virtual void  v25(); // _ZN7S5268C33v25Ev
  S5268C3(); // tgen
};
//SIG(-1 S5268C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21}


 S5268C3 ::~S5268C3(){ note_dtor("S5268C3", this);}
void  S5268C3 ::v5(){vfunc_called(this, "_ZN7S5268C32v5Ev");}
void  S5268C3 ::v6(){vfunc_called(this, "_ZN7S5268C32v6Ev");}
void  S5268C3 ::v7(){vfunc_called(this, "_ZN7S5268C32v7Ev");}
void  S5268C3 ::v8(){vfunc_called(this, "_ZN7S5268C32v8Ev");}
void  S5268C3 ::v9(){vfunc_called(this, "_ZN7S5268C32v9Ev");}
void  S5268C3 ::v10(){vfunc_called(this, "_ZN7S5268C33v10Ev");}
void  S5268C3 ::v11(){vfunc_called(this, "_ZN7S5268C33v11Ev");}
void  S5268C3 ::v12(){vfunc_called(this, "_ZN7S5268C33v12Ev");}
void  S5268C3 ::v13(){vfunc_called(this, "_ZN7S5268C33v13Ev");}
void  S5268C3 ::v14(){vfunc_called(this, "_ZN7S5268C33v14Ev");}
void  S5268C3 ::v15(){vfunc_called(this, "_ZN7S5268C33v15Ev");}
void  S5268C3 ::v16(){vfunc_called(this, "_ZN7S5268C33v16Ev");}
void  S5268C3 ::v17(){vfunc_called(this, "_ZN7S5268C33v17Ev");}
void  S5268C3 ::v18(){vfunc_called(this, "_ZN7S5268C33v18Ev");}
void  S5268C3 ::v19(){vfunc_called(this, "_ZN7S5268C33v19Ev");}
void  S5268C3 ::v20(){vfunc_called(this, "_ZN7S5268C33v20Ev");}
void  S5268C3 ::v21(){vfunc_called(this, "_ZN7S5268C33v21Ev");}
void  S5268C3 ::v22(){vfunc_called(this, "_ZN7S5268C33v22Ev");}
void  S5268C3 ::v23(){vfunc_called(this, "_ZN7S5268C33v23Ev");}
void  S5268C3 ::v24(){vfunc_called(this, "_ZN7S5268C33v24Ev");}
void  S5268C3 ::v25(){vfunc_called(this, "_ZN7S5268C33v25Ev");}
S5268C3 ::S5268C3(){ note_ctor("S5268C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S5268C3C1Ev();
extern void _ZN7S5268C3D1Ev();
Name_Map name_map_S5268C3[] = {
  NSPAIR(_ZN7S5268C3C1Ev),
  NSPAIR(_ZN7S5268C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5268C3[];
extern void _ZN7S5268C3D1Ev();
extern void _ZN7S5268C3D0Ev();
extern void _ZN7S5268C32v5Ev();
extern void _ZN7S5268C32v6Ev();
extern void _ZN7S5268C32v7Ev();
extern void _ZN7S5268C32v8Ev();
extern void _ZN7S5268C32v9Ev();
extern void _ZN7S5268C33v10Ev();
extern void _ZN7S5268C33v11Ev();
extern void _ZN7S5268C33v12Ev();
extern void _ZN7S5268C33v13Ev();
extern void _ZN7S5268C33v14Ev();
extern void _ZN7S5268C33v15Ev();
extern void _ZN7S5268C33v16Ev();
extern void _ZN7S5268C33v17Ev();
extern void _ZN7S5268C33v18Ev();
extern void _ZN7S5268C33v19Ev();
extern void _ZN7S5268C33v20Ev();
extern void _ZN7S5268C33v21Ev();
extern void _ZN7S5268C33v22Ev();
extern void _ZN7S5268C33v23Ev();
extern void _ZN7S5268C33v24Ev();
extern void _ZN7S5268C33v25Ev();
static  VTBL_ENTRY vtc_S5268C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5268C3[0]),
  (VTBL_ENTRY)&_ZN7S5268C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5268C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v25Ev,
};
extern VTBL_ENTRY _ZTI7S5268C3[];
extern  VTBL_ENTRY _ZTV7S5268C3[];
Class_Descriptor cd_S5268C3 = {  "S5268C3", // class name
  0,0,//no base classes
  &(vtc_S5268C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S5268C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5268C3),25, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5268C2  : S5268C3 {
  void *s5268c2f0;
  ::S11969C23_nt s5268c2f1;
  virtual void  v26(); // _ZN7S5268C23v26Ev
  virtual void  v27(); // _ZN7S5268C23v27Ev
  virtual void  v28(); // _ZN7S5268C23v28Ev
  virtual void  v29(); // _ZN7S5268C23v29Ev
  virtual void  v30(); // _ZN7S5268C23v30Ev
  virtual void  v31(); // _ZN7S5268C23v31Ev
  virtual void  v32(); // _ZN7S5268C23v32Ev
  virtual void  v33(); // _ZN7S5268C23v33Ev
  virtual void  v34(); // _ZN7S5268C23v34Ev
  virtual void  v35(); // _ZN7S5268C23v35Ev
  virtual void  v36(); // _ZN7S5268C23v36Ev
  virtual void  v37(); // _ZN7S5268C23v37Ev
  virtual void  v38(); // _ZN7S5268C23v38Ev
  virtual void  v39(); // _ZN7S5268C23v39Ev
  virtual void  v40(); // _ZN7S5268C23v40Ev
  virtual void  v41(); // _ZN7S5268C23v41Ev
  virtual void  v42(); // _ZN7S5268C23v42Ev
  virtual void  v43(); // _ZN7S5268C23v43Ev
  virtual void  v44(); // _ZN7S5268C23v44Ev
  virtual void  v45(); // _ZN7S5268C23v45Ev
  virtual void  v46(); // _ZN7S5268C23v46Ev
  virtual void  v47(); // _ZN7S5268C23v47Ev
  virtual void  v48(); // _ZN7S5268C23v48Ev
  ~S5268C2(); // tgen
  S5268C2(); // tgen
};
//SIG(-1 S5268C2) C1{ BC2{ vd v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp FC3{ m Fp}}


void  S5268C2 ::v26(){vfunc_called(this, "_ZN7S5268C23v26Ev");}
void  S5268C2 ::v27(){vfunc_called(this, "_ZN7S5268C23v27Ev");}
void  S5268C2 ::v28(){vfunc_called(this, "_ZN7S5268C23v28Ev");}
void  S5268C2 ::v29(){vfunc_called(this, "_ZN7S5268C23v29Ev");}
void  S5268C2 ::v30(){vfunc_called(this, "_ZN7S5268C23v30Ev");}
void  S5268C2 ::v31(){vfunc_called(this, "_ZN7S5268C23v31Ev");}
void  S5268C2 ::v32(){vfunc_called(this, "_ZN7S5268C23v32Ev");}
void  S5268C2 ::v33(){vfunc_called(this, "_ZN7S5268C23v33Ev");}
void  S5268C2 ::v34(){vfunc_called(this, "_ZN7S5268C23v34Ev");}
void  S5268C2 ::v35(){vfunc_called(this, "_ZN7S5268C23v35Ev");}
void  S5268C2 ::v36(){vfunc_called(this, "_ZN7S5268C23v36Ev");}
void  S5268C2 ::v37(){vfunc_called(this, "_ZN7S5268C23v37Ev");}
void  S5268C2 ::v38(){vfunc_called(this, "_ZN7S5268C23v38Ev");}
void  S5268C2 ::v39(){vfunc_called(this, "_ZN7S5268C23v39Ev");}
void  S5268C2 ::v40(){vfunc_called(this, "_ZN7S5268C23v40Ev");}
void  S5268C2 ::v41(){vfunc_called(this, "_ZN7S5268C23v41Ev");}
void  S5268C2 ::v42(){vfunc_called(this, "_ZN7S5268C23v42Ev");}
void  S5268C2 ::v43(){vfunc_called(this, "_ZN7S5268C23v43Ev");}
void  S5268C2 ::v44(){vfunc_called(this, "_ZN7S5268C23v44Ev");}
void  S5268C2 ::v45(){vfunc_called(this, "_ZN7S5268C23v45Ev");}
void  S5268C2 ::v46(){vfunc_called(this, "_ZN7S5268C23v46Ev");}
void  S5268C2 ::v47(){vfunc_called(this, "_ZN7S5268C23v47Ev");}
void  S5268C2 ::v48(){vfunc_called(this, "_ZN7S5268C23v48Ev");}
S5268C2 ::~S5268C2(){ note_dtor("S5268C2", this);} // tgen
S5268C2 ::S5268C2(){ note_ctor("S5268C2", this);} // tgen

static void Test_S5268C2()
{
  extern Class_Descriptor cd_S5268C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S5268C2, buf);
    S5268C2 *dp, &lv = *(dp=new (buf) S5268C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S5268C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5268C2)");
    check_base_class_offset(lv, (S5268C3*), 0, "S5268C2");
    check_field_offset(lv, s5268c2f0, ABISELECT(8,4), "S5268C2.s5268c2f0");
    check_field_offset(lv, s5268c2f1, ABISELECT(16,8), "S5268C2.s5268c2f1");
    test_class_info(&lv, &cd_S5268C2);
    dp->~S5268C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5268C2(Test_S5268C2, "S5268C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S5268C2C1Ev();
extern void _ZN7S5268C2D1Ev();
Name_Map name_map_S5268C2[] = {
  NSPAIR(_ZN7S5268C2C1Ev),
  NSPAIR(_ZN7S5268C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5268C3;
extern VTBL_ENTRY _ZTI7S5268C3[];
extern  VTBL_ENTRY _ZTV7S5268C3[];
static Base_Class bases_S5268C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5268C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5268C2[];
extern void _ZN7S5268C2D1Ev();
extern void _ZN7S5268C2D0Ev();
extern void _ZN7S5268C32v5Ev();
extern void _ZN7S5268C32v6Ev();
extern void _ZN7S5268C32v7Ev();
extern void _ZN7S5268C32v8Ev();
extern void _ZN7S5268C32v9Ev();
extern void _ZN7S5268C33v10Ev();
extern void _ZN7S5268C33v11Ev();
extern void _ZN7S5268C33v12Ev();
extern void _ZN7S5268C33v13Ev();
extern void _ZN7S5268C33v14Ev();
extern void _ZN7S5268C33v15Ev();
extern void _ZN7S5268C33v16Ev();
extern void _ZN7S5268C33v17Ev();
extern void _ZN7S5268C33v18Ev();
extern void _ZN7S5268C33v19Ev();
extern void _ZN7S5268C33v20Ev();
extern void _ZN7S5268C33v21Ev();
extern void _ZN7S5268C33v22Ev();
extern void _ZN7S5268C33v23Ev();
extern void _ZN7S5268C33v24Ev();
extern void _ZN7S5268C33v25Ev();
extern void _ZN7S5268C23v26Ev();
extern void _ZN7S5268C23v27Ev();
extern void _ZN7S5268C23v28Ev();
extern void _ZN7S5268C23v29Ev();
extern void _ZN7S5268C23v30Ev();
extern void _ZN7S5268C23v31Ev();
extern void _ZN7S5268C23v32Ev();
extern void _ZN7S5268C23v33Ev();
extern void _ZN7S5268C23v34Ev();
extern void _ZN7S5268C23v35Ev();
extern void _ZN7S5268C23v36Ev();
extern void _ZN7S5268C23v37Ev();
extern void _ZN7S5268C23v38Ev();
extern void _ZN7S5268C23v39Ev();
extern void _ZN7S5268C23v40Ev();
extern void _ZN7S5268C23v41Ev();
extern void _ZN7S5268C23v42Ev();
extern void _ZN7S5268C23v43Ev();
extern void _ZN7S5268C23v44Ev();
extern void _ZN7S5268C23v45Ev();
extern void _ZN7S5268C23v46Ev();
extern void _ZN7S5268C23v47Ev();
extern void _ZN7S5268C23v48Ev();
static  VTBL_ENTRY vtc_S5268C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5268C2[0]),
  (VTBL_ENTRY)&_ZN7S5268C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5268C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v25Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v26Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v35Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v40Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v41Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v42Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v43Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v44Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v45Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v46Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v47Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v48Ev,
};
extern VTBL_ENTRY _ZTI7S5268C2[];
extern  VTBL_ENTRY _ZTV7S5268C2[];
Class_Descriptor cd_S5268C2 = {  "S5268C2", // class name
  bases_S5268C2, 1,
  &(vtc_S5268C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S5268C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5268C2),48, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5268C1  : S5268C2 {
  void *s5268c1f0;
  virtual void  v1(); // _ZN7S5268C12v1Ev
  virtual void  v2(); // _ZN7S5268C12v2Ev
  virtual void  v3(); // _ZN7S5268C12v3Ev
  virtual void  v4(); // _ZN7S5268C12v4Ev
  ~S5268C1(); // tgen
  S5268C1(); // tgen
};
//SIG(1 S5268C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25} v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 Fp FC4{ m Fp}} v1 v2 v3 v4 Fp}


void  S5268C1 ::v1(){vfunc_called(this, "_ZN7S5268C12v1Ev");}
void  S5268C1 ::v2(){vfunc_called(this, "_ZN7S5268C12v2Ev");}
void  S5268C1 ::v3(){vfunc_called(this, "_ZN7S5268C12v3Ev");}
void  S5268C1 ::v4(){vfunc_called(this, "_ZN7S5268C12v4Ev");}
S5268C1 ::~S5268C1(){ note_dtor("S5268C1", this);} // tgen
S5268C1 ::S5268C1(){ note_ctor("S5268C1", this);} // tgen

static void Test_S5268C1()
{
  extern Class_Descriptor cd_S5268C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S5268C1, buf);
    S5268C1 *dp, &lv = *(dp=new (buf) S5268C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S5268C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5268C1)");
    check_base_class_offset(lv, (S5268C3*)(S5268C2*), 0, "S5268C1");
    check_base_class_offset(lv, (S5268C2*), 0, "S5268C1");
    check_field_offset(lv, s5268c1f0, ABISELECT(24,12), "S5268C1.s5268c1f0");
    test_class_info(&lv, &cd_S5268C1);
    dp->~S5268C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5268C1(Test_S5268C1, "S5268C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S5268C1C1Ev();
extern void _ZN7S5268C1D1Ev();
Name_Map name_map_S5268C1[] = {
  NSPAIR(_ZN7S5268C1C1Ev),
  NSPAIR(_ZN7S5268C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5268C3;
extern VTBL_ENTRY _ZTI7S5268C3[];
extern  VTBL_ENTRY _ZTV7S5268C3[];
extern Class_Descriptor cd_S5268C2;
extern VTBL_ENTRY _ZTI7S5268C2[];
extern  VTBL_ENTRY _ZTV7S5268C2[];
static Base_Class bases_S5268C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5268C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5268C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5268C1[];
extern void _ZN7S5268C1D1Ev();
extern void _ZN7S5268C1D0Ev();
extern void _ZN7S5268C32v5Ev();
extern void _ZN7S5268C32v6Ev();
extern void _ZN7S5268C32v7Ev();
extern void _ZN7S5268C32v8Ev();
extern void _ZN7S5268C32v9Ev();
extern void _ZN7S5268C33v10Ev();
extern void _ZN7S5268C33v11Ev();
extern void _ZN7S5268C33v12Ev();
extern void _ZN7S5268C33v13Ev();
extern void _ZN7S5268C33v14Ev();
extern void _ZN7S5268C33v15Ev();
extern void _ZN7S5268C33v16Ev();
extern void _ZN7S5268C33v17Ev();
extern void _ZN7S5268C33v18Ev();
extern void _ZN7S5268C33v19Ev();
extern void _ZN7S5268C33v20Ev();
extern void _ZN7S5268C33v21Ev();
extern void _ZN7S5268C33v22Ev();
extern void _ZN7S5268C33v23Ev();
extern void _ZN7S5268C33v24Ev();
extern void _ZN7S5268C33v25Ev();
extern void _ZN7S5268C23v26Ev();
extern void _ZN7S5268C23v27Ev();
extern void _ZN7S5268C23v28Ev();
extern void _ZN7S5268C23v29Ev();
extern void _ZN7S5268C23v30Ev();
extern void _ZN7S5268C23v31Ev();
extern void _ZN7S5268C23v32Ev();
extern void _ZN7S5268C23v33Ev();
extern void _ZN7S5268C23v34Ev();
extern void _ZN7S5268C23v35Ev();
extern void _ZN7S5268C23v36Ev();
extern void _ZN7S5268C23v37Ev();
extern void _ZN7S5268C23v38Ev();
extern void _ZN7S5268C23v39Ev();
extern void _ZN7S5268C23v40Ev();
extern void _ZN7S5268C23v41Ev();
extern void _ZN7S5268C23v42Ev();
extern void _ZN7S5268C23v43Ev();
extern void _ZN7S5268C23v44Ev();
extern void _ZN7S5268C23v45Ev();
extern void _ZN7S5268C23v46Ev();
extern void _ZN7S5268C23v47Ev();
extern void _ZN7S5268C23v48Ev();
extern void _ZN7S5268C12v1Ev();
extern void _ZN7S5268C12v2Ev();
extern void _ZN7S5268C12v3Ev();
extern void _ZN7S5268C12v4Ev();
static  VTBL_ENTRY vtc_S5268C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5268C1[0]),
  (VTBL_ENTRY)&_ZN7S5268C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5268C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5268C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5268C33v25Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v26Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v35Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v40Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v41Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v42Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v43Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v44Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v45Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v46Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v47Ev,
  (VTBL_ENTRY)&_ZN7S5268C23v48Ev,
  (VTBL_ENTRY)&_ZN7S5268C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5268C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5268C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5268C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S5268C1[];
extern  VTBL_ENTRY _ZTV7S5268C1[];
Class_Descriptor cd_S5268C1 = {  "S5268C1", // class name
  bases_S5268C1, 2,
  &(vtc_S5268C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S5268C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5268C1),52, //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  S18710C1  {
  ::S7312C5 s18710c1f0;
  int s18710c1f1;
  virtual void  v1(); // _ZN8S18710C12v1Ev
  virtual void  v2(); // _ZN8S18710C12v2Ev
  virtual void  v3(); // _ZN8S18710C12v3Ev
  virtual void  v4(); // _ZN8S18710C12v4Ev
  virtual void  v5(); // _ZN8S18710C12v5Ev
  ~S18710C1(); // tgen
  S18710C1(); // tgen
};
//SIG(1 S18710C1) C1{ v1 v2 v3 v4 v5 FC2{ v6 v7 FC3{ BC4{ v11 v12 v13 v14 v15 v16 Fp Fs} BC5{ BC6{ VBC7{ VBC8{ v17} VBC9{ v18 v19 v20 v21 v22 Fp FC8} vd v23 v24 v25 Fp[6]} v26 v27 v28 FL} vd v29 v30 v31 v32 v33 FC4[4]} v8 v9 v10} Fi[2]} Fi}


void  S18710C1 ::v1(){vfunc_called(this, "_ZN8S18710C12v1Ev");}
void  S18710C1 ::v2(){vfunc_called(this, "_ZN8S18710C12v2Ev");}
void  S18710C1 ::v3(){vfunc_called(this, "_ZN8S18710C12v3Ev");}
void  S18710C1 ::v4(){vfunc_called(this, "_ZN8S18710C12v4Ev");}
void  S18710C1 ::v5(){vfunc_called(this, "_ZN8S18710C12v5Ev");}
S18710C1 ::~S18710C1(){ note_dtor("S18710C1", this);} // tgen
S18710C1 ::S18710C1(){ note_ctor("S18710C1", this);} // tgen

static void Test_S18710C1()
{
  extern Class_Descriptor cd_S18710C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,34)];
    init_test(&cd_S18710C1, buf);
    S18710C1 *dp, &lv = *(dp=new (buf) S18710C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,132), "sizeof(S18710C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18710C1)");
    check_field_offset(lv, s18710c1f0, ABISELECT(8,4), "S18710C1.s18710c1f0");
    check_field_offset(lv, s18710c1f1, ABISELECT(240,128), "S18710C1.s18710c1f1");
    test_class_info(&lv, &cd_S18710C1);
    dp->~S18710C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18710C1(Test_S18710C1, "S18710C1", ABISELECT(248,132));

#else // __cplusplus

extern void _ZN8S18710C1C1Ev();
extern void _ZN8S18710C1D1Ev();
Name_Map name_map_S18710C1[] = {
  NSPAIR(_ZN8S18710C1C1Ev),
  NSPAIR(_ZN8S18710C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18710C1[];
extern void _ZN8S18710C12v1Ev();
extern void _ZN8S18710C12v2Ev();
extern void _ZN8S18710C12v3Ev();
extern void _ZN8S18710C12v4Ev();
extern void _ZN8S18710C12v5Ev();
static  VTBL_ENTRY vtc_S18710C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18710C1[0]),
  (VTBL_ENTRY)&_ZN8S18710C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18710C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18710C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18710C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18710C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S18710C1[];
extern  VTBL_ENTRY _ZTV8S18710C1[];
Class_Descriptor cd_S18710C1 = {  "S18710C1", // class name
  0,0,//no base classes
  &(vtc_S18710C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(248,132), // object size
  NSPAIRA(_ZTI8S18710C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18710C1),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  S20511C4  {
  int s20511c4f0;
  virtual void  v10(); // _ZN8S20511C43v10Ev
  virtual void  v11(); // _ZN8S20511C43v11Ev
  virtual void  v12(); // _ZN8S20511C43v12Ev
  virtual void  v13(); // _ZN8S20511C43v13Ev
  virtual void  v14(); // _ZN8S20511C43v14Ev
  ~S20511C4(); // tgen
  S20511C4(); // tgen
};
//SIG(-1 S20511C4) C1{ v1 v2 v3 v4 v5 Fi}


void  S20511C4 ::v10(){vfunc_called(this, "_ZN8S20511C43v10Ev");}
void  S20511C4 ::v11(){vfunc_called(this, "_ZN8S20511C43v11Ev");}
void  S20511C4 ::v12(){vfunc_called(this, "_ZN8S20511C43v12Ev");}
void  S20511C4 ::v13(){vfunc_called(this, "_ZN8S20511C43v13Ev");}
void  S20511C4 ::v14(){vfunc_called(this, "_ZN8S20511C43v14Ev");}
S20511C4 ::~S20511C4(){ note_dtor("S20511C4", this);} // tgen
S20511C4 ::S20511C4(){ note_ctor("S20511C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20511C4C1Ev();
extern void _ZN8S20511C4D1Ev();
Name_Map name_map_S20511C4[] = {
  NSPAIR(_ZN8S20511C4C1Ev),
  NSPAIR(_ZN8S20511C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20511C4[];
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
static  VTBL_ENTRY vtc_S20511C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C4[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
};
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
Class_Descriptor cd_S20511C4 = {  "S20511C4", // class name
  0,0,//no base classes
  &(vtc_S20511C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20511C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20511C4),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20511C3  : S20511C4 {
  virtual void  v15(); // _ZN8S20511C33v15Ev
  virtual void  v16(); // _ZN8S20511C33v16Ev
  ~S20511C3(); // tgen
  S20511C3(); // tgen
};
//SIG(-1 S20511C3) C1{ BC2{ v3 v4 v5 v6 v7 Fi} v1 v2}


void  S20511C3 ::v15(){vfunc_called(this, "_ZN8S20511C33v15Ev");}
void  S20511C3 ::v16(){vfunc_called(this, "_ZN8S20511C33v16Ev");}
S20511C3 ::~S20511C3(){ note_dtor("S20511C3", this);} // tgen
S20511C3 ::S20511C3(){ note_ctor("S20511C3", this);} // tgen

static void Test_S20511C3()
{
  extern Class_Descriptor cd_S20511C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20511C3, buf);
    S20511C3 *dp, &lv = *(dp=new (buf) S20511C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20511C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20511C3)");
    check_base_class_offset(lv, (S20511C4*), 0, "S20511C3");
    test_class_info(&lv, &cd_S20511C3);
    dp->~S20511C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20511C3(Test_S20511C3, "S20511C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20511C3C1Ev();
extern void _ZN8S20511C3D1Ev();
Name_Map name_map_S20511C3[] = {
  NSPAIR(_ZN8S20511C3C1Ev),
  NSPAIR(_ZN8S20511C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
static Base_Class bases_S20511C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20511C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20511C3[];
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C33v15Ev();
extern void _ZN8S20511C33v16Ev();
static  VTBL_ENTRY vtc_S20511C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C3[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v16Ev,
};
extern VTBL_ENTRY _ZTI8S20511C3[];
extern  VTBL_ENTRY _ZTV8S20511C3[];
Class_Descriptor cd_S20511C3 = {  "S20511C3", // class name
  bases_S20511C3, 1,
  &(vtc_S20511C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20511C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20511C3),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20511C6  : virtual S20511C4 , virtual S20511C3 {
  void *s20511c6f0;
  virtual void  v17(); // _ZN8S20511C63v17Ev
  virtual void  v18(); // _ZN8S20511C63v18Ev
  virtual void  v19(); // _ZN8S20511C63v19Ev
  ~S20511C6(); // tgen
  S20511C6(); // tgen
};
//SIG(-1 S20511C6) C1{ VBC2{ v4 v5 v6 v7 v8 Fi} VBC3{ BC2 v9 v10} v1 v2 v3 Fp}


void  S20511C6 ::v17(){vfunc_called(this, "_ZN8S20511C63v17Ev");}
void  S20511C6 ::v18(){vfunc_called(this, "_ZN8S20511C63v18Ev");}
void  S20511C6 ::v19(){vfunc_called(this, "_ZN8S20511C63v19Ev");}
S20511C6 ::~S20511C6(){ note_dtor("S20511C6", this);} // tgen
S20511C6 ::S20511C6(){ note_ctor("S20511C6", this);} // tgen

static void Test_S20511C6()
{
  extern Class_Descriptor cd_S20511C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20511C6, buf);
    S20511C6 *dp, &lv = *(dp=new (buf) S20511C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20511C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20511C6)");
    /*is_ambiguous_... S20511C6::S20511C4 */ AMB_check_base_class_offset(lv, (S20511C4*), ABISELECT(16,8), "S20511C6");
    check_base_class_offset(lv, (S20511C4*)(S20511C3*), ABISELECT(32,16), "S20511C6");
    check_base_class_offset(lv, (S20511C3*), ABISELECT(32,16), "S20511C6");
    check_field_offset(lv, s20511c6f0, ABISELECT(8,4), "S20511C6.s20511c6f0");
    test_class_info(&lv, &cd_S20511C6);
    dp->~S20511C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20511C6(Test_S20511C6, "S20511C6", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S20511C6C1Ev();
extern void _ZN8S20511C6D1Ev();
Name_Map name_map_S20511C6[] = {
  NSPAIR(_ZN8S20511C6C1Ev),
  NSPAIR(_ZN8S20511C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
extern Class_Descriptor cd_S20511C3;
extern VTBL_ENTRY _ZTI8S20511C3[];
extern  VTBL_ENTRY _ZTV8S20511C3[];
static Base_Class bases_S20511C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20511C4,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20511C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20511C3,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20511C6[];
extern void _ZN8S20511C63v17Ev();
extern void _ZN8S20511C63v18Ev();
extern void _ZN8S20511C63v19Ev();
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C33v15Ev();
extern void _ZN8S20511C33v16Ev();
static  VTBL_ENTRY vtc_S20511C6[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v16Ev,
};
extern VTBL_ENTRY _ZTV8S20511C6[];
static  VTT_ENTRY vtt_S20511C6[] = {
  {&(_ZTV8S20511C6[4]),  4,35},
  {&(_ZTV8S20511C6[14]),  14,35},
  {&(_ZTV8S20511C6[28]),  28,35},
};
extern VTBL_ENTRY _ZTI8S20511C6[];
extern  VTBL_ENTRY _ZTV8S20511C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20511C6[];
Class_Descriptor cd_S20511C6 = {  "S20511C6", // class name
  bases_S20511C6, 3,
  &(vtc_S20511C6[0]), // expected_vtbl_contents
  &(vtt_S20511C6[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S20511C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20511C6),35, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20511C6),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20511C7  : S20511C4 {
  long double s20511c7f0;
  void *s20511c7f1[7];
  virtual void  v20(); // _ZN8S20511C73v20Ev
  virtual void  v21(); // _ZN8S20511C73v21Ev
  virtual void  v22(); // _ZN8S20511C73v22Ev
  virtual void  v23(); // _ZN8S20511C73v23Ev
  virtual void  v24(); // _ZN8S20511C73v24Ev
  virtual void  v25(); // _ZN8S20511C73v25Ev
  ~S20511C7(); // tgen
  S20511C7(); // tgen
};
//SIG(-1 S20511C7) C1{ BC2{ v7 v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 FD Fp[7]}


void  S20511C7 ::v20(){vfunc_called(this, "_ZN8S20511C73v20Ev");}
void  S20511C7 ::v21(){vfunc_called(this, "_ZN8S20511C73v21Ev");}
void  S20511C7 ::v22(){vfunc_called(this, "_ZN8S20511C73v22Ev");}
void  S20511C7 ::v23(){vfunc_called(this, "_ZN8S20511C73v23Ev");}
void  S20511C7 ::v24(){vfunc_called(this, "_ZN8S20511C73v24Ev");}
void  S20511C7 ::v25(){vfunc_called(this, "_ZN8S20511C73v25Ev");}
S20511C7 ::~S20511C7(){ note_dtor("S20511C7", this);} // tgen
S20511C7 ::S20511C7(){ note_ctor("S20511C7", this);} // tgen

static void Test_S20511C7()
{
  extern Class_Descriptor cd_S20511C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S20511C7, buf);
    S20511C7 *dp, &lv = *(dp=new (buf) S20511C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S20511C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20511C7)");
    check_base_class_offset(lv, (S20511C4*), 0, "S20511C7");
    check_field_offset(lv, s20511c7f0, ABISELECT(16,8), "S20511C7.s20511c7f0");
    check_field_offset(lv, s20511c7f1, ABISELECT(32,20), "S20511C7.s20511c7f1");
    test_class_info(&lv, &cd_S20511C7);
    dp->~S20511C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20511C7(Test_S20511C7, "S20511C7", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN8S20511C7C1Ev();
extern void _ZN8S20511C7D1Ev();
Name_Map name_map_S20511C7[] = {
  NSPAIR(_ZN8S20511C7C1Ev),
  NSPAIR(_ZN8S20511C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
static Base_Class bases_S20511C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20511C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20511C7[];
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C73v20Ev();
extern void _ZN8S20511C73v21Ev();
extern void _ZN8S20511C73v22Ev();
extern void _ZN8S20511C73v23Ev();
extern void _ZN8S20511C73v24Ev();
extern void _ZN8S20511C73v25Ev();
static  VTBL_ENTRY vtc_S20511C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C7[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v25Ev,
};
extern VTBL_ENTRY _ZTI8S20511C7[];
extern  VTBL_ENTRY _ZTV8S20511C7[];
Class_Descriptor cd_S20511C7 = {  "S20511C7", // class name
  bases_S20511C7, 1,
  &(vtc_S20511C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI8S20511C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20511C7),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20511C5  : S20511C6 , S20511C7 {
  void *s20511c5f0;
  char s20511c5f1;
  virtual void  v26(); // _ZN8S20511C53v26Ev
  virtual void  v27(); // _ZN8S20511C53v27Ev
  virtual void  v28(); // _ZN8S20511C53v28Ev
  virtual void  v29(); // _ZN8S20511C53v29Ev
  ~S20511C5(); // tgen
  S20511C5(); // tgen
};
//SIG(-1 S20511C5) C1{ BC2{ VBC3{ v5 v6 v7 v8 v9 Fi} VBC4{ BC3 v10 v11} v12 v13 v14 Fp} BC5{ BC3 v15 v16 v17 v18 v19 v20 FD Fp[7]} v1 v2 v3 v4 Fp Fc}


void  S20511C5 ::v26(){vfunc_called(this, "_ZN8S20511C53v26Ev");}
void  S20511C5 ::v27(){vfunc_called(this, "_ZN8S20511C53v27Ev");}
void  S20511C5 ::v28(){vfunc_called(this, "_ZN8S20511C53v28Ev");}
void  S20511C5 ::v29(){vfunc_called(this, "_ZN8S20511C53v29Ev");}
S20511C5 ::~S20511C5(){ note_dtor("S20511C5", this);} // tgen
S20511C5 ::S20511C5(){ note_ctor("S20511C5", this);} // tgen

static void Test_S20511C5()
{
  extern Class_Descriptor cd_S20511C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,21)];
    init_test(&cd_S20511C5, buf);
    S20511C5 *dp, &lv = *(dp=new (buf) S20511C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S20511C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20511C5)");
    /*is_ambiguous_... S20511C6::S20511C4 */ AMB_check_base_class_offset(lv, (S20511C4*)(S20511C6*), ABISELECT(120,64), "S20511C5");
    check_base_class_offset(lv, (S20511C4*)(S20511C3*), ABISELECT(136,72), "S20511C5");
    check_base_class_offset(lv, (S20511C3*)(S20511C6*), ABISELECT(136,72), "S20511C5");
    check_base_class_offset(lv, (S20511C6*), 0, "S20511C5");
    check_base_class_offset(lv, (S20511C4*)(S20511C7*), ABISELECT(16,8), "S20511C5");
    check_base_class_offset(lv, (S20511C7*), ABISELECT(16,8), "S20511C5");
    check_field_offset(lv, s20511c5f0, ABISELECT(104,56), "S20511C5.s20511c5f0");
    check_field_offset(lv, s20511c5f1, ABISELECT(112,60), "S20511C5.s20511c5f1");
    test_class_info(&lv, &cd_S20511C5);
    dp->~S20511C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20511C5(Test_S20511C5, "S20511C5", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN8S20511C5C1Ev();
extern void _ZN8S20511C5D1Ev();
Name_Map name_map_S20511C5[] = {
  NSPAIR(_ZN8S20511C5C1Ev),
  NSPAIR(_ZN8S20511C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
extern Class_Descriptor cd_S20511C3;
extern VTBL_ENTRY _ZTI8S20511C3[];
extern  VTBL_ENTRY _ZTV8S20511C3[];
extern Class_Descriptor cd_S20511C6;
extern VTBL_ENTRY _ZTI8S20511C6[];
extern  VTBL_ENTRY _ZTV8S20511C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20511C6[];
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
extern Class_Descriptor cd_S20511C7;
extern VTBL_ENTRY _ZTI8S20511C7[];
extern  VTBL_ENTRY _ZTV8S20511C7[];
static Base_Class bases_S20511C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20511C4,    ABISELECT(120,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20511C4,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20511C3,    ABISELECT(136,72), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20511C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20511C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20511C7,    ABISELECT(16,8), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20511C5[];
extern void _ZN8S20511C63v17Ev();
extern void _ZN8S20511C63v18Ev();
extern void _ZN8S20511C63v19Ev();
extern void _ZN8S20511C53v26Ev();
extern void _ZN8S20511C53v27Ev();
extern void _ZN8S20511C53v28Ev();
extern void _ZN8S20511C53v29Ev();
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C73v20Ev();
extern void _ZN8S20511C73v21Ev();
extern void _ZN8S20511C73v22Ev();
extern void _ZN8S20511C73v23Ev();
extern void _ZN8S20511C73v24Ev();
extern void _ZN8S20511C73v25Ev();
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C33v15Ev();
extern void _ZN8S20511C33v16Ev();
static  VTBL_ENTRY vtc_S20511C5[] = {
  ABISELECT(136,72),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C5[0]),
  (VTBL_ENTRY)&_ZN8S20511C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v29Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20511C5[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v25Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S20511C5[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S20511C5[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v16Ev,
};
extern VTBL_ENTRY _ZTV8S20511C5[];
extern void _ZN8S20511C63v17Ev();
extern void _ZN8S20511C63v18Ev();
extern void _ZN8S20511C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C6__8S20511C5[] = {
  ABISELECT(136,72),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v19Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C4__8S20511C6__8S20511C5[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C33v15Ev();
extern void _ZN8S20511C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C3__8S20511C6__8S20511C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v16Ev,
};
static  VTT_ENTRY vtt_S20511C5[] = {
  {&(_ZTV8S20511C5[4]),  4,52},
  {&(_tg__ZTV8S20511C6__8S20511C5[4]),  4,7},
  {&(_tg__ZTV8S20511C4__8S20511C6__8S20511C5[7]),  7,12},
  {&(_tg__ZTV8S20511C3__8S20511C6__8S20511C5[9]),  9,16},
  {&(_ZTV8S20511C5[31]),  31,52},
  {&(_ZTV8S20511C5[45]),  45,52},
};
extern VTBL_ENTRY _ZTI8S20511C5[];
extern  VTBL_ENTRY _ZTV8S20511C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20511C5[];
Class_Descriptor cd_S20511C5 = {  "S20511C5", // class name
  bases_S20511C5, 6,
  &(vtc_S20511C5[0]), // expected_vtbl_contents
  &(vtt_S20511C5[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI8S20511C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20511C5),52, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20511C5),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20511C2  : virtual S20511C3 , S20511C5 {
  void *s20511c2f0[6];
  virtual  ~S20511C2(); // _ZN8S20511C2D2Ev
  virtual void  v30(); // _ZN8S20511C23v30Ev
  virtual void  v31(); // _ZN8S20511C23v31Ev
  virtual void  v32(); // _ZN8S20511C23v32Ev
  virtual void  v33(); // _ZN8S20511C23v33Ev
  virtual void  v34(); // _ZN8S20511C23v34Ev
  S20511C2(); // tgen
};
//SIG(-1 S20511C2) C1{ VBC2{ BC3{ v6 v7 v8 v9 v10 Fi} v11 v12} BC4{ BC5{ VBC3 VBC2 v13 v14 v15 Fp} BC6{ BC3 v16 v17 v18 v19 v20 v21 FD Fp[7]} v22 v23 v24 v25 Fp Fc} vd v1 v2 v3 v4 v5 Fp[6]}


 S20511C2 ::~S20511C2(){ note_dtor("S20511C2", this);}
void  S20511C2 ::v30(){vfunc_called(this, "_ZN8S20511C23v30Ev");}
void  S20511C2 ::v31(){vfunc_called(this, "_ZN8S20511C23v31Ev");}
void  S20511C2 ::v32(){vfunc_called(this, "_ZN8S20511C23v32Ev");}
void  S20511C2 ::v33(){vfunc_called(this, "_ZN8S20511C23v33Ev");}
void  S20511C2 ::v34(){vfunc_called(this, "_ZN8S20511C23v34Ev");}
S20511C2 ::S20511C2(){ note_ctor("S20511C2", this);} // tgen

static void Test_S20511C2()
{
  extern Class_Descriptor cd_S20511C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,27)];
    init_test(&cd_S20511C2, buf);
    S20511C2 *dp, &lv = *(dp=new (buf) S20511C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,104), "sizeof(S20511C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20511C2)");
    check_base_class_offset(lv, (S20511C4*)(S20511C3*), ABISELECT(168,88), "S20511C2");
    check_base_class_offset(lv, (S20511C3*), ABISELECT(168,88), "S20511C2");
    check_base_class_offset(lv, (S20511C3*)(S20511C6*)(S20511C5*), ABISELECT(168,88), "S20511C2");
    /*is_ambiguous_... S20511C6::S20511C4 */ AMB_check_base_class_offset(lv, (S20511C4*)(S20511C6*)(S20511C5*), ABISELECT(184,96), "S20511C2");
    check_base_class_offset(lv, (S20511C6*)(S20511C5*), 0, "S20511C2");
    check_base_class_offset(lv, (S20511C4*)(S20511C7*)(S20511C5*), ABISELECT(16,8), "S20511C2");
    check_base_class_offset(lv, (S20511C7*)(S20511C5*), ABISELECT(16,8), "S20511C2");
    check_base_class_offset(lv, (S20511C5*), 0, "S20511C2");
    check_field_offset(lv, s20511c2f0, ABISELECT(120,64), "S20511C2.s20511c2f0");
    test_class_info(&lv, &cd_S20511C2);
    dp->~S20511C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20511C2(Test_S20511C2, "S20511C2", ABISELECT(208,104));

#else // __cplusplus

extern void _ZN8S20511C2C1Ev();
extern void _ZN8S20511C2D2Ev();
Name_Map name_map_S20511C2[] = {
  NSPAIR(_ZN8S20511C2C1Ev),
  NSPAIR(_ZN8S20511C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
extern Class_Descriptor cd_S20511C3;
extern VTBL_ENTRY _ZTI8S20511C3[];
extern  VTBL_ENTRY _ZTV8S20511C3[];
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
extern Class_Descriptor cd_S20511C6;
extern VTBL_ENTRY _ZTI8S20511C6[];
extern  VTBL_ENTRY _ZTV8S20511C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20511C6[];
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
extern Class_Descriptor cd_S20511C7;
extern VTBL_ENTRY _ZTI8S20511C7[];
extern  VTBL_ENTRY _ZTV8S20511C7[];
extern Class_Descriptor cd_S20511C5;
extern VTBL_ENTRY _ZTI8S20511C5[];
extern  VTBL_ENTRY _ZTV8S20511C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20511C5[];
static Base_Class bases_S20511C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20511C4,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20511C3,    ABISELECT(168,88), //bcp->offset
    31, //bcp->virtual_function_table_offset
    9, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S20511C4,    ABISELECT(184,96), //bcp->offset
    47, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20511C6,    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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20511C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20511C7,    ABISELECT(16,8), //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
    6, //immediately_derived
  0, 0},
  {&cd_S20511C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20511C2[];
extern void _ZN8S20511C63v17Ev();
extern void _ZN8S20511C63v18Ev();
extern void _ZN8S20511C63v19Ev();
extern void _ZN8S20511C53v26Ev();
extern void _ZN8S20511C53v27Ev();
extern void _ZN8S20511C53v28Ev();
extern void _ZN8S20511C53v29Ev();
extern void _ZN8S20511C2D1Ev();
extern void _ZN8S20511C2D0Ev();
extern void _ZN8S20511C23v30Ev();
extern void _ZN8S20511C23v31Ev();
extern void _ZN8S20511C23v32Ev();
extern void _ZN8S20511C23v33Ev();
extern void _ZN8S20511C23v34Ev();
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C73v20Ev();
extern void _ZN8S20511C73v21Ev();
extern void _ZN8S20511C73v22Ev();
extern void _ZN8S20511C73v23Ev();
extern void _ZN8S20511C73v24Ev();
extern void _ZN8S20511C73v25Ev();
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C33v15Ev();
extern void _ZN8S20511C33v16Ev();
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
static  VTBL_ENTRY vtc_S20511C2[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C2[0]),
  (VTBL_ENTRY)&_ZN8S20511C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20511C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20511C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v32Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v34Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20511C2[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20511C2[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v16Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20511C2[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
};
extern VTBL_ENTRY _ZTV8S20511C2[];
extern void _ZN8S20511C63v17Ev();
extern void _ZN8S20511C63v18Ev();
extern void _ZN8S20511C63v19Ev();
extern void _ZN8S20511C53v26Ev();
extern void _ZN8S20511C53v27Ev();
extern void _ZN8S20511C53v28Ev();
extern void _ZN8S20511C53v29Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C5__8S20511C2[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C5[0]),
  (VTBL_ENTRY)&_ZN8S20511C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v29Ev,
};
extern void _ZN8S20511C63v17Ev();
extern void _ZN8S20511C63v18Ev();
extern void _ZN8S20511C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C68S20511C5__8S20511C2[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v19Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C4__8S20511C68S20511C5__8S20511C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C33v15Ev();
extern void _ZN8S20511C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C3__8S20511C68S20511C5__8S20511C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v16Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C4__8S20511C5__8S20511C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20511C5[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C33v15Ev();
extern void _ZN8S20511C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C3__8S20511C5__8S20511C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20511C5[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v16Ev,
};
static  VTT_ENTRY vtt_S20511C2[] = {
  {&(_ZTV8S20511C2[4]),  4,59},
  {&(_tg__ZTV8S20511C5__8S20511C2[4]),  4,11},
  {&(_tg__ZTV8S20511C68S20511C5__8S20511C2[4]),  4,7},
  {&(_tg__ZTV8S20511C4__8S20511C68S20511C5__8S20511C2[7]),  7,12},
  {&(_tg__ZTV8S20511C3__8S20511C68S20511C5__8S20511C2[9]),  9,16},
  {&(_tg__ZTV8S20511C4__8S20511C5__8S20511C2[7]),  7,12},
  {&(_tg__ZTV8S20511C3__8S20511C5__8S20511C2[9]),  9,16},
  {&(_ZTV8S20511C2[40]),  40,59},
  {&(_ZTV8S20511C2[54]),  54,59},
};
extern VTBL_ENTRY _ZTI8S20511C2[];
extern  VTBL_ENTRY _ZTV8S20511C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20511C2[];
Class_Descriptor cd_S20511C2 = {  "S20511C2", // class name
  bases_S20511C2, 7,
  &(vtc_S20511C2[0]), // expected_vtbl_contents
  &(vtt_S20511C2[0]), // expected_vtt_contents
  ABISELECT(208,104), // object size
  NSPAIRA(_ZTI8S20511C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20511C2),59, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20511C2),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20511C1  : virtual S20511C2 , S20511C4 {
  virtual void  v1(); // _ZN8S20511C12v1Ev
  virtual void  v2(); // _ZN8S20511C12v2Ev
  virtual void  v3(); // _ZN8S20511C12v3Ev
  virtual void  v4(); // _ZN8S20511C12v4Ev
  virtual void  v5(); // _ZN8S20511C12v5Ev
  virtual void  v6(); // _ZN8S20511C12v6Ev
  virtual void  v7(); // _ZN8S20511C12v7Ev
  virtual void  v8(); // _ZN8S20511C12v8Ev
  virtual void  v9(); // _ZN8S20511C12v9Ev
  ~S20511C1(); // tgen
  S20511C1(); // tgen
};
//SIG(1 S20511C1) C1{ VBC2{ VBC3{ BC4{ v10 v11 v12 v13 v14 Fi} v15 v16} BC5{ BC6{ VBC4 VBC3 v17 v18 v19 Fp} BC7{ BC4 v20 v21 v22 v23 v24 v25 FD Fp[7]} v26 v27 v28 v29 Fp Fc} vd v30 v31 v32 v33 v34 Fp[6]} BC4 v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S20511C1 ::v1(){vfunc_called(this, "_ZN8S20511C12v1Ev");}
void  S20511C1 ::v2(){vfunc_called(this, "_ZN8S20511C12v2Ev");}
void  S20511C1 ::v3(){vfunc_called(this, "_ZN8S20511C12v3Ev");}
void  S20511C1 ::v4(){vfunc_called(this, "_ZN8S20511C12v4Ev");}
void  S20511C1 ::v5(){vfunc_called(this, "_ZN8S20511C12v5Ev");}
void  S20511C1 ::v6(){vfunc_called(this, "_ZN8S20511C12v6Ev");}
void  S20511C1 ::v7(){vfunc_called(this, "_ZN8S20511C12v7Ev");}
void  S20511C1 ::v8(){vfunc_called(this, "_ZN8S20511C12v8Ev");}
void  S20511C1 ::v9(){vfunc_called(this, "_ZN8S20511C12v9Ev");}
S20511C1 ::~S20511C1(){ note_dtor("S20511C1", this);} // tgen
S20511C1 ::S20511C1(){ note_ctor("S20511C1", this);} // tgen

static void Test_S20511C1()
{
  extern Class_Descriptor cd_S20511C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,29)];
    init_test(&cd_S20511C1, buf);
    S20511C1 *dp, &lv = *(dp=new (buf) S20511C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,112), "sizeof(S20511C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20511C1)");
    check_base_class_offset(lv, (S20511C4*)(S20511C3*), ABISELECT(184,96), "S20511C1");
    check_base_class_offset(lv, (S20511C3*)(S20511C2*), ABISELECT(184,96), "S20511C1");
    check_base_class_offset(lv, (S20511C3*)(S20511C6*)(S20511C5*)(S20511C2*), ABISELECT(184,96), "S20511C1");
    /*is_ambiguous_... S20511C6::S20511C4 */ AMB_check_base_class_offset(lv, (S20511C4*)(S20511C6*)(S20511C5*)(S20511C2*), ABISELECT(200,104), "S20511C1");
    check_base_class_offset(lv, (S20511C6*)(S20511C5*)(S20511C2*), ABISELECT(16,8), "S20511C1");
    check_base_class_offset(lv, (S20511C4*)(S20511C7*)(S20511C5*)(S20511C2*), ABISELECT(32,16), "S20511C1");
    check_base_class_offset(lv, (S20511C7*)(S20511C5*)(S20511C2*), ABISELECT(32,16), "S20511C1");
    check_base_class_offset(lv, (S20511C5*)(S20511C2*), ABISELECT(16,8), "S20511C1");
    check_base_class_offset(lv, (S20511C2*), ABISELECT(16,8), "S20511C1");
    /*is_ambiguous_... S20511C1::S20511C4 */ AMB_check_base_class_offset(lv, (S20511C4*), 0, "S20511C1");
    test_class_info(&lv, &cd_S20511C1);
    dp->~S20511C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20511C1(Test_S20511C1, "S20511C1", ABISELECT(224,112));

#else // __cplusplus

extern void _ZN8S20511C1C1Ev();
extern void _ZN8S20511C1D1Ev();
Name_Map name_map_S20511C1[] = {
  NSPAIR(_ZN8S20511C1C1Ev),
  NSPAIR(_ZN8S20511C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
extern Class_Descriptor cd_S20511C3;
extern VTBL_ENTRY _ZTI8S20511C3[];
extern  VTBL_ENTRY _ZTV8S20511C3[];
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
extern Class_Descriptor cd_S20511C6;
extern VTBL_ENTRY _ZTI8S20511C6[];
extern  VTBL_ENTRY _ZTV8S20511C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20511C6[];
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
extern Class_Descriptor cd_S20511C7;
extern VTBL_ENTRY _ZTI8S20511C7[];
extern  VTBL_ENTRY _ZTV8S20511C7[];
extern Class_Descriptor cd_S20511C5;
extern VTBL_ENTRY _ZTI8S20511C5[];
extern  VTBL_ENTRY _ZTV8S20511C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20511C5[];
extern Class_Descriptor cd_S20511C2;
extern VTBL_ENTRY _ZTI8S20511C2[];
extern  VTBL_ENTRY _ZTV8S20511C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20511C2[];
extern Class_Descriptor cd_S20511C4;
extern VTBL_ENTRY _ZTI8S20511C4[];
extern  VTBL_ENTRY _ZTV8S20511C4[];
static Base_Class bases_S20511C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20511C4,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20511C3,    ABISELECT(184,96), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20511C4,    ABISELECT(200,104), //bcp->offset
    92, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20511C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20511C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20511C7,    ABISELECT(32,16), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20511C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20511C2,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    28, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20511C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S20511C1[];
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C12v1Ev();
extern void _ZN8S20511C12v2Ev();
extern void _ZN8S20511C12v3Ev();
extern void _ZN8S20511C12v4Ev();
extern void _ZN8S20511C12v5Ev();
extern void _ZN8S20511C12v6Ev();
extern void _ZN8S20511C12v7Ev();
extern void _ZN8S20511C12v8Ev();
extern void _ZN8S20511C12v9Ev();
extern void _ZN8S20511C1D1Ev();
extern void _ZN8S20511C1D0Ev();
extern void _ZN8S20511C63v17Ev();
extern void _ZN8S20511C63v18Ev();
extern void _ZN8S20511C63v19Ev();
extern void _ZN8S20511C53v26Ev();
extern void _ZN8S20511C53v27Ev();
extern void _ZN8S20511C53v28Ev();
extern void _ZN8S20511C53v29Ev();
extern void ABISELECT(_ZTv0_n184_N8S20511C1D1Ev,_ZTv0_n92_N8S20511C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20511C1D1Ev,_ZThn8_N8S20511C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N8S20511C1D0Ev,_ZTv0_n92_N8S20511C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20511C1D0Ev,_ZThn8_N8S20511C1D0Ev)() __attribute__((weak));
extern void _ZN8S20511C23v30Ev();
extern void _ZN8S20511C23v31Ev();
extern void _ZN8S20511C23v32Ev();
extern void _ZN8S20511C23v33Ev();
extern void _ZN8S20511C23v34Ev();
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C73v20Ev();
extern void _ZN8S20511C73v21Ev();
extern void _ZN8S20511C73v22Ev();
extern void _ZN8S20511C73v23Ev();
extern void _ZN8S20511C73v24Ev();
extern void _ZN8S20511C73v25Ev();
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C33v15Ev();
extern void _ZN8S20511C33v16Ev();
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
static  VTBL_ENTRY vtc_S20511C1[] = {
  ABISELECT(200,104),
  ABISELECT(184,96),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C1[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20511C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20511C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20511C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20511C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20511C12v6Ev,
  (VTBL_ENTRY)&_ZN8S20511C12v7Ev,
  (VTBL_ENTRY)&_ZN8S20511C12v8Ev,
  (VTBL_ENTRY)&_ZN8S20511C12v9Ev,
  (VTBL_ENTRY)&_ZN8S20511C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20511C1D0Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(184,96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20511C1[0]),
  (VTBL_ENTRY)&_ZN8S20511C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v29Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S20511C1D1Ev,_ZTv0_n92_N8S20511C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N8S20511C1D0Ev,_ZTv0_n92_N8S20511C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20511C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v32Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v34Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20511C1[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v20Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v22Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v23Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v24Ev,
  (VTBL_ENTRY)&_ZN8S20511C73v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20511C1[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v16Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-200,-104),
  (VTBL_ENTRY)&(_ZTI8S20511C1[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
};
extern VTBL_ENTRY _ZTV8S20511C1[];
extern void _ZN8S20511C63v17Ev();
extern void _ZN8S20511C63v18Ev();
extern void _ZN8S20511C63v19Ev();
extern void _ZN8S20511C53v26Ev();
extern void _ZN8S20511C53v27Ev();
extern void _ZN8S20511C53v28Ev();
extern void _ZN8S20511C53v29Ev();
extern void _ZN8S20511C2D1Ev();
extern void _ZN8S20511C2D0Ev();
extern void _ZN8S20511C23v30Ev();
extern void _ZN8S20511C23v31Ev();
extern void _ZN8S20511C23v32Ev();
extern void _ZN8S20511C23v33Ev();
extern void _ZN8S20511C23v34Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C2__8S20511C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C2[0]),
  (VTBL_ENTRY)&_ZN8S20511C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v29Ev,
  (VTBL_ENTRY)&_ZN8S20511C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20511C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v30Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v31Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v32Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v33Ev,
  (VTBL_ENTRY)&_ZN8S20511C23v34Ev,
};
extern void _ZN8S20511C63v17Ev();
extern void _ZN8S20511C63v18Ev();
extern void _ZN8S20511C63v19Ev();
extern void _ZN8S20511C53v26Ev();
extern void _ZN8S20511C53v27Ev();
extern void _ZN8S20511C53v28Ev();
extern void _ZN8S20511C53v29Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C58S20511C2__8S20511C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C5[0]),
  (VTBL_ENTRY)&_ZN8S20511C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v19Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v26Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v27Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v28Ev,
  (VTBL_ENTRY)&_ZN8S20511C53v29Ev,
};
extern void _ZN8S20511C63v17Ev();
extern void _ZN8S20511C63v18Ev();
extern void _ZN8S20511C63v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C68S20511C58S20511C2__8S20511C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C63v17Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v18Ev,
  (VTBL_ENTRY)&_ZN8S20511C63v19Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C4__8S20511C68S20511C58S20511C2__8S20511C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C33v15Ev();
extern void _ZN8S20511C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C3__8S20511C68S20511C58S20511C2__8S20511C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20511C6[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v16Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C4__8S20511C58S20511C2__8S20511C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20511C5[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C33v15Ev();
extern void _ZN8S20511C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C3__8S20511C58S20511C2__8S20511C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20511C5[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v16Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
extern void _ZN8S20511C33v15Ev();
extern void _ZN8S20511C33v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C3__8S20511C2__8S20511C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S20511C2[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20511C33v16Ev,
};
extern void _ZN8S20511C43v10Ev();
extern void _ZN8S20511C43v11Ev();
extern void _ZN8S20511C43v12Ev();
extern void _ZN8S20511C43v13Ev();
extern void _ZN8S20511C43v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20511C4__A1__8S20511C2__8S20511C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20511C2[0]),
  (VTBL_ENTRY)&_ZN8S20511C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20511C43v14Ev,
};
static  VTT_ENTRY vtt_S20511C1[] = {
  {&(_ZTV8S20511C1[5]),  5,104},
  {&(_ZTV8S20511C1[49]),  49,104},
  {&(_ZTV8S20511C1[85]),  85,104},
  {&(_ZTV8S20511C1[99]),  99,104},
  {&(_ZTV8S20511C1[65]),  65,104},
  {&(_tg__ZTV8S20511C2__8S20511C1[4]),  4,18},
  {&(_tg__ZTV8S20511C58S20511C2__8S20511C1[4]),  4,11},
  {&(_tg__ZTV8S20511C68S20511C58S20511C2__8S20511C1[4]),  4,7},
  {&(_tg__ZTV8S20511C4__8S20511C68S20511C58S20511C2__8S20511C1[7]),  7,12},
  {&(_tg__ZTV8S20511C3__8S20511C68S20511C58S20511C2__8S20511C1[9]),  9,16},
  {&(_tg__ZTV8S20511C4__8S20511C58S20511C2__8S20511C1[7]),  7,12},
  {&(_tg__ZTV8S20511C3__8S20511C58S20511C2__8S20511C1[9]),  9,16},
  {&(_tg__ZTV8S20511C3__8S20511C2__8S20511C1[9]),  9,16},
  {&(_tg__ZTV8S20511C4__A1__8S20511C2__8S20511C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20511C1[];
extern  VTBL_ENTRY _ZTV8S20511C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20511C1[];
static VTBL_ENTRY alt_thunk_names188[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S20511C1D0Ev,_ZTv0_n92_N8S20511C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20511C1D0Ev,_ZThn8_N8S20511C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N8S20511C1D1Ev,_ZTv0_n92_N8S20511C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20511C1D1Ev,_ZThn8_N8S20511C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20511C1 = {  "S20511C1", // class name
  bases_S20511C1, 9,
  &(vtc_S20511C1[0]), // expected_vtbl_contents
  &(vtt_S20511C1[0]), // expected_vtt_contents
  ABISELECT(224,112), // object size
  NSPAIRA(_ZTI8S20511C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20511C1),104, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20511C1),14, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names188,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19302C4  {
  virtual void  v7(); // _ZN8S19302C42v7Ev
  ~S19302C4(); // tgen
  S19302C4(); // tgen
};
//SIG(-1 S19302C4) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S19302C4C1Ev();
extern void _ZN8S19302C4D1Ev();
Name_Map name_map_S19302C4[] = {
  NSPAIR(_ZN8S19302C4C1Ev),
  NSPAIR(_ZN8S19302C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19302C4[];
extern void _ZN8S19302C42v7Ev();
static  VTBL_ENTRY vtc_S19302C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C4[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
};
extern VTBL_ENTRY _ZTI8S19302C4[];
extern  VTBL_ENTRY _ZTV8S19302C4[];
Class_Descriptor cd_S19302C4 = {  "S19302C4", // class name
  0,0,//no base classes
  &(vtc_S19302C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19302C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19302C4),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  S19302C3  {
  void *s19302c3f0;
  ::S19302C4 s19302c3f1;
  virtual void  v2(); // _ZN8S19302C32v2Ev
  virtual void  v3(); // _ZN8S19302C32v3Ev
  virtual void  v4(); // _ZN8S19302C32v4Ev
  virtual void  v5(); // _ZN8S19302C32v5Ev
  virtual void  v6(); // _ZN8S19302C32v6Ev
  ~S19302C3(); // tgen
  S19302C3(); // tgen
};
//SIG(-1 S19302C3) C1{ v1 v2 v3 v4 v5 Fp FC2{ v6}}


void  S19302C3 ::v2(){vfunc_called(this, "_ZN8S19302C32v2Ev");}
void  S19302C3 ::v3(){vfunc_called(this, "_ZN8S19302C32v3Ev");}
void  S19302C3 ::v4(){vfunc_called(this, "_ZN8S19302C32v4Ev");}
void  S19302C3 ::v5(){vfunc_called(this, "_ZN8S19302C32v5Ev");}
void  S19302C3 ::v6(){vfunc_called(this, "_ZN8S19302C32v6Ev");}
S19302C3 ::~S19302C3(){ note_dtor("S19302C3", this);} // tgen
S19302C3 ::S19302C3(){ note_ctor("S19302C3", this);} // tgen

static void Test_S19302C3()
{
  extern Class_Descriptor cd_S19302C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19302C3, buf);
    S19302C3 *dp, &lv = *(dp=new (buf) S19302C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19302C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19302C3)");
    check_field_offset(lv, s19302c3f0, ABISELECT(8,4), "S19302C3.s19302c3f0");
    check_field_offset(lv, s19302c3f1, ABISELECT(16,8), "S19302C3.s19302c3f1");
    test_class_info(&lv, &cd_S19302C3);
    dp->~S19302C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19302C3(Test_S19302C3, "S19302C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19302C3C1Ev();
extern void _ZN8S19302C3D1Ev();
Name_Map name_map_S19302C3[] = {
  NSPAIR(_ZN8S19302C3C1Ev),
  NSPAIR(_ZN8S19302C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19302C3[];
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY vtc_S19302C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C3[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
extern VTBL_ENTRY _ZTI8S19302C3[];
extern  VTBL_ENTRY _ZTV8S19302C3[];
Class_Descriptor cd_S19302C3 = {  "S19302C3", // class name
  0,0,//no base classes
  &(vtc_S19302C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19302C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19302C3),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  S19302C5  : virtual S19302C4 {
  __tsi64 s19302c5f0;
  void *s19302c5f1;
  virtual void  v8(); // _ZN8S19302C52v8Ev
  virtual void  v9(); // _ZN8S19302C52v9Ev
  virtual void  v10(); // _ZN8S19302C53v10Ev
  ~S19302C5(); // tgen
  S19302C5(); // tgen
};
//SIG(-1 S19302C5) C1{ VBC2{ v4} v1 v2 v3 FL Fp}


void  S19302C5 ::v8(){vfunc_called(this, "_ZN8S19302C52v8Ev");}
void  S19302C5 ::v9(){vfunc_called(this, "_ZN8S19302C52v9Ev");}
void  S19302C5 ::v10(){vfunc_called(this, "_ZN8S19302C53v10Ev");}
S19302C5 ::~S19302C5(){ note_dtor("S19302C5", this);} // tgen
S19302C5 ::S19302C5(){ note_ctor("S19302C5", this);} // tgen

static void Test_S19302C5()
{
  extern Class_Descriptor cd_S19302C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19302C5, buf);
    S19302C5 *dp, &lv = *(dp=new (buf) S19302C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19302C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19302C5)");
    check_base_class_offset(lv, (S19302C4*), 0, "S19302C5");
    check_field_offset(lv, s19302c5f0, ABISELECT(8,4), "S19302C5.s19302c5f0");
    check_field_offset(lv, s19302c5f1, ABISELECT(16,12), "S19302C5.s19302c5f1");
    test_class_info(&lv, &cd_S19302C5);
    dp->~S19302C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19302C5(Test_S19302C5, "S19302C5", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19302C5C1Ev();
extern void _ZN8S19302C5D1Ev();
Name_Map name_map_S19302C5[] = {
  NSPAIR(_ZN8S19302C5C1Ev),
  NSPAIR(_ZN8S19302C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19302C4;
extern VTBL_ENTRY _ZTI8S19302C4[];
extern  VTBL_ENTRY _ZTV8S19302C4[];
static Base_Class bases_S19302C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19302C4,    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 _ZTI8S19302C5[];
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C52v8Ev();
extern void _ZN8S19302C52v9Ev();
extern void _ZN8S19302C53v10Ev();
static  VTBL_ENTRY vtc_S19302C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C5[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19302C53v10Ev,
};
extern VTBL_ENTRY _ZTV8S19302C5[];
static  VTT_ENTRY vtt_S19302C5[] = {
  {&(_ZTV8S19302C5[4]),  4,8},
  {&(_ZTV8S19302C5[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S19302C5[];
extern  VTBL_ENTRY _ZTV8S19302C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C5[];
Class_Descriptor cd_S19302C5 = {  "S19302C5", // class name
  bases_S19302C5, 1,
  &(vtc_S19302C5[0]), // expected_vtbl_contents
  &(vtt_S19302C5[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19302C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19302C5),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19302C5),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  S19302C6  : virtual S19302C4 , virtual S19302C3 {
  void *s19302c6f0[6];
  virtual  ~S19302C6(); // _ZN8S19302C6D2Ev
  virtual void  v11(); // _ZN8S19302C63v11Ev
  virtual void  v12(); // _ZN8S19302C63v12Ev
  virtual void  v13(); // _ZN8S19302C63v13Ev
  S19302C6(); // tgen
};
//SIG(-1 S19302C6) C1{ VBC2{ v4} VBC3{ v5 v6 v7 v8 v9 Fp FC2} vd v1 v2 v3 Fp[6]}


 S19302C6 ::~S19302C6(){ note_dtor("S19302C6", this);}
void  S19302C6 ::v11(){vfunc_called(this, "_ZN8S19302C63v11Ev");}
void  S19302C6 ::v12(){vfunc_called(this, "_ZN8S19302C63v12Ev");}
void  S19302C6 ::v13(){vfunc_called(this, "_ZN8S19302C63v13Ev");}
S19302C6 ::S19302C6(){ note_ctor("S19302C6", this);} // tgen

static void Test_S19302C6()
{
  extern Class_Descriptor cd_S19302C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S19302C6, buf);
    S19302C6 *dp, &lv = *(dp=new (buf) S19302C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19302C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19302C6)");
    check_base_class_offset(lv, (S19302C4*), 0, "S19302C6");
    check_base_class_offset(lv, (S19302C3*), ABISELECT(56,28), "S19302C6");
    check_field_offset(lv, s19302c6f0, ABISELECT(8,4), "S19302C6.s19302c6f0");
    test_class_info(&lv, &cd_S19302C6);
    dp->~S19302C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19302C6(Test_S19302C6, "S19302C6", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19302C6C1Ev();
extern void _ZN8S19302C6D2Ev();
Name_Map name_map_S19302C6[] = {
  NSPAIR(_ZN8S19302C6C1Ev),
  NSPAIR(_ZN8S19302C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19302C4;
extern VTBL_ENTRY _ZTI8S19302C4[];
extern  VTBL_ENTRY _ZTV8S19302C4[];
extern Class_Descriptor cd_S19302C3;
extern VTBL_ENTRY _ZTI8S19302C3[];
extern  VTBL_ENTRY _ZTV8S19302C3[];
static Base_Class bases_S19302C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19302C4,    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_S19302C3,    ABISELECT(56,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19302C6[];
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C6D1Ev();
extern void _ZN8S19302C6D0Ev();
extern void _ZN8S19302C63v11Ev();
extern void _ZN8S19302C63v12Ev();
extern void _ZN8S19302C63v13Ev();
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY vtc_S19302C6[] = {
  ABISELECT(56,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C6[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19302C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19302C6[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
extern VTBL_ENTRY _ZTV8S19302C6[];
static  VTT_ENTRY vtt_S19302C6[] = {
  {&(_ZTV8S19302C6[5]),  5,23},
  {&(_ZTV8S19302C6[5]),  5,23},
  {&(_ZTV8S19302C6[18]),  18,23},
};
extern VTBL_ENTRY _ZTI8S19302C6[];
extern  VTBL_ENTRY _ZTV8S19302C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C6[];
Class_Descriptor cd_S19302C6 = {  "S19302C6", // class name
  bases_S19302C6, 2,
  &(vtc_S19302C6[0]), // expected_vtbl_contents
  &(vtt_S19302C6[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19302C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19302C6),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19302C6),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  S19302C2  : S19302C3 , S19302C5 {
  ::S19302C6 s19302c2f0;
  ~S19302C2(); // tgen
  S19302C2(); // tgen
};
//SIG(-1 S19302C2) C1{ BC2{ v1 v2 v3 v4 v5 Fp FC3{ v6}} BC4{ VBC3 v7 v8 v9 FL Fp} FC5{ VBC3 VBC2 vd v10 v11 v12 Fp[6]}}


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

static void Test_S19302C2()
{
  extern Class_Descriptor cd_S19302C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S19302C2, buf);
    S19302C2 *dp, &lv = *(dp=new (buf) S19302C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S19302C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19302C2)");
    check_base_class_offset(lv, (S19302C3*), 0, "S19302C2");
    check_base_class_offset(lv, (S19302C4*)(S19302C5*), ABISELECT(24,12), "S19302C2");
    check_base_class_offset(lv, (S19302C5*), ABISELECT(24,12), "S19302C2");
    check_field_offset(lv, s19302c2f0, ABISELECT(48,28), "S19302C2.s19302c2f0");
    test_class_info(&lv, &cd_S19302C2);
    dp->~S19302C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19302C2(Test_S19302C2, "S19302C2", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S19302C2C1Ev();
extern void _ZN8S19302C2D1Ev();
Name_Map name_map_S19302C2[] = {
  NSPAIR(_ZN8S19302C2C1Ev),
  NSPAIR(_ZN8S19302C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19302C3;
extern VTBL_ENTRY _ZTI8S19302C3[];
extern  VTBL_ENTRY _ZTV8S19302C3[];
extern Class_Descriptor cd_S19302C4;
extern VTBL_ENTRY _ZTI8S19302C4[];
extern  VTBL_ENTRY _ZTV8S19302C4[];
extern Class_Descriptor cd_S19302C5;
extern VTBL_ENTRY _ZTI8S19302C5[];
extern  VTBL_ENTRY _ZTV8S19302C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C5[];
static Base_Class bases_S19302C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19302C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19302C4,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19302C5,    ABISELECT(24,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19302C2[];
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C52v8Ev();
extern void _ZN8S19302C52v9Ev();
extern void _ZN8S19302C53v10Ev();
static  VTBL_ENTRY vtc_S19302C2[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C2[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19302C2[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19302C53v10Ev,
};
extern VTBL_ENTRY _ZTV8S19302C2[];
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C52v8Ev();
extern void _ZN8S19302C52v9Ev();
extern void _ZN8S19302C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C5__8S19302C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C5[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19302C53v10Ev,
};
static  VTT_ENTRY vtt_S19302C2[] = {
  {&(_ZTV8S19302C2[3]),  3,16},
  {&(_tg__ZTV8S19302C5__8S19302C2[4]),  4,8},
  {&(_tg__ZTV8S19302C5__8S19302C2[4]),  4,8},
  {&(_ZTV8S19302C2[12]),  12,16},
  {&(_ZTV8S19302C2[12]),  12,16},
};
extern VTBL_ENTRY _ZTI8S19302C2[];
extern  VTBL_ENTRY _ZTV8S19302C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C2[];
Class_Descriptor cd_S19302C2 = {  "S19302C2", // class name
  bases_S19302C2, 3,
  &(vtc_S19302C2[0]), // expected_vtbl_contents
  &(vtt_S19302C2[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S19302C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19302C2),16, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19302C2),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19302C8  : virtual S19302C6 {
  __tsi64 s19302c8f0;
  virtual void  v14(); // _ZN8S19302C83v14Ev
  virtual void  v15(); // _ZN8S19302C83v15Ev
  virtual void  v16(); // _ZN8S19302C83v16Ev
  ~S19302C8(); // tgen
  S19302C8(); // tgen
};
//SIG(-1 S19302C8) C1{ VBC2{ VBC3{ v4} VBC4{ v5 v6 v7 v8 v9 Fp FC3} vd v10 v11 v12 Fp[6]} v1 v2 v3 FL}


void  S19302C8 ::v14(){vfunc_called(this, "_ZN8S19302C83v14Ev");}
void  S19302C8 ::v15(){vfunc_called(this, "_ZN8S19302C83v15Ev");}
void  S19302C8 ::v16(){vfunc_called(this, "_ZN8S19302C83v16Ev");}
S19302C8 ::~S19302C8(){ note_dtor("S19302C8", this);} // tgen
S19302C8 ::S19302C8(){ note_ctor("S19302C8", this);} // tgen

static void Test_S19302C8()
{
  extern Class_Descriptor cd_S19302C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S19302C8, buf);
    S19302C8 *dp, &lv = *(dp=new (buf) S19302C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S19302C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19302C8)");
    check_base_class_offset(lv, (S19302C4*)(S19302C6*), 0, "S19302C8");
    check_base_class_offset(lv, (S19302C3*)(S19302C6*), ABISELECT(72,40), "S19302C8");
    check_base_class_offset(lv, (S19302C6*), ABISELECT(16,12), "S19302C8");
    check_field_offset(lv, s19302c8f0, ABISELECT(8,4), "S19302C8.s19302c8f0");
    test_class_info(&lv, &cd_S19302C8);
    dp->~S19302C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19302C8(Test_S19302C8, "S19302C8", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN8S19302C8C1Ev();
extern void _ZN8S19302C8D1Ev();
Name_Map name_map_S19302C8[] = {
  NSPAIR(_ZN8S19302C8C1Ev),
  NSPAIR(_ZN8S19302C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19302C4;
extern VTBL_ENTRY _ZTI8S19302C4[];
extern  VTBL_ENTRY _ZTV8S19302C4[];
extern Class_Descriptor cd_S19302C3;
extern VTBL_ENTRY _ZTI8S19302C3[];
extern  VTBL_ENTRY _ZTV8S19302C3[];
extern Class_Descriptor cd_S19302C6;
extern VTBL_ENTRY _ZTI8S19302C6[];
extern  VTBL_ENTRY _ZTV8S19302C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C6[];
static Base_Class bases_S19302C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19302C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19302C3,    ABISELECT(72,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19302C6,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19302C8[];
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C83v14Ev();
extern void _ZN8S19302C83v15Ev();
extern void _ZN8S19302C83v16Ev();
extern void _ZN8S19302C8D1Ev();
extern void _ZN8S19302C8D0Ev();
extern void _ZN8S19302C42v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S19302C8D1Ev,_ZTv0_n24_N8S19302C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19302C8D1Ev,_ZThn12_N8S19302C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19302C8D0Ev,_ZTv0_n24_N8S19302C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19302C8D0Ev,_ZThn12_N8S19302C8D0Ev)() __attribute__((weak));
extern void _ZN8S19302C63v11Ev();
extern void _ZN8S19302C63v12Ev();
extern void _ZN8S19302C63v13Ev();
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY vtc_S19302C8[] = {
  ABISELECT(72,40),
  0,
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C8[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v14Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v15Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v16Ev,
  (VTBL_ENTRY)&_ZN8S19302C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19302C8D0Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19302C8[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C8D1Ev,_ZTv0_n24_N8S19302C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C8D0Ev,_ZTv0_n24_N8S19302C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19302C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19302C8[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
extern VTBL_ENTRY _ZTV8S19302C8[];
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C6D1Ev();
extern void _ZN8S19302C6D0Ev();
extern void _ZN8S19302C63v11Ev();
extern void _ZN8S19302C63v12Ev();
extern void _ZN8S19302C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C6__8S19302C8[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C6[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19302C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v13Ev,
};
extern void _ZN8S19302C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C4__8S19302C6__8S19302C8[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19302C6[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
};
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C3__8S19302C6__8S19302C8[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19302C6[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
static  VTT_ENTRY vtt_S19302C8[] = {
  {&(_ZTV8S19302C8[6]),  6,39},
  {&(_ZTV8S19302C8[21]),  21,39},
  {&(_ZTV8S19302C8[6]),  6,39},
  {&(_ZTV8S19302C8[34]),  34,39},
  {&(_tg__ZTV8S19302C6__8S19302C8[5]),  5,11},
  {&(_tg__ZTV8S19302C4__8S19302C6__8S19302C8[3]),  3,4},
  {&(_tg__ZTV8S19302C3__8S19302C6__8S19302C8[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19302C8[];
extern  VTBL_ENTRY _ZTV8S19302C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C8[];
static VTBL_ENTRY alt_thunk_names189[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C8D0Ev,_ZTv0_n24_N8S19302C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19302C8D0Ev,_ZThn12_N8S19302C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C8D1Ev,_ZTv0_n24_N8S19302C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19302C8D1Ev,_ZThn12_N8S19302C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19302C8 = {  "S19302C8", // class name
  bases_S19302C8, 3,
  &(vtc_S19302C8[0]), // expected_vtbl_contents
  &(vtt_S19302C8[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI8S19302C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19302C8),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19302C8),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names189,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19302C7  : S19302C8 {
  ::S20361C4 s19302c7f0[4];
  virtual  ~S19302C7(); // _ZN8S19302C7D2Ev
  virtual void  v17(); // _ZN8S19302C73v17Ev
  virtual void  v18(); // _ZN8S19302C73v18Ev
  virtual void  v19(); // _ZN8S19302C73v19Ev
  virtual void  v20(); // _ZN8S19302C73v20Ev
  virtual void  v21(); // _ZN8S19302C73v21Ev
  S19302C7(); // tgen
};
//SIG(-1 S19302C7) C1{ BC2{ VBC3{ VBC4{ v6} VBC5{ v7 v8 v9 v10 v11 Fp FC4} vd v12 v13 v14 Fp[6]} v15 v16 v17 FL} vd v1 v2 v3 v4 v5 FC6{ v18 v19 v20 v21 v22 v23 Fp Fs}[4]}


 S19302C7 ::~S19302C7(){ note_dtor("S19302C7", this);}
void  S19302C7 ::v17(){vfunc_called(this, "_ZN8S19302C73v17Ev");}
void  S19302C7 ::v18(){vfunc_called(this, "_ZN8S19302C73v18Ev");}
void  S19302C7 ::v19(){vfunc_called(this, "_ZN8S19302C73v19Ev");}
void  S19302C7 ::v20(){vfunc_called(this, "_ZN8S19302C73v20Ev");}
void  S19302C7 ::v21(){vfunc_called(this, "_ZN8S19302C73v21Ev");}
S19302C7 ::S19302C7(){ note_ctor("S19302C7", this);} // tgen

static void Test_S19302C7()
{
  extern Class_Descriptor cd_S19302C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,26)];
    init_test(&cd_S19302C7, buf);
    S19302C7 *dp, &lv = *(dp=new (buf) S19302C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S19302C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19302C7)");
    check_base_class_offset(lv, (S19302C4*)(S19302C6*), 0, "S19302C7");
    check_base_class_offset(lv, (S19302C3*)(S19302C6*), ABISELECT(168,88), "S19302C7");
    check_base_class_offset(lv, (S19302C6*)(S19302C8*), ABISELECT(112,60), "S19302C7");
    check_base_class_offset(lv, (S19302C8*), 0, "S19302C7");
    check_field_offset(lv, s19302c7f0, ABISELECT(16,12), "S19302C7.s19302c7f0");
    test_class_info(&lv, &cd_S19302C7);
    dp->~S19302C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19302C7(Test_S19302C7, "S19302C7", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN8S19302C7C1Ev();
extern void _ZN8S19302C7D2Ev();
Name_Map name_map_S19302C7[] = {
  NSPAIR(_ZN8S19302C7C1Ev),
  NSPAIR(_ZN8S19302C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19302C4;
extern VTBL_ENTRY _ZTI8S19302C4[];
extern  VTBL_ENTRY _ZTV8S19302C4[];
extern Class_Descriptor cd_S19302C3;
extern VTBL_ENTRY _ZTI8S19302C3[];
extern  VTBL_ENTRY _ZTV8S19302C3[];
extern Class_Descriptor cd_S19302C6;
extern VTBL_ENTRY _ZTI8S19302C6[];
extern  VTBL_ENTRY _ZTV8S19302C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C6[];
extern Class_Descriptor cd_S19302C8;
extern VTBL_ENTRY _ZTI8S19302C8[];
extern  VTBL_ENTRY _ZTV8S19302C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C8[];
static Base_Class bases_S19302C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19302C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19302C3,    ABISELECT(168,88), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19302C6,    ABISELECT(112,60), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19302C8,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19302C7[];
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C83v14Ev();
extern void _ZN8S19302C83v15Ev();
extern void _ZN8S19302C83v16Ev();
extern void _ZN8S19302C7D1Ev();
extern void _ZN8S19302C7D0Ev();
extern void _ZN8S19302C73v17Ev();
extern void _ZN8S19302C73v18Ev();
extern void _ZN8S19302C73v19Ev();
extern void _ZN8S19302C73v20Ev();
extern void _ZN8S19302C73v21Ev();
extern void _ZN8S19302C42v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S19302C7D1Ev,_ZTv0_n24_N8S19302C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S19302C7D1Ev,_ZThn60_N8S19302C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19302C7D0Ev,_ZTv0_n24_N8S19302C7D0Ev)();
extern void ABISELECT(_ZThn112_N8S19302C7D0Ev,_ZThn60_N8S19302C7D0Ev)() __attribute__((weak));
extern void _ZN8S19302C63v11Ev();
extern void _ZN8S19302C63v12Ev();
extern void _ZN8S19302C63v13Ev();
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY vtc_S19302C7[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C7[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v14Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v15Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v16Ev,
  (VTBL_ENTRY)&_ZN8S19302C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19302C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v21Ev,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19302C7[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C7D1Ev,_ZTv0_n24_N8S19302C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C7D0Ev,_ZTv0_n24_N8S19302C7D0Ev),
  (VTBL_ENTRY)&_ZN8S19302C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19302C7[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
extern VTBL_ENTRY _ZTV8S19302C7[];
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C83v14Ev();
extern void _ZN8S19302C83v15Ev();
extern void _ZN8S19302C83v16Ev();
extern void _ZN8S19302C8D1Ev();
extern void _ZN8S19302C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C8__8S19302C7[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C8[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v14Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v15Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v16Ev,
  (VTBL_ENTRY)&_ZN8S19302C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19302C8D0Ev,
};
extern void _ZN8S19302C42v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S19302C8D1Ev,_ZTv0_n24_N8S19302C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19302C8D1Ev,_ZThn60_N8S19302C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19302C8D0Ev,_ZTv0_n24_N8S19302C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19302C8D0Ev,_ZThn60_N8S19302C8D0Ev)() __attribute__((weak));
extern void _ZN8S19302C63v11Ev();
extern void _ZN8S19302C63v12Ev();
extern void _ZN8S19302C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C6__8S19302C8__8S19302C7[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19302C8[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C8D1Ev,_ZTv0_n24_N8S19302C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C8D0Ev,_ZTv0_n24_N8S19302C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19302C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v13Ev,
};
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C3__8S19302C8__8S19302C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19302C8[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C6D1Ev();
extern void _ZN8S19302C6D0Ev();
extern void _ZN8S19302C63v11Ev();
extern void _ZN8S19302C63v12Ev();
extern void _ZN8S19302C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C6__8S19302C7[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C6[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19302C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v13Ev,
};
extern void _ZN8S19302C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C4__8S19302C6__8S19302C7[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S19302C6[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
};
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C3__8S19302C6__8S19302C7[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19302C6[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
static  VTT_ENTRY vtt_S19302C7[] = {
  {&(_ZTV8S19302C7[6]),  6,44},
  {&(_tg__ZTV8S19302C8__8S19302C7[6]),  6,12},
  {&(_tg__ZTV8S19302C6__8S19302C8__8S19302C7[9]),  9,15},
  {&(_tg__ZTV8S19302C8__8S19302C7[6]),  6,12},
  {&(_tg__ZTV8S19302C3__8S19302C8__8S19302C7[7]),  7,12},
  {&(_ZTV8S19302C7[26]),  26,44},
  {&(_ZTV8S19302C7[6]),  6,44},
  {&(_ZTV8S19302C7[39]),  39,44},
  {&(_tg__ZTV8S19302C6__8S19302C7[5]),  5,11},
  {&(_tg__ZTV8S19302C4__8S19302C6__8S19302C7[3]),  3,4},
  {&(_tg__ZTV8S19302C3__8S19302C6__8S19302C7[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19302C7[];
extern  VTBL_ENTRY _ZTV8S19302C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C7[];
static VTBL_ENTRY alt_thunk_names190[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C8D0Ev,_ZTv0_n24_N8S19302C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19302C8D0Ev,_ZThn60_N8S19302C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C8D1Ev,_ZTv0_n24_N8S19302C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19302C8D1Ev,_ZThn60_N8S19302C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C7D0Ev,_ZTv0_n24_N8S19302C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19302C7D0Ev,_ZThn60_N8S19302C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C7D1Ev,_ZTv0_n24_N8S19302C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19302C7D1Ev,_ZThn60_N8S19302C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19302C7 = {  "S19302C7", // class name
  bases_S19302C7, 4,
  &(vtc_S19302C7[0]), // expected_vtbl_contents
  &(vtt_S19302C7[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI8S19302C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19302C7),44, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19302C7),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names190,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19302C1  : virtual S19302C2 , virtual S19302C7 {
  void *s19302c1f0;
  virtual  ~S19302C1(); // _ZN8S19302C1D2Ev
  virtual void  v1(); // _ZN8S19302C12v1Ev
  S19302C1(); // tgen
};
//SIG(1 S19302C1) C1{ VBC2{ BC3{ v2 v3 v4 v5 v6 Fp FC4{ v7}} BC5{ VBC4 v8 v9 v10 FL Fp} FC6{ VBC4 VBC3 vd v11 v12 v13 Fp[6]}} VBC7{ BC8{ VBC6 v14 v15 v16 FL} vd v17 v18 v19 v20 v21 FC9{ v22 v23 v24 v25 v26 v27 Fp Fs}[4]} vd v1 Fp}


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

static void Test_S19302C1()
{
  extern Class_Descriptor cd_S19302C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,45)];
    init_test(&cd_S19302C1, buf);
    S19302C1 *dp, &lv = *(dp=new (buf) S19302C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,176), "sizeof(S19302C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19302C1)");
    check_base_class_offset(lv, (S19302C3*)(S19302C2*), ABISELECT(16,8), "S19302C1");
    check_base_class_offset(lv, (S19302C4*)(S19302C5*)(S19302C2*), 0, "S19302C1");
    check_base_class_offset(lv, (S19302C4*)(S19302C6*), 0, "S19302C1");
    check_base_class_offset(lv, (S19302C5*)(S19302C2*), ABISELECT(40,20), "S19302C1");
    check_base_class_offset(lv, (S19302C2*), ABISELECT(16,8), "S19302C1");
    check_base_class_offset(lv, (S19302C3*)(S19302C6*), ABISELECT(312,164), "S19302C1");
    check_base_class_offset(lv, (S19302C6*)(S19302C8*)(S19302C7*), ABISELECT(256,136), "S19302C1");
    check_base_class_offset(lv, (S19302C8*)(S19302C7*), ABISELECT(144,76), "S19302C1");
    check_base_class_offset(lv, (S19302C7*), ABISELECT(144,76), "S19302C1");
    check_field_offset(lv, s19302c1f0, ABISELECT(8,4), "S19302C1.s19302c1f0");
    test_class_info(&lv, &cd_S19302C1);
    dp->~S19302C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19302C1(Test_S19302C1, "S19302C1", ABISELECT(336,176));

#else // __cplusplus

extern void _ZN8S19302C1C1Ev();
extern void _ZN8S19302C1D2Ev();
Name_Map name_map_S19302C1[] = {
  NSPAIR(_ZN8S19302C1C1Ev),
  NSPAIR(_ZN8S19302C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19302C3;
extern VTBL_ENTRY _ZTI8S19302C3[];
extern  VTBL_ENTRY _ZTV8S19302C3[];
extern Class_Descriptor cd_S19302C4;
extern VTBL_ENTRY _ZTI8S19302C4[];
extern  VTBL_ENTRY _ZTV8S19302C4[];
extern Class_Descriptor cd_S19302C5;
extern VTBL_ENTRY _ZTI8S19302C5[];
extern  VTBL_ENTRY _ZTV8S19302C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C5[];
extern Class_Descriptor cd_S19302C2;
extern VTBL_ENTRY _ZTI8S19302C2[];
extern  VTBL_ENTRY _ZTV8S19302C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C2[];
extern Class_Descriptor cd_S19302C3;
extern VTBL_ENTRY _ZTI8S19302C3[];
extern  VTBL_ENTRY _ZTV8S19302C3[];
extern Class_Descriptor cd_S19302C6;
extern VTBL_ENTRY _ZTI8S19302C6[];
extern  VTBL_ENTRY _ZTV8S19302C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C6[];
extern Class_Descriptor cd_S19302C8;
extern VTBL_ENTRY _ZTI8S19302C8[];
extern  VTBL_ENTRY _ZTV8S19302C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C8[];
extern Class_Descriptor cd_S19302C7;
extern VTBL_ENTRY _ZTI8S19302C7[];
extern  VTBL_ENTRY _ZTV8S19302C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C7[];
static Base_Class bases_S19302C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19302C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19302C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19302C5,    ABISELECT(40,20), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19302C2,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19302C3,    ABISELECT(312,164), //bcp->offset
    77, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19302C6,    ABISELECT(256,136), //bcp->offset
    62, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19302C8,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19302C7,    ABISELECT(144,76), //bcp->offset
    36, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19302C1[];
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C1D1Ev();
extern void _ZN8S19302C1D0Ev();
extern void _ZN8S19302C12v1Ev();
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C52v8Ev();
extern void _ZN8S19302C52v9Ev();
extern void _ZN8S19302C53v10Ev();
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C83v14Ev();
extern void _ZN8S19302C83v15Ev();
extern void _ZN8S19302C83v16Ev();
extern void ABISELECT(_ZTv0_n80_N8S19302C1D1Ev,_ZTv0_n40_N8S19302C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S19302C1D1Ev,_ZThn76_N8S19302C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19302C1D0Ev,_ZTv0_n40_N8S19302C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S19302C1D0Ev,_ZThn76_N8S19302C1D0Ev)() __attribute__((weak));
extern void _ZN8S19302C73v17Ev();
extern void _ZN8S19302C73v18Ev();
extern void _ZN8S19302C73v19Ev();
extern void _ZN8S19302C73v20Ev();
extern void _ZN8S19302C73v21Ev();
extern void _ZN8S19302C42v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S19302C1D1Ev,_ZTv0_n24_N8S19302C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S19302C1D1Ev,_ZThn136_N8S19302C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19302C1D0Ev,_ZTv0_n24_N8S19302C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S19302C1D0Ev,_ZThn136_N8S19302C1D0Ev)() __attribute__((weak));
extern void _ZN8S19302C63v11Ev();
extern void _ZN8S19302C63v12Ev();
extern void _ZN8S19302C63v13Ev();
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY vtc_S19302C1[] = {
  ABISELECT(312,164),
  ABISELECT(256,136),
  ABISELECT(144,76),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C1[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19302C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19302C12v1Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19302C1[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19302C1[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19302C53v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-76),
  0,
  0,
  0,
  ABISELECT(168,88),
  ABISELECT(-144,-76),
  ABISELECT(112,60),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S19302C1[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v14Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v15Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19302C1D1Ev,_ZTv0_n40_N8S19302C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19302C1D0Ev,_ZTv0_n40_N8S19302C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19302C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v21Ev,
  0,
  0,
  0,
  ABISELECT(-256,-136),
  ABISELECT(56,28),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  (VTBL_ENTRY)&(_ZTI8S19302C1[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C1D1Ev,_ZTv0_n24_N8S19302C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C1D0Ev,_ZTv0_n24_N8S19302C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19302C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-164),
  (VTBL_ENTRY)&(_ZTI8S19302C1[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
extern VTBL_ENTRY _ZTV8S19302C1[];
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C2__8S19302C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C2[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C52v8Ev();
extern void _ZN8S19302C52v9Ev();
extern void _ZN8S19302C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C58S19302C2__8S19302C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C5[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19302C53v10Ev,
};
extern void _ZN8S19302C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C4__8S19302C58S19302C2__8S19302C1[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S19302C5[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
};
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C52v8Ev();
extern void _ZN8S19302C52v9Ev();
extern void _ZN8S19302C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C5__8S19302C2__8S19302C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19302C2[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19302C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19302C53v10Ev,
};
extern void _ZN8S19302C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C4__8S19302C2__8S19302C1[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19302C2[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
};
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C83v14Ev();
extern void _ZN8S19302C83v15Ev();
extern void _ZN8S19302C83v16Ev();
extern void _ZN8S19302C7D1Ev();
extern void _ZN8S19302C7D0Ev();
extern void _ZN8S19302C73v17Ev();
extern void _ZN8S19302C73v18Ev();
extern void _ZN8S19302C73v19Ev();
extern void _ZN8S19302C73v20Ev();
extern void _ZN8S19302C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C7__8S19302C1[] = {
  ABISELECT(168,88),
  ABISELECT(-144,-76),
  ABISELECT(112,60),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C7[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v14Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v15Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v16Ev,
  (VTBL_ENTRY)&_ZN8S19302C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19302C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19302C73v21Ev,
};
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C83v14Ev();
extern void _ZN8S19302C83v15Ev();
extern void _ZN8S19302C83v16Ev();
extern void _ZN8S19302C8D1Ev();
extern void _ZN8S19302C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C88S19302C7__8S19302C1[] = {
  ABISELECT(168,88),
  ABISELECT(-144,-76),
  ABISELECT(112,60),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C8[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v14Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v15Ev,
  (VTBL_ENTRY)&_ZN8S19302C83v16Ev,
  (VTBL_ENTRY)&_ZN8S19302C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19302C8D0Ev,
};
extern void _ZN8S19302C42v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S19302C8D1Ev,_ZTv0_n24_N8S19302C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19302C8D1Ev,_ZThn60_N8S19302C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19302C8D0Ev,_ZTv0_n24_N8S19302C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19302C8D0Ev,_ZThn60_N8S19302C8D0Ev)() __attribute__((weak));
extern void _ZN8S19302C63v11Ev();
extern void _ZN8S19302C63v12Ev();
extern void _ZN8S19302C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C6__8S19302C88S19302C7__8S19302C1[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19302C8[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C8D1Ev,_ZTv0_n24_N8S19302C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C8D0Ev,_ZTv0_n24_N8S19302C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19302C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v13Ev,
};
extern void _ZN8S19302C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C4__8S19302C88S19302C7__8S19302C1[] = {
  0,
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19302C8[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
};
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C3__8S19302C88S19302C7__8S19302C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19302C8[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
extern void _ZN8S19302C42v7Ev();
extern void ABISELECT(_ZTv0_n48_N8S19302C7D1Ev,_ZTv0_n24_N8S19302C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S19302C7D1Ev,_ZThn60_N8S19302C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19302C7D0Ev,_ZTv0_n24_N8S19302C7D0Ev)();
extern void ABISELECT(_ZThn112_N8S19302C7D0Ev,_ZThn60_N8S19302C7D0Ev)() __attribute__((weak));
extern void _ZN8S19302C63v11Ev();
extern void _ZN8S19302C63v12Ev();
extern void _ZN8S19302C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C6__8S19302C7__8S19302C1[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19302C7[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C7D1Ev,_ZTv0_n24_N8S19302C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19302C7D0Ev,_ZTv0_n24_N8S19302C7D0Ev),
  (VTBL_ENTRY)&_ZN8S19302C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v13Ev,
};
extern void _ZN8S19302C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C4__8S19302C7__8S19302C1[] = {
  0,
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI8S19302C7[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
};
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C3__8S19302C7__8S19302C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19302C7[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
extern void _ZN8S19302C42v7Ev();
extern void _ZN8S19302C6D1Ev();
extern void _ZN8S19302C6D0Ev();
extern void _ZN8S19302C63v11Ev();
extern void _ZN8S19302C63v12Ev();
extern void _ZN8S19302C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C6__8S19302C1[] = {
  ABISELECT(56,28),
  ABISELECT(-256,-136),
  ABISELECT(-256,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19302C6[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19302C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19302C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19302C63v13Ev,
};
extern void _ZN8S19302C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C4__8S19302C6__8S19302C1[] = {
  0,
  ABISELECT(256,136),
  (VTBL_ENTRY)&(_ZTI8S19302C6[0]),
  (VTBL_ENTRY)&_ZN8S19302C42v7Ev,
};
extern void _ZN8S19302C32v2Ev();
extern void _ZN8S19302C32v3Ev();
extern void _ZN8S19302C32v4Ev();
extern void _ZN8S19302C32v5Ev();
extern void _ZN8S19302C32v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19302C3__8S19302C6__8S19302C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19302C6[0]),
  (VTBL_ENTRY)&_ZN8S19302C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19302C32v6Ev,
};
static  VTT_ENTRY vtt_S19302C1[] = {
  {&(_ZTV8S19302C1[8]),  8,89},
  {&(_ZTV8S19302C1[23]),  23,89},
  {&(_ZTV8S19302C1[32]),  32,89},
  {&(_ZTV8S19302C1[8]),  8,89},
  {&(_ZTV8S19302C1[51]),  51,89},
  {&(_ZTV8S19302C1[71]),  71,89},
  {&(_ZTV8S19302C1[84]),  84,89},
  {&(_tg__ZTV8S19302C2__8S19302C1[3]),  3,8},
  {&(_tg__ZTV8S19302C58S19302C2__8S19302C1[4]),  4,8},
  {&(_tg__ZTV8S19302C4__8S19302C58S19302C2__8S19302C1[3]),  3,4},
  {&(_tg__ZTV8S19302C5__8S19302C2__8S19302C1[4]),  4,8},
  {&(_tg__ZTV8S19302C4__8S19302C2__8S19302C1[3]),  3,4},
  {&(_tg__ZTV8S19302C7__8S19302C1[6]),  6,17},
  {&(_tg__ZTV8S19302C88S19302C7__8S19302C1[6]),  6,12},
  {&(_tg__ZTV8S19302C6__8S19302C88S19302C7__8S19302C1[9]),  9,15},
  {&(_tg__ZTV8S19302C4__8S19302C88S19302C7__8S19302C1[3]),  3,4},
  {&(_tg__ZTV8S19302C3__8S19302C88S19302C7__8S19302C1[7]),  7,12},
  {&(_tg__ZTV8S19302C6__8S19302C7__8S19302C1[9]),  9,15},
  {&(_tg__ZTV8S19302C4__8S19302C7__8S19302C1[3]),  3,4},
  {&(_tg__ZTV8S19302C3__8S19302C7__8S19302C1[7]),  7,12},
  {&(_tg__ZTV8S19302C6__8S19302C1[5]),  5,11},
  {&(_tg__ZTV8S19302C4__8S19302C6__8S19302C1[3]),  3,4},
  {&(_tg__ZTV8S19302C3__8S19302C6__8S19302C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S19302C1[];
extern  VTBL_ENTRY _ZTV8S19302C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19302C1[];
static VTBL_ENTRY alt_thunk_names191[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C7D0Ev,_ZTv0_n24_N8S19302C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19302C7D0Ev,_ZThn60_N8S19302C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C7D1Ev,_ZTv0_n24_N8S19302C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19302C7D1Ev,_ZThn60_N8S19302C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C8D0Ev,_ZTv0_n24_N8S19302C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19302C8D0Ev,_ZThn60_N8S19302C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C8D1Ev,_ZTv0_n24_N8S19302C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19302C8D1Ev,_ZThn60_N8S19302C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C1D0Ev,_ZTv0_n24_N8S19302C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19302C1D0Ev,_ZThn136_N8S19302C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19302C1D1Ev,_ZTv0_n24_N8S19302C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19302C1D1Ev,_ZThn136_N8S19302C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19302C1D0Ev,_ZTv0_n40_N8S19302C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19302C1D0Ev,_ZThn76_N8S19302C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19302C1D1Ev,_ZTv0_n40_N8S19302C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19302C1D1Ev,_ZThn76_N8S19302C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19302C1 = {  "S19302C1", // class name
  bases_S19302C1, 8,
  &(vtc_S19302C1[0]), // expected_vtbl_contents
  &(vtt_S19302C1[0]), // expected_vtt_contents
  ABISELECT(336,176), // object size
  NSPAIRA(_ZTI8S19302C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19302C1),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19302C1),23, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names191,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6667C2  {
  ::S20361C3 s6667c2f0;
  int s6667c2f1[2];
  virtual void  v3(); // _ZN7S6667C22v3Ev
  virtual void  v4(); // _ZN7S6667C22v4Ev
  ~S6667C2(); // tgen
  S6667C2(); // tgen
};
//SIG(-1 S6667C2) C1{ v1 v2 FC2{ BC3{ v6 v7 v8 v9 v10 v11 Fp Fs} BC4{ BC5{ VBC6{ VBC7{ v12} VBC8{ v13 v14 v15 v16 v17 Fp FC7} vd v18 v19 v20 Fp[6]} v21 v22 v23 FL} vd v24 v25 v26 v27 v28 FC3[4]} v3 v4 v5} Fi[2]}


void  S6667C2 ::v3(){vfunc_called(this, "_ZN7S6667C22v3Ev");}
void  S6667C2 ::v4(){vfunc_called(this, "_ZN7S6667C22v4Ev");}
S6667C2 ::~S6667C2(){ note_dtor("S6667C2", this);} // tgen
S6667C2 ::S6667C2(){ note_ctor("S6667C2", this);} // tgen

static void Test_S6667C2()
{
  extern Class_Descriptor cd_S6667C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,32)];
    init_test(&cd_S6667C2, buf);
    S6667C2 *dp, &lv = *(dp=new (buf) S6667C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,124), "sizeof(S6667C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6667C2)");
    check_field_offset(lv, s6667c2f0, ABISELECT(8,4), "S6667C2.s6667c2f0");
    check_field_offset(lv, s6667c2f1, ABISELECT(224,116), "S6667C2.s6667c2f1");
    test_class_info(&lv, &cd_S6667C2);
    dp->~S6667C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6667C2(Test_S6667C2, "S6667C2", ABISELECT(232,124));

#else // __cplusplus

extern void _ZN7S6667C2C1Ev();
extern void _ZN7S6667C2D1Ev();
Name_Map name_map_S6667C2[] = {
  NSPAIR(_ZN7S6667C2C1Ev),
  NSPAIR(_ZN7S6667C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6667C2[];
extern void _ZN7S6667C22v3Ev();
extern void _ZN7S6667C22v4Ev();
static  VTBL_ENTRY vtc_S6667C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6667C2[0]),
  (VTBL_ENTRY)&_ZN7S6667C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6667C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6667C2[];
extern  VTBL_ENTRY _ZTV7S6667C2[];
Class_Descriptor cd_S6667C2 = {  "S6667C2", // class name
  0,0,//no base classes
  &(vtc_S6667C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,124), // object size
  NSPAIRA(_ZTI7S6667C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6667C2),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  S6667C1  : S6667C2 {
  virtual  ~S6667C1(); // _ZN7S6667C1D1Ev
  virtual void  v1(); // _ZN7S6667C12v1Ev
  virtual void  v2(); // _ZN7S6667C12v2Ev
  S6667C1(); // tgen
};
//SIG(1 S6667C1) C1{ BC2{ v3 v4 FC3{ BC4{ v8 v9 v10 v11 v12 v13 Fp Fs} BC5{ BC6{ VBC7{ VBC8{ v14} VBC9{ v15 v16 v17 v18 v19 Fp FC8} vd v20 v21 v22 Fp[6]} v23 v24 v25 FL} vd v26 v27 v28 v29 v30 FC4[4]} v5 v6 v7} Fi[2]} vd v1 v2}


 S6667C1 ::~S6667C1(){ note_dtor("S6667C1", this);}
void  S6667C1 ::v1(){vfunc_called(this, "_ZN7S6667C12v1Ev");}
void  S6667C1 ::v2(){vfunc_called(this, "_ZN7S6667C12v2Ev");}
S6667C1 ::S6667C1(){ note_ctor("S6667C1", this);} // tgen

static void Test_S6667C1()
{
  extern Class_Descriptor cd_S6667C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,32)];
    init_test(&cd_S6667C1, buf);
    S6667C1 *dp, &lv = *(dp=new (buf) S6667C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,124), "sizeof(S6667C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6667C1)");
    check_base_class_offset(lv, (S6667C2*), 0, "S6667C1");
    test_class_info(&lv, &cd_S6667C1);
    dp->~S6667C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6667C1(Test_S6667C1, "S6667C1", ABISELECT(232,124));

#else // __cplusplus

extern void _ZN7S6667C1C1Ev();
extern void _ZN7S6667C1D1Ev();
Name_Map name_map_S6667C1[] = {
  NSPAIR(_ZN7S6667C1C1Ev),
  NSPAIR(_ZN7S6667C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6667C2;
extern VTBL_ENTRY _ZTI7S6667C2[];
extern  VTBL_ENTRY _ZTV7S6667C2[];
static Base_Class bases_S6667C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6667C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6667C1[];
extern void _ZN7S6667C22v3Ev();
extern void _ZN7S6667C22v4Ev();
extern void _ZN7S6667C1D1Ev();
extern void _ZN7S6667C1D0Ev();
extern void _ZN7S6667C12v1Ev();
extern void _ZN7S6667C12v2Ev();
static  VTBL_ENTRY vtc_S6667C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6667C1[0]),
  (VTBL_ENTRY)&_ZN7S6667C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6667C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6667C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6667C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6667C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6667C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6667C1[];
extern  VTBL_ENTRY _ZTV7S6667C1[];
Class_Descriptor cd_S6667C1 = {  "S6667C1", // class name
  bases_S6667C1, 1,
  &(vtc_S6667C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,124), // object size
  NSPAIRA(_ZTI7S6667C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6667C1),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  S7702C5  {
  virtual void  v1(); // _ZN7S7702C52v1Ev
  virtual void  v2(); // _ZN7S7702C52v2Ev
  virtual void  v3(); // _ZN7S7702C52v3Ev
  virtual void  v4(); // _ZN7S7702C52v4Ev
  ~S7702C5(); // tgen
  S7702C5(); // tgen
};
//SIG(-1 S7702C5) C1{ v1 v2 v3 v4}


void  S7702C5 ::v1(){vfunc_called(this, "_ZN7S7702C52v1Ev");}
void  S7702C5 ::v2(){vfunc_called(this, "_ZN7S7702C52v2Ev");}
void  S7702C5 ::v3(){vfunc_called(this, "_ZN7S7702C52v3Ev");}
void  S7702C5 ::v4(){vfunc_called(this, "_ZN7S7702C52v4Ev");}
S7702C5 ::~S7702C5(){ note_dtor("S7702C5", this);} // tgen
S7702C5 ::S7702C5(){ note_ctor("S7702C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7702C5C1Ev();
extern void _ZN7S7702C5D1Ev();
Name_Map name_map_S7702C5[] = {
  NSPAIR(_ZN7S7702C5C1Ev),
  NSPAIR(_ZN7S7702C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7702C5[];
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
static  VTBL_ENTRY vtc_S7702C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C5[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
};
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
Class_Descriptor cd_S7702C5 = {  "S7702C5", // class name
  0,0,//no base classes
  &(vtc_S7702C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7702C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7702C5),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  S7702C4  : S7702C5 {
  ::S7702C5 s7702c4f0;
  virtual void  v5(); // _ZN7S7702C42v5Ev
  virtual void  v6(); // _ZN7S7702C42v6Ev
  ~S7702C4(); // tgen
  S7702C4(); // tgen
};
//SIG(-1 S7702C4) C1{ BC2{ v3 v4 v5 v6} v1 v2 FC2}


void  S7702C4 ::v5(){vfunc_called(this, "_ZN7S7702C42v5Ev");}
void  S7702C4 ::v6(){vfunc_called(this, "_ZN7S7702C42v6Ev");}
S7702C4 ::~S7702C4(){ note_dtor("S7702C4", this);} // tgen
S7702C4 ::S7702C4(){ note_ctor("S7702C4", this);} // tgen

static void Test_S7702C4()
{
  extern Class_Descriptor cd_S7702C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7702C4, buf);
    S7702C4 *dp, &lv = *(dp=new (buf) S7702C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7702C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7702C4)");
    check_base_class_offset(lv, (S7702C5*), 0, "S7702C4");
    check_field_offset(lv, s7702c4f0, ABISELECT(8,4), "S7702C4.s7702c4f0");
    test_class_info(&lv, &cd_S7702C4);
    dp->~S7702C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7702C4(Test_S7702C4, "S7702C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7702C4C1Ev();
extern void _ZN7S7702C4D1Ev();
Name_Map name_map_S7702C4[] = {
  NSPAIR(_ZN7S7702C4C1Ev),
  NSPAIR(_ZN7S7702C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
static Base_Class bases_S7702C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7702C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7702C4[];
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
static  VTBL_ENTRY vtc_S7702C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C4[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
Class_Descriptor cd_S7702C4 = {  "S7702C4", // class name
  bases_S7702C4, 1,
  &(vtc_S7702C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7702C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7702C4),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  S7702C3  : virtual S7702C4 {
  ::S7702C4 s7702c3f0;
  long double s7702c3f1;
  virtual  ~S7702C3(); // _ZN7S7702C3D2Ev
  virtual void  v7(); // _ZN7S7702C32v7Ev
  virtual void  v8(); // _ZN7S7702C32v8Ev
  virtual void  v9(); // _ZN7S7702C32v9Ev
  S7702C3(); // tgen
};
//SIG(-1 S7702C3) C1{ VBC2{ BC3{ v4 v5 v6 v7} v8 v9 FC3} vd v1 v2 v3 FC2 FD}


 S7702C3 ::~S7702C3(){ note_dtor("S7702C3", this);}
void  S7702C3 ::v7(){vfunc_called(this, "_ZN7S7702C32v7Ev");}
void  S7702C3 ::v8(){vfunc_called(this, "_ZN7S7702C32v8Ev");}
void  S7702C3 ::v9(){vfunc_called(this, "_ZN7S7702C32v9Ev");}
S7702C3 ::S7702C3(){ note_ctor("S7702C3", this);} // tgen

static void Test_S7702C3()
{
  extern Class_Descriptor cd_S7702C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S7702C3, buf);
    S7702C3 *dp, &lv = *(dp=new (buf) S7702C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7702C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7702C3)");
    check_base_class_offset(lv, (S7702C5*)(S7702C4*), ABISELECT(48,24), "S7702C3");
    check_base_class_offset(lv, (S7702C4*), ABISELECT(48,24), "S7702C3");
    check_field_offset(lv, s7702c3f0, ABISELECT(8,4), "S7702C3.s7702c3f0");
    check_field_offset(lv, s7702c3f1, ABISELECT(32,12), "S7702C3.s7702c3f1");
    test_class_info(&lv, &cd_S7702C3);
    dp->~S7702C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7702C3(Test_S7702C3, "S7702C3", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7702C3C1Ev();
extern void _ZN7S7702C3D2Ev();
Name_Map name_map_S7702C3[] = {
  NSPAIR(_ZN7S7702C3C1Ev),
  NSPAIR(_ZN7S7702C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
static Base_Class bases_S7702C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7702C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7702C4,    ABISELECT(48,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7702C3[];
extern void _ZN7S7702C3D1Ev();
extern void _ZN7S7702C3D0Ev();
extern void _ZN7S7702C32v7Ev();
extern void _ZN7S7702C32v8Ev();
extern void _ZN7S7702C32v9Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
static  VTBL_ENTRY vtc_S7702C3[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C3[0]),
  (VTBL_ENTRY)&_ZN7S7702C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7702C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7702C3[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
};
extern VTBL_ENTRY _ZTV7S7702C3[];
static  VTT_ENTRY vtt_S7702C3[] = {
  {&(_ZTV7S7702C3[3]),  3,22},
  {&(_ZTV7S7702C3[16]),  16,22},
};
extern VTBL_ENTRY _ZTI7S7702C3[];
extern  VTBL_ENTRY _ZTV7S7702C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7702C3[];
Class_Descriptor cd_S7702C3 = {  "S7702C3", // class name
  bases_S7702C3, 2,
  &(vtc_S7702C3[0]), // expected_vtbl_contents
  &(vtt_S7702C3[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7702C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7702C3),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7702C3),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7702C6  : S7702C4 , S7702C5 {
  int s7702c6f0;
  virtual  ~S7702C6(); // _ZN7S7702C6D1Ev
  virtual void  v10(); // _ZN7S7702C63v10Ev
  virtual void  v11(); // _ZN7S7702C63v11Ev
  virtual void  v12(); // _ZN7S7702C63v12Ev
  virtual void  v13(); // _ZN7S7702C63v13Ev
  virtual void  v14(); // _ZN7S7702C63v14Ev
  virtual void  v15(); // _ZN7S7702C63v15Ev
  S7702C6(); // tgen
};
//SIG(-1 S7702C6) C1{ BC2{ BC3{ v7 v8 v9 v10} v11 v12 FC3} BC3 vd v1 v2 v3 v4 v5 v6 Fi}


 S7702C6 ::~S7702C6(){ note_dtor("S7702C6", this);}
void  S7702C6 ::v10(){vfunc_called(this, "_ZN7S7702C63v10Ev");}
void  S7702C6 ::v11(){vfunc_called(this, "_ZN7S7702C63v11Ev");}
void  S7702C6 ::v12(){vfunc_called(this, "_ZN7S7702C63v12Ev");}
void  S7702C6 ::v13(){vfunc_called(this, "_ZN7S7702C63v13Ev");}
void  S7702C6 ::v14(){vfunc_called(this, "_ZN7S7702C63v14Ev");}
void  S7702C6 ::v15(){vfunc_called(this, "_ZN7S7702C63v15Ev");}
S7702C6 ::S7702C6(){ note_ctor("S7702C6", this);} // tgen

static void Test_S7702C6()
{
  extern Class_Descriptor cd_S7702C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7702C6, buf);
    S7702C6 *dp, &lv = *(dp=new (buf) S7702C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7702C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7702C6)");
    check_base_class_offset(lv, (S7702C5*)(S7702C4*), 0, "S7702C6");
    check_base_class_offset(lv, (S7702C4*), 0, "S7702C6");
    /*is_ambiguous_... S7702C6::S7702C5 */ AMB_check_base_class_offset(lv, (S7702C5*), ABISELECT(16,8), "S7702C6");
    check_field_offset(lv, s7702c6f0, ABISELECT(24,12), "S7702C6.s7702c6f0");
    test_class_info(&lv, &cd_S7702C6);
    dp->~S7702C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7702C6(Test_S7702C6, "S7702C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7702C6C1Ev();
extern void _ZN7S7702C6D1Ev();
Name_Map name_map_S7702C6[] = {
  NSPAIR(_ZN7S7702C6C1Ev),
  NSPAIR(_ZN7S7702C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
static Base_Class bases_S7702C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7702C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7702C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7702C5,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7702C6[];
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void _ZN7S7702C6D1Ev();
extern void _ZN7S7702C6D0Ev();
extern void _ZN7S7702C63v10Ev();
extern void _ZN7S7702C63v11Ev();
extern void _ZN7S7702C63v12Ev();
extern void _ZN7S7702C63v13Ev();
extern void _ZN7S7702C63v14Ev();
extern void _ZN7S7702C63v15Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
static  VTBL_ENTRY vtc_S7702C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C6[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7702C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7702C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v15Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7702C6[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
};
extern VTBL_ENTRY _ZTI7S7702C6[];
extern  VTBL_ENTRY _ZTV7S7702C6[];
Class_Descriptor cd_S7702C6 = {  "S7702C6", // class name
  bases_S7702C6, 3,
  &(vtc_S7702C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7702C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7702C6),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7702C8  : virtual S7702C5 , S7702C4 {
  virtual  ~S7702C8(); // _ZN7S7702C8D2Ev
  virtual void  v20(); // _ZN7S7702C83v20Ev
  S7702C8(); // tgen
};
//SIG(-1 S7702C8) C1{ VBC2{ v2 v3 v4 v5} BC3{ BC2 v6 v7 FC2} vd v1}


 S7702C8 ::~S7702C8(){ note_dtor("S7702C8", this);}
void  S7702C8 ::v20(){vfunc_called(this, "_ZN7S7702C83v20Ev");}
S7702C8 ::S7702C8(){ note_ctor("S7702C8", this);} // tgen

static void Test_S7702C8()
{
  extern Class_Descriptor cd_S7702C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7702C8, buf);
    S7702C8 *dp, &lv = *(dp=new (buf) S7702C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7702C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7702C8)");
    /*is_ambiguous_... S7702C8::S7702C5 */ AMB_check_base_class_offset(lv, (S7702C5*), ABISELECT(16,8), "S7702C8");
    check_base_class_offset(lv, (S7702C5*)(S7702C4*), 0, "S7702C8");
    check_base_class_offset(lv, (S7702C4*), 0, "S7702C8");
    test_class_info(&lv, &cd_S7702C8);
    dp->~S7702C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7702C8(Test_S7702C8, "S7702C8", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7702C8C1Ev();
extern void _ZN7S7702C8D2Ev();
Name_Map name_map_S7702C8[] = {
  NSPAIR(_ZN7S7702C8C1Ev),
  NSPAIR(_ZN7S7702C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
static Base_Class bases_S7702C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7702C5,    ABISELECT(16,8), //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_S7702C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7702C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7702C8[];
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void _ZN7S7702C8D1Ev();
extern void _ZN7S7702C8D0Ev();
extern void _ZN7S7702C83v20Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
static  VTBL_ENTRY vtc_S7702C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C8[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7702C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7702C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7702C83v20Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7702C8[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
};
extern VTBL_ENTRY _ZTV7S7702C8[];
static  VTT_ENTRY vtt_S7702C8[] = {
  {&(_ZTV7S7702C8[3]),  3,22},
  {&(_ZTV7S7702C8[18]),  18,22},
};
extern VTBL_ENTRY _ZTI7S7702C8[];
extern  VTBL_ENTRY _ZTV7S7702C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7702C8[];
Class_Descriptor cd_S7702C8 = {  "S7702C8", // class name
  bases_S7702C8, 3,
  &(vtc_S7702C8[0]), // expected_vtbl_contents
  &(vtt_S7702C8[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7702C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7702C8),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7702C8),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7702C7  : S7702C4 , S7702C5 {
  ::S7702C8 s7702c7f0;
  ::S20980C10_nt s7702c7f1;
  ::S20980C10_nt s7702c7f2;
  int s7702c7f3;
  virtual void  v16(); // _ZN7S7702C73v16Ev
  virtual void  v17(); // _ZN7S7702C73v17Ev
  virtual void  v18(); // _ZN7S7702C73v18Ev
  virtual void  v19(); // _ZN7S7702C73v19Ev
  ~S7702C7(); // tgen
  S7702C7(); // tgen
};
//SIG(-1 S7702C7) C1{ BC2{ BC3{ v5 v6 v7 v8} v9 v10 FC3} BC3 v1 v2 v3 v4 FC4{ VBC3 BC2 vd v11} FU5{ m} FU5 Fi}


void  S7702C7 ::v16(){vfunc_called(this, "_ZN7S7702C73v16Ev");}
void  S7702C7 ::v17(){vfunc_called(this, "_ZN7S7702C73v17Ev");}
void  S7702C7 ::v18(){vfunc_called(this, "_ZN7S7702C73v18Ev");}
void  S7702C7 ::v19(){vfunc_called(this, "_ZN7S7702C73v19Ev");}
S7702C7 ::~S7702C7(){ note_dtor("S7702C7", this);} // tgen
S7702C7 ::S7702C7(){ note_ctor("S7702C7", this);} // tgen

static void Test_S7702C7()
{
  extern Class_Descriptor cd_S7702C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7702C7, buf);
    S7702C7 *dp, &lv = *(dp=new (buf) S7702C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7702C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7702C7)");
    check_base_class_offset(lv, (S7702C5*)(S7702C4*), 0, "S7702C7");
    check_base_class_offset(lv, (S7702C4*), 0, "S7702C7");
    /*is_ambiguous_... S7702C7::S7702C5 */ AMB_check_base_class_offset(lv, (S7702C5*), ABISELECT(16,8), "S7702C7");
    check_field_offset(lv, s7702c7f0, ABISELECT(24,12), "S7702C7.s7702c7f0");
    check_field_offset(lv, s7702c7f1, ABISELECT(48,24), "S7702C7.s7702c7f1");
    check_field_offset(lv, s7702c7f2, ABISELECT(49,25), "S7702C7.s7702c7f2");
    check_field_offset(lv, s7702c7f3, ABISELECT(52,28), "S7702C7.s7702c7f3");
    test_class_info(&lv, &cd_S7702C7);
    dp->~S7702C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7702C7(Test_S7702C7, "S7702C7", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S7702C7C1Ev();
extern void _ZN7S7702C7D1Ev();
Name_Map name_map_S7702C7[] = {
  NSPAIR(_ZN7S7702C7C1Ev),
  NSPAIR(_ZN7S7702C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
static Base_Class bases_S7702C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7702C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7702C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S7702C5,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7702C7[];
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void _ZN7S7702C73v16Ev();
extern void _ZN7S7702C73v17Ev();
extern void _ZN7S7702C73v18Ev();
extern void _ZN7S7702C73v19Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
static  VTBL_ENTRY vtc_S7702C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C7[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v19Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7702C7[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
};
extern VTBL_ENTRY _ZTI7S7702C7[];
extern  VTBL_ENTRY _ZTV7S7702C7[];
Class_Descriptor cd_S7702C7 = {  "S7702C7", // class name
  bases_S7702C7, 3,
  &(vtc_S7702C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S7702C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7702C7),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7702C2  : virtual S7702C3 , S7702C6 , S7702C7 , S7702C4 {
  long double s7702c2f0;
  virtual  ~S7702C2(); // _ZN7S7702C2D2Ev
  S7702C2(); // tgen
};
//SIG(-1 S7702C2) C1{ VBC2{ VBC3{ BC4{ v1 v2 v3 v4} v5 v6 FC4} vd v7 v8 v9 FC3 FD} BC5{ BC3 BC4 vd v10 v11 v12 v13 v14 v15 Fi} BC6{ BC3 BC4 v16 v17 v18 v19 FC7{ VBC4 BC3 vd v20} FU8{ m} FU8 Fi} BC3 vd FD}


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

static void Test_S7702C2()
{
  extern Class_Descriptor cd_S7702C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,26)];
    init_test(&cd_S7702C2, buf);
    S7702C2 *dp, &lv = *(dp=new (buf) S7702C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S7702C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7702C2)");
    /*is_ambiguous_... S7702C2::S7702C4 */ AMB_check_base_class_offset(lv, (S7702C5*)(S7702C4*), ABISELECT(176,92), "S7702C2");
    check_base_class_offset(lv, (S7702C4*)(S7702C3*), ABISELECT(176,92), "S7702C2");
    check_base_class_offset(lv, (S7702C3*), ABISELECT(128,68), "S7702C2");
    check_base_class_offset(lv, (S7702C5*)(S7702C4*)(S7702C6*), 0, "S7702C2");
    check_base_class_offset(lv, (S7702C4*)(S7702C6*), 0, "S7702C2");
    /*is_ambiguous_... S7702C6::S7702C5 */ AMB_check_base_class_offset(lv, (S7702C5*)(S7702C6*), ABISELECT(16,8), "S7702C2");
    check_base_class_offset(lv, (S7702C6*), 0, "S7702C2");
    check_base_class_offset(lv, (S7702C5*)(S7702C4*)(S7702C7*), ABISELECT(32,16), "S7702C2");
    check_base_class_offset(lv, (S7702C4*)(S7702C7*), ABISELECT(32,16), "S7702C2");
    /*is_ambiguous_... S7702C7::S7702C5 */ AMB_check_base_class_offset(lv, (S7702C5*)(S7702C7*), ABISELECT(48,24), "S7702C2");
    check_base_class_offset(lv, (S7702C7*), ABISELECT(32,16), "S7702C2");
    /*is_ambiguous_... S7702C2::S7702C4 */ AMB_check_base_class_offset(lv, (S7702C5*)(S7702C4*), ABISELECT(88,48), "S7702C2");
    /*is_ambiguous_... S7702C2::S7702C4 */ AMB_check_base_class_offset(lv, (S7702C4*), ABISELECT(88,48), "S7702C2");
    check_field_offset(lv, s7702c2f0, ABISELECT(112,56), "S7702C2.s7702c2f0");
    test_class_info(&lv, &cd_S7702C2);
    dp->~S7702C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7702C2(Test_S7702C2, "S7702C2", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN7S7702C2C1Ev();
extern void _ZN7S7702C2D2Ev();
Name_Map name_map_S7702C2[] = {
  NSPAIR(_ZN7S7702C2C1Ev),
  NSPAIR(_ZN7S7702C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
extern Class_Descriptor cd_S7702C3;
extern VTBL_ENTRY _ZTI7S7702C3[];
extern  VTBL_ENTRY _ZTV7S7702C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7702C3[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C6;
extern VTBL_ENTRY _ZTI7S7702C6[];
extern  VTBL_ENTRY _ZTV7S7702C6[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C7;
extern VTBL_ENTRY _ZTI7S7702C7[];
extern  VTBL_ENTRY _ZTV7S7702C7[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
static Base_Class bases_S7702C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7702C5,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7702C4,    ABISELECT(176,92), //bcp->offset
    62, //bcp->virtual_function_table_offset
    8, //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
    2, //immediately_derived
  0, 1},
  {&cd_S7702C3,    ABISELECT(128,68), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7702C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7702C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7702C5,    ABISELECT(16,8), //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
    6, //immediately_derived
  0, 0},
  {&cd_S7702C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7702C5,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7702C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7702C5,    ABISELECT(48,24), //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7702C7,    ABISELECT(32,16), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7702C5,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7702C4,    ABISELECT(88,48), //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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7702C2[];
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void _ZN7S7702C2D1Ev();
extern void _ZN7S7702C2D0Ev();
extern void _ZN7S7702C63v10Ev();
extern void _ZN7S7702C63v11Ev();
extern void _ZN7S7702C63v12Ev();
extern void _ZN7S7702C63v13Ev();
extern void _ZN7S7702C63v14Ev();
extern void _ZN7S7702C63v15Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void _ZN7S7702C73v16Ev();
extern void _ZN7S7702C73v17Ev();
extern void _ZN7S7702C73v18Ev();
extern void _ZN7S7702C73v19Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void ABISELECT(_ZTv0_n32_N7S7702C2D1Ev,_ZTv0_n16_N7S7702C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S7702C2D1Ev,_ZThn68_N7S7702C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7702C2D0Ev,_ZTv0_n16_N7S7702C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S7702C2D0Ev,_ZThn68_N7S7702C2D0Ev)() __attribute__((weak));
extern void _ZN7S7702C32v7Ev();
extern void _ZN7S7702C32v8Ev();
extern void _ZN7S7702C32v9Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
static  VTBL_ENTRY vtc_S7702C2[] = {
  ABISELECT(176,92),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C2[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7702C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7702C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v15Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7702C2[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7702C2[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v19Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7702C2[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7702C2[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(48,24),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7702C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7702C2D1Ev,_ZTv0_n16_N7S7702C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7702C2D0Ev,_ZTv0_n16_N7S7702C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7702C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S7702C2[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
};
extern VTBL_ENTRY _ZTV7S7702C2[];
extern void _ZN7S7702C3D1Ev();
extern void _ZN7S7702C3D0Ev();
extern void _ZN7S7702C32v7Ev();
extern void _ZN7S7702C32v8Ev();
extern void _ZN7S7702C32v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7702C3__7S7702C2[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C3[0]),
  (VTBL_ENTRY)&_ZN7S7702C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7702C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v9Ev,
};
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7702C4__7S7702C3__7S7702C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7702C3[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
};
static  VTT_ENTRY vtt_S7702C2[] = {
  {&(_ZTV7S7702C2[4]),  4,76},
  {&(_ZTV7S7702C2[57]),  57,76},
  {&(_ZTV7S7702C2[70]),  70,76},
  {&(_tg__ZTV7S7702C3__7S7702C2[3]),  3,8},
  {&(_tg__ZTV7S7702C4__7S7702C3__7S7702C2[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S7702C2[];
extern  VTBL_ENTRY _ZTV7S7702C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7702C2[];
static VTBL_ENTRY alt_thunk_names192[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7702C2D0Ev,_ZTv0_n16_N7S7702C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7702C2D0Ev,_ZThn68_N7S7702C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7702C2D1Ev,_ZTv0_n16_N7S7702C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7702C2D1Ev,_ZThn68_N7S7702C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7702C2 = {  "S7702C2", // class name
  bases_S7702C2, 13,
  &(vtc_S7702C2[0]), // expected_vtbl_contents
  &(vtt_S7702C2[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI7S7702C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7702C2),76, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7702C2),5, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names192,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7702C1  : S7702C2 , S7702C8 , S7702C3 {
  virtual  ~S7702C1(); // _ZN7S7702C1D2Ev
  S7702C1(); // tgen
};
//SIG(1 S7702C1) C1{ BC2{ VBC3{ VBC4{ BC5{ v1 v2 v3 v4} v5 v6 FC5} vd v7 v8 v9 FC4 FD} BC6{ BC4 BC5 vd v10 v11 v12 v13 v14 v15 Fi} BC7{ BC4 BC5 v16 v17 v18 v19 FC8{ VBC5 BC4 vd v20} FU9{ m} FU9 Fi} BC4 vd FD} BC8 BC3 vd}


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

static void Test_S7702C1()
{
  extern Class_Descriptor cd_S7702C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,35)];
    init_test(&cd_S7702C1, buf);
    S7702C1 *dp, &lv = *(dp=new (buf) S7702C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,136), "sizeof(S7702C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7702C1)");
    /*is_ambiguous_... S7702C1::S7702C4 */ AMB_check_base_class_offset(lv, (S7702C5*)(S7702C4*), ABISELECT(240,124), "S7702C1");
    /*is_ambiguous_... S7702C1::S7702C3 */ AMB_check_base_class_offset(lv, (S7702C4*)(S7702C3*), ABISELECT(240,124), "S7702C1");
    /*is_ambiguous_... S7702C1::S7702C3 */ AMB_check_base_class_offset(lv, (S7702C4*)(S7702C3*), ABISELECT(240,124), "S7702C1");
    check_base_class_offset(lv, (S7702C3*)(S7702C2*), ABISELECT(192,100), "S7702C1");
    check_base_class_offset(lv, (S7702C5*)(S7702C4*)(S7702C6*)(S7702C2*), 0, "S7702C1");
    check_base_class_offset(lv, (S7702C4*)(S7702C6*)(S7702C2*), 0, "S7702C1");
    /*is_ambiguous_... S7702C6::S7702C5 */ AMB_check_base_class_offset(lv, (S7702C5*)(S7702C6*)(S7702C2*), ABISELECT(16,8), "S7702C1");
    check_base_class_offset(lv, (S7702C6*)(S7702C2*), 0, "S7702C1");
    check_base_class_offset(lv, (S7702C5*)(S7702C4*)(S7702C7*)(S7702C2*), ABISELECT(32,16), "S7702C1");
    check_base_class_offset(lv, (S7702C4*)(S7702C7*)(S7702C2*), ABISELECT(32,16), "S7702C1");
    /*is_ambiguous_... S7702C7::S7702C5 */ AMB_check_base_class_offset(lv, (S7702C5*)(S7702C7*)(S7702C2*), ABISELECT(48,24), "S7702C1");
    check_base_class_offset(lv, (S7702C7*)(S7702C2*), ABISELECT(32,16), "S7702C1");
    /*is_ambiguous_... S7702C2::S7702C4 */ AMB_check_base_class_offset(lv, (S7702C5*)(S7702C4*)(S7702C2*), ABISELECT(88,48), "S7702C1");
    /*is_ambiguous_... S7702C2::S7702C4 */ AMB_check_base_class_offset(lv, (S7702C4*)(S7702C2*), ABISELECT(88,48), "S7702C1");
    check_base_class_offset(lv, (S7702C2*), 0, "S7702C1");
    /*is_ambiguous_... S7702C8::S7702C5 */ AMB_check_base_class_offset(lv, (S7702C5*)(S7702C8*), ABISELECT(256,132), "S7702C1");
    check_base_class_offset(lv, (S7702C5*)(S7702C4*)(S7702C8*), ABISELECT(128,68), "S7702C1");
    check_base_class_offset(lv, (S7702C4*)(S7702C8*), ABISELECT(128,68), "S7702C1");
    check_base_class_offset(lv, (S7702C8*), ABISELECT(128,68), "S7702C1");
    /*is_ambiguous_... S7702C1::S7702C3 */ AMB_check_base_class_offset(lv, (S7702C3*), ABISELECT(144,76), "S7702C1");
    test_class_info(&lv, &cd_S7702C1);
    dp->~S7702C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7702C1(Test_S7702C1, "S7702C1", ABISELECT(272,136));

#else // __cplusplus

extern void _ZN7S7702C1C1Ev();
extern void _ZN7S7702C1D2Ev();
Name_Map name_map_S7702C1[] = {
  NSPAIR(_ZN7S7702C1C1Ev),
  NSPAIR(_ZN7S7702C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
extern Class_Descriptor cd_S7702C3;
extern VTBL_ENTRY _ZTI7S7702C3[];
extern  VTBL_ENTRY _ZTV7S7702C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7702C3[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C6;
extern VTBL_ENTRY _ZTI7S7702C6[];
extern  VTBL_ENTRY _ZTV7S7702C6[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C7;
extern VTBL_ENTRY _ZTI7S7702C7[];
extern  VTBL_ENTRY _ZTV7S7702C7[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
extern Class_Descriptor cd_S7702C2;
extern VTBL_ENTRY _ZTI7S7702C2[];
extern  VTBL_ENTRY _ZTV7S7702C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7702C2[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C5;
extern VTBL_ENTRY _ZTI7S7702C5[];
extern  VTBL_ENTRY _ZTV7S7702C5[];
extern Class_Descriptor cd_S7702C4;
extern VTBL_ENTRY _ZTI7S7702C4[];
extern  VTBL_ENTRY _ZTV7S7702C4[];
extern Class_Descriptor cd_S7702C8;
extern VTBL_ENTRY _ZTI7S7702C8[];
extern  VTBL_ENTRY _ZTV7S7702C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7702C8[];
extern Class_Descriptor cd_S7702C3;
extern VTBL_ENTRY _ZTI7S7702C3[];
extern  VTBL_ENTRY _ZTV7S7702C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7702C3[];
static Base_Class bases_S7702C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7702C5,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7702C4,    ABISELECT(240,124), //bcp->offset
    83, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7702C3,    ABISELECT(192,100), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7702C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7702C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7702C5,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7702C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7702C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7702C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7702C5,    ABISELECT(48,24), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7702C7,    ABISELECT(32,16), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7702C5,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7702C4,    ABISELECT(88,48), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7702C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7702C5,    ABISELECT(256,132), //bcp->offset
    97, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7702C5,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7702C4,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7702C8,    ABISELECT(128,68), //bcp->offset
    51, //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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7702C3,    ABISELECT(144,76), //bcp->offset
    63, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7702C1[];
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void _ZN7S7702C1D1Ev();
extern void _ZN7S7702C1D0Ev();
extern void _ZN7S7702C63v10Ev();
extern void _ZN7S7702C63v11Ev();
extern void _ZN7S7702C63v12Ev();
extern void _ZN7S7702C63v13Ev();
extern void _ZN7S7702C63v14Ev();
extern void _ZN7S7702C63v15Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void _ZN7S7702C73v16Ev();
extern void _ZN7S7702C73v17Ev();
extern void _ZN7S7702C73v18Ev();
extern void _ZN7S7702C73v19Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void ABISELECT(_ZThn128_N7S7702C1D1Ev,_ZThn68_N7S7702C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S7702C1D0Ev,_ZThn68_N7S7702C1D0Ev)();
extern void _ZN7S7702C83v20Ev();
extern void ABISELECT(_ZThn144_N7S7702C1D1Ev,_ZThn76_N7S7702C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7702C1D0Ev,_ZThn76_N7S7702C1D0Ev)();
extern void _ZN7S7702C32v7Ev();
extern void _ZN7S7702C32v8Ev();
extern void _ZN7S7702C32v9Ev();
extern void ABISELECT(_ZTv0_n32_N7S7702C1D1Ev,_ZTv0_n16_N7S7702C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S7702C1D1Ev,_ZThn100_N7S7702C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7702C1D0Ev,_ZTv0_n16_N7S7702C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S7702C1D0Ev,_ZThn100_N7S7702C1D0Ev)() __attribute__((weak));
extern void _ZN7S7702C32v7Ev();
extern void _ZN7S7702C32v8Ev();
extern void _ZN7S7702C32v9Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
static  VTBL_ENTRY vtc_S7702C1[] = {
  ABISELECT(256,132),
  ABISELECT(240,124),
  ABISELECT(192,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C1[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7702C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7702C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v15Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7702C1[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7702C1[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7702C73v19Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7702C1[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7702C1[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  ABISELECT(128,64),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7702C1[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N7S7702C1D1Ev,_ZThn68_N7S7702C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N7S7702C1D0Ev,_ZThn68_N7S7702C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7702C83v20Ev,
  ABISELECT(96,48),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S7702C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S7702C1D1Ev,_ZThn76_N7S7702C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S7702C1D0Ev,_ZThn76_N7S7702C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7702C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v9Ev,
  0,
  0,
  0,
  ABISELECT(-192,-100),
  ABISELECT(48,24),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S7702C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7702C1D1Ev,_ZTv0_n16_N7S7702C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7702C1D0Ev,_ZTv0_n16_N7S7702C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7702C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v9Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI7S7702C1[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-256,-132),
  (VTBL_ENTRY)&(_ZTI7S7702C1[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
};
extern VTBL_ENTRY _ZTV7S7702C1[];
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void _ZN7S7702C2D1Ev();
extern void _ZN7S7702C2D0Ev();
extern void _ZN7S7702C63v10Ev();
extern void _ZN7S7702C63v11Ev();
extern void _ZN7S7702C63v12Ev();
extern void _ZN7S7702C63v13Ev();
extern void _ZN7S7702C63v14Ev();
extern void _ZN7S7702C63v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7702C2__7S7702C1[] = {
  ABISELECT(240,124),
  ABISELECT(192,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C2[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7702C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7702C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7702C63v15Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7702C2D1Ev,_ZTv0_n16_N7S7702C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S7702C2D1Ev,_ZThn100_N7S7702C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7702C2D0Ev,_ZTv0_n16_N7S7702C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S7702C2D0Ev,_ZThn100_N7S7702C2D0Ev)() __attribute__((weak));
extern void _ZN7S7702C32v7Ev();
extern void _ZN7S7702C32v8Ev();
extern void _ZN7S7702C32v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7702C3__7S7702C2__7S7702C1[] = {
  0,
  0,
  0,
  ABISELECT(-192,-100),
  ABISELECT(48,24),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S7702C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7702C2D1Ev,_ZTv0_n16_N7S7702C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7702C2D0Ev,_ZTv0_n16_N7S7702C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7702C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v9Ev,
};
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7702C4__7S7702C2__7S7702C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-124),
  (VTBL_ENTRY)&(_ZTI7S7702C2[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
};
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
extern void _ZN7S7702C8D1Ev();
extern void _ZN7S7702C8D0Ev();
extern void _ZN7S7702C83v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7702C8__7S7702C1[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C8[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7702C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7702C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7702C83v20Ev,
};
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7702C5__7S7702C8__7S7702C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7702C8[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
};
extern void _ZN7S7702C3D1Ev();
extern void _ZN7S7702C3D0Ev();
extern void _ZN7S7702C32v7Ev();
extern void _ZN7S7702C32v8Ev();
extern void _ZN7S7702C32v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7702C3__A__7S7702C1[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C3[0]),
  (VTBL_ENTRY)&_ZN7S7702C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7702C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v9Ev,
};
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7702C4__7S7702C3__A__7S7702C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7702C3[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
};
extern void _ZN7S7702C3D1Ev();
extern void _ZN7S7702C3D0Ev();
extern void _ZN7S7702C32v7Ev();
extern void _ZN7S7702C32v8Ev();
extern void _ZN7S7702C32v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7702C3__7S7702C1[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7702C3[0]),
  (VTBL_ENTRY)&_ZN7S7702C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7702C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7702C32v9Ev,
};
extern void _ZN7S7702C52v1Ev();
extern void _ZN7S7702C52v2Ev();
extern void _ZN7S7702C52v3Ev();
extern void _ZN7S7702C52v4Ev();
extern void _ZN7S7702C42v5Ev();
extern void _ZN7S7702C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7702C4__7S7702C3__7S7702C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7702C3[0]),
  (VTBL_ENTRY)&_ZN7S7702C52v1Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7702C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7702C42v6Ev,
};
static  VTT_ENTRY vtt_S7702C1[] = {
  {&(_ZTV7S7702C1[5]),  5,107},
  {&(_tg__ZTV7S7702C2__7S7702C1[4]),  4,18},
  {&(_tg__ZTV7S7702C3__7S7702C2__7S7702C1[7]),  7,12},
  {&(_tg__ZTV7S7702C4__7S7702C2__7S7702C1[8]),  8,14},
  {&(_tg__ZTV7S7702C8__7S7702C1[3]),  3,12},
  {&(_tg__ZTV7S7702C5__7S7702C8__7S7702C1[6]),  6,10},
  {&(_tg__ZTV7S7702C3__A__7S7702C1[3]),  3,8},
  {&(_tg__ZTV7S7702C4__7S7702C3__A__7S7702C1[8]),  8,14},
  {&(_ZTV7S7702C1[78]),  78,107},
  {&(_ZTV7S7702C1[91]),  91,107},
  {&(_ZTV7S7702C1[54]),  54,107},
  {&(_ZTV7S7702C1[103]),  103,107},
  {&(_ZTV7S7702C1[66]),  66,107},
  {&(_tg__ZTV7S7702C3__7S7702C1[3]),  3,8},
  {&(_tg__ZTV7S7702C4__7S7702C3__7S7702C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S7702C1[];
extern  VTBL_ENTRY _ZTV7S7702C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7702C1[];
static VTBL_ENTRY alt_thunk_names193[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7702C2D0Ev,_ZTv0_n16_N7S7702C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7702C2D0Ev,_ZThn100_N7S7702C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7702C2D1Ev,_ZTv0_n16_N7S7702C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7702C2D1Ev,_ZThn100_N7S7702C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7702C1D0Ev,_ZTv0_n16_N7S7702C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7702C1D0Ev,_ZThn100_N7S7702C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7702C1D1Ev,_ZTv0_n16_N7S7702C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7702C1D1Ev,_ZThn100_N7S7702C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7702C1 = {  "S7702C1", // class name
  bases_S7702C1, 19,
  &(vtc_S7702C1[0]), // expected_vtbl_contents
  &(vtt_S7702C1[0]), // expected_vtt_contents
  ABISELECT(272,136), // object size
  NSPAIRA(_ZTI7S7702C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7702C1),107, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7702C1),15, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names193,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3466C5  {
  int s3466c5f0;
  virtual void  v2(); // _ZN7S3466C52v2Ev
  virtual void  v3(); // _ZN7S3466C52v3Ev
  virtual void  v4(); // _ZN7S3466C52v4Ev
  virtual void  v5(); // _ZN7S3466C52v5Ev
  virtual void  v6(); // _ZN7S3466C52v6Ev
  ~S3466C5(); // tgen
  S3466C5(); // tgen
};
//SIG(-1 S3466C5) C1{ v1 v2 v3 v4 v5 Fi}


void  S3466C5 ::v2(){vfunc_called(this, "_ZN7S3466C52v2Ev");}
void  S3466C5 ::v3(){vfunc_called(this, "_ZN7S3466C52v3Ev");}
void  S3466C5 ::v4(){vfunc_called(this, "_ZN7S3466C52v4Ev");}
void  S3466C5 ::v5(){vfunc_called(this, "_ZN7S3466C52v5Ev");}
void  S3466C5 ::v6(){vfunc_called(this, "_ZN7S3466C52v6Ev");}
S3466C5 ::~S3466C5(){ note_dtor("S3466C5", this);} // tgen
S3466C5 ::S3466C5(){ note_ctor("S3466C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3466C5C1Ev();
extern void _ZN7S3466C5D1Ev();
Name_Map name_map_S3466C5[] = {
  NSPAIR(_ZN7S3466C5C1Ev),
  NSPAIR(_ZN7S3466C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3466C5[];
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY vtc_S3466C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C5[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
Class_Descriptor cd_S3466C5 = {  "S3466C5", // class name
  0,0,//no base classes
  &(vtc_S3466C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3466C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3466C5),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3466C4  : S3466C5 {
  virtual void  v7(); // _ZN7S3466C42v7Ev
  virtual void  v8(); // _ZN7S3466C42v8Ev
  ~S3466C4(); // tgen
  S3466C4(); // tgen
};
//SIG(-1 S3466C4) C1{ BC2{ v3 v4 v5 v6 v7 Fi} v1 v2}


void  S3466C4 ::v7(){vfunc_called(this, "_ZN7S3466C42v7Ev");}
void  S3466C4 ::v8(){vfunc_called(this, "_ZN7S3466C42v8Ev");}
S3466C4 ::~S3466C4(){ note_dtor("S3466C4", this);} // tgen
S3466C4 ::S3466C4(){ note_ctor("S3466C4", this);} // tgen

static void Test_S3466C4()
{
  extern Class_Descriptor cd_S3466C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3466C4, buf);
    S3466C4 *dp, &lv = *(dp=new (buf) S3466C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3466C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3466C4)");
    check_base_class_offset(lv, (S3466C5*), 0, "S3466C4");
    test_class_info(&lv, &cd_S3466C4);
    dp->~S3466C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3466C4(Test_S3466C4, "S3466C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3466C4C1Ev();
extern void _ZN7S3466C4D1Ev();
Name_Map name_map_S3466C4[] = {
  NSPAIR(_ZN7S3466C4C1Ev),
  NSPAIR(_ZN7S3466C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
static Base_Class bases_S3466C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3466C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3466C4[];
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY vtc_S3466C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C4[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
extern VTBL_ENTRY _ZTI7S3466C4[];
extern  VTBL_ENTRY _ZTV7S3466C4[];
Class_Descriptor cd_S3466C4 = {  "S3466C4", // class name
  bases_S3466C4, 1,
  &(vtc_S3466C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3466C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3466C4),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3466C7  : virtual S3466C5 , virtual S3466C4 {
  void *s3466c7f0;
  virtual void  v9(); // _ZN7S3466C72v9Ev
  virtual void  v10(); // _ZN7S3466C73v10Ev
  virtual void  v11(); // _ZN7S3466C73v11Ev
  ~S3466C7(); // tgen
  S3466C7(); // tgen
};
//SIG(-1 S3466C7) C1{ VBC2{ v4 v5 v6 v7 v8 Fi} VBC3{ BC2 v9 v10} v1 v2 v3 Fp}


void  S3466C7 ::v9(){vfunc_called(this, "_ZN7S3466C72v9Ev");}
void  S3466C7 ::v10(){vfunc_called(this, "_ZN7S3466C73v10Ev");}
void  S3466C7 ::v11(){vfunc_called(this, "_ZN7S3466C73v11Ev");}
S3466C7 ::~S3466C7(){ note_dtor("S3466C7", this);} // tgen
S3466C7 ::S3466C7(){ note_ctor("S3466C7", this);} // tgen

static void Test_S3466C7()
{
  extern Class_Descriptor cd_S3466C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S3466C7, buf);
    S3466C7 *dp, &lv = *(dp=new (buf) S3466C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S3466C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3466C7)");
    /*is_ambiguous_... S3466C7::S3466C5 */ AMB_check_base_class_offset(lv, (S3466C5*), ABISELECT(16,8), "S3466C7");
    check_base_class_offset(lv, (S3466C5*)(S3466C4*), ABISELECT(32,16), "S3466C7");
    check_base_class_offset(lv, (S3466C4*), ABISELECT(32,16), "S3466C7");
    check_field_offset(lv, s3466c7f0, ABISELECT(8,4), "S3466C7.s3466c7f0");
    test_class_info(&lv, &cd_S3466C7);
    dp->~S3466C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3466C7(Test_S3466C7, "S3466C7", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S3466C7C1Ev();
extern void _ZN7S3466C7D1Ev();
Name_Map name_map_S3466C7[] = {
  NSPAIR(_ZN7S3466C7C1Ev),
  NSPAIR(_ZN7S3466C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C4;
extern VTBL_ENTRY _ZTI7S3466C4[];
extern  VTBL_ENTRY _ZTV7S3466C4[];
static Base_Class bases_S3466C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3466C5,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3466C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3466C4,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3466C7[];
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY vtc_S3466C7[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
extern VTBL_ENTRY _ZTV7S3466C7[];
static  VTT_ENTRY vtt_S3466C7[] = {
  {&(_ZTV7S3466C7[4]),  4,35},
  {&(_ZTV7S3466C7[14]),  14,35},
  {&(_ZTV7S3466C7[28]),  28,35},
};
extern VTBL_ENTRY _ZTI7S3466C7[];
extern  VTBL_ENTRY _ZTV7S3466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C7[];
Class_Descriptor cd_S3466C7 = {  "S3466C7", // class name
  bases_S3466C7, 3,
  &(vtc_S3466C7[0]), // expected_vtbl_contents
  &(vtt_S3466C7[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S3466C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3466C7),35, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3466C7),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3466C8  : S3466C5 {
  long double s3466c8f0;
  void *s3466c8f1[7];
  virtual void  v12(); // _ZN7S3466C83v12Ev
  virtual void  v13(); // _ZN7S3466C83v13Ev
  virtual void  v14(); // _ZN7S3466C83v14Ev
  virtual void  v15(); // _ZN7S3466C83v15Ev
  virtual void  v16(); // _ZN7S3466C83v16Ev
  virtual void  v17(); // _ZN7S3466C83v17Ev
  ~S3466C8(); // tgen
  S3466C8(); // tgen
};
//SIG(-1 S3466C8) C1{ BC2{ v7 v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 FD Fp[7]}


void  S3466C8 ::v12(){vfunc_called(this, "_ZN7S3466C83v12Ev");}
void  S3466C8 ::v13(){vfunc_called(this, "_ZN7S3466C83v13Ev");}
void  S3466C8 ::v14(){vfunc_called(this, "_ZN7S3466C83v14Ev");}
void  S3466C8 ::v15(){vfunc_called(this, "_ZN7S3466C83v15Ev");}
void  S3466C8 ::v16(){vfunc_called(this, "_ZN7S3466C83v16Ev");}
void  S3466C8 ::v17(){vfunc_called(this, "_ZN7S3466C83v17Ev");}
S3466C8 ::~S3466C8(){ note_dtor("S3466C8", this);} // tgen
S3466C8 ::S3466C8(){ note_ctor("S3466C8", this);} // tgen

static void Test_S3466C8()
{
  extern Class_Descriptor cd_S3466C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S3466C8, buf);
    S3466C8 *dp, &lv = *(dp=new (buf) S3466C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S3466C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3466C8)");
    check_base_class_offset(lv, (S3466C5*), 0, "S3466C8");
    check_field_offset(lv, s3466c8f0, ABISELECT(16,8), "S3466C8.s3466c8f0");
    check_field_offset(lv, s3466c8f1, ABISELECT(32,20), "S3466C8.s3466c8f1");
    test_class_info(&lv, &cd_S3466C8);
    dp->~S3466C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3466C8(Test_S3466C8, "S3466C8", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN7S3466C8C1Ev();
extern void _ZN7S3466C8D1Ev();
Name_Map name_map_S3466C8[] = {
  NSPAIR(_ZN7S3466C8C1Ev),
  NSPAIR(_ZN7S3466C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
static Base_Class bases_S3466C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3466C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3466C8[];
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C83v12Ev();
extern void _ZN7S3466C83v13Ev();
extern void _ZN7S3466C83v14Ev();
extern void _ZN7S3466C83v15Ev();
extern void _ZN7S3466C83v16Ev();
extern void _ZN7S3466C83v17Ev();
static  VTBL_ENTRY vtc_S3466C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C8[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v12Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v13Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v14Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v15Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v17Ev,
};
extern VTBL_ENTRY _ZTI7S3466C8[];
extern  VTBL_ENTRY _ZTV7S3466C8[];
Class_Descriptor cd_S3466C8 = {  "S3466C8", // class name
  bases_S3466C8, 1,
  &(vtc_S3466C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI7S3466C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3466C8),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3466C6  : S3466C7 , S3466C8 {
  void *s3466c6f0;
  char s3466c6f1;
  virtual void  v18(); // _ZN7S3466C63v18Ev
  virtual void  v19(); // _ZN7S3466C63v19Ev
  virtual void  v20(); // _ZN7S3466C63v20Ev
  virtual void  v21(); // _ZN7S3466C63v21Ev
  ~S3466C6(); // tgen
  S3466C6(); // tgen
};
//SIG(-1 S3466C6) C1{ BC2{ VBC3{ v5 v6 v7 v8 v9 Fi} VBC4{ BC3 v10 v11} v12 v13 v14 Fp} BC5{ BC3 v15 v16 v17 v18 v19 v20 FD Fp[7]} v1 v2 v3 v4 Fp Fc}


void  S3466C6 ::v18(){vfunc_called(this, "_ZN7S3466C63v18Ev");}
void  S3466C6 ::v19(){vfunc_called(this, "_ZN7S3466C63v19Ev");}
void  S3466C6 ::v20(){vfunc_called(this, "_ZN7S3466C63v20Ev");}
void  S3466C6 ::v21(){vfunc_called(this, "_ZN7S3466C63v21Ev");}
S3466C6 ::~S3466C6(){ note_dtor("S3466C6", this);} // tgen
S3466C6 ::S3466C6(){ note_ctor("S3466C6", this);} // tgen

static void Test_S3466C6()
{
  extern Class_Descriptor cd_S3466C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,21)];
    init_test(&cd_S3466C6, buf);
    S3466C6 *dp, &lv = *(dp=new (buf) S3466C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S3466C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3466C6)");
    /*is_ambiguous_... S3466C7::S3466C5 */ AMB_check_base_class_offset(lv, (S3466C5*)(S3466C7*), ABISELECT(120,64), "S3466C6");
    check_base_class_offset(lv, (S3466C5*)(S3466C4*), ABISELECT(136,72), "S3466C6");
    check_base_class_offset(lv, (S3466C4*)(S3466C7*), ABISELECT(136,72), "S3466C6");
    check_base_class_offset(lv, (S3466C7*), 0, "S3466C6");
    check_base_class_offset(lv, (S3466C5*)(S3466C8*), ABISELECT(16,8), "S3466C6");
    check_base_class_offset(lv, (S3466C8*), ABISELECT(16,8), "S3466C6");
    check_field_offset(lv, s3466c6f0, ABISELECT(104,56), "S3466C6.s3466c6f0");
    check_field_offset(lv, s3466c6f1, ABISELECT(112,60), "S3466C6.s3466c6f1");
    test_class_info(&lv, &cd_S3466C6);
    dp->~S3466C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3466C6(Test_S3466C6, "S3466C6", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN7S3466C6C1Ev();
extern void _ZN7S3466C6D1Ev();
Name_Map name_map_S3466C6[] = {
  NSPAIR(_ZN7S3466C6C1Ev),
  NSPAIR(_ZN7S3466C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C4;
extern VTBL_ENTRY _ZTI7S3466C4[];
extern  VTBL_ENTRY _ZTV7S3466C4[];
extern Class_Descriptor cd_S3466C7;
extern VTBL_ENTRY _ZTI7S3466C7[];
extern  VTBL_ENTRY _ZTV7S3466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C7[];
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C8;
extern VTBL_ENTRY _ZTI7S3466C8[];
extern  VTBL_ENTRY _ZTV7S3466C8[];
static Base_Class bases_S3466C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3466C5,    ABISELECT(120,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3466C5,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3466C4,    ABISELECT(136,72), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3466C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3466C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3466C8,    ABISELECT(16,8), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3466C6[];
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
extern void _ZN7S3466C63v18Ev();
extern void _ZN7S3466C63v19Ev();
extern void _ZN7S3466C63v20Ev();
extern void _ZN7S3466C63v21Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C83v12Ev();
extern void _ZN7S3466C83v13Ev();
extern void _ZN7S3466C83v14Ev();
extern void _ZN7S3466C83v15Ev();
extern void _ZN7S3466C83v16Ev();
extern void _ZN7S3466C83v17Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY vtc_S3466C6[] = {
  ABISELECT(136,72),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v21Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v12Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v13Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v14Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v15Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v17Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
extern VTBL_ENTRY _ZTV7S3466C6[];
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C7__7S3466C6[] = {
  ABISELECT(136,72),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C5__7S3466C7__7S3466C6[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C4__7S3466C7__7S3466C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
static  VTT_ENTRY vtt_S3466C6[] = {
  {&(_ZTV7S3466C6[4]),  4,52},
  {&(_tg__ZTV7S3466C7__7S3466C6[4]),  4,7},
  {&(_tg__ZTV7S3466C5__7S3466C7__7S3466C6[7]),  7,12},
  {&(_tg__ZTV7S3466C4__7S3466C7__7S3466C6[9]),  9,16},
  {&(_ZTV7S3466C6[31]),  31,52},
  {&(_ZTV7S3466C6[45]),  45,52},
};
extern VTBL_ENTRY _ZTI7S3466C6[];
extern  VTBL_ENTRY _ZTV7S3466C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C6[];
Class_Descriptor cd_S3466C6 = {  "S3466C6", // class name
  bases_S3466C6, 6,
  &(vtc_S3466C6[0]), // expected_vtbl_contents
  &(vtt_S3466C6[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI7S3466C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3466C6),52, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3466C6),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3466C3  : virtual S3466C4 , S3466C6 {
  void *s3466c3f0[6];
  virtual  ~S3466C3(); // _ZN7S3466C3D2Ev
  virtual void  v22(); // _ZN7S3466C33v22Ev
  virtual void  v23(); // _ZN7S3466C33v23Ev
  virtual void  v24(); // _ZN7S3466C33v24Ev
  virtual void  v25(); // _ZN7S3466C33v25Ev
  virtual void  v26(); // _ZN7S3466C33v26Ev
  S3466C3(); // tgen
};
//SIG(-1 S3466C3) C1{ VBC2{ BC3{ v6 v7 v8 v9 v10 Fi} v11 v12} BC4{ BC5{ VBC3 VBC2 v13 v14 v15 Fp} BC6{ BC3 v16 v17 v18 v19 v20 v21 FD Fp[7]} v22 v23 v24 v25 Fp Fc} vd v1 v2 v3 v4 v5 Fp[6]}


 S3466C3 ::~S3466C3(){ note_dtor("S3466C3", this);}
void  S3466C3 ::v22(){vfunc_called(this, "_ZN7S3466C33v22Ev");}
void  S3466C3 ::v23(){vfunc_called(this, "_ZN7S3466C33v23Ev");}
void  S3466C3 ::v24(){vfunc_called(this, "_ZN7S3466C33v24Ev");}
void  S3466C3 ::v25(){vfunc_called(this, "_ZN7S3466C33v25Ev");}
void  S3466C3 ::v26(){vfunc_called(this, "_ZN7S3466C33v26Ev");}
S3466C3 ::S3466C3(){ note_ctor("S3466C3", this);} // tgen

static void Test_S3466C3()
{
  extern Class_Descriptor cd_S3466C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,27)];
    init_test(&cd_S3466C3, buf);
    S3466C3 *dp, &lv = *(dp=new (buf) S3466C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,104), "sizeof(S3466C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3466C3)");
    check_base_class_offset(lv, (S3466C5*)(S3466C4*), ABISELECT(168,88), "S3466C3");
    check_base_class_offset(lv, (S3466C4*), ABISELECT(168,88), "S3466C3");
    check_base_class_offset(lv, (S3466C4*)(S3466C7*)(S3466C6*), ABISELECT(168,88), "S3466C3");
    /*is_ambiguous_... S3466C7::S3466C5 */ AMB_check_base_class_offset(lv, (S3466C5*)(S3466C7*)(S3466C6*), ABISELECT(184,96), "S3466C3");
    check_base_class_offset(lv, (S3466C7*)(S3466C6*), 0, "S3466C3");
    check_base_class_offset(lv, (S3466C5*)(S3466C8*)(S3466C6*), ABISELECT(16,8), "S3466C3");
    check_base_class_offset(lv, (S3466C8*)(S3466C6*), ABISELECT(16,8), "S3466C3");
    check_base_class_offset(lv, (S3466C6*), 0, "S3466C3");
    check_field_offset(lv, s3466c3f0, ABISELECT(120,64), "S3466C3.s3466c3f0");
    test_class_info(&lv, &cd_S3466C3);
    dp->~S3466C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3466C3(Test_S3466C3, "S3466C3", ABISELECT(208,104));

#else // __cplusplus

extern void _ZN7S3466C3C1Ev();
extern void _ZN7S3466C3D2Ev();
Name_Map name_map_S3466C3[] = {
  NSPAIR(_ZN7S3466C3C1Ev),
  NSPAIR(_ZN7S3466C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C4;
extern VTBL_ENTRY _ZTI7S3466C4[];
extern  VTBL_ENTRY _ZTV7S3466C4[];
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C7;
extern VTBL_ENTRY _ZTI7S3466C7[];
extern  VTBL_ENTRY _ZTV7S3466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C7[];
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C8;
extern VTBL_ENTRY _ZTI7S3466C8[];
extern  VTBL_ENTRY _ZTV7S3466C8[];
extern Class_Descriptor cd_S3466C6;
extern VTBL_ENTRY _ZTI7S3466C6[];
extern  VTBL_ENTRY _ZTV7S3466C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C6[];
static Base_Class bases_S3466C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3466C5,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3466C4,    ABISELECT(168,88), //bcp->offset
    31, //bcp->virtual_function_table_offset
    9, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S3466C5,    ABISELECT(184,96), //bcp->offset
    47, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3466C7,    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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3466C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3466C8,    ABISELECT(16,8), //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
    6, //immediately_derived
  0, 0},
  {&cd_S3466C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3466C3[];
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
extern void _ZN7S3466C63v18Ev();
extern void _ZN7S3466C63v19Ev();
extern void _ZN7S3466C63v20Ev();
extern void _ZN7S3466C63v21Ev();
extern void _ZN7S3466C3D1Ev();
extern void _ZN7S3466C3D0Ev();
extern void _ZN7S3466C33v22Ev();
extern void _ZN7S3466C33v23Ev();
extern void _ZN7S3466C33v24Ev();
extern void _ZN7S3466C33v25Ev();
extern void _ZN7S3466C33v26Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C83v12Ev();
extern void _ZN7S3466C83v13Ev();
extern void _ZN7S3466C83v14Ev();
extern void _ZN7S3466C83v15Ev();
extern void _ZN7S3466C83v16Ev();
extern void _ZN7S3466C83v17Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY vtc_S3466C3[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C3[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3466C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3466C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v26Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3466C3[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v12Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v13Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v14Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v15Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C3[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C3[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern VTBL_ENTRY _ZTV7S3466C3[];
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
extern void _ZN7S3466C63v18Ev();
extern void _ZN7S3466C63v19Ev();
extern void _ZN7S3466C63v20Ev();
extern void _ZN7S3466C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C6__7S3466C3[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v21Ev,
};
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C77S3466C6__7S3466C3[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C5__7S3466C77S3466C6__7S3466C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C4__7S3466C77S3466C6__7S3466C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C5__7S3466C6__7S3466C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C4__7S3466C6__7S3466C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
static  VTT_ENTRY vtt_S3466C3[] = {
  {&(_ZTV7S3466C3[4]),  4,59},
  {&(_tg__ZTV7S3466C6__7S3466C3[4]),  4,11},
  {&(_tg__ZTV7S3466C77S3466C6__7S3466C3[4]),  4,7},
  {&(_tg__ZTV7S3466C5__7S3466C77S3466C6__7S3466C3[7]),  7,12},
  {&(_tg__ZTV7S3466C4__7S3466C77S3466C6__7S3466C3[9]),  9,16},
  {&(_tg__ZTV7S3466C5__7S3466C6__7S3466C3[7]),  7,12},
  {&(_tg__ZTV7S3466C4__7S3466C6__7S3466C3[9]),  9,16},
  {&(_ZTV7S3466C3[40]),  40,59},
  {&(_ZTV7S3466C3[54]),  54,59},
};
extern VTBL_ENTRY _ZTI7S3466C3[];
extern  VTBL_ENTRY _ZTV7S3466C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C3[];
Class_Descriptor cd_S3466C3 = {  "S3466C3", // class name
  bases_S3466C3, 7,
  &(vtc_S3466C3[0]), // expected_vtbl_contents
  &(vtt_S3466C3[0]), // expected_vtt_contents
  ABISELECT(208,104), // object size
  NSPAIRA(_ZTI7S3466C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3466C3),59, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3466C3),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3466C2  : S3466C3 {
  virtual  ~S3466C2(); // _ZN7S3466C2D2Ev
  virtual void  v27(); // _ZN7S3466C23v27Ev
  virtual void  v28(); // _ZN7S3466C23v28Ev
  S3466C2(); // tgen
};
//SIG(-1 S3466C2) C1{ BC2{ VBC3{ BC4{ v3 v4 v5 v6 v7 Fi} v8 v9} BC5{ BC6{ VBC4 VBC3 v10 v11 v12 Fp} BC7{ BC4 v13 v14 v15 v16 v17 v18 FD Fp[7]} v19 v20 v21 v22 Fp Fc} vd v23 v24 v25 v26 v27 Fp[6]} vd v1 v2}


 S3466C2 ::~S3466C2(){ note_dtor("S3466C2", this);}
void  S3466C2 ::v27(){vfunc_called(this, "_ZN7S3466C23v27Ev");}
void  S3466C2 ::v28(){vfunc_called(this, "_ZN7S3466C23v28Ev");}
S3466C2 ::S3466C2(){ note_ctor("S3466C2", this);} // tgen

static void Test_S3466C2()
{
  extern Class_Descriptor cd_S3466C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,27)];
    init_test(&cd_S3466C2, buf);
    S3466C2 *dp, &lv = *(dp=new (buf) S3466C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,104), "sizeof(S3466C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3466C2)");
    check_base_class_offset(lv, (S3466C5*)(S3466C4*), ABISELECT(168,88), "S3466C2");
    check_base_class_offset(lv, (S3466C4*)(S3466C3*), ABISELECT(168,88), "S3466C2");
    check_base_class_offset(lv, (S3466C4*)(S3466C7*)(S3466C6*)(S3466C3*), ABISELECT(168,88), "S3466C2");
    /*is_ambiguous_... S3466C7::S3466C5 */ AMB_check_base_class_offset(lv, (S3466C5*)(S3466C7*)(S3466C6*)(S3466C3*), ABISELECT(184,96), "S3466C2");
    check_base_class_offset(lv, (S3466C7*)(S3466C6*)(S3466C3*), 0, "S3466C2");
    check_base_class_offset(lv, (S3466C5*)(S3466C8*)(S3466C6*)(S3466C3*), ABISELECT(16,8), "S3466C2");
    check_base_class_offset(lv, (S3466C8*)(S3466C6*)(S3466C3*), ABISELECT(16,8), "S3466C2");
    check_base_class_offset(lv, (S3466C6*)(S3466C3*), 0, "S3466C2");
    check_base_class_offset(lv, (S3466C3*), 0, "S3466C2");
    test_class_info(&lv, &cd_S3466C2);
    dp->~S3466C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3466C2(Test_S3466C2, "S3466C2", ABISELECT(208,104));

#else // __cplusplus

extern void _ZN7S3466C2C1Ev();
extern void _ZN7S3466C2D2Ev();
Name_Map name_map_S3466C2[] = {
  NSPAIR(_ZN7S3466C2C1Ev),
  NSPAIR(_ZN7S3466C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C4;
extern VTBL_ENTRY _ZTI7S3466C4[];
extern  VTBL_ENTRY _ZTV7S3466C4[];
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C7;
extern VTBL_ENTRY _ZTI7S3466C7[];
extern  VTBL_ENTRY _ZTV7S3466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C7[];
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C8;
extern VTBL_ENTRY _ZTI7S3466C8[];
extern  VTBL_ENTRY _ZTV7S3466C8[];
extern Class_Descriptor cd_S3466C6;
extern VTBL_ENTRY _ZTI7S3466C6[];
extern  VTBL_ENTRY _ZTV7S3466C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C6[];
extern Class_Descriptor cd_S3466C3;
extern VTBL_ENTRY _ZTI7S3466C3[];
extern  VTBL_ENTRY _ZTV7S3466C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C3[];
static Base_Class bases_S3466C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3466C5,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3466C4,    ABISELECT(168,88), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3466C5,    ABISELECT(184,96), //bcp->offset
    49, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3466C7,    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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3466C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3466C8,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3466C6,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3466C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3466C2[];
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
extern void _ZN7S3466C63v18Ev();
extern void _ZN7S3466C63v19Ev();
extern void _ZN7S3466C63v20Ev();
extern void _ZN7S3466C63v21Ev();
extern void _ZN7S3466C2D1Ev();
extern void _ZN7S3466C2D0Ev();
extern void _ZN7S3466C33v22Ev();
extern void _ZN7S3466C33v23Ev();
extern void _ZN7S3466C33v24Ev();
extern void _ZN7S3466C33v25Ev();
extern void _ZN7S3466C33v26Ev();
extern void _ZN7S3466C23v27Ev();
extern void _ZN7S3466C23v28Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C83v12Ev();
extern void _ZN7S3466C83v13Ev();
extern void _ZN7S3466C83v14Ev();
extern void _ZN7S3466C83v15Ev();
extern void _ZN7S3466C83v16Ev();
extern void _ZN7S3466C83v17Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY vtc_S3466C2[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C2[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3466C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3466C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3466C23v27Ev,
  (VTBL_ENTRY)&_ZN7S3466C23v28Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3466C2[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v12Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v13Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v14Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v15Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C2[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C2[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern VTBL_ENTRY _ZTV7S3466C2[];
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
extern void _ZN7S3466C63v18Ev();
extern void _ZN7S3466C63v19Ev();
extern void _ZN7S3466C63v20Ev();
extern void _ZN7S3466C63v21Ev();
extern void _ZN7S3466C3D1Ev();
extern void _ZN7S3466C3D0Ev();
extern void _ZN7S3466C33v22Ev();
extern void _ZN7S3466C33v23Ev();
extern void _ZN7S3466C33v24Ev();
extern void _ZN7S3466C33v25Ev();
extern void _ZN7S3466C33v26Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C3__7S3466C2[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C3[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3466C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3466C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v26Ev,
};
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
extern void _ZN7S3466C63v18Ev();
extern void _ZN7S3466C63v19Ev();
extern void _ZN7S3466C63v20Ev();
extern void _ZN7S3466C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C67S3466C3__7S3466C2[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v21Ev,
};
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C77S3466C67S3466C3__7S3466C2[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C5__7S3466C77S3466C67S3466C3__7S3466C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C4__7S3466C77S3466C67S3466C3__7S3466C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C5__7S3466C67S3466C3__7S3466C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C4__7S3466C67S3466C3__7S3466C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C4__7S3466C3__7S3466C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C3[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C5__A1__7S3466C3__7S3466C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C3[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
static  VTT_ENTRY vtt_S3466C2[] = {
  {&(_ZTV7S3466C2[4]),  4,61},
  {&(_tg__ZTV7S3466C3__7S3466C2[4]),  4,18},
  {&(_tg__ZTV7S3466C67S3466C3__7S3466C2[4]),  4,11},
  {&(_tg__ZTV7S3466C77S3466C67S3466C3__7S3466C2[4]),  4,7},
  {&(_tg__ZTV7S3466C5__7S3466C77S3466C67S3466C3__7S3466C2[7]),  7,12},
  {&(_tg__ZTV7S3466C4__7S3466C77S3466C67S3466C3__7S3466C2[9]),  9,16},
  {&(_tg__ZTV7S3466C5__7S3466C67S3466C3__7S3466C2[7]),  7,12},
  {&(_tg__ZTV7S3466C4__7S3466C67S3466C3__7S3466C2[9]),  9,16},
  {&(_tg__ZTV7S3466C4__7S3466C3__7S3466C2[9]),  9,16},
  {&(_tg__ZTV7S3466C5__A1__7S3466C3__7S3466C2[7]),  7,12},
  {&(_ZTV7S3466C2[42]),  42,61},
  {&(_ZTV7S3466C2[56]),  56,61},
};
extern VTBL_ENTRY _ZTI7S3466C2[];
extern  VTBL_ENTRY _ZTV7S3466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C2[];
Class_Descriptor cd_S3466C2 = {  "S3466C2", // class name
  bases_S3466C2, 8,
  &(vtc_S3466C2[0]), // expected_vtbl_contents
  &(vtt_S3466C2[0]), // expected_vtt_contents
  ABISELECT(208,104), // object size
  NSPAIRA(_ZTI7S3466C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3466C2),61, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3466C2),12, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3466C1  : S3466C2 {
  virtual  ~S3466C1(); // _ZN7S3466C1D2Ev
  virtual void  v1(); // _ZN7S3466C12v1Ev
  S3466C1(); // tgen
};
//SIG(1 S3466C1) C1{ BC2{ BC3{ VBC4{ BC5{ v2 v3 v4 v5 v6 Fi} v7 v8} BC6{ BC7{ VBC5 VBC4 v9 v10 v11 Fp} BC8{ BC5 v12 v13 v14 v15 v16 v17 FD Fp[7]} v18 v19 v20 v21 Fp Fc} vd v22 v23 v24 v25 v26 Fp[6]} vd v27 v28} vd v1}


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

static void Test_S3466C1()
{
  extern Class_Descriptor cd_S3466C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,27)];
    init_test(&cd_S3466C1, buf);
    S3466C1 *dp, &lv = *(dp=new (buf) S3466C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,104), "sizeof(S3466C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3466C1)");
    check_base_class_offset(lv, (S3466C5*)(S3466C4*), ABISELECT(168,88), "S3466C1");
    check_base_class_offset(lv, (S3466C4*)(S3466C3*)(S3466C2*), ABISELECT(168,88), "S3466C1");
    check_base_class_offset(lv, (S3466C4*)(S3466C7*)(S3466C6*)(S3466C3*)(S3466C2*), ABISELECT(168,88), "S3466C1");
    /*is_ambiguous_... S3466C7::S3466C5 */ AMB_check_base_class_offset(lv, (S3466C5*)(S3466C7*)(S3466C6*)(S3466C3*)(S3466C2*), ABISELECT(184,96), "S3466C1");
    check_base_class_offset(lv, (S3466C7*)(S3466C6*)(S3466C3*)(S3466C2*), 0, "S3466C1");
    check_base_class_offset(lv, (S3466C5*)(S3466C8*)(S3466C6*)(S3466C3*)(S3466C2*), ABISELECT(16,8), "S3466C1");
    check_base_class_offset(lv, (S3466C8*)(S3466C6*)(S3466C3*)(S3466C2*), ABISELECT(16,8), "S3466C1");
    check_base_class_offset(lv, (S3466C6*)(S3466C3*)(S3466C2*), 0, "S3466C1");
    check_base_class_offset(lv, (S3466C3*)(S3466C2*), 0, "S3466C1");
    check_base_class_offset(lv, (S3466C2*), 0, "S3466C1");
    test_class_info(&lv, &cd_S3466C1);
    dp->~S3466C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3466C1(Test_S3466C1, "S3466C1", ABISELECT(208,104));

#else // __cplusplus

extern void _ZN7S3466C1C1Ev();
extern void _ZN7S3466C1D2Ev();
Name_Map name_map_S3466C1[] = {
  NSPAIR(_ZN7S3466C1C1Ev),
  NSPAIR(_ZN7S3466C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C4;
extern VTBL_ENTRY _ZTI7S3466C4[];
extern  VTBL_ENTRY _ZTV7S3466C4[];
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C7;
extern VTBL_ENTRY _ZTI7S3466C7[];
extern  VTBL_ENTRY _ZTV7S3466C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C7[];
extern Class_Descriptor cd_S3466C5;
extern VTBL_ENTRY _ZTI7S3466C5[];
extern  VTBL_ENTRY _ZTV7S3466C5[];
extern Class_Descriptor cd_S3466C8;
extern VTBL_ENTRY _ZTI7S3466C8[];
extern  VTBL_ENTRY _ZTV7S3466C8[];
extern Class_Descriptor cd_S3466C6;
extern VTBL_ENTRY _ZTI7S3466C6[];
extern  VTBL_ENTRY _ZTV7S3466C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C6[];
extern Class_Descriptor cd_S3466C3;
extern VTBL_ENTRY _ZTI7S3466C3[];
extern  VTBL_ENTRY _ZTV7S3466C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C3[];
extern Class_Descriptor cd_S3466C2;
extern VTBL_ENTRY _ZTI7S3466C2[];
extern  VTBL_ENTRY _ZTV7S3466C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C2[];
static Base_Class bases_S3466C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3466C5,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3466C4,    ABISELECT(168,88), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3466C5,    ABISELECT(184,96), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3466C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3466C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3466C8,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3466C6,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3466C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3466C2,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3466C1[];
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
extern void _ZN7S3466C63v18Ev();
extern void _ZN7S3466C63v19Ev();
extern void _ZN7S3466C63v20Ev();
extern void _ZN7S3466C63v21Ev();
extern void _ZN7S3466C1D1Ev();
extern void _ZN7S3466C1D0Ev();
extern void _ZN7S3466C33v22Ev();
extern void _ZN7S3466C33v23Ev();
extern void _ZN7S3466C33v24Ev();
extern void _ZN7S3466C33v25Ev();
extern void _ZN7S3466C33v26Ev();
extern void _ZN7S3466C23v27Ev();
extern void _ZN7S3466C23v28Ev();
extern void _ZN7S3466C12v1Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C83v12Ev();
extern void _ZN7S3466C83v13Ev();
extern void _ZN7S3466C83v14Ev();
extern void _ZN7S3466C83v15Ev();
extern void _ZN7S3466C83v16Ev();
extern void _ZN7S3466C83v17Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY vtc_S3466C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C1[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3466C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3466C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3466C23v27Ev,
  (VTBL_ENTRY)&_ZN7S3466C23v28Ev,
  (VTBL_ENTRY)&_ZN7S3466C12v1Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3466C1[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v12Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v13Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v14Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v15Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v16Ev,
  (VTBL_ENTRY)&_ZN7S3466C83v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C1[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C1[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern VTBL_ENTRY _ZTV7S3466C1[];
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
extern void _ZN7S3466C63v18Ev();
extern void _ZN7S3466C63v19Ev();
extern void _ZN7S3466C63v20Ev();
extern void _ZN7S3466C63v21Ev();
extern void _ZN7S3466C2D1Ev();
extern void _ZN7S3466C2D0Ev();
extern void _ZN7S3466C33v22Ev();
extern void _ZN7S3466C33v23Ev();
extern void _ZN7S3466C33v24Ev();
extern void _ZN7S3466C33v25Ev();
extern void _ZN7S3466C33v26Ev();
extern void _ZN7S3466C23v27Ev();
extern void _ZN7S3466C23v28Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C2__7S3466C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C2[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3466C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3466C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3466C23v27Ev,
  (VTBL_ENTRY)&_ZN7S3466C23v28Ev,
};
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
extern void _ZN7S3466C63v18Ev();
extern void _ZN7S3466C63v19Ev();
extern void _ZN7S3466C63v20Ev();
extern void _ZN7S3466C63v21Ev();
extern void _ZN7S3466C3D1Ev();
extern void _ZN7S3466C3D0Ev();
extern void _ZN7S3466C33v22Ev();
extern void _ZN7S3466C33v23Ev();
extern void _ZN7S3466C33v24Ev();
extern void _ZN7S3466C33v25Ev();
extern void _ZN7S3466C33v26Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C37S3466C2__7S3466C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C3[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v21Ev,
  (VTBL_ENTRY)&_ZN7S3466C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3466C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3466C33v26Ev,
};
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
extern void _ZN7S3466C63v18Ev();
extern void _ZN7S3466C63v19Ev();
extern void _ZN7S3466C63v20Ev();
extern void _ZN7S3466C63v21Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C67S3466C37S3466C2__7S3466C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v19Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v20Ev,
  (VTBL_ENTRY)&_ZN7S3466C63v21Ev,
};
extern void _ZN7S3466C72v9Ev();
extern void _ZN7S3466C73v10Ev();
extern void _ZN7S3466C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C77S3466C67S3466C37S3466C2__7S3466C1[] = {
  ABISELECT(168,88),
  ABISELECT(184,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3466C73v11Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C5__7S3466C77S3466C67S3466C37S3466C2__7S3466C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C4__7S3466C77S3466C67S3466C37S3466C2__7S3466C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C7[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C5__7S3466C67S3466C37S3466C2__7S3466C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C4__7S3466C67S3466C37S3466C2__7S3466C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C6[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C4__7S3466C37S3466C2__7S3466C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C3[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C5__A1__7S3466C37S3466C2__7S3466C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C3[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
extern void _ZN7S3466C42v7Ev();
extern void _ZN7S3466C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C4__7S3466C2__7S3466C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3466C2[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3466C42v8Ev,
};
extern void _ZN7S3466C52v2Ev();
extern void _ZN7S3466C52v3Ev();
extern void _ZN7S3466C52v4Ev();
extern void _ZN7S3466C52v5Ev();
extern void _ZN7S3466C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3466C5__A1__7S3466C2__7S3466C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S3466C2[0]),
  (VTBL_ENTRY)&_ZN7S3466C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v3Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v4Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v5Ev,
  (VTBL_ENTRY)&_ZN7S3466C52v6Ev,
};
static  VTT_ENTRY vtt_S3466C1[] = {
  {&(_ZTV7S3466C1[4]),  4,62},
  {&(_tg__ZTV7S3466C2__7S3466C1[4]),  4,20},
  {&(_tg__ZTV7S3466C37S3466C2__7S3466C1[4]),  4,18},
  {&(_tg__ZTV7S3466C67S3466C37S3466C2__7S3466C1[4]),  4,11},
  {&(_tg__ZTV7S3466C77S3466C67S3466C37S3466C2__7S3466C1[4]),  4,7},
  {&(_tg__ZTV7S3466C5__7S3466C77S3466C67S3466C37S3466C2__7S3466C1[7]),  7,12},
  {&(_tg__ZTV7S3466C4__7S3466C77S3466C67S3466C37S3466C2__7S3466C1[9]),  9,16},
  {&(_tg__ZTV7S3466C5__7S3466C67S3466C37S3466C2__7S3466C1[7]),  7,12},
  {&(_tg__ZTV7S3466C4__7S3466C67S3466C37S3466C2__7S3466C1[9]),  9,16},
  {&(_tg__ZTV7S3466C4__7S3466C37S3466C2__7S3466C1[9]),  9,16},
  {&(_tg__ZTV7S3466C5__A1__7S3466C37S3466C2__7S3466C1[7]),  7,12},
  {&(_tg__ZTV7S3466C4__7S3466C2__7S3466C1[9]),  9,16},
  {&(_tg__ZTV7S3466C5__A1__7S3466C2__7S3466C1[7]),  7,12},
  {&(_ZTV7S3466C1[43]),  43,62},
  {&(_ZTV7S3466C1[57]),  57,62},
};
extern VTBL_ENTRY _ZTI7S3466C1[];
extern  VTBL_ENTRY _ZTV7S3466C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3466C1[];
Class_Descriptor cd_S3466C1 = {  "S3466C1", // class name
  bases_S3466C1, 9,
  &(vtc_S3466C1[0]), // expected_vtbl_contents
  &(vtt_S3466C1[0]), // expected_vtt_contents
  ABISELECT(208,104), // object size
  NSPAIRA(_ZTI7S3466C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3466C1),62, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3466C1),15, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3703C2  : S3712C3_nt {
  virtual void  v2(); // _ZN7S3703C22v2Ev
  ~S3703C2(); // tgen
  S3703C2(); // tgen
};
//SIG(-1 S3703C2) C1{ BC2{ vd m Fi} v1}


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

static void Test_S3703C2()
{
  extern Class_Descriptor cd_S3703C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3703C2, buf);
    S3703C2 *dp, &lv = *(dp=new (buf) S3703C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3703C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3703C2)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S3703C2");
    test_class_info(&lv, &cd_S3703C2);
    dp->~S3703C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3703C2(Test_S3703C2, "S3703C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3703C2C1Ev();
extern void _ZN7S3703C2D1Ev();
Name_Map name_map_S3703C2[] = {
  NSPAIR(_ZN7S3703C2C1Ev),
  NSPAIR(_ZN7S3703C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S3703C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3703C2[];
extern void _ZN7S3703C2D1Ev();
extern void _ZN7S3703C2D0Ev();
extern void _ZN7S3703C22v2Ev();
static  VTBL_ENTRY vtc_S3703C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3703C2[0]),
  (VTBL_ENTRY)&_ZN7S3703C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3703C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3703C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S3703C2[];
extern  VTBL_ENTRY _ZTV7S3703C2[];
Class_Descriptor cd_S3703C2 = {  "S3703C2", // class name
  bases_S3703C2, 1,
  &(vtc_S3703C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3703C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3703C2),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  S3703C8_nt  {
  virtual  ~S3703C8_nt(); // _ZN10S3703C8_ntD1Ev
  virtual void  v11(); // _ZN10S3703C8_nt3v11Ev
  virtual void  v12(); // _ZN10S3703C8_nt3v12Ev
  S3703C8_nt(); // tgen
};
//SIG(-1 S3703C8_nt) C1{ vd v1 v2}


 S3703C8_nt ::~S3703C8_nt(){ note_dtor("S3703C8_nt", this);}
void  S3703C8_nt ::v11(){vfunc_called(this, "_ZN10S3703C8_nt3v11Ev");}
void  S3703C8_nt ::v12(){vfunc_called(this, "_ZN10S3703C8_nt3v12Ev");}
S3703C8_nt ::S3703C8_nt(){ note_ctor("S3703C8_nt", this);} // tgen

//skip512 S3703C8_nt

#else // __cplusplus

extern void _ZN10S3703C8_ntC1Ev();
extern void _ZN10S3703C8_ntD1Ev();
Name_Map name_map_S3703C8_nt[] = {
  NSPAIR(_ZN10S3703C8_ntC1Ev),
  NSPAIR(_ZN10S3703C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3703C8_nt[];
extern void _ZN10S3703C8_ntD1Ev();
extern void _ZN10S3703C8_ntD0Ev();
extern void _ZN10S3703C8_nt3v11Ev();
extern void _ZN10S3703C8_nt3v12Ev();
static  VTBL_ENTRY vtc_S3703C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3703C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S3703C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3703C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3703C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3703C8_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI10S3703C8_nt[];
VTBL_ENTRY *P__ZTI10S3703C8_nt = _ZTI10S3703C8_nt; 
extern  VTBL_ENTRY _ZTV10S3703C8_nt[];
Class_Descriptor cd_S3703C8_nt = {  "S3703C8_nt", // class name
  0,0,//no base classes
  &(vtc_S3703C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S3703C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3703C8_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

union  S3703C9_nt  {
  ::S11608C17_nt s3703c9f0;
  __tsi64 s3703c9f1;
};
//SIG(1 S3703C9_nt) U1{ FC2{ Fi Fi} FL}

#endif // __cplusplus
#ifdef __cplusplus

struct  S3703C7  : S3703C8_nt {
  int s3703c7f0;
  ::S3703C9_nt s3703c7f1;
  virtual  ~S3703C7(); // _ZN7S3703C7D1Ev
  virtual void  v9(); // _ZN7S3703C72v9Ev
  virtual void  v10(); // _ZN7S3703C73v10Ev
  S3703C7(); // tgen
};
//SIG(1 S3703C7) C1{ BC2{ vd v3 v4} vd v1 v2 Fi FU3{ FC4{ Fi Fi} FL}}


 S3703C7 ::~S3703C7(){ note_dtor("S3703C7", this);}
void  S3703C7 ::v9(){vfunc_called(this, "_ZN7S3703C72v9Ev");}
void  S3703C7 ::v10(){vfunc_called(this, "_ZN7S3703C73v10Ev");}
S3703C7 ::S3703C7(){ note_ctor("S3703C7", this);} // tgen

static void Test_S3703C7()
{
  extern Class_Descriptor cd_S3703C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S3703C7, buf);
    S3703C7 *dp, &lv = *(dp=new (buf) S3703C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3703C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3703C7)");
    check_base_class_offset(lv, (S3703C8_nt*), 0, "S3703C7");
    check_field_offset(lv, s3703c7f0, ABISELECT(8,4), "S3703C7.s3703c7f0");
    check_field_offset(lv, s3703c7f1, ABISELECT(16,8), "S3703C7.s3703c7f1");
    test_class_info(&lv, &cd_S3703C7);
    dp->~S3703C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3703C7(Test_S3703C7, "S3703C7", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S3703C7C1Ev();
extern void _ZN7S3703C7D1Ev();
Name_Map name_map_S3703C7[] = {
  NSPAIR(_ZN7S3703C7C1Ev),
  NSPAIR(_ZN7S3703C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3703C8_nt;
extern VTBL_ENTRY _ZTI10S3703C8_nt[];
extern  VTBL_ENTRY _ZTV10S3703C8_nt[];
static Base_Class bases_S3703C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3703C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3703C7[];
extern void _ZN7S3703C7D1Ev();
extern void _ZN7S3703C7D0Ev();
extern void _ZN10S3703C8_nt3v11Ev();
extern void _ZN10S3703C8_nt3v12Ev();
extern void _ZN7S3703C72v9Ev();
extern void _ZN7S3703C73v10Ev();
static  VTBL_ENTRY vtc_S3703C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3703C7[0]),
  (VTBL_ENTRY)&_ZN7S3703C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3703C7D0Ev,
  (VTBL_ENTRY)&_ZN10S3703C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3703C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3703C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3703C73v10Ev,
};
extern VTBL_ENTRY _ZTI7S3703C7[];
extern  VTBL_ENTRY _ZTV7S3703C7[];
Class_Descriptor cd_S3703C7 = {  "S3703C7", // class name
  bases_S3703C7, 1,
  &(vtc_S3703C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S3703C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3703C7),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3703C1  : S3703C2 {
  char s3703c1f0;
  int s3703c1f1;
  ::S10225C3 s3703c1f2;
  ::S3703C7 s3703c1f3[4];
  ::S10225C15_nt s3703c1f4;
  int s3703c1f5;
  char s3703c1f6;
  int s3703c1f7;
  char s3703c1f8;
  virtual  ~S3703C1(); // _ZN7S3703C1D1Ev
  virtual void  v1(); // _ZN7S3703C12v1Ev
  S3703C1(); // tgen
};
//SIG(1 S3703C1) C1{ BC2{ BC3{ vd m Fi} v2} vd v1 Fc Fi FC4{ BC5{ vd v6 v7 v8} vd v3 v4 v5 FC6{ FL[4]}} FC7{ BC8{ vd v11 v12} vd v9 v10 Fi FU9{ FC10{ Fi Fi} FL}}[4] FC11{ BC12{ m Fp Fi FC13{ m} FC13}} Fi Fc Fi Fc}


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

static void Test_S3703C1()
{
  extern Class_Descriptor cd_S3703C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,37)];
    init_test(&cd_S3703C1, buf);
    S3703C1 *dp, &lv = *(dp=new (buf) S3703C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S3703C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3703C1)");
    check_base_class_offset(lv, (S3712C3_nt*)(S3703C2*), 0, "S3703C1");
    check_base_class_offset(lv, (S3703C2*), 0, "S3703C1");
    check_field_offset(lv, s3703c1f0, ABISELECT(12,8), "S3703C1.s3703c1f0");
    check_field_offset(lv, s3703c1f1, ABISELECT(16,12), "S3703C1.s3703c1f1");
    check_field_offset(lv, s3703c1f2, ABISELECT(24,16), "S3703C1.s3703c1f2");
    check_field_offset(lv, s3703c1f3, ABISELECT(64,52), "S3703C1.s3703c1f3");
    check_field_offset(lv, s3703c1f4, ABISELECT(160,116), "S3703C1.s3703c1f4");
    check_field_offset(lv, s3703c1f5, ABISELECT(176,128), "S3703C1.s3703c1f5");
    check_field_offset(lv, s3703c1f6, ABISELECT(180,132), "S3703C1.s3703c1f6");
    check_field_offset(lv, s3703c1f7, ABISELECT(184,136), "S3703C1.s3703c1f7");
    check_field_offset(lv, s3703c1f8, ABISELECT(188,140), "S3703C1.s3703c1f8");
    test_class_info(&lv, &cd_S3703C1);
    dp->~S3703C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3703C1(Test_S3703C1, "S3703C1", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN7S3703C1C1Ev();
extern void _ZN7S3703C1D1Ev();
Name_Map name_map_S3703C1[] = {
  NSPAIR(_ZN7S3703C1C1Ev),
  NSPAIR(_ZN7S3703C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
extern Class_Descriptor cd_S3703C2;
extern VTBL_ENTRY _ZTI7S3703C2[];
extern  VTBL_ENTRY _ZTV7S3703C2[];
static Base_Class bases_S3703C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3703C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3703C1[];
extern void _ZN7S3703C1D1Ev();
extern void _ZN7S3703C1D0Ev();
extern void _ZN7S3703C22v2Ev();
extern void _ZN7S3703C12v1Ev();
static  VTBL_ENTRY vtc_S3703C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3703C1[0]),
  (VTBL_ENTRY)&_ZN7S3703C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3703C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3703C22v2Ev,
  (VTBL_ENTRY)&_ZN7S3703C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3703C1[];
extern  VTBL_ENTRY _ZTV7S3703C1[];
Class_Descriptor cd_S3703C1 = {  "S3703C1", // class name
  bases_S3703C1, 2,
  &(vtc_S3703C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI7S3703C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3703C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19068C4  {
  virtual void  v5(); // _ZN8S19068C42v5Ev
  virtual void  v6(); // _ZN8S19068C42v6Ev
  virtual void  v7(); // _ZN8S19068C42v7Ev
  virtual void  v8(); // _ZN8S19068C42v8Ev
  ~S19068C4(); // tgen
  S19068C4(); // tgen
};
//SIG(-1 S19068C4) C1{ v1 v2 v3 v4}


void  S19068C4 ::v5(){vfunc_called(this, "_ZN8S19068C42v5Ev");}
void  S19068C4 ::v6(){vfunc_called(this, "_ZN8S19068C42v6Ev");}
void  S19068C4 ::v7(){vfunc_called(this, "_ZN8S19068C42v7Ev");}
void  S19068C4 ::v8(){vfunc_called(this, "_ZN8S19068C42v8Ev");}
S19068C4 ::~S19068C4(){ note_dtor("S19068C4", this);} // tgen
S19068C4 ::S19068C4(){ note_ctor("S19068C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19068C4C1Ev();
extern void _ZN8S19068C4D1Ev();
Name_Map name_map_S19068C4[] = {
  NSPAIR(_ZN8S19068C4C1Ev),
  NSPAIR(_ZN8S19068C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19068C4[];
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY vtc_S19068C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C4[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
Class_Descriptor cd_S19068C4 = {  "S19068C4", // class name
  0,0,//no base classes
  &(vtc_S19068C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19068C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19068C4),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  S19068C3  : S19068C4 {
  ::S19068C4 s19068c3f0;
  virtual void  v9(); // _ZN8S19068C32v9Ev
  virtual void  v10(); // _ZN8S19068C33v10Ev
  ~S19068C3(); // tgen
  S19068C3(); // tgen
};
//SIG(-1 S19068C3) C1{ BC2{ v3 v4 v5 v6} v1 v2 FC2}


void  S19068C3 ::v9(){vfunc_called(this, "_ZN8S19068C32v9Ev");}
void  S19068C3 ::v10(){vfunc_called(this, "_ZN8S19068C33v10Ev");}
S19068C3 ::~S19068C3(){ note_dtor("S19068C3", this);} // tgen
S19068C3 ::S19068C3(){ note_ctor("S19068C3", this);} // tgen

static void Test_S19068C3()
{
  extern Class_Descriptor cd_S19068C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19068C3, buf);
    S19068C3 *dp, &lv = *(dp=new (buf) S19068C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19068C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19068C3)");
    check_base_class_offset(lv, (S19068C4*), 0, "S19068C3");
    check_field_offset(lv, s19068c3f0, ABISELECT(8,4), "S19068C3.s19068c3f0");
    test_class_info(&lv, &cd_S19068C3);
    dp->~S19068C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19068C3(Test_S19068C3, "S19068C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19068C3C1Ev();
extern void _ZN8S19068C3D1Ev();
Name_Map name_map_S19068C3[] = {
  NSPAIR(_ZN8S19068C3C1Ev),
  NSPAIR(_ZN8S19068C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
static Base_Class bases_S19068C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19068C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19068C3[];
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
static  VTBL_ENTRY vtc_S19068C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C3[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
};
extern VTBL_ENTRY _ZTI8S19068C3[];
extern  VTBL_ENTRY _ZTV8S19068C3[];
Class_Descriptor cd_S19068C3 = {  "S19068C3", // class name
  bases_S19068C3, 1,
  &(vtc_S19068C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19068C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19068C3),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  S19068C6  : S19068C3 , S19068C4 {
  int s19068c6f0;
  virtual  ~S19068C6(); // _ZN8S19068C6D1Ev
  virtual void  v11(); // _ZN8S19068C63v11Ev
  virtual void  v12(); // _ZN8S19068C63v12Ev
  virtual void  v13(); // _ZN8S19068C63v13Ev
  virtual void  v14(); // _ZN8S19068C63v14Ev
  virtual void  v15(); // _ZN8S19068C63v15Ev
  virtual void  v16(); // _ZN8S19068C63v16Ev
  S19068C6(); // tgen
};
//SIG(-1 S19068C6) C1{ BC2{ BC3{ v7 v8 v9 v10} v11 v12 FC3} BC3 vd v1 v2 v3 v4 v5 v6 Fi}


 S19068C6 ::~S19068C6(){ note_dtor("S19068C6", this);}
void  S19068C6 ::v11(){vfunc_called(this, "_ZN8S19068C63v11Ev");}
void  S19068C6 ::v12(){vfunc_called(this, "_ZN8S19068C63v12Ev");}
void  S19068C6 ::v13(){vfunc_called(this, "_ZN8S19068C63v13Ev");}
void  S19068C6 ::v14(){vfunc_called(this, "_ZN8S19068C63v14Ev");}
void  S19068C6 ::v15(){vfunc_called(this, "_ZN8S19068C63v15Ev");}
void  S19068C6 ::v16(){vfunc_called(this, "_ZN8S19068C63v16Ev");}
S19068C6 ::S19068C6(){ note_ctor("S19068C6", this);} // tgen

static void Test_S19068C6()
{
  extern Class_Descriptor cd_S19068C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19068C6, buf);
    S19068C6 *dp, &lv = *(dp=new (buf) S19068C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19068C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19068C6)");
    check_base_class_offset(lv, (S19068C4*)(S19068C3*), 0, "S19068C6");
    check_base_class_offset(lv, (S19068C3*), 0, "S19068C6");
    /*is_ambiguous_... S19068C6::S19068C4 */ AMB_check_base_class_offset(lv, (S19068C4*), ABISELECT(16,8), "S19068C6");
    check_field_offset(lv, s19068c6f0, ABISELECT(24,12), "S19068C6.s19068c6f0");
    test_class_info(&lv, &cd_S19068C6);
    dp->~S19068C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19068C6(Test_S19068C6, "S19068C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19068C6C1Ev();
extern void _ZN8S19068C6D1Ev();
Name_Map name_map_S19068C6[] = {
  NSPAIR(_ZN8S19068C6C1Ev),
  NSPAIR(_ZN8S19068C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C3;
extern VTBL_ENTRY _ZTI8S19068C3[];
extern  VTBL_ENTRY _ZTV8S19068C3[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
static Base_Class bases_S19068C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19068C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19068C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19068C4,    ABISELECT(16,8), //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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19068C6[];
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void _ZN8S19068C6D1Ev();
extern void _ZN8S19068C6D0Ev();
extern void _ZN8S19068C63v11Ev();
extern void _ZN8S19068C63v12Ev();
extern void _ZN8S19068C63v13Ev();
extern void _ZN8S19068C63v14Ev();
extern void _ZN8S19068C63v15Ev();
extern void _ZN8S19068C63v16Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY vtc_S19068C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C6[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19068C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19068C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v16Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19068C6[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S19068C6[];
extern  VTBL_ENTRY _ZTV8S19068C6[];
Class_Descriptor cd_S19068C6 = {  "S19068C6", // class name
  bases_S19068C6, 3,
  &(vtc_S19068C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19068C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19068C6),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19068C7  : virtual S19068C4 , S19068C3 {
  virtual  ~S19068C7(); // _ZN8S19068C7D2Ev
  virtual void  v17(); // _ZN8S19068C73v17Ev
  S19068C7(); // tgen
};
//SIG(-1 S19068C7) C1{ VBC2{ v2 v3 v4 v5} BC3{ BC2 v6 v7 FC2} vd v1}


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

static void Test_S19068C7()
{
  extern Class_Descriptor cd_S19068C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19068C7, buf);
    S19068C7 *dp, &lv = *(dp=new (buf) S19068C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19068C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19068C7)");
    /*is_ambiguous_... S19068C7::S19068C4 */ AMB_check_base_class_offset(lv, (S19068C4*), ABISELECT(16,8), "S19068C7");
    check_base_class_offset(lv, (S19068C4*)(S19068C3*), 0, "S19068C7");
    check_base_class_offset(lv, (S19068C3*), 0, "S19068C7");
    test_class_info(&lv, &cd_S19068C7);
    dp->~S19068C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19068C7(Test_S19068C7, "S19068C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19068C7C1Ev();
extern void _ZN8S19068C7D2Ev();
Name_Map name_map_S19068C7[] = {
  NSPAIR(_ZN8S19068C7C1Ev),
  NSPAIR(_ZN8S19068C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C3;
extern VTBL_ENTRY _ZTI8S19068C3[];
extern  VTBL_ENTRY _ZTV8S19068C3[];
static Base_Class bases_S19068C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19068C4,    ABISELECT(16,8), //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_S19068C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19068C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S19068C7[];
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void _ZN8S19068C7D1Ev();
extern void _ZN8S19068C7D0Ev();
extern void _ZN8S19068C73v17Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY vtc_S19068C7[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C7[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19068C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19068C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19068C73v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19068C7[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S19068C7[];
static  VTT_ENTRY vtt_S19068C7[] = {
  {&(_ZTV8S19068C7[3]),  3,22},
  {&(_ZTV8S19068C7[18]),  18,22},
};
extern VTBL_ENTRY _ZTI8S19068C7[];
extern  VTBL_ENTRY _ZTV8S19068C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19068C7[];
Class_Descriptor cd_S19068C7 = {  "S19068C7", // class name
  bases_S19068C7, 3,
  &(vtc_S19068C7[0]), // expected_vtbl_contents
  &(vtt_S19068C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19068C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19068C7),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19068C7),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19068C5  : S19068C6 , S19068C4 , S19068C7 {
  virtual void  v18(); // _ZN8S19068C53v18Ev
  virtual void  v19(); // _ZN8S19068C53v19Ev
  virtual void  v20(); // _ZN8S19068C53v20Ev
  ~S19068C5(); // tgen
  S19068C5(); // tgen
};
//SIG(-1 S19068C5) C1{ BC2{ BC3{ BC4{ v4 v5 v6 v7} v8 v9 FC4} BC4 vd v10 v11 v12 v13 v14 v15 Fi} BC4 BC5{ VBC4 BC3 vd v16} v1 v2 v3}


void  S19068C5 ::v18(){vfunc_called(this, "_ZN8S19068C53v18Ev");}
void  S19068C5 ::v19(){vfunc_called(this, "_ZN8S19068C53v19Ev");}
void  S19068C5 ::v20(){vfunc_called(this, "_ZN8S19068C53v20Ev");}
S19068C5 ::~S19068C5(){ note_dtor("S19068C5", this);} // tgen
S19068C5 ::S19068C5(){ note_ctor("S19068C5", this);} // tgen

static void Test_S19068C5()
{
  extern Class_Descriptor cd_S19068C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S19068C5, buf);
    S19068C5 *dp, &lv = *(dp=new (buf) S19068C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19068C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19068C5)");
    check_base_class_offset(lv, (S19068C4*)(S19068C3*)(S19068C6*), 0, "S19068C5");
    check_base_class_offset(lv, (S19068C3*)(S19068C6*), 0, "S19068C5");
    /*is_ambiguous_... S19068C6::S19068C4 */ AMB_check_base_class_offset(lv, (S19068C4*)(S19068C6*), ABISELECT(16,8), "S19068C5");
    check_base_class_offset(lv, (S19068C6*), 0, "S19068C5");
    /*is_ambiguous_... S19068C5::S19068C4 */ AMB_check_base_class_offset(lv, (S19068C4*), ABISELECT(32,16), "S19068C5");
    /*is_ambiguous_... S19068C7::S19068C4 */ AMB_check_base_class_offset(lv, (S19068C4*)(S19068C7*), ABISELECT(56,28), "S19068C5");
    check_base_class_offset(lv, (S19068C4*)(S19068C3*)(S19068C7*), ABISELECT(40,20), "S19068C5");
    check_base_class_offset(lv, (S19068C3*)(S19068C7*), ABISELECT(40,20), "S19068C5");
    check_base_class_offset(lv, (S19068C7*), ABISELECT(40,20), "S19068C5");
    test_class_info(&lv, &cd_S19068C5);
    dp->~S19068C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19068C5(Test_S19068C5, "S19068C5", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S19068C5C1Ev();
extern void _ZN8S19068C5D1Ev();
Name_Map name_map_S19068C5[] = {
  NSPAIR(_ZN8S19068C5C1Ev),
  NSPAIR(_ZN8S19068C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C3;
extern VTBL_ENTRY _ZTI8S19068C3[];
extern  VTBL_ENTRY _ZTV8S19068C3[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C6;
extern VTBL_ENTRY _ZTI8S19068C6[];
extern  VTBL_ENTRY _ZTV8S19068C6[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C3;
extern VTBL_ENTRY _ZTI8S19068C3[];
extern  VTBL_ENTRY _ZTV8S19068C3[];
extern Class_Descriptor cd_S19068C7;
extern VTBL_ENTRY _ZTI8S19068C7[];
extern  VTBL_ENTRY _ZTV8S19068C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19068C7[];
static Base_Class bases_S19068C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19068C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19068C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19068C4,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19068C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19068C4,    ABISELECT(32,16), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19068C4,    ABISELECT(56,28), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19068C4,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19068C3,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19068C7,    ABISELECT(40,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19068C5[];
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void _ZN8S19068C5D1Ev();
extern void _ZN8S19068C5D0Ev();
extern void _ZN8S19068C63v11Ev();
extern void _ZN8S19068C63v12Ev();
extern void _ZN8S19068C63v13Ev();
extern void _ZN8S19068C63v14Ev();
extern void _ZN8S19068C63v15Ev();
extern void _ZN8S19068C63v16Ev();
extern void _ZN8S19068C53v18Ev();
extern void _ZN8S19068C53v19Ev();
extern void _ZN8S19068C53v20Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void ABISELECT(_ZThn40_N8S19068C5D1Ev,_ZThn20_N8S19068C5D1Ev)();
extern void ABISELECT(_ZThn40_N8S19068C5D0Ev,_ZThn20_N8S19068C5D0Ev)();
extern void _ZN8S19068C73v17Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY vtc_S19068C5[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C5[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19068C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19068C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v20Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19068C5[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19068C5[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19068C5[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19068C5D1Ev,_ZThn20_N8S19068C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19068C5D0Ev,_ZThn20_N8S19068C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19068C73v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19068C5[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S19068C5[];
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void _ZN8S19068C7D1Ev();
extern void _ZN8S19068C7D0Ev();
extern void _ZN8S19068C73v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C7__8S19068C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C7[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19068C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19068C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19068C73v17Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C4__8S19068C7__8S19068C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19068C7[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
static  VTT_ENTRY vtt_S19068C5[] = {
  {&(_ZTV8S19068C5[3]),  3,54},
  {&(_tg__ZTV8S19068C7__8S19068C5[3]),  3,12},
  {&(_tg__ZTV8S19068C4__8S19068C7__8S19068C5[6]),  6,10},
  {&(_ZTV8S19068C5[35]),  35,54},
  {&(_ZTV8S19068C5[50]),  50,54},
};
extern VTBL_ENTRY _ZTI8S19068C5[];
extern  VTBL_ENTRY _ZTV8S19068C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19068C5[];
Class_Descriptor cd_S19068C5 = {  "S19068C5", // class name
  bases_S19068C5, 9,
  &(vtc_S19068C5[0]), // expected_vtbl_contents
  &(vtt_S19068C5[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S19068C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19068C5),54, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19068C5),5, //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  S19068C2  : S19068C3 , virtual S19068C5 {
  int s19068c2f0;
  void *s19068c2f1[11];
  virtual  ~S19068C2(); // _ZN8S19068C2D2Ev
  virtual void  v21(); // _ZN8S19068C23v21Ev
  virtual void  v22(); // _ZN8S19068C23v22Ev
  virtual void  v23(); // _ZN8S19068C23v23Ev
  virtual void  v24(); // _ZN8S19068C23v24Ev
  S19068C2(); // tgen
};
//SIG(-1 S19068C2) C1{ BC2{ BC3{ v5 v6 v7 v8} v9 v10 FC3} VBC4{ BC5{ BC2 BC3 vd v11 v12 v13 v14 v15 v16 Fi} BC3 BC6{ VBC3 BC2 vd v17} v18 v19 v20} vd v1 v2 v3 v4 Fi Fp[11]}


 S19068C2 ::~S19068C2(){ note_dtor("S19068C2", this);}
void  S19068C2 ::v21(){vfunc_called(this, "_ZN8S19068C23v21Ev");}
void  S19068C2 ::v22(){vfunc_called(this, "_ZN8S19068C23v22Ev");}
void  S19068C2 ::v23(){vfunc_called(this, "_ZN8S19068C23v23Ev");}
void  S19068C2 ::v24(){vfunc_called(this, "_ZN8S19068C23v24Ev");}
S19068C2 ::S19068C2(){ note_ctor("S19068C2", this);} // tgen

static void Test_S19068C2()
{
  extern Class_Descriptor cd_S19068C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[23];
    init_test(&cd_S19068C2, buf);
    S19068C2 *dp, &lv = *(dp=new (buf) S19068C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S19068C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19068C2)");
    /*is_ambiguous_... S19068C2::S19068C3 */ AMB_check_base_class_offset(lv, (S19068C4*)(S19068C3*), 0, "S19068C2");
    /*is_ambiguous_... S19068C2::S19068C3 */ AMB_check_base_class_offset(lv, (S19068C3*), 0, "S19068C2");
    check_base_class_offset(lv, (S19068C4*)(S19068C3*)(S19068C6*)(S19068C5*), ABISELECT(112,56), "S19068C2");
    check_base_class_offset(lv, (S19068C3*)(S19068C6*)(S19068C5*), ABISELECT(112,56), "S19068C2");
    /*is_ambiguous_... S19068C6::S19068C4 */ AMB_check_base_class_offset(lv, (S19068C4*)(S19068C6*)(S19068C5*), ABISELECT(128,64), "S19068C2");
    check_base_class_offset(lv, (S19068C6*)(S19068C5*), ABISELECT(112,56), "S19068C2");
    /*is_ambiguous_... S19068C5::S19068C4 */ AMB_check_base_class_offset(lv, (S19068C4*)(S19068C5*), ABISELECT(144,72), "S19068C2");
    /*is_ambiguous_... S19068C7::S19068C4 */ AMB_check_base_class_offset(lv, (S19068C4*)(S19068C7*)(S19068C5*), ABISELECT(168,84), "S19068C2");
    check_base_class_offset(lv, (S19068C4*)(S19068C3*)(S19068C7*)(S19068C5*), ABISELECT(152,76), "S19068C2");
    check_base_class_offset(lv, (S19068C3*)(S19068C7*)(S19068C5*), ABISELECT(152,76), "S19068C2");
    check_base_class_offset(lv, (S19068C7*)(S19068C5*), ABISELECT(152,76), "S19068C2");
    check_base_class_offset(lv, (S19068C5*), ABISELECT(112,56), "S19068C2");
    check_field_offset(lv, s19068c2f0, ABISELECT(16,8), "S19068C2.s19068c2f0");
    check_field_offset(lv, s19068c2f1, ABISELECT(24,12), "S19068C2.s19068c2f1");
    test_class_info(&lv, &cd_S19068C2);
    dp->~S19068C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19068C2(Test_S19068C2, "S19068C2", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN8S19068C2C1Ev();
extern void _ZN8S19068C2D2Ev();
Name_Map name_map_S19068C2[] = {
  NSPAIR(_ZN8S19068C2C1Ev),
  NSPAIR(_ZN8S19068C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C3;
extern VTBL_ENTRY _ZTI8S19068C3[];
extern  VTBL_ENTRY _ZTV8S19068C3[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C3;
extern VTBL_ENTRY _ZTI8S19068C3[];
extern  VTBL_ENTRY _ZTV8S19068C3[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C6;
extern VTBL_ENTRY _ZTI8S19068C6[];
extern  VTBL_ENTRY _ZTV8S19068C6[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C3;
extern VTBL_ENTRY _ZTI8S19068C3[];
extern  VTBL_ENTRY _ZTV8S19068C3[];
extern Class_Descriptor cd_S19068C7;
extern VTBL_ENTRY _ZTI8S19068C7[];
extern  VTBL_ENTRY _ZTV8S19068C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19068C7[];
extern Class_Descriptor cd_S19068C5;
extern VTBL_ENTRY _ZTI8S19068C5[];
extern  VTBL_ENTRY _ZTV8S19068C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19068C5[];
static Base_Class bases_S19068C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19068C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19068C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19068C4,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19068C3,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19068C4,    ABISELECT(128,64), //bcp->offset
    53, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19068C6,    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
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19068C4,    ABISELECT(144,72), //bcp->offset
    59, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19068C4,    ABISELECT(168,84), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19068C4,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19068C3,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19068C7,    ABISELECT(152,76), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19068C5,    ABISELECT(112,56), //bcp->offset
    16, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19068C2[];
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void _ZN8S19068C2D1Ev();
extern void _ZN8S19068C2D0Ev();
extern void _ZN8S19068C23v21Ev();
extern void _ZN8S19068C23v22Ev();
extern void _ZN8S19068C23v23Ev();
extern void _ZN8S19068C23v24Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S19068C2D1Ev,_ZTv0_n40_N8S19068C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S19068C2D1Ev,_ZThn56_N8S19068C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19068C2D0Ev,_ZTv0_n40_N8S19068C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S19068C2D0Ev,_ZThn56_N8S19068C2D0Ev)() __attribute__((weak));
extern void _ZN8S19068C63v11Ev();
extern void _ZN8S19068C63v12Ev();
extern void _ZN8S19068C63v13Ev();
extern void _ZN8S19068C63v14Ev();
extern void _ZN8S19068C63v15Ev();
extern void _ZN8S19068C63v16Ev();
extern void _ZN8S19068C53v18Ev();
extern void _ZN8S19068C53v19Ev();
extern void _ZN8S19068C53v20Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void ABISELECT(_ZTvn40_n80_N8S19068C2D1Ev,_ZTvn20_n40_N8S19068C2D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S19068C2D0Ev,_ZTvn20_n40_N8S19068C2D0Ev)();
extern void _ZN8S19068C73v17Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY vtc_S19068C2[] = {
  ABISELECT(168,84),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19068C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19068C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19068C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19068C23v22Ev,
  (VTBL_ENTRY)&_ZN8S19068C23v23Ev,
  (VTBL_ENTRY)&_ZN8S19068C23v24Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,28),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19068C2D1Ev,_ZTv0_n40_N8S19068C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19068C2D0Ev,_ZTv0_n40_N8S19068C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19068C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v20Ev,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  ABISELECT(16,8),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S19068C2D1Ev,_ZTvn20_n40_N8S19068C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S19068C2D0Ev,_ZTvn20_n40_N8S19068C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19068C73v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
extern VTBL_ENTRY _ZTV8S19068C2[];
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void _ZN8S19068C5D1Ev();
extern void _ZN8S19068C5D0Ev();
extern void _ZN8S19068C63v11Ev();
extern void _ZN8S19068C63v12Ev();
extern void _ZN8S19068C63v13Ev();
extern void _ZN8S19068C63v14Ev();
extern void _ZN8S19068C63v15Ev();
extern void _ZN8S19068C63v16Ev();
extern void _ZN8S19068C53v18Ev();
extern void _ZN8S19068C53v19Ev();
extern void _ZN8S19068C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C5__8S19068C2[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C5[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19068C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19068C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v20Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void _ZN8S19068C7D1Ev();
extern void _ZN8S19068C7D0Ev();
extern void _ZN8S19068C73v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C78S19068C5__8S19068C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C7[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19068C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19068C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19068C73v17Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C4__8S19068C78S19068C5__8S19068C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19068C7[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void ABISELECT(_ZThn40_N8S19068C5D1Ev,_ZThn20_N8S19068C5D1Ev)();
extern void ABISELECT(_ZThn40_N8S19068C5D0Ev,_ZThn20_N8S19068C5D0Ev)();
extern void _ZN8S19068C73v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C7__8S19068C5__8S19068C2[] = {
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19068C5[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19068C5D1Ev,_ZThn20_N8S19068C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19068C5D0Ev,_ZThn20_N8S19068C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19068C73v17Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C4__A3__8S19068C5__8S19068C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19068C5[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
static  VTT_ENTRY vtt_S19068C2[] = {
  {&(_ZTV8S19068C2[4]),  4,87},
  {&(_ZTV8S19068C2[36]),  36,87},
  {&(_ZTV8S19068C2[55]),  55,87},
  {&(_ZTV8S19068C2[61]),  61,87},
  {&(_ZTV8S19068C2[68]),  68,87},
  {&(_ZTV8S19068C2[83]),  83,87},
  {&(_tg__ZTV8S19068C5__8S19068C2[3]),  3,20},
  {&(_tg__ZTV8S19068C78S19068C5__8S19068C2[3]),  3,12},
  {&(_tg__ZTV8S19068C4__8S19068C78S19068C5__8S19068C2[6]),  6,10},
  {&(_tg__ZTV8S19068C7__8S19068C5__8S19068C2[3]),  3,12},
  {&(_tg__ZTV8S19068C4__A3__8S19068C5__8S19068C2[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19068C2[];
extern  VTBL_ENTRY _ZTV8S19068C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19068C2[];
static VTBL_ENTRY alt_thunk_names194[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19068C2D0Ev,_ZTv0_n40_N8S19068C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19068C2D0Ev,_ZThn56_N8S19068C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19068C2D1Ev,_ZTv0_n40_N8S19068C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19068C2D1Ev,_ZThn56_N8S19068C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19068C2 = {  "S19068C2", // class name
  bases_S19068C2, 12,
  &(vtc_S19068C2[0]), // expected_vtbl_contents
  &(vtt_S19068C2[0]), // expected_vtt_contents
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI8S19068C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19068C2),87, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19068C2),11, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names194,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19068C1  : virtual S19068C2 {
  int s19068c1f0[2];
  virtual  ~S19068C1(); // _ZN8S19068C1D2Ev
  virtual void  v1(); // _ZN8S19068C12v1Ev
  virtual void  v2(); // _ZN8S19068C12v2Ev
  virtual void  v3(); // _ZN8S19068C12v3Ev
  virtual void  v4(); // _ZN8S19068C12v4Ev
  S19068C1(); // tgen
};
//SIG(1 S19068C1) C1{ VBC2{ BC3{ BC4{ v5 v6 v7 v8} v9 v10 FC4} VBC5{ BC6{ BC3 BC4 vd v11 v12 v13 v14 v15 v16 Fi} BC4 BC7{ VBC4 BC3 vd v17} v18 v19 v20} vd v21 v22 v23 v24 Fi Fp[11]} vd v1 v2 v3 v4 Fi[2]}


 S19068C1 ::~S19068C1(){ note_dtor("S19068C1", this);}
void  S19068C1 ::v1(){vfunc_called(this, "_ZN8S19068C12v1Ev");}
void  S19068C1 ::v2(){vfunc_called(this, "_ZN8S19068C12v2Ev");}
void  S19068C1 ::v3(){vfunc_called(this, "_ZN8S19068C12v3Ev");}
void  S19068C1 ::v4(){vfunc_called(this, "_ZN8S19068C12v4Ev");}
S19068C1 ::S19068C1(){ note_ctor("S19068C1", this);} // tgen

static void Test_S19068C1()
{
  extern Class_Descriptor cd_S19068C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,25)];
    init_test(&cd_S19068C1, buf);
    S19068C1 *dp, &lv = *(dp=new (buf) S19068C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,96), "sizeof(S19068C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19068C1)");
    /*is_ambiguous_... S19068C2::S19068C3 */ AMB_check_base_class_offset(lv, (S19068C4*)(S19068C3*)(S19068C2*), ABISELECT(16,12), "S19068C1");
    /*is_ambiguous_... S19068C2::S19068C3 */ AMB_check_base_class_offset(lv, (S19068C3*)(S19068C2*), ABISELECT(16,12), "S19068C1");
    check_base_class_offset(lv, (S19068C4*)(S19068C3*)(S19068C6*)(S19068C5*), ABISELECT(128,68), "S19068C1");
    check_base_class_offset(lv, (S19068C3*)(S19068C6*)(S19068C5*), ABISELECT(128,68), "S19068C1");
    /*is_ambiguous_... S19068C6::S19068C4 */ AMB_check_base_class_offset(lv, (S19068C4*)(S19068C6*)(S19068C5*), ABISELECT(144,76), "S19068C1");
    check_base_class_offset(lv, (S19068C6*)(S19068C5*), ABISELECT(128,68), "S19068C1");
    /*is_ambiguous_... S19068C5::S19068C4 */ AMB_check_base_class_offset(lv, (S19068C4*)(S19068C5*), ABISELECT(160,84), "S19068C1");
    /*is_ambiguous_... S19068C7::S19068C4 */ AMB_check_base_class_offset(lv, (S19068C4*)(S19068C7*)(S19068C5*), 0, "S19068C1");
    check_base_class_offset(lv, (S19068C4*)(S19068C3*)(S19068C7*)(S19068C5*), ABISELECT(168,88), "S19068C1");
    check_base_class_offset(lv, (S19068C3*)(S19068C7*)(S19068C5*), ABISELECT(168,88), "S19068C1");
    check_base_class_offset(lv, (S19068C7*)(S19068C5*), ABISELECT(168,88), "S19068C1");
    check_base_class_offset(lv, (S19068C5*)(S19068C2*), ABISELECT(128,68), "S19068C1");
    check_base_class_offset(lv, (S19068C2*), ABISELECT(16,12), "S19068C1");
    check_field_offset(lv, s19068c1f0, ABISELECT(8,4), "S19068C1.s19068c1f0");
    test_class_info(&lv, &cd_S19068C1);
    dp->~S19068C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19068C1(Test_S19068C1, "S19068C1", ABISELECT(184,96));

#else // __cplusplus

extern void _ZN8S19068C1C1Ev();
extern void _ZN8S19068C1D2Ev();
Name_Map name_map_S19068C1[] = {
  NSPAIR(_ZN8S19068C1C1Ev),
  NSPAIR(_ZN8S19068C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C3;
extern VTBL_ENTRY _ZTI8S19068C3[];
extern  VTBL_ENTRY _ZTV8S19068C3[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C3;
extern VTBL_ENTRY _ZTI8S19068C3[];
extern  VTBL_ENTRY _ZTV8S19068C3[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C6;
extern VTBL_ENTRY _ZTI8S19068C6[];
extern  VTBL_ENTRY _ZTV8S19068C6[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C4;
extern VTBL_ENTRY _ZTI8S19068C4[];
extern  VTBL_ENTRY _ZTV8S19068C4[];
extern Class_Descriptor cd_S19068C3;
extern VTBL_ENTRY _ZTI8S19068C3[];
extern  VTBL_ENTRY _ZTV8S19068C3[];
extern Class_Descriptor cd_S19068C7;
extern VTBL_ENTRY _ZTI8S19068C7[];
extern  VTBL_ENTRY _ZTV8S19068C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19068C7[];
extern Class_Descriptor cd_S19068C5;
extern VTBL_ENTRY _ZTI8S19068C5[];
extern  VTBL_ENTRY _ZTV8S19068C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19068C5[];
extern Class_Descriptor cd_S19068C2;
extern VTBL_ENTRY _ZTI8S19068C2[];
extern  VTBL_ENTRY _ZTV8S19068C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19068C2[];
static Base_Class bases_S19068C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19068C4,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19068C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19068C4,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19068C3,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19068C4,    ABISELECT(144,76), //bcp->offset
    83, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19068C6,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19068C4,    ABISELECT(160,84), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19068C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19068C4,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19068C3,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19068C7,    ABISELECT(168,88), //bcp->offset
    95, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19068C5,    ABISELECT(128,68), //bcp->offset
    46, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19068C2,    ABISELECT(16,12), //bcp->offset
    19, //bcp->virtual_function_table_offset
    15, //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 _ZTI8S19068C1[];
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C1D1Ev();
extern void _ZN8S19068C1D0Ev();
extern void _ZN8S19068C12v1Ev();
extern void _ZN8S19068C12v2Ev();
extern void _ZN8S19068C12v3Ev();
extern void _ZN8S19068C12v4Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void ABISELECT(_ZTv0_n88_N8S19068C1D1Ev,_ZTv0_n44_N8S19068C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19068C1D1Ev,_ZThn12_N8S19068C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19068C1D0Ev,_ZTv0_n44_N8S19068C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19068C1D0Ev,_ZThn12_N8S19068C1D0Ev)() __attribute__((weak));
extern void _ZN8S19068C23v21Ev();
extern void _ZN8S19068C23v22Ev();
extern void _ZN8S19068C23v23Ev();
extern void _ZN8S19068C23v24Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S19068C1D1Ev,_ZTv0_n40_N8S19068C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19068C1D1Ev,_ZThn68_N8S19068C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19068C1D0Ev,_ZTv0_n40_N8S19068C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19068C1D0Ev,_ZThn68_N8S19068C1D0Ev)() __attribute__((weak));
extern void _ZN8S19068C63v11Ev();
extern void _ZN8S19068C63v12Ev();
extern void _ZN8S19068C63v13Ev();
extern void _ZN8S19068C63v14Ev();
extern void _ZN8S19068C63v15Ev();
extern void _ZN8S19068C63v16Ev();
extern void _ZN8S19068C53v18Ev();
extern void _ZN8S19068C53v19Ev();
extern void _ZN8S19068C53v20Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void ABISELECT(_ZTvn40_n80_N8S19068C1D1Ev,_ZTvn20_n40_N8S19068C1D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S19068C1D0Ev,_ZTvn20_n40_N8S19068C1D0Ev)();
extern void _ZN8S19068C73v17Ev();
static  VTBL_ENTRY vtc_S19068C1[] = {
  0,
  ABISELECT(128,68),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C1[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19068C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19068C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19068C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19068C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19068C12v4Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(112,56),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19068C1[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19068C1D1Ev,_ZTv0_n44_N8S19068C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19068C1D0Ev,_ZTv0_n44_N8S19068C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19068C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19068C23v22Ev,
  (VTBL_ENTRY)&_ZN8S19068C23v23Ev,
  (VTBL_ENTRY)&_ZN8S19068C23v24Ev,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19068C1[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19068C1D1Ev,_ZTv0_n40_N8S19068C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19068C1D0Ev,_ZTv0_n40_N8S19068C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19068C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v20Ev,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S19068C1[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S19068C1[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  ABISELECT(-168,-88),
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19068C1[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S19068C1D1Ev,_ZTvn20_n40_N8S19068C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S19068C1D0Ev,_ZTvn20_n40_N8S19068C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19068C73v17Ev,
};
extern VTBL_ENTRY _ZTV8S19068C1[];
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void _ZN8S19068C2D1Ev();
extern void _ZN8S19068C2D0Ev();
extern void _ZN8S19068C23v21Ev();
extern void _ZN8S19068C23v22Ev();
extern void _ZN8S19068C23v23Ev();
extern void _ZN8S19068C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C2__8S19068C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19068C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19068C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19068C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19068C23v22Ev,
  (VTBL_ENTRY)&_ZN8S19068C23v23Ev,
  (VTBL_ENTRY)&_ZN8S19068C23v24Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void ABISELECT(_ZTv0_n80_N8S19068C2D1Ev,_ZTv0_n40_N8S19068C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S19068C2D1Ev,_ZThn56_N8S19068C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19068C2D0Ev,_ZTv0_n40_N8S19068C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S19068C2D0Ev,_ZThn56_N8S19068C2D0Ev)() __attribute__((weak));
extern void _ZN8S19068C63v11Ev();
extern void _ZN8S19068C63v12Ev();
extern void _ZN8S19068C63v13Ev();
extern void _ZN8S19068C63v14Ev();
extern void _ZN8S19068C63v15Ev();
extern void _ZN8S19068C63v16Ev();
extern void _ZN8S19068C53v18Ev();
extern void _ZN8S19068C53v19Ev();
extern void _ZN8S19068C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C5__8S19068C2__8S19068C1[] = {
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19068C2D1Ev,_ZTv0_n40_N8S19068C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19068C2D0Ev,_ZTv0_n40_N8S19068C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19068C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v20Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C48S19068C68S19068C5__A2__8S19068C2__8S19068C1[] = {
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C48S19068C5__A3__8S19068C2__8S19068C1[] = {
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void ABISELECT(_ZTvn40_n80_N8S19068C2D1Ev,_ZTvn20_n40_N8S19068C2D1Ev)();
extern void ABISELECT(_ZTvn40_n80_N8S19068C2D0Ev,_ZTvn20_n40_N8S19068C2D0Ev)();
extern void _ZN8S19068C73v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C78S19068C5__8S19068C2__8S19068C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S19068C2D1Ev,_ZTvn20_n40_N8S19068C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n80_N8S19068C2D0Ev,_ZTvn20_n40_N8S19068C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19068C73v17Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C4__A4__8S19068C2__8S19068C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19068C2[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void _ZN8S19068C5D1Ev();
extern void _ZN8S19068C5D0Ev();
extern void _ZN8S19068C63v11Ev();
extern void _ZN8S19068C63v12Ev();
extern void _ZN8S19068C63v13Ev();
extern void _ZN8S19068C63v14Ev();
extern void _ZN8S19068C63v15Ev();
extern void _ZN8S19068C63v16Ev();
extern void _ZN8S19068C53v18Ev();
extern void _ZN8S19068C53v19Ev();
extern void _ZN8S19068C53v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C5__8S19068C1[] = {
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C5[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19068C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19068C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19068C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v18Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v19Ev,
  (VTBL_ENTRY)&_ZN8S19068C53v20Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void _ZN8S19068C7D1Ev();
extern void _ZN8S19068C7D0Ev();
extern void _ZN8S19068C73v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C78S19068C5__8S19068C1[] = {
  ABISELECT(-168,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19068C7[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19068C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19068C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19068C73v17Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C4__8S19068C78S19068C5__8S19068C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(168,88),
  (VTBL_ENTRY)&(_ZTI8S19068C7[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
extern void _ZN8S19068C32v9Ev();
extern void _ZN8S19068C33v10Ev();
extern void ABISELECT(_ZThn40_N8S19068C5D1Ev,_ZThn20_N8S19068C5D1Ev)();
extern void ABISELECT(_ZThn40_N8S19068C5D0Ev,_ZThn20_N8S19068C5D0Ev)();
extern void _ZN8S19068C73v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C7__8S19068C5__8S19068C1[] = {
  ABISELECT(-168,-88),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19068C5[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19068C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19068C33v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19068C5D1Ev,_ZThn20_N8S19068C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19068C5D0Ev,_ZThn20_N8S19068C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19068C73v17Ev,
};
extern void _ZN8S19068C42v5Ev();
extern void _ZN8S19068C42v6Ev();
extern void _ZN8S19068C42v7Ev();
extern void _ZN8S19068C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19068C4__A3__8S19068C5__8S19068C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S19068C5[0]),
  (VTBL_ENTRY)&_ZN8S19068C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19068C42v8Ev,
};
static  VTT_ENTRY vtt_S19068C1[] = {
  {&(_ZTV8S19068C1[9]),  9,107},
  {&(_ZTV8S19068C1[34]),  34,107},
  {&(_ZTV8S19068C1[66]),  66,107},
  {&(_ZTV8S19068C1[85]),  85,107},
  {&(_ZTV8S19068C1[91]),  91,107},
  {&(_ZTV8S19068C1[98]),  98,107},
  {&(_ZTV8S19068C1[9]),  9,107},
  {&(_tg__ZTV8S19068C2__8S19068C1[4]),  4,16},
  {&(_tg__ZTV8S19068C5__8S19068C2__8S19068C1[20]),  20,37},
  {&(_tg__ZTV8S19068C48S19068C68S19068C5__A2__8S19068C2__8S19068C1[2]),  2,6},
  {&(_tg__ZTV8S19068C48S19068C5__A3__8S19068C2__8S19068C1[2]),  2,6},
  {&(_tg__ZTV8S19068C78S19068C5__8S19068C2__8S19068C1[3]),  3,12},
  {&(_tg__ZTV8S19068C4__A4__8S19068C2__8S19068C1[6]),  6,10},
  {&(_tg__ZTV8S19068C5__8S19068C1[3]),  3,20},
  {&(_tg__ZTV8S19068C78S19068C5__8S19068C1[3]),  3,12},
  {&(_tg__ZTV8S19068C4__8S19068C78S19068C5__8S19068C1[6]),  6,10},
  {&(_tg__ZTV8S19068C7__8S19068C5__8S19068C1[3]),  3,12},
  {&(_tg__ZTV8S19068C4__A3__8S19068C5__8S19068C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S19068C1[];
extern  VTBL_ENTRY _ZTV8S19068C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19068C1[];
static VTBL_ENTRY alt_thunk_names195[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19068C2D0Ev,_ZTv0_n40_N8S19068C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19068C2D0Ev,_ZThn56_N8S19068C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19068C2D1Ev,_ZTv0_n40_N8S19068C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19068C2D1Ev,_ZThn56_N8S19068C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19068C1D0Ev,_ZTv0_n40_N8S19068C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19068C1D0Ev,_ZThn68_N8S19068C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19068C1D1Ev,_ZTv0_n40_N8S19068C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19068C1D1Ev,_ZThn68_N8S19068C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19068C1D0Ev,_ZTv0_n44_N8S19068C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19068C1D0Ev,_ZThn12_N8S19068C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19068C1D1Ev,_ZTv0_n44_N8S19068C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19068C1D1Ev,_ZThn12_N8S19068C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19068C1 = {  "S19068C1", // class name
  bases_S19068C1, 13,
  &(vtc_S19068C1[0]), // expected_vtbl_contents
  &(vtt_S19068C1[0]), // expected_vtt_contents
  ABISELECT(184,96), // object size
  NSPAIRA(_ZTI8S19068C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19068C1),107, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19068C1),18, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names195,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3704C2  : S3712C3_nt {
  virtual void  v2(); // _ZN7S3704C22v2Ev
  ~S3704C2(); // tgen
  S3704C2(); // tgen
};
//SIG(-1 S3704C2) C1{ BC2{ vd m Fi} v1}


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

static void Test_S3704C2()
{
  extern Class_Descriptor cd_S3704C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3704C2, buf);
    S3704C2 *dp, &lv = *(dp=new (buf) S3704C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3704C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3704C2)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S3704C2");
    test_class_info(&lv, &cd_S3704C2);
    dp->~S3704C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3704C2(Test_S3704C2, "S3704C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3704C2C1Ev();
extern void _ZN7S3704C2D1Ev();
Name_Map name_map_S3704C2[] = {
  NSPAIR(_ZN7S3704C2C1Ev),
  NSPAIR(_ZN7S3704C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S3704C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3704C2[];
extern void _ZN7S3704C2D1Ev();
extern void _ZN7S3704C2D0Ev();
extern void _ZN7S3704C22v2Ev();
static  VTBL_ENTRY vtc_S3704C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3704C2[0]),
  (VTBL_ENTRY)&_ZN7S3704C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3704C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3704C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S3704C2[];
extern  VTBL_ENTRY _ZTV7S3704C2[];
Class_Descriptor cd_S3704C2 = {  "S3704C2", // class name
  bases_S3704C2, 1,
  &(vtc_S3704C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3704C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3704C2),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  S3704C5  {
  virtual  ~S3704C5(); // _ZN7S3704C5D1Ev
  virtual void  v6(); // _ZN7S3704C52v6Ev
  virtual void  v7(); // _ZN7S3704C52v7Ev
  virtual void  v8(); // _ZN7S3704C52v8Ev
  S3704C5(); // tgen
};
//SIG(-1 S3704C5) C1{ vd v1 v2 v3}


 S3704C5 ::~S3704C5(){ note_dtor("S3704C5", this);}
void  S3704C5 ::v6(){vfunc_called(this, "_ZN7S3704C52v6Ev");}
void  S3704C5 ::v7(){vfunc_called(this, "_ZN7S3704C52v7Ev");}
void  S3704C5 ::v8(){vfunc_called(this, "_ZN7S3704C52v8Ev");}
S3704C5 ::S3704C5(){ note_ctor("S3704C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3704C5C1Ev();
extern void _ZN7S3704C5D1Ev();
Name_Map name_map_S3704C5[] = {
  NSPAIR(_ZN7S3704C5C1Ev),
  NSPAIR(_ZN7S3704C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3704C5[];
extern void _ZN7S3704C5D1Ev();
extern void _ZN7S3704C5D0Ev();
extern void _ZN7S3704C52v6Ev();
extern void _ZN7S3704C52v7Ev();
extern void _ZN7S3704C52v8Ev();
static  VTBL_ENTRY vtc_S3704C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3704C5[0]),
  (VTBL_ENTRY)&_ZN7S3704C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3704C5D0Ev,
  (VTBL_ENTRY)&_ZN7S3704C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3704C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3704C52v8Ev,
};
extern VTBL_ENTRY _ZTI7S3704C5[];
extern  VTBL_ENTRY _ZTV7S3704C5[];
Class_Descriptor cd_S3704C5 = {  "S3704C5", // class name
  0,0,//no base classes
  &(vtc_S3704C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3704C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3704C5),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3704C4_nt  : S3704C5 {
  __tsi64 s3704c4f0[4];
  virtual  ~S3704C4_nt(); // _ZN10S3704C4_ntD1Ev
  virtual void  v3(); // _ZN10S3704C4_nt2v3Ev
  virtual void  v4(); // _ZN10S3704C4_nt2v4Ev
  virtual void  v5(); // _ZN10S3704C4_nt2v5Ev
  S3704C4_nt(); // tgen
};
//SIG(-1 S3704C4_nt) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FL[4]}


 S3704C4_nt ::~S3704C4_nt(){ note_dtor("S3704C4_nt", this);}
void  S3704C4_nt ::v3(){vfunc_called(this, "_ZN10S3704C4_nt2v3Ev");}
void  S3704C4_nt ::v4(){vfunc_called(this, "_ZN10S3704C4_nt2v4Ev");}
void  S3704C4_nt ::v5(){vfunc_called(this, "_ZN10S3704C4_nt2v5Ev");}
S3704C4_nt ::S3704C4_nt(){ note_ctor("S3704C4_nt", this);} // tgen

//skip512 S3704C4_nt

#else // __cplusplus

extern void _ZN10S3704C4_ntC1Ev();
extern void _ZN10S3704C4_ntD1Ev();
Name_Map name_map_S3704C4_nt[] = {
  NSPAIR(_ZN10S3704C4_ntC1Ev),
  NSPAIR(_ZN10S3704C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3704C5;
extern VTBL_ENTRY _ZTI7S3704C5[];
extern  VTBL_ENTRY _ZTV7S3704C5[];
static Base_Class bases_S3704C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3704C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3704C4_nt[];
extern void _ZN10S3704C4_ntD1Ev();
extern void _ZN10S3704C4_ntD0Ev();
extern void _ZN7S3704C52v6Ev();
extern void _ZN7S3704C52v7Ev();
extern void _ZN7S3704C52v8Ev();
extern void _ZN10S3704C4_nt2v3Ev();
extern void _ZN10S3704C4_nt2v4Ev();
extern void _ZN10S3704C4_nt2v5Ev();
static  VTBL_ENTRY vtc_S3704C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3704C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S3704C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3704C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S3704C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3704C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3704C52v8Ev,
  (VTBL_ENTRY)&_ZN10S3704C4_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S3704C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3704C4_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S3704C4_nt[];
VTBL_ENTRY *P__ZTI10S3704C4_nt = _ZTI10S3704C4_nt; 
extern  VTBL_ENTRY _ZTV10S3704C4_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3704C1  : S3704C2 {
  char s3704c1f0;
  int s3704c1f1;
  ::S3704C4_nt s3704c1f2;
  ::S3703C7 s3704c1f3[4];
  ::S10225C15_nt s3704c1f4;
  int s3704c1f5;
  char s3704c1f6;
  int s3704c1f7;
  char s3704c1f8;
  virtual  ~S3704C1(); // _ZN7S3704C1D1Ev
  virtual void  v1(); // _ZN7S3704C12v1Ev
  S3704C1(); // tgen
};
//SIG(1 S3704C1) C1{ BC2{ BC3{ vd m Fi} v2} vd v1 Fc Fi FC4{ BC5{ vd v6 v7 v8} vd v3 v4 v5 FL[4]} FC6{ BC7{ vd v11 v12} vd v9 v10 Fi FU8{ FC9{ Fi Fi} FL}}[4] FC10{ BC11{ m Fp Fi FC12{ m} FC12}} Fi Fc Fi Fc}


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

static void Test_S3704C1()
{
  extern Class_Descriptor cd_S3704C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,37)];
    init_test(&cd_S3704C1, buf);
    S3704C1 *dp, &lv = *(dp=new (buf) S3704C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S3704C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3704C1)");
    check_base_class_offset(lv, (S3712C3_nt*)(S3704C2*), 0, "S3704C1");
    check_base_class_offset(lv, (S3704C2*), 0, "S3704C1");
    check_field_offset(lv, s3704c1f0, ABISELECT(12,8), "S3704C1.s3704c1f0");
    check_field_offset(lv, s3704c1f1, ABISELECT(16,12), "S3704C1.s3704c1f1");
    check_field_offset(lv, s3704c1f2, ABISELECT(24,16), "S3704C1.s3704c1f2");
    check_field_offset(lv, s3704c1f3, ABISELECT(64,52), "S3704C1.s3704c1f3");
    check_field_offset(lv, s3704c1f4, ABISELECT(160,116), "S3704C1.s3704c1f4");
    check_field_offset(lv, s3704c1f5, ABISELECT(176,128), "S3704C1.s3704c1f5");
    check_field_offset(lv, s3704c1f6, ABISELECT(180,132), "S3704C1.s3704c1f6");
    check_field_offset(lv, s3704c1f7, ABISELECT(184,136), "S3704C1.s3704c1f7");
    check_field_offset(lv, s3704c1f8, ABISELECT(188,140), "S3704C1.s3704c1f8");
    test_class_info(&lv, &cd_S3704C1);
    dp->~S3704C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3704C1(Test_S3704C1, "S3704C1", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN7S3704C1C1Ev();
extern void _ZN7S3704C1D1Ev();
Name_Map name_map_S3704C1[] = {
  NSPAIR(_ZN7S3704C1C1Ev),
  NSPAIR(_ZN7S3704C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
extern Class_Descriptor cd_S3704C2;
extern VTBL_ENTRY _ZTI7S3704C2[];
extern  VTBL_ENTRY _ZTV7S3704C2[];
static Base_Class bases_S3704C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3704C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3704C1[];
extern void _ZN7S3704C1D1Ev();
extern void _ZN7S3704C1D0Ev();
extern void _ZN7S3704C22v2Ev();
extern void _ZN7S3704C12v1Ev();
static  VTBL_ENTRY vtc_S3704C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3704C1[0]),
  (VTBL_ENTRY)&_ZN7S3704C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3704C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3704C22v2Ev,
  (VTBL_ENTRY)&_ZN7S3704C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3704C1[];
extern  VTBL_ENTRY _ZTV7S3704C1[];
Class_Descriptor cd_S3704C1 = {  "S3704C1", // class name
  bases_S3704C1, 2,
  &(vtc_S3704C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI7S3704C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3704C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3812C5  {
  virtual  ~S3812C5(); // _ZN7S3812C5D1Ev
  virtual void  v6(); // _ZN7S3812C52v6Ev
  virtual void  v7(); // _ZN7S3812C52v7Ev
  virtual void  v8(); // _ZN7S3812C52v8Ev
  S3812C5(); // tgen
};
//SIG(-1 S3812C5) C1{ vd v1 v2 v3}


 S3812C5 ::~S3812C5(){ note_dtor("S3812C5", this);}
void  S3812C5 ::v6(){vfunc_called(this, "_ZN7S3812C52v6Ev");}
void  S3812C5 ::v7(){vfunc_called(this, "_ZN7S3812C52v7Ev");}
void  S3812C5 ::v8(){vfunc_called(this, "_ZN7S3812C52v8Ev");}
S3812C5 ::S3812C5(){ note_ctor("S3812C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3812C5C1Ev();
extern void _ZN7S3812C5D1Ev();
Name_Map name_map_S3812C5[] = {
  NSPAIR(_ZN7S3812C5C1Ev),
  NSPAIR(_ZN7S3812C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3812C5[];
extern void _ZN7S3812C5D1Ev();
extern void _ZN7S3812C5D0Ev();
extern void _ZN7S3812C52v6Ev();
extern void _ZN7S3812C52v7Ev();
extern void _ZN7S3812C52v8Ev();
static  VTBL_ENTRY vtc_S3812C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3812C5[0]),
  (VTBL_ENTRY)&_ZN7S3812C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3812C5D0Ev,
  (VTBL_ENTRY)&_ZN7S3812C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3812C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3812C52v8Ev,
};
extern VTBL_ENTRY _ZTI7S3812C5[];
extern  VTBL_ENTRY _ZTV7S3812C5[];
Class_Descriptor cd_S3812C5 = {  "S3812C5", // class name
  0,0,//no base classes
  &(vtc_S3812C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3812C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3812C5),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3812C7  : S3812C5 {
  int s3812c7f0;
  virtual  ~S3812C7(); // _ZN7S3812C7D1Ev
  virtual void  v9(); // _ZN7S3812C72v9Ev
  virtual void  v10(); // _ZN7S3812C73v10Ev
  virtual void  v11(); // _ZN7S3812C73v11Ev
  virtual void  v12(); // _ZN7S3812C73v12Ev
  virtual void  v13(); // _ZN7S3812C73v13Ev
  S3812C7(); // tgen
};
//SIG(-1 S3812C7) C1{ BC2{ vd v6 v7 v8} vd v1 v2 v3 v4 v5 Fi}


 S3812C7 ::~S3812C7(){ note_dtor("S3812C7", this);}
void  S3812C7 ::v9(){vfunc_called(this, "_ZN7S3812C72v9Ev");}
void  S3812C7 ::v10(){vfunc_called(this, "_ZN7S3812C73v10Ev");}
void  S3812C7 ::v11(){vfunc_called(this, "_ZN7S3812C73v11Ev");}
void  S3812C7 ::v12(){vfunc_called(this, "_ZN7S3812C73v12Ev");}
void  S3812C7 ::v13(){vfunc_called(this, "_ZN7S3812C73v13Ev");}
S3812C7 ::S3812C7(){ note_ctor("S3812C7", this);} // tgen

static void Test_S3812C7()
{
  extern Class_Descriptor cd_S3812C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3812C7, buf);
    S3812C7 *dp, &lv = *(dp=new (buf) S3812C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3812C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3812C7)");
    check_base_class_offset(lv, (S3812C5*), 0, "S3812C7");
    check_field_offset(lv, s3812c7f0, ABISELECT(8,4), "S3812C7.s3812c7f0");
    test_class_info(&lv, &cd_S3812C7);
    dp->~S3812C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3812C7(Test_S3812C7, "S3812C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3812C7C1Ev();
extern void _ZN7S3812C7D1Ev();
Name_Map name_map_S3812C7[] = {
  NSPAIR(_ZN7S3812C7C1Ev),
  NSPAIR(_ZN7S3812C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3812C5;
extern VTBL_ENTRY _ZTI7S3812C5[];
extern  VTBL_ENTRY _ZTV7S3812C5[];
static Base_Class bases_S3812C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3812C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3812C7[];
extern void _ZN7S3812C7D1Ev();
extern void _ZN7S3812C7D0Ev();
extern void _ZN7S3812C52v6Ev();
extern void _ZN7S3812C52v7Ev();
extern void _ZN7S3812C52v8Ev();
extern void _ZN7S3812C72v9Ev();
extern void _ZN7S3812C73v10Ev();
extern void _ZN7S3812C73v11Ev();
extern void _ZN7S3812C73v12Ev();
extern void _ZN7S3812C73v13Ev();
static  VTBL_ENTRY vtc_S3812C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3812C7[0]),
  (VTBL_ENTRY)&_ZN7S3812C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3812C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3812C52v6Ev,
  (VTBL_ENTRY)&_ZN7S3812C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3812C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3812C72v9Ev,
  (VTBL_ENTRY)&_ZN7S3812C73v10Ev,
  (VTBL_ENTRY)&_ZN7S3812C73v11Ev,
  (VTBL_ENTRY)&_ZN7S3812C73v12Ev,
  (VTBL_ENTRY)&_ZN7S3812C73v13Ev,
};
extern VTBL_ENTRY _ZTI7S3812C7[];
extern  VTBL_ENTRY _ZTV7S3812C7[];
Class_Descriptor cd_S3812C7 = {  "S3812C7", // class name
  bases_S3812C7, 1,
  &(vtc_S3812C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3812C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3812C7),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  S3812C2  : S3712C3_nt {
  int s3812c2f0;
  char s3812c2f1;
  int s3812c2f2;
  ::S10225C3 s3812c2f3;
  ::S3812C7 s3812c2f4;
  ::S2405C26 s3812c2f5;
  ::S11969C23_nt s3812c2f6;
  ::S10225C3 s3812c2f7;
  virtual  ~S3812C2(); // _ZN7S3812C2D1Ev
  virtual void  v2(); // _ZN7S3812C22v2Ev
  S3812C2(); // tgen
};
//SIG(-1 S3812C2) C1{ BC2{ vd m Fi} vd v1 Fi Fc Fi FC3{ BC4{ vd v5 v6 v7} vd v2 v3 v4 FC5{ FL[4]}} FC6{ BC7{ vd v13 v14 v15} vd v8 v9 v10 v11 v12 Fi} FC8{ m Fp Fi FC9{ m} FC9} FC10{ m Fp} FC3}


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

static void Test_S3812C2()
{
  extern Class_Descriptor cd_S3812C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,30)];
    init_test(&cd_S3812C2, buf);
    S3812C2 *dp, &lv = *(dp=new (buf) S3812C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S3812C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3812C2)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S3812C2");
    check_field_offset(lv, s3812c2f0, ABISELECT(12,8), "S3812C2.s3812c2f0");
    check_field_offset(lv, s3812c2f1, ABISELECT(16,12), "S3812C2.s3812c2f1");
    check_field_offset(lv, s3812c2f2, ABISELECT(20,16), "S3812C2.s3812c2f2");
    check_field_offset(lv, s3812c2f3, ABISELECT(24,20), "S3812C2.s3812c2f3");
    check_field_offset(lv, s3812c2f4, ABISELECT(64,56), "S3812C2.s3812c2f4");
    check_field_offset(lv, s3812c2f5, ABISELECT(80,64), "S3812C2.s3812c2f5");
    check_field_offset(lv, s3812c2f6, ABISELECT(96,76), "S3812C2.s3812c2f6");
    check_field_offset(lv, s3812c2f7, ABISELECT(104,80), "S3812C2.s3812c2f7");
    test_class_info(&lv, &cd_S3812C2);
    dp->~S3812C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3812C2(Test_S3812C2, "S3812C2", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN7S3812C2C1Ev();
extern void _ZN7S3812C2D1Ev();
Name_Map name_map_S3812C2[] = {
  NSPAIR(_ZN7S3812C2C1Ev),
  NSPAIR(_ZN7S3812C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S3812C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3812C2[];
extern void _ZN7S3812C2D1Ev();
extern void _ZN7S3812C2D0Ev();
extern void _ZN7S3812C22v2Ev();
static  VTBL_ENTRY vtc_S3812C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3812C2[0]),
  (VTBL_ENTRY)&_ZN7S3812C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3812C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3812C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S3812C2[];
extern  VTBL_ENTRY _ZTV7S3812C2[];
Class_Descriptor cd_S3812C2 = {  "S3812C2", // class name
  bases_S3812C2, 1,
  &(vtc_S3812C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI7S3812C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3812C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3812C1  : S3812C2 {
  int s3812c1f0;
  void *s3812c1f1;
  ::S10225C3 s3812c1f2;
  virtual  ~S3812C1(); // _ZN7S3812C1D1Ev
  virtual void  v1(); // _ZN7S3812C12v1Ev
  S3812C1(); // tgen
};
//SIG(1 S3812C1) C1{ BC2{ BC3{ vd m Fi} vd v2 Fi Fc Fi FC4{ BC5{ vd v6 v7 v8} vd v3 v4 v5 FC6{ FL[4]}} FC7{ BC8{ vd v14 v15 v16} vd v9 v10 v11 v12 v13 Fi} FC9{ m Fp Fi FC10{ m} FC10} FC11{ m Fp} FC4} vd v1 Fi Fp FC4}


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

static void Test_S3812C1()
{
  extern Class_Descriptor cd_S3812C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,41)];
    init_test(&cd_S3812C1, buf);
    S3812C1 *dp, &lv = *(dp=new (buf) S3812C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,160), "sizeof(S3812C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3812C1)");
    check_base_class_offset(lv, (S3712C3_nt*)(S3812C2*), 0, "S3812C1");
    check_base_class_offset(lv, (S3812C2*), 0, "S3812C1");
    check_field_offset(lv, s3812c1f0, ABISELECT(144,116), "S3812C1.s3812c1f0");
    check_field_offset(lv, s3812c1f1, ABISELECT(152,120), "S3812C1.s3812c1f1");
    check_field_offset(lv, s3812c1f2, ABISELECT(160,124), "S3812C1.s3812c1f2");
    test_class_info(&lv, &cd_S3812C1);
    dp->~S3812C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3812C1(Test_S3812C1, "S3812C1", ABISELECT(200,160));

#else // __cplusplus

extern void _ZN7S3812C1C1Ev();
extern void _ZN7S3812C1D1Ev();
Name_Map name_map_S3812C1[] = {
  NSPAIR(_ZN7S3812C1C1Ev),
  NSPAIR(_ZN7S3812C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
extern Class_Descriptor cd_S3812C2;
extern VTBL_ENTRY _ZTI7S3812C2[];
extern  VTBL_ENTRY _ZTV7S3812C2[];
static Base_Class bases_S3812C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3812C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3812C1[];
extern void _ZN7S3812C1D1Ev();
extern void _ZN7S3812C1D0Ev();
extern void _ZN7S3812C22v2Ev();
extern void _ZN7S3812C12v1Ev();
static  VTBL_ENTRY vtc_S3812C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3812C1[0]),
  (VTBL_ENTRY)&_ZN7S3812C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3812C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3812C22v2Ev,
  (VTBL_ENTRY)&_ZN7S3812C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3812C1[];
extern  VTBL_ENTRY _ZTV7S3812C1[];
Class_Descriptor cd_S3812C1 = {  "S3812C1", // class name
  bases_S3812C1, 2,
  &(vtc_S3812C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,160), // object size
  NSPAIRA(_ZTI7S3812C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3812C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19457C6  {
  int s19457c6f0;
  virtual void  v6(); // _ZN8S19457C62v6Ev
  virtual void  v7(); // _ZN8S19457C62v7Ev
  virtual void  v8(); // _ZN8S19457C62v8Ev
  virtual void  v9(); // _ZN8S19457C62v9Ev
  virtual void  v10(); // _ZN8S19457C63v10Ev
  ~S19457C6(); // tgen
  S19457C6(); // tgen
};
//SIG(-1 S19457C6) C1{ v1 v2 v3 v4 v5 Fi}


void  S19457C6 ::v6(){vfunc_called(this, "_ZN8S19457C62v6Ev");}
void  S19457C6 ::v7(){vfunc_called(this, "_ZN8S19457C62v7Ev");}
void  S19457C6 ::v8(){vfunc_called(this, "_ZN8S19457C62v8Ev");}
void  S19457C6 ::v9(){vfunc_called(this, "_ZN8S19457C62v9Ev");}
void  S19457C6 ::v10(){vfunc_called(this, "_ZN8S19457C63v10Ev");}
S19457C6 ::~S19457C6(){ note_dtor("S19457C6", this);} // tgen
S19457C6 ::S19457C6(){ note_ctor("S19457C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19457C6C1Ev();
extern void _ZN8S19457C6D1Ev();
Name_Map name_map_S19457C6[] = {
  NSPAIR(_ZN8S19457C6C1Ev),
  NSPAIR(_ZN8S19457C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19457C6[];
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
static  VTBL_ENTRY vtc_S19457C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C6[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
};
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
Class_Descriptor cd_S19457C6 = {  "S19457C6", // class name
  0,0,//no base classes
  &(vtc_S19457C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19457C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19457C6),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19457C7  : S19457C6 {
  virtual void  v11(); // _ZN8S19457C73v11Ev
  virtual void  v12(); // _ZN8S19457C73v12Ev
  ~S19457C7(); // tgen
  S19457C7(); // tgen
};
//SIG(-1 S19457C7) C1{ BC2{ v3 v4 v5 v6 v7 Fi} v1 v2}


void  S19457C7 ::v11(){vfunc_called(this, "_ZN8S19457C73v11Ev");}
void  S19457C7 ::v12(){vfunc_called(this, "_ZN8S19457C73v12Ev");}
S19457C7 ::~S19457C7(){ note_dtor("S19457C7", this);} // tgen
S19457C7 ::S19457C7(){ note_ctor("S19457C7", this);} // tgen

static void Test_S19457C7()
{
  extern Class_Descriptor cd_S19457C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19457C7, buf);
    S19457C7 *dp, &lv = *(dp=new (buf) S19457C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19457C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19457C7)");
    check_base_class_offset(lv, (S19457C6*), 0, "S19457C7");
    test_class_info(&lv, &cd_S19457C7);
    dp->~S19457C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19457C7(Test_S19457C7, "S19457C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19457C7C1Ev();
extern void _ZN8S19457C7D1Ev();
Name_Map name_map_S19457C7[] = {
  NSPAIR(_ZN8S19457C7C1Ev),
  NSPAIR(_ZN8S19457C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19457C6;
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
static Base_Class bases_S19457C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19457C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19457C7[];
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY vtc_S19457C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C7[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern VTBL_ENTRY _ZTI8S19457C7[];
extern  VTBL_ENTRY _ZTV8S19457C7[];
Class_Descriptor cd_S19457C7 = {  "S19457C7", // class name
  bases_S19457C7, 1,
  &(vtc_S19457C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19457C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19457C7),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19457C5  : virtual S19457C6 , virtual S19457C7 {
  void *s19457c5f0;
  virtual void  v13(); // _ZN8S19457C53v13Ev
  virtual void  v14(); // _ZN8S19457C53v14Ev
  virtual void  v15(); // _ZN8S19457C53v15Ev
  ~S19457C5(); // tgen
  S19457C5(); // tgen
};
//SIG(-1 S19457C5) C1{ VBC2{ v4 v5 v6 v7 v8 Fi} VBC3{ BC2 v9 v10} v1 v2 v3 Fp}


void  S19457C5 ::v13(){vfunc_called(this, "_ZN8S19457C53v13Ev");}
void  S19457C5 ::v14(){vfunc_called(this, "_ZN8S19457C53v14Ev");}
void  S19457C5 ::v15(){vfunc_called(this, "_ZN8S19457C53v15Ev");}
S19457C5 ::~S19457C5(){ note_dtor("S19457C5", this);} // tgen
S19457C5 ::S19457C5(){ note_ctor("S19457C5", this);} // tgen

static void Test_S19457C5()
{
  extern Class_Descriptor cd_S19457C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S19457C5, buf);
    S19457C5 *dp, &lv = *(dp=new (buf) S19457C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19457C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19457C5)");
    /*is_ambiguous_... S19457C5::S19457C6 */ AMB_check_base_class_offset(lv, (S19457C6*), ABISELECT(16,8), "S19457C5");
    check_base_class_offset(lv, (S19457C6*)(S19457C7*), ABISELECT(32,16), "S19457C5");
    check_base_class_offset(lv, (S19457C7*), ABISELECT(32,16), "S19457C5");
    check_field_offset(lv, s19457c5f0, ABISELECT(8,4), "S19457C5.s19457c5f0");
    test_class_info(&lv, &cd_S19457C5);
    dp->~S19457C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19457C5(Test_S19457C5, "S19457C5", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S19457C5C1Ev();
extern void _ZN8S19457C5D1Ev();
Name_Map name_map_S19457C5[] = {
  NSPAIR(_ZN8S19457C5C1Ev),
  NSPAIR(_ZN8S19457C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19457C6;
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
extern Class_Descriptor cd_S19457C6;
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
extern Class_Descriptor cd_S19457C7;
extern VTBL_ENTRY _ZTI8S19457C7[];
extern  VTBL_ENTRY _ZTV8S19457C7[];
static Base_Class bases_S19457C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19457C6,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19457C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19457C7,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19457C5[];
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY vtc_S19457C5[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern VTBL_ENTRY _ZTV8S19457C5[];
static  VTT_ENTRY vtt_S19457C5[] = {
  {&(_ZTV8S19457C5[4]),  4,35},
  {&(_ZTV8S19457C5[14]),  14,35},
  {&(_ZTV8S19457C5[28]),  28,35},
};
extern VTBL_ENTRY _ZTI8S19457C5[];
extern  VTBL_ENTRY _ZTV8S19457C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C5[];
Class_Descriptor cd_S19457C5 = {  "S19457C5", // class name
  bases_S19457C5, 3,
  &(vtc_S19457C5[0]), // expected_vtbl_contents
  &(vtt_S19457C5[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S19457C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19457C5),35, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19457C5),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19457C4  : S19457C5 {
  int s19457c4f0[5];
  virtual void  v16(); // _ZN8S19457C43v16Ev
  virtual void  v17(); // _ZN8S19457C43v17Ev
  virtual void  v18(); // _ZN8S19457C43v18Ev
  virtual void  v19(); // _ZN8S19457C43v19Ev
  ~S19457C4(); // tgen
  S19457C4(); // tgen
};
//SIG(-1 S19457C4) C1{ BC2{ VBC3{ v5 v6 v7 v8 v9 Fi} VBC4{ BC3 v10 v11} v12 v13 v14 Fp} v1 v2 v3 v4 Fi[5]}


void  S19457C4 ::v16(){vfunc_called(this, "_ZN8S19457C43v16Ev");}
void  S19457C4 ::v17(){vfunc_called(this, "_ZN8S19457C43v17Ev");}
void  S19457C4 ::v18(){vfunc_called(this, "_ZN8S19457C43v18Ev");}
void  S19457C4 ::v19(){vfunc_called(this, "_ZN8S19457C43v19Ev");}
S19457C4 ::~S19457C4(){ note_dtor("S19457C4", this);} // tgen
S19457C4 ::S19457C4(){ note_ctor("S19457C4", this);} // tgen

static void Test_S19457C4()
{
  extern Class_Descriptor cd_S19457C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S19457C4, buf);
    S19457C4 *dp, &lv = *(dp=new (buf) S19457C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S19457C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19457C4)");
    /*is_ambiguous_... S19457C5::S19457C6 */ AMB_check_base_class_offset(lv, (S19457C6*)(S19457C5*), ABISELECT(40,28), "S19457C4");
    check_base_class_offset(lv, (S19457C6*)(S19457C7*), ABISELECT(56,36), "S19457C4");
    check_base_class_offset(lv, (S19457C7*)(S19457C5*), ABISELECT(56,36), "S19457C4");
    check_base_class_offset(lv, (S19457C5*), 0, "S19457C4");
    check_field_offset(lv, s19457c4f0, ABISELECT(16,8), "S19457C4.s19457c4f0");
    test_class_info(&lv, &cd_S19457C4);
    dp->~S19457C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19457C4(Test_S19457C4, "S19457C4", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S19457C4C1Ev();
extern void _ZN8S19457C4D1Ev();
Name_Map name_map_S19457C4[] = {
  NSPAIR(_ZN8S19457C4C1Ev),
  NSPAIR(_ZN8S19457C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19457C6;
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
extern Class_Descriptor cd_S19457C6;
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
extern Class_Descriptor cd_S19457C7;
extern VTBL_ENTRY _ZTI8S19457C7[];
extern  VTBL_ENTRY _ZTV8S19457C7[];
extern Class_Descriptor cd_S19457C5;
extern VTBL_ENTRY _ZTI8S19457C5[];
extern  VTBL_ENTRY _ZTV8S19457C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C5[];
static Base_Class bases_S19457C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19457C6,    ABISELECT(40,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19457C6,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19457C7,    ABISELECT(56,36), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19457C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19457C4[];
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
extern void _ZN8S19457C43v16Ev();
extern void _ZN8S19457C43v17Ev();
extern void _ZN8S19457C43v18Ev();
extern void _ZN8S19457C43v19Ev();
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY vtc_S19457C4[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern VTBL_ENTRY _ZTV8S19457C4[];
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C5__8S19457C4[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C6__8S19457C5__8S19457C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C7__8S19457C5__8S19457C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
static  VTT_ENTRY vtt_S19457C4[] = {
  {&(_ZTV8S19457C4[4]),  4,39},
  {&(_tg__ZTV8S19457C5__8S19457C4[4]),  4,7},
  {&(_tg__ZTV8S19457C6__8S19457C5__8S19457C4[7]),  7,12},
  {&(_tg__ZTV8S19457C7__8S19457C5__8S19457C4[9]),  9,16},
  {&(_ZTV8S19457C4[18]),  18,39},
  {&(_ZTV8S19457C4[32]),  32,39},
};
extern VTBL_ENTRY _ZTI8S19457C4[];
extern  VTBL_ENTRY _ZTV8S19457C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C4[];
Class_Descriptor cd_S19457C4 = {  "S19457C4", // class name
  bases_S19457C4, 4,
  &(vtc_S19457C4[0]), // expected_vtbl_contents
  &(vtt_S19457C4[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S19457C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19457C4),39, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19457C4),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19457C3  : virtual S19457C4 {
  virtual void  v20(); // _ZN8S19457C33v20Ev
  virtual void  v21(); // _ZN8S19457C33v21Ev
  virtual void  v22(); // _ZN8S19457C33v22Ev
  virtual void  v23(); // _ZN8S19457C33v23Ev
  virtual void  v24(); // _ZN8S19457C33v24Ev
  virtual void  v25(); // _ZN8S19457C33v25Ev
  ~S19457C3(); // tgen
  S19457C3(); // tgen
};
//SIG(-1 S19457C3) C1{ VBC2{ BC3{ VBC4{ v7 v8 v9 v10 v11 Fi} VBC5{ BC4 v12 v13} v14 v15 v16 Fp} v17 v18 v19 v20 Fi[5]} v1 v2 v3 v4 v5 v6}


void  S19457C3 ::v20(){vfunc_called(this, "_ZN8S19457C33v20Ev");}
void  S19457C3 ::v21(){vfunc_called(this, "_ZN8S19457C33v21Ev");}
void  S19457C3 ::v22(){vfunc_called(this, "_ZN8S19457C33v22Ev");}
void  S19457C3 ::v23(){vfunc_called(this, "_ZN8S19457C33v23Ev");}
void  S19457C3 ::v24(){vfunc_called(this, "_ZN8S19457C33v24Ev");}
void  S19457C3 ::v25(){vfunc_called(this, "_ZN8S19457C33v25Ev");}
S19457C3 ::~S19457C3(){ note_dtor("S19457C3", this);} // tgen
S19457C3 ::S19457C3(){ note_ctor("S19457C3", this);} // tgen

static void Test_S19457C3()
{
  extern Class_Descriptor cd_S19457C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S19457C3, buf);
    S19457C3 *dp, &lv = *(dp=new (buf) S19457C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19457C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19457C3)");
    /*is_ambiguous_... S19457C5::S19457C6 */ AMB_check_base_class_offset(lv, (S19457C6*)(S19457C5*)(S19457C4*), ABISELECT(48,32), "S19457C3");
    check_base_class_offset(lv, (S19457C6*)(S19457C7*), ABISELECT(64,40), "S19457C3");
    check_base_class_offset(lv, (S19457C7*)(S19457C5*)(S19457C4*), ABISELECT(64,40), "S19457C3");
    check_base_class_offset(lv, (S19457C5*)(S19457C4*), ABISELECT(8,4), "S19457C3");
    check_base_class_offset(lv, (S19457C4*), ABISELECT(8,4), "S19457C3");
    test_class_info(&lv, &cd_S19457C3);
    dp->~S19457C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19457C3(Test_S19457C3, "S19457C3", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S19457C3C1Ev();
extern void _ZN8S19457C3D1Ev();
Name_Map name_map_S19457C3[] = {
  NSPAIR(_ZN8S19457C3C1Ev),
  NSPAIR(_ZN8S19457C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19457C6;
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
extern Class_Descriptor cd_S19457C6;
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
extern Class_Descriptor cd_S19457C7;
extern VTBL_ENTRY _ZTI8S19457C7[];
extern  VTBL_ENTRY _ZTV8S19457C7[];
extern Class_Descriptor cd_S19457C5;
extern VTBL_ENTRY _ZTI8S19457C5[];
extern  VTBL_ENTRY _ZTV8S19457C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C5[];
extern Class_Descriptor cd_S19457C4;
extern VTBL_ENTRY _ZTI8S19457C4[];
extern  VTBL_ENTRY _ZTV8S19457C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C4[];
static Base_Class bases_S19457C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19457C6,    ABISELECT(48,32), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19457C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19457C7,    ABISELECT(64,40), //bcp->offset
    41, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19457C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19457C4,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19457C3[];
extern void _ZN8S19457C33v20Ev();
extern void _ZN8S19457C33v21Ev();
extern void _ZN8S19457C33v22Ev();
extern void _ZN8S19457C33v23Ev();
extern void _ZN8S19457C33v24Ev();
extern void _ZN8S19457C33v25Ev();
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
extern void _ZN8S19457C43v16Ev();
extern void _ZN8S19457C43v17Ev();
extern void _ZN8S19457C43v18Ev();
extern void _ZN8S19457C43v19Ev();
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY vtc_S19457C3[] = {
  ABISELECT(64,40),
  ABISELECT(48,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern VTBL_ENTRY _ZTV8S19457C3[];
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
extern void _ZN8S19457C43v16Ev();
extern void _ZN8S19457C43v17Ev();
extern void _ZN8S19457C43v18Ev();
extern void _ZN8S19457C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C4__8S19457C3[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v19Ev,
};
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C58S19457C4__8S19457C3[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C6__8S19457C58S19457C4__8S19457C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C7__8S19457C58S19457C4__8S19457C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C6__8S19457C4__8S19457C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C7__8S19457C4__8S19457C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
static  VTT_ENTRY vtt_S19457C3[] = {
  {&(_ZTV8S19457C3[5]),  5,57},
  {&(_ZTV8S19457C3[22]),  22,57},
  {&(_ZTV8S19457C3[36]),  36,57},
  {&(_ZTV8S19457C3[50]),  50,57},
  {&(_tg__ZTV8S19457C4__8S19457C3[4]),  4,11},
  {&(_tg__ZTV8S19457C58S19457C4__8S19457C3[4]),  4,7},
  {&(_tg__ZTV8S19457C6__8S19457C58S19457C4__8S19457C3[7]),  7,12},
  {&(_tg__ZTV8S19457C7__8S19457C58S19457C4__8S19457C3[9]),  9,16},
  {&(_tg__ZTV8S19457C6__8S19457C4__8S19457C3[7]),  7,12},
  {&(_tg__ZTV8S19457C7__8S19457C4__8S19457C3[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S19457C3[];
extern  VTBL_ENTRY _ZTV8S19457C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C3[];
Class_Descriptor cd_S19457C3 = {  "S19457C3", // class name
  bases_S19457C3, 5,
  &(vtc_S19457C3[0]), // expected_vtbl_contents
  &(vtt_S19457C3[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S19457C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19457C3),57, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19457C3),10, //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  S19457C2  : S19457C3 {
  long double s19457c2f0;
  ~S19457C2(); // tgen
  S19457C2(); // tgen
};
//SIG(-1 S19457C2) C1{ BC2{ VBC3{ BC4{ VBC5{ v1 v2 v3 v4 v5 Fi} VBC6{ BC5 v6 v7} v8 v9 v10 Fp} v11 v12 v13 v14 Fi[5]} v15 v16 v17 v18 v19 v20} FD}


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

static void Test_S19457C2()
{
  extern Class_Descriptor cd_S19457C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,16)];
    init_test(&cd_S19457C2, buf);
    S19457C2 *dp, &lv = *(dp=new (buf) S19457C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S19457C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19457C2)");
    /*is_ambiguous_... S19457C5::S19457C6 */ AMB_check_base_class_offset(lv, (S19457C6*)(S19457C5*)(S19457C4*), ABISELECT(72,44), "S19457C2");
    check_base_class_offset(lv, (S19457C6*)(S19457C7*), ABISELECT(88,52), "S19457C2");
    check_base_class_offset(lv, (S19457C7*)(S19457C5*)(S19457C4*), ABISELECT(88,52), "S19457C2");
    check_base_class_offset(lv, (S19457C5*)(S19457C4*), ABISELECT(32,16), "S19457C2");
    check_base_class_offset(lv, (S19457C4*)(S19457C3*), ABISELECT(32,16), "S19457C2");
    check_base_class_offset(lv, (S19457C3*), 0, "S19457C2");
    check_field_offset(lv, s19457c2f0, ABISELECT(16,4), "S19457C2.s19457c2f0");
    test_class_info(&lv, &cd_S19457C2);
    dp->~S19457C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19457C2(Test_S19457C2, "S19457C2", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S19457C2C1Ev();
extern void _ZN8S19457C2D1Ev();
Name_Map name_map_S19457C2[] = {
  NSPAIR(_ZN8S19457C2C1Ev),
  NSPAIR(_ZN8S19457C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19457C6;
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
extern Class_Descriptor cd_S19457C6;
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
extern Class_Descriptor cd_S19457C7;
extern VTBL_ENTRY _ZTI8S19457C7[];
extern  VTBL_ENTRY _ZTV8S19457C7[];
extern Class_Descriptor cd_S19457C5;
extern VTBL_ENTRY _ZTI8S19457C5[];
extern  VTBL_ENTRY _ZTV8S19457C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C5[];
extern Class_Descriptor cd_S19457C4;
extern VTBL_ENTRY _ZTI8S19457C4[];
extern  VTBL_ENTRY _ZTV8S19457C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C4[];
extern Class_Descriptor cd_S19457C3;
extern VTBL_ENTRY _ZTI8S19457C3[];
extern  VTBL_ENTRY _ZTV8S19457C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C3[];
static Base_Class bases_S19457C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19457C6,    ABISELECT(72,44), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19457C6,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19457C7,    ABISELECT(88,52), //bcp->offset
    41, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19457C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19457C4,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19457C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19457C2[];
extern void _ZN8S19457C33v20Ev();
extern void _ZN8S19457C33v21Ev();
extern void _ZN8S19457C33v22Ev();
extern void _ZN8S19457C33v23Ev();
extern void _ZN8S19457C33v24Ev();
extern void _ZN8S19457C33v25Ev();
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
extern void _ZN8S19457C43v16Ev();
extern void _ZN8S19457C43v17Ev();
extern void _ZN8S19457C43v18Ev();
extern void _ZN8S19457C43v19Ev();
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY vtc_S19457C2[] = {
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C2[0]),
  (VTBL_ENTRY)&_ZN8S19457C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19457C2[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S19457C2[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19457C2[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern VTBL_ENTRY _ZTV8S19457C2[];
extern void _ZN8S19457C33v20Ev();
extern void _ZN8S19457C33v21Ev();
extern void _ZN8S19457C33v22Ev();
extern void _ZN8S19457C33v23Ev();
extern void _ZN8S19457C33v24Ev();
extern void _ZN8S19457C33v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C3__8S19457C2[] = {
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v25Ev,
};
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
extern void _ZN8S19457C43v16Ev();
extern void _ZN8S19457C43v17Ev();
extern void _ZN8S19457C43v18Ev();
extern void _ZN8S19457C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C4__8S19457C3__8S19457C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v19Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C6__8S19457C3__8S19457C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C7__8S19457C3__8S19457C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
extern void _ZN8S19457C43v16Ev();
extern void _ZN8S19457C43v17Ev();
extern void _ZN8S19457C43v18Ev();
extern void _ZN8S19457C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C4__8S19457C2[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v19Ev,
};
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C58S19457C4__8S19457C2[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C6__8S19457C58S19457C4__8S19457C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C7__8S19457C58S19457C4__8S19457C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C6__8S19457C4__8S19457C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C7__8S19457C4__8S19457C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
static  VTT_ENTRY vtt_S19457C2[] = {
  {&(_ZTV8S19457C2[5]),  5,57},
  {&(_tg__ZTV8S19457C3__8S19457C2[5]),  5,11},
  {&(_tg__ZTV8S19457C4__8S19457C3__8S19457C2[11]),  11,18},
  {&(_tg__ZTV8S19457C6__8S19457C3__8S19457C2[7]),  7,12},
  {&(_tg__ZTV8S19457C7__8S19457C3__8S19457C2[9]),  9,16},
  {&(_ZTV8S19457C2[22]),  22,57},
  {&(_ZTV8S19457C2[36]),  36,57},
  {&(_ZTV8S19457C2[50]),  50,57},
  {&(_tg__ZTV8S19457C4__8S19457C2[4]),  4,11},
  {&(_tg__ZTV8S19457C58S19457C4__8S19457C2[4]),  4,7},
  {&(_tg__ZTV8S19457C6__8S19457C58S19457C4__8S19457C2[7]),  7,12},
  {&(_tg__ZTV8S19457C7__8S19457C58S19457C4__8S19457C2[9]),  9,16},
  {&(_tg__ZTV8S19457C6__8S19457C4__8S19457C2[7]),  7,12},
  {&(_tg__ZTV8S19457C7__8S19457C4__8S19457C2[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S19457C2[];
extern  VTBL_ENTRY _ZTV8S19457C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C2[];
Class_Descriptor cd_S19457C2 = {  "S19457C2", // class name
  bases_S19457C2, 6,
  &(vtc_S19457C2[0]), // expected_vtbl_contents
  &(vtt_S19457C2[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S19457C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19457C2),57, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19457C2),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19457C1  : virtual S19457C2 {
  long double s19457c1f0;
  ::S19065C7 s19457c1f1;
  virtual void  v1(); // _ZN8S19457C12v1Ev
  virtual void  v2(); // _ZN8S19457C12v2Ev
  virtual void  v3(); // _ZN8S19457C12v3Ev
  virtual void  v4(); // _ZN8S19457C12v4Ev
  virtual void  v5(); // _ZN8S19457C12v5Ev
  ~S19457C1(); // tgen
  S19457C1(); // tgen
};
//SIG(1 S19457C1) C1{ VBC2{ BC3{ VBC4{ BC5{ VBC6{ v6 v7 v8 v9 v10 Fi} VBC7{ BC6 v11 v12} v13 v14 v15 Fp} v16 v17 v18 v19 Fi[5]} v20 v21 v22 v23 v24 v25} FD} v1 v2 v3 v4 v5 FD FC8{ v26 v27 FD Fi}}


void  S19457C1 ::v1(){vfunc_called(this, "_ZN8S19457C12v1Ev");}
void  S19457C1 ::v2(){vfunc_called(this, "_ZN8S19457C12v2Ev");}
void  S19457C1 ::v3(){vfunc_called(this, "_ZN8S19457C12v3Ev");}
void  S19457C1 ::v4(){vfunc_called(this, "_ZN8S19457C12v4Ev");}
void  S19457C1 ::v5(){vfunc_called(this, "_ZN8S19457C12v5Ev");}
S19457C1 ::~S19457C1(){ note_dtor("S19457C1", this);} // tgen
S19457C1 ::S19457C1(){ note_ctor("S19457C1", this);} // tgen

static void Test_S19457C1()
{
  extern Class_Descriptor cd_S19457C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,25)];
    init_test(&cd_S19457C1, buf);
    S19457C1 *dp, &lv = *(dp=new (buf) S19457C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,96), "sizeof(S19457C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19457C1)");
    /*is_ambiguous_... S19457C5::S19457C6 */ AMB_check_base_class_offset(lv, (S19457C6*)(S19457C5*)(S19457C4*), ABISELECT(152,80), "S19457C1");
    check_base_class_offset(lv, (S19457C6*)(S19457C7*), ABISELECT(168,88), "S19457C1");
    check_base_class_offset(lv, (S19457C7*)(S19457C5*)(S19457C4*), ABISELECT(168,88), "S19457C1");
    check_base_class_offset(lv, (S19457C5*)(S19457C4*), ABISELECT(112,52), "S19457C1");
    check_base_class_offset(lv, (S19457C4*)(S19457C3*)(S19457C2*), ABISELECT(112,52), "S19457C1");
    check_base_class_offset(lv, (S19457C3*)(S19457C2*), ABISELECT(80,36), "S19457C1");
    check_base_class_offset(lv, (S19457C2*), ABISELECT(80,36), "S19457C1");
    check_field_offset(lv, s19457c1f0, ABISELECT(16,4), "S19457C1.s19457c1f0");
    check_field_offset(lv, s19457c1f1, ABISELECT(32,16), "S19457C1.s19457c1f1");
    test_class_info(&lv, &cd_S19457C1);
    dp->~S19457C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19457C1(Test_S19457C1, "S19457C1", ABISELECT(192,96));

#else // __cplusplus

extern void _ZN8S19457C1C1Ev();
extern void _ZN8S19457C1D1Ev();
Name_Map name_map_S19457C1[] = {
  NSPAIR(_ZN8S19457C1C1Ev),
  NSPAIR(_ZN8S19457C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19457C6;
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
extern Class_Descriptor cd_S19457C6;
extern VTBL_ENTRY _ZTI8S19457C6[];
extern  VTBL_ENTRY _ZTV8S19457C6[];
extern Class_Descriptor cd_S19457C7;
extern VTBL_ENTRY _ZTI8S19457C7[];
extern  VTBL_ENTRY _ZTV8S19457C7[];
extern Class_Descriptor cd_S19457C5;
extern VTBL_ENTRY _ZTI8S19457C5[];
extern  VTBL_ENTRY _ZTV8S19457C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C5[];
extern Class_Descriptor cd_S19457C4;
extern VTBL_ENTRY _ZTI8S19457C4[];
extern  VTBL_ENTRY _ZTV8S19457C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C4[];
extern Class_Descriptor cd_S19457C3;
extern VTBL_ENTRY _ZTI8S19457C3[];
extern  VTBL_ENTRY _ZTV8S19457C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C3[];
extern Class_Descriptor cd_S19457C2;
extern VTBL_ENTRY _ZTI8S19457C2[];
extern  VTBL_ENTRY _ZTV8S19457C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C2[];
static Base_Class bases_S19457C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19457C6,    ABISELECT(152,80), //bcp->offset
    46, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19457C6,    ABISELECT(168,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19457C7,    ABISELECT(168,88), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19457C5,    ABISELECT(112,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19457C4,    ABISELECT(112,52), //bcp->offset
    28, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19457C3,    ABISELECT(80,36), //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19457C2,    ABISELECT(80,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19457C1[];
extern void _ZN8S19457C12v1Ev();
extern void _ZN8S19457C12v2Ev();
extern void _ZN8S19457C12v3Ev();
extern void _ZN8S19457C12v4Ev();
extern void _ZN8S19457C12v5Ev();
extern void _ZN8S19457C33v20Ev();
extern void _ZN8S19457C33v21Ev();
extern void _ZN8S19457C33v22Ev();
extern void _ZN8S19457C33v23Ev();
extern void _ZN8S19457C33v24Ev();
extern void _ZN8S19457C33v25Ev();
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
extern void _ZN8S19457C43v16Ev();
extern void _ZN8S19457C43v17Ev();
extern void _ZN8S19457C43v18Ev();
extern void _ZN8S19457C43v19Ev();
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY vtc_S19457C1[] = {
  ABISELECT(168,88),
  ABISELECT(152,80),
  ABISELECT(112,52),
  ABISELECT(80,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C1[0]),
  (VTBL_ENTRY)&_ZN8S19457C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19457C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19457C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19457C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19457C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(32,16),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI8S19457C1[0]),
  (VTBL_ENTRY)&_ZN8S19457C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI8S19457C1[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S19457C1[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19457C1[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern VTBL_ENTRY _ZTV8S19457C1[];
extern void _ZN8S19457C33v20Ev();
extern void _ZN8S19457C33v21Ev();
extern void _ZN8S19457C33v22Ev();
extern void _ZN8S19457C33v23Ev();
extern void _ZN8S19457C33v24Ev();
extern void _ZN8S19457C33v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C2__8S19457C1[] = {
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C2[0]),
  (VTBL_ENTRY)&_ZN8S19457C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v25Ev,
};
extern void _ZN8S19457C33v20Ev();
extern void _ZN8S19457C33v21Ev();
extern void _ZN8S19457C33v22Ev();
extern void _ZN8S19457C33v23Ev();
extern void _ZN8S19457C33v24Ev();
extern void _ZN8S19457C33v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C38S19457C2__8S19457C1[] = {
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19457C33v25Ev,
};
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
extern void _ZN8S19457C43v16Ev();
extern void _ZN8S19457C43v17Ev();
extern void _ZN8S19457C43v18Ev();
extern void _ZN8S19457C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C4__8S19457C38S19457C2__8S19457C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v19Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C6__8S19457C38S19457C2__8S19457C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C7__8S19457C38S19457C2__8S19457C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19457C3[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
extern void _ZN8S19457C43v16Ev();
extern void _ZN8S19457C43v17Ev();
extern void _ZN8S19457C43v18Ev();
extern void _ZN8S19457C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C4__8S19457C2__8S19457C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19457C2[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v19Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C6__8S19457C2__8S19457C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S19457C2[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C7__8S19457C2__8S19457C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19457C2[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
extern void _ZN8S19457C43v16Ev();
extern void _ZN8S19457C43v17Ev();
extern void _ZN8S19457C43v18Ev();
extern void _ZN8S19457C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C4__8S19457C1[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19457C43v19Ev,
};
extern void _ZN8S19457C53v13Ev();
extern void _ZN8S19457C53v14Ev();
extern void _ZN8S19457C53v15Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C58S19457C4__8S19457C1[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19457C53v15Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C6__8S19457C58S19457C4__8S19457C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C7__8S19457C58S19457C4__8S19457C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19457C5[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C6__8S19457C4__8S19457C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
};
extern void _ZN8S19457C62v6Ev();
extern void _ZN8S19457C62v7Ev();
extern void _ZN8S19457C62v8Ev();
extern void _ZN8S19457C62v9Ev();
extern void _ZN8S19457C63v10Ev();
extern void _ZN8S19457C73v11Ev();
extern void _ZN8S19457C73v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19457C7__8S19457C4__8S19457C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19457C4[0]),
  (VTBL_ENTRY)&_ZN8S19457C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19457C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19457C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v11Ev,
  (VTBL_ENTRY)&_ZN8S19457C73v12Ev,
};
static  VTT_ENTRY vtt_S19457C1[] = {
  {&(_ZTV8S19457C1[6]),  6,74},
  {&(_ZTV8S19457C1[22]),  22,74},
  {&(_ZTV8S19457C1[39]),  39,74},
  {&(_ZTV8S19457C1[53]),  53,74},
  {&(_ZTV8S19457C1[67]),  67,74},
  {&(_tg__ZTV8S19457C2__8S19457C1[5]),  5,11},
  {&(_tg__ZTV8S19457C38S19457C2__8S19457C1[5]),  5,11},
  {&(_tg__ZTV8S19457C4__8S19457C38S19457C2__8S19457C1[11]),  11,18},
  {&(_tg__ZTV8S19457C6__8S19457C38S19457C2__8S19457C1[7]),  7,12},
  {&(_tg__ZTV8S19457C7__8S19457C38S19457C2__8S19457C1[9]),  9,16},
  {&(_tg__ZTV8S19457C4__8S19457C2__8S19457C1[11]),  11,18},
  {&(_tg__ZTV8S19457C6__8S19457C2__8S19457C1[7]),  7,12},
  {&(_tg__ZTV8S19457C7__8S19457C2__8S19457C1[9]),  9,16},
  {&(_tg__ZTV8S19457C4__8S19457C1[4]),  4,11},
  {&(_tg__ZTV8S19457C58S19457C4__8S19457C1[4]),  4,7},
  {&(_tg__ZTV8S19457C6__8S19457C58S19457C4__8S19457C1[7]),  7,12},
  {&(_tg__ZTV8S19457C7__8S19457C58S19457C4__8S19457C1[9]),  9,16},
  {&(_tg__ZTV8S19457C6__8S19457C4__8S19457C1[7]),  7,12},
  {&(_tg__ZTV8S19457C7__8S19457C4__8S19457C1[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S19457C1[];
extern  VTBL_ENTRY _ZTV8S19457C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19457C1[];
Class_Descriptor cd_S19457C1 = {  "S19457C1", // class name
  bases_S19457C1, 7,
  &(vtc_S19457C1[0]), // expected_vtbl_contents
  &(vtt_S19457C1[0]), // expected_vtt_contents
  ABISELECT(192,96), // object size
  NSPAIRA(_ZTI8S19457C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19457C1),74, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19457C1),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3814C2  : S3712C3_nt {
  int s3814c2f0;
  char s3814c2f1;
  int s3814c2f2;
  ::S10225C3 s3814c2f3;
  ::S3812C7 s3814c2f4;
  ::S2405C26 s3814c2f5;
  ::S11969C23_nt s3814c2f6;
  ::S10225C3 s3814c2f7;
  virtual  ~S3814C2(); // _ZN7S3814C2D1Ev
  virtual void  v2(); // _ZN7S3814C22v2Ev
  S3814C2(); // tgen
};
//SIG(-1 S3814C2) C1{ BC2{ vd m Fi} vd v1 Fi Fc Fi FC3{ BC4{ vd v5 v6 v7} vd v2 v3 v4 FC5{ FL[4]}} FC6{ BC7{ vd v13 v14 v15} vd v8 v9 v10 v11 v12 Fi} FC8{ m Fp Fi FC9{ m} FC9} FC10{ m Fp} FC3}


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

static void Test_S3814C2()
{
  extern Class_Descriptor cd_S3814C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,30)];
    init_test(&cd_S3814C2, buf);
    S3814C2 *dp, &lv = *(dp=new (buf) S3814C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S3814C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3814C2)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S3814C2");
    check_field_offset(lv, s3814c2f0, ABISELECT(12,8), "S3814C2.s3814c2f0");
    check_field_offset(lv, s3814c2f1, ABISELECT(16,12), "S3814C2.s3814c2f1");
    check_field_offset(lv, s3814c2f2, ABISELECT(20,16), "S3814C2.s3814c2f2");
    check_field_offset(lv, s3814c2f3, ABISELECT(24,20), "S3814C2.s3814c2f3");
    check_field_offset(lv, s3814c2f4, ABISELECT(64,56), "S3814C2.s3814c2f4");
    check_field_offset(lv, s3814c2f5, ABISELECT(80,64), "S3814C2.s3814c2f5");
    check_field_offset(lv, s3814c2f6, ABISELECT(96,76), "S3814C2.s3814c2f6");
    check_field_offset(lv, s3814c2f7, ABISELECT(104,80), "S3814C2.s3814c2f7");
    test_class_info(&lv, &cd_S3814C2);
    dp->~S3814C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3814C2(Test_S3814C2, "S3814C2", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN7S3814C2C1Ev();
extern void _ZN7S3814C2D1Ev();
Name_Map name_map_S3814C2[] = {
  NSPAIR(_ZN7S3814C2C1Ev),
  NSPAIR(_ZN7S3814C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S3814C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3814C2[];
extern void _ZN7S3814C2D1Ev();
extern void _ZN7S3814C2D0Ev();
extern void _ZN7S3814C22v2Ev();
static  VTBL_ENTRY vtc_S3814C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3814C2[0]),
  (VTBL_ENTRY)&_ZN7S3814C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3814C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3814C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S3814C2[];
extern  VTBL_ENTRY _ZTV7S3814C2[];
Class_Descriptor cd_S3814C2 = {  "S3814C2", // class name
  bases_S3814C2, 1,
  &(vtc_S3814C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI7S3814C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3814C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3814C1  : S3814C2 {
  int s3814c1f0[2];
  virtual  ~S3814C1(); // _ZN7S3814C1D1Ev
  virtual void  v1(); // _ZN7S3814C12v1Ev
  S3814C1(); // tgen
};
//SIG(1 S3814C1) C1{ BC2{ BC3{ vd m Fi} vd v2 Fi Fc Fi FC4{ BC5{ vd v6 v7 v8} vd v3 v4 v5 FC6{ FL[4]}} FC7{ BC8{ vd v14 v15 v16} vd v9 v10 v11 v12 v13 Fi} FC9{ m Fp Fi FC10{ m} FC10} FC11{ m Fp} FC4} vd v1 Fi[2]}


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

static void Test_S3814C1()
{
  extern Class_Descriptor cd_S3814C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,32)];
    init_test(&cd_S3814C1, buf);
    S3814C1 *dp, &lv = *(dp=new (buf) S3814C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,124), "sizeof(S3814C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3814C1)");
    check_base_class_offset(lv, (S3712C3_nt*)(S3814C2*), 0, "S3814C1");
    check_base_class_offset(lv, (S3814C2*), 0, "S3814C1");
    check_field_offset(lv, s3814c1f0, ABISELECT(144,116), "S3814C1.s3814c1f0");
    test_class_info(&lv, &cd_S3814C1);
    dp->~S3814C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3814C1(Test_S3814C1, "S3814C1", ABISELECT(152,124));

#else // __cplusplus

extern void _ZN7S3814C1C1Ev();
extern void _ZN7S3814C1D1Ev();
Name_Map name_map_S3814C1[] = {
  NSPAIR(_ZN7S3814C1C1Ev),
  NSPAIR(_ZN7S3814C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
extern Class_Descriptor cd_S3814C2;
extern VTBL_ENTRY _ZTI7S3814C2[];
extern  VTBL_ENTRY _ZTV7S3814C2[];
static Base_Class bases_S3814C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3814C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3814C1[];
extern void _ZN7S3814C1D1Ev();
extern void _ZN7S3814C1D0Ev();
extern void _ZN7S3814C22v2Ev();
extern void _ZN7S3814C12v1Ev();
static  VTBL_ENTRY vtc_S3814C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3814C1[0]),
  (VTBL_ENTRY)&_ZN7S3814C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3814C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3814C22v2Ev,
  (VTBL_ENTRY)&_ZN7S3814C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3814C1[];
extern  VTBL_ENTRY _ZTV7S3814C1[];
Class_Descriptor cd_S3814C1 = {  "S3814C1", // class name
  bases_S3814C1, 2,
  &(vtc_S3814C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,124), // object size
  NSPAIRA(_ZTI7S3814C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3814C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3810C2  : S3712C3_nt {
  int s3810c2f0;
  char s3810c2f1;
  int s3810c2f2;
  ::S10225C3 s3810c2f3;
  ::S3812C7 s3810c2f4;
  ::S2405C26 s3810c2f5;
  ::S11969C23_nt s3810c2f6;
  ::S10225C3 s3810c2f7;
  virtual  ~S3810C2(); // _ZN7S3810C2D1Ev
  virtual void  v2(); // _ZN7S3810C22v2Ev
  S3810C2(); // tgen
};
//SIG(-1 S3810C2) C1{ BC2{ vd m Fi} vd v1 Fi Fc Fi FC3{ BC4{ vd v5 v6 v7} vd v2 v3 v4 FC5{ FL[4]}} FC6{ BC7{ vd v13 v14 v15} vd v8 v9 v10 v11 v12 Fi} FC8{ m Fp Fi FC9{ m} FC9} FC10{ m Fp} FC3}


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

static void Test_S3810C2()
{
  extern Class_Descriptor cd_S3810C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,30)];
    init_test(&cd_S3810C2, buf);
    S3810C2 *dp, &lv = *(dp=new (buf) S3810C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S3810C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3810C2)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S3810C2");
    check_field_offset(lv, s3810c2f0, ABISELECT(12,8), "S3810C2.s3810c2f0");
    check_field_offset(lv, s3810c2f1, ABISELECT(16,12), "S3810C2.s3810c2f1");
    check_field_offset(lv, s3810c2f2, ABISELECT(20,16), "S3810C2.s3810c2f2");
    check_field_offset(lv, s3810c2f3, ABISELECT(24,20), "S3810C2.s3810c2f3");
    check_field_offset(lv, s3810c2f4, ABISELECT(64,56), "S3810C2.s3810c2f4");
    check_field_offset(lv, s3810c2f5, ABISELECT(80,64), "S3810C2.s3810c2f5");
    check_field_offset(lv, s3810c2f6, ABISELECT(96,76), "S3810C2.s3810c2f6");
    check_field_offset(lv, s3810c2f7, ABISELECT(104,80), "S3810C2.s3810c2f7");
    test_class_info(&lv, &cd_S3810C2);
    dp->~S3810C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3810C2(Test_S3810C2, "S3810C2", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN7S3810C2C1Ev();
extern void _ZN7S3810C2D1Ev();
Name_Map name_map_S3810C2[] = {
  NSPAIR(_ZN7S3810C2C1Ev),
  NSPAIR(_ZN7S3810C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S3810C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3810C2[];
extern void _ZN7S3810C2D1Ev();
extern void _ZN7S3810C2D0Ev();
extern void _ZN7S3810C22v2Ev();
static  VTBL_ENTRY vtc_S3810C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3810C2[0]),
  (VTBL_ENTRY)&_ZN7S3810C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3810C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3810C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S3810C2[];
extern  VTBL_ENTRY _ZTV7S3810C2[];
Class_Descriptor cd_S3810C2 = {  "S3810C2", // class name
  bases_S3810C2, 1,
  &(vtc_S3810C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI7S3810C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3810C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3810C1  : S3810C2 {
  char s3810c1f0;
  int s3810c1f1;
  virtual  ~S3810C1(); // _ZN7S3810C1D1Ev
  virtual void  v1(); // _ZN7S3810C12v1Ev
  S3810C1(); // tgen
};
//SIG(1 S3810C1) C1{ BC2{ BC3{ vd m Fi} vd v2 Fi Fc Fi FC4{ BC5{ vd v6 v7 v8} vd v3 v4 v5 FC6{ FL[4]}} FC7{ BC8{ vd v14 v15 v16} vd v9 v10 v11 v12 v13 Fi} FC9{ m Fp Fi FC10{ m} FC10} FC11{ m Fp} FC4} vd v1 Fc Fi}


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

static void Test_S3810C1()
{
  extern Class_Descriptor cd_S3810C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,32)];
    init_test(&cd_S3810C1, buf);
    S3810C1 *dp, &lv = *(dp=new (buf) S3810C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,124), "sizeof(S3810C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3810C1)");
    check_base_class_offset(lv, (S3712C3_nt*)(S3810C2*), 0, "S3810C1");
    check_base_class_offset(lv, (S3810C2*), 0, "S3810C1");
    check_field_offset(lv, s3810c1f0, ABISELECT(144,116), "S3810C1.s3810c1f0");
    check_field_offset(lv, s3810c1f1, ABISELECT(148,120), "S3810C1.s3810c1f1");
    test_class_info(&lv, &cd_S3810C1);
    dp->~S3810C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3810C1(Test_S3810C1, "S3810C1", ABISELECT(152,124));

#else // __cplusplus

extern void _ZN7S3810C1C1Ev();
extern void _ZN7S3810C1D1Ev();
Name_Map name_map_S3810C1[] = {
  NSPAIR(_ZN7S3810C1C1Ev),
  NSPAIR(_ZN7S3810C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
extern Class_Descriptor cd_S3810C2;
extern VTBL_ENTRY _ZTI7S3810C2[];
extern  VTBL_ENTRY _ZTV7S3810C2[];
static Base_Class bases_S3810C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3810C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3810C1[];
extern void _ZN7S3810C1D1Ev();
extern void _ZN7S3810C1D0Ev();
extern void _ZN7S3810C22v2Ev();
extern void _ZN7S3810C12v1Ev();
static  VTBL_ENTRY vtc_S3810C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3810C1[0]),
  (VTBL_ENTRY)&_ZN7S3810C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3810C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3810C22v2Ev,
  (VTBL_ENTRY)&_ZN7S3810C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3810C1[];
extern  VTBL_ENTRY _ZTV7S3810C1[];
Class_Descriptor cd_S3810C1 = {  "S3810C1", // class name
  bases_S3810C1, 2,
  &(vtc_S3810C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,124), // object size
  NSPAIRA(_ZTI7S3810C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3810C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3709C2  : S3712C3_nt {
  virtual void  v2(); // _ZN7S3709C22v2Ev
  ~S3709C2(); // tgen
  S3709C2(); // tgen
};
//SIG(-1 S3709C2) C1{ BC2{ vd m Fi} v1}


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

static void Test_S3709C2()
{
  extern Class_Descriptor cd_S3709C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3709C2, buf);
    S3709C2 *dp, &lv = *(dp=new (buf) S3709C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3709C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3709C2)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S3709C2");
    test_class_info(&lv, &cd_S3709C2);
    dp->~S3709C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3709C2(Test_S3709C2, "S3709C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3709C2C1Ev();
extern void _ZN7S3709C2D1Ev();
Name_Map name_map_S3709C2[] = {
  NSPAIR(_ZN7S3709C2C1Ev),
  NSPAIR(_ZN7S3709C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S3709C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3709C2[];
extern void _ZN7S3709C2D1Ev();
extern void _ZN7S3709C2D0Ev();
extern void _ZN7S3709C22v2Ev();
static  VTBL_ENTRY vtc_S3709C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3709C2[0]),
  (VTBL_ENTRY)&_ZN7S3709C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3709C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3709C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S3709C2[];
extern  VTBL_ENTRY _ZTV7S3709C2[];
Class_Descriptor cd_S3709C2 = {  "S3709C2", // class name
  bases_S3709C2, 1,
  &(vtc_S3709C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3709C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3709C2),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  S3709C1  : S3709C2 {
  ::S2405C26 s3709c1f0;
  ::S2405C22 s3709c1f1;
  char s3709c1f2;
  int s3709c1f3;
  ::S10225C3 s3709c1f4;
  ::S10225C19 s3709c1f5;
  int s3709c1f6;
  virtual  ~S3709C1(); // _ZN7S3709C1D1Ev
  virtual void  v1(); // _ZN7S3709C12v1Ev
  S3709C1(); // tgen
};
//SIG(1 S3709C1) C1{ BC2{ BC3{ vd m Fi} v2} vd v1 FC4{ m Fp Fi FC5{ m} FC5} FC6{ m Fp Fi FC7{ m} FC7} Fc Fi FC8{ BC9{ vd v6 v7 v8} vd v3 v4 v5 FC10{ FL[4]}} FC11{ BC9 vd v9 v10 v11 Fi} Fi}


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

static void Test_S3709C1()
{
  extern Class_Descriptor cd_S3709C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,23)];
    init_test(&cd_S3709C1, buf);
    S3709C1 *dp, &lv = *(dp=new (buf) S3709C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,88), "sizeof(S3709C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3709C1)");
    check_base_class_offset(lv, (S3712C3_nt*)(S3709C2*), 0, "S3709C1");
    check_base_class_offset(lv, (S3709C2*), 0, "S3709C1");
    check_field_offset(lv, s3709c1f0, ABISELECT(16,8), "S3709C1.s3709c1f0");
    check_field_offset(lv, s3709c1f1, ABISELECT(32,20), "S3709C1.s3709c1f1");
    check_field_offset(lv, s3709c1f2, ABISELECT(48,32), "S3709C1.s3709c1f2");
    check_field_offset(lv, s3709c1f3, ABISELECT(52,36), "S3709C1.s3709c1f3");
    check_field_offset(lv, s3709c1f4, ABISELECT(56,40), "S3709C1.s3709c1f4");
    check_field_offset(lv, s3709c1f5, ABISELECT(96,76), "S3709C1.s3709c1f5");
    check_field_offset(lv, s3709c1f6, ABISELECT(112,84), "S3709C1.s3709c1f6");
    test_class_info(&lv, &cd_S3709C1);
    dp->~S3709C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3709C1(Test_S3709C1, "S3709C1", ABISELECT(120,88));

#else // __cplusplus

extern void _ZN7S3709C1C1Ev();
extern void _ZN7S3709C1D1Ev();
Name_Map name_map_S3709C1[] = {
  NSPAIR(_ZN7S3709C1C1Ev),
  NSPAIR(_ZN7S3709C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
extern Class_Descriptor cd_S3709C2;
extern VTBL_ENTRY _ZTI7S3709C2[];
extern  VTBL_ENTRY _ZTV7S3709C2[];
static Base_Class bases_S3709C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3709C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3709C1[];
extern void _ZN7S3709C1D1Ev();
extern void _ZN7S3709C1D0Ev();
extern void _ZN7S3709C22v2Ev();
extern void _ZN7S3709C12v1Ev();
static  VTBL_ENTRY vtc_S3709C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3709C1[0]),
  (VTBL_ENTRY)&_ZN7S3709C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3709C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3709C22v2Ev,
  (VTBL_ENTRY)&_ZN7S3709C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3709C1[];
extern  VTBL_ENTRY _ZTV7S3709C1[];
Class_Descriptor cd_S3709C1 = {  "S3709C1", // class name
  bases_S3709C1, 2,
  &(vtc_S3709C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,88), // object size
  NSPAIRA(_ZTI7S3709C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3709C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3562C5  {
  virtual void  v2(); // _ZN7S3562C52v2Ev
  ~S3562C5(); // tgen
  S3562C5(); // tgen
};
//SIG(-1 S3562C5) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S3562C5C1Ev();
extern void _ZN7S3562C5D1Ev();
Name_Map name_map_S3562C5[] = {
  NSPAIR(_ZN7S3562C5C1Ev),
  NSPAIR(_ZN7S3562C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3562C5[];
extern void _ZN7S3562C52v2Ev();
static  VTBL_ENTRY vtc_S3562C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C5[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
};
extern VTBL_ENTRY _ZTI7S3562C5[];
extern  VTBL_ENTRY _ZTV7S3562C5[];
Class_Descriptor cd_S3562C5 = {  "S3562C5", // class name
  0,0,//no base classes
  &(vtc_S3562C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3562C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3562C5),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  S3562C6  {
  void *s3562c6f0;
  ::S3562C5 s3562c6f1;
  virtual void  v3(); // _ZN7S3562C62v3Ev
  virtual void  v4(); // _ZN7S3562C62v4Ev
  virtual void  v5(); // _ZN7S3562C62v5Ev
  virtual void  v6(); // _ZN7S3562C62v6Ev
  virtual void  v7(); // _ZN7S3562C62v7Ev
  ~S3562C6(); // tgen
  S3562C6(); // tgen
};
//SIG(-1 S3562C6) C1{ v1 v2 v3 v4 v5 Fp FC2{ v6}}


void  S3562C6 ::v3(){vfunc_called(this, "_ZN7S3562C62v3Ev");}
void  S3562C6 ::v4(){vfunc_called(this, "_ZN7S3562C62v4Ev");}
void  S3562C6 ::v5(){vfunc_called(this, "_ZN7S3562C62v5Ev");}
void  S3562C6 ::v6(){vfunc_called(this, "_ZN7S3562C62v6Ev");}
void  S3562C6 ::v7(){vfunc_called(this, "_ZN7S3562C62v7Ev");}
S3562C6 ::~S3562C6(){ note_dtor("S3562C6", this);} // tgen
S3562C6 ::S3562C6(){ note_ctor("S3562C6", this);} // tgen

static void Test_S3562C6()
{
  extern Class_Descriptor cd_S3562C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3562C6, buf);
    S3562C6 *dp, &lv = *(dp=new (buf) S3562C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3562C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3562C6)");
    check_field_offset(lv, s3562c6f0, ABISELECT(8,4), "S3562C6.s3562c6f0");
    check_field_offset(lv, s3562c6f1, ABISELECT(16,8), "S3562C6.s3562c6f1");
    test_class_info(&lv, &cd_S3562C6);
    dp->~S3562C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3562C6(Test_S3562C6, "S3562C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3562C6C1Ev();
extern void _ZN7S3562C6D1Ev();
Name_Map name_map_S3562C6[] = {
  NSPAIR(_ZN7S3562C6C1Ev),
  NSPAIR(_ZN7S3562C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3562C6[];
extern void _ZN7S3562C62v3Ev();
extern void _ZN7S3562C62v4Ev();
extern void _ZN7S3562C62v5Ev();
extern void _ZN7S3562C62v6Ev();
extern void _ZN7S3562C62v7Ev();
static  VTBL_ENTRY vtc_S3562C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C6[0]),
  (VTBL_ENTRY)&_ZN7S3562C62v3Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v7Ev,
};
extern VTBL_ENTRY _ZTI7S3562C6[];
extern  VTBL_ENTRY _ZTV7S3562C6[];
Class_Descriptor cd_S3562C6 = {  "S3562C6", // class name
  0,0,//no base classes
  &(vtc_S3562C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3562C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3562C6),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  S3562C4  : virtual S3562C5 , virtual S3562C6 {
  void *s3562c4f0[6];
  virtual  ~S3562C4(); // _ZN7S3562C4D2Ev
  virtual void  v8(); // _ZN7S3562C42v8Ev
  virtual void  v9(); // _ZN7S3562C42v9Ev
  virtual void  v10(); // _ZN7S3562C43v10Ev
  S3562C4(); // tgen
};
//SIG(-1 S3562C4) C1{ VBC2{ v4} VBC3{ v5 v6 v7 v8 v9 Fp FC2} vd v1 v2 v3 Fp[6]}


 S3562C4 ::~S3562C4(){ note_dtor("S3562C4", this);}
void  S3562C4 ::v8(){vfunc_called(this, "_ZN7S3562C42v8Ev");}
void  S3562C4 ::v9(){vfunc_called(this, "_ZN7S3562C42v9Ev");}
void  S3562C4 ::v10(){vfunc_called(this, "_ZN7S3562C43v10Ev");}
S3562C4 ::S3562C4(){ note_ctor("S3562C4", this);} // tgen

static void Test_S3562C4()
{
  extern Class_Descriptor cd_S3562C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S3562C4, buf);
    S3562C4 *dp, &lv = *(dp=new (buf) S3562C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S3562C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3562C4)");
    check_base_class_offset(lv, (S3562C5*), 0, "S3562C4");
    check_base_class_offset(lv, (S3562C6*), ABISELECT(56,28), "S3562C4");
    check_field_offset(lv, s3562c4f0, ABISELECT(8,4), "S3562C4.s3562c4f0");
    test_class_info(&lv, &cd_S3562C4);
    dp->~S3562C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3562C4(Test_S3562C4, "S3562C4", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S3562C4C1Ev();
extern void _ZN7S3562C4D2Ev();
Name_Map name_map_S3562C4[] = {
  NSPAIR(_ZN7S3562C4C1Ev),
  NSPAIR(_ZN7S3562C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3562C5;
extern VTBL_ENTRY _ZTI7S3562C5[];
extern  VTBL_ENTRY _ZTV7S3562C5[];
extern Class_Descriptor cd_S3562C6;
extern VTBL_ENTRY _ZTI7S3562C6[];
extern  VTBL_ENTRY _ZTV7S3562C6[];
static Base_Class bases_S3562C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3562C5,    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_S3562C6,    ABISELECT(56,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3562C4[];
extern void _ZN7S3562C52v2Ev();
extern void _ZN7S3562C4D1Ev();
extern void _ZN7S3562C4D0Ev();
extern void _ZN7S3562C42v8Ev();
extern void _ZN7S3562C42v9Ev();
extern void _ZN7S3562C43v10Ev();
extern void _ZN7S3562C62v3Ev();
extern void _ZN7S3562C62v4Ev();
extern void _ZN7S3562C62v5Ev();
extern void _ZN7S3562C62v6Ev();
extern void _ZN7S3562C62v7Ev();
static  VTBL_ENTRY vtc_S3562C4[] = {
  ABISELECT(56,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C4[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3562C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3562C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3562C43v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S3562C4[0]),
  (VTBL_ENTRY)&_ZN7S3562C62v3Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v7Ev,
};
extern VTBL_ENTRY _ZTV7S3562C4[];
static  VTT_ENTRY vtt_S3562C4[] = {
  {&(_ZTV7S3562C4[5]),  5,23},
  {&(_ZTV7S3562C4[5]),  5,23},
  {&(_ZTV7S3562C4[18]),  18,23},
};
extern VTBL_ENTRY _ZTI7S3562C4[];
extern  VTBL_ENTRY _ZTV7S3562C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3562C4[];
Class_Descriptor cd_S3562C4 = {  "S3562C4", // class name
  bases_S3562C4, 2,
  &(vtc_S3562C4[0]), // expected_vtbl_contents
  &(vtt_S3562C4[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S3562C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3562C4),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3562C4),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  S3562C3  : virtual S3562C4 {
  __tsi64 s3562c3f0;
  virtual void  v11(); // _ZN7S3562C33v11Ev
  virtual void  v12(); // _ZN7S3562C33v12Ev
  virtual void  v13(); // _ZN7S3562C33v13Ev
  ~S3562C3(); // tgen
  S3562C3(); // tgen
};
//SIG(-1 S3562C3) C1{ VBC2{ VBC3{ v4} VBC4{ v5 v6 v7 v8 v9 Fp FC3} vd v10 v11 v12 Fp[6]} v1 v2 v3 FL}


void  S3562C3 ::v11(){vfunc_called(this, "_ZN7S3562C33v11Ev");}
void  S3562C3 ::v12(){vfunc_called(this, "_ZN7S3562C33v12Ev");}
void  S3562C3 ::v13(){vfunc_called(this, "_ZN7S3562C33v13Ev");}
S3562C3 ::~S3562C3(){ note_dtor("S3562C3", this);} // tgen
S3562C3 ::S3562C3(){ note_ctor("S3562C3", this);} // tgen

static void Test_S3562C3()
{
  extern Class_Descriptor cd_S3562C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S3562C3, buf);
    S3562C3 *dp, &lv = *(dp=new (buf) S3562C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S3562C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3562C3)");
    check_base_class_offset(lv, (S3562C5*)(S3562C4*), 0, "S3562C3");
    check_base_class_offset(lv, (S3562C6*)(S3562C4*), ABISELECT(72,40), "S3562C3");
    check_base_class_offset(lv, (S3562C4*), ABISELECT(16,12), "S3562C3");
    check_field_offset(lv, s3562c3f0, ABISELECT(8,4), "S3562C3.s3562c3f0");
    test_class_info(&lv, &cd_S3562C3);
    dp->~S3562C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3562C3(Test_S3562C3, "S3562C3", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S3562C3C1Ev();
extern void _ZN7S3562C3D1Ev();
Name_Map name_map_S3562C3[] = {
  NSPAIR(_ZN7S3562C3C1Ev),
  NSPAIR(_ZN7S3562C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3562C5;
extern VTBL_ENTRY _ZTI7S3562C5[];
extern  VTBL_ENTRY _ZTV7S3562C5[];
extern Class_Descriptor cd_S3562C6;
extern VTBL_ENTRY _ZTI7S3562C6[];
extern  VTBL_ENTRY _ZTV7S3562C6[];
extern Class_Descriptor cd_S3562C4;
extern VTBL_ENTRY _ZTI7S3562C4[];
extern  VTBL_ENTRY _ZTV7S3562C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3562C4[];
static Base_Class bases_S3562C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3562C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3562C6,    ABISELECT(72,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3562C4,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3562C3[];
extern void _ZN7S3562C52v2Ev();
extern void _ZN7S3562C33v11Ev();
extern void _ZN7S3562C33v12Ev();
extern void _ZN7S3562C33v13Ev();
extern void _ZN7S3562C3D1Ev();
extern void _ZN7S3562C3D0Ev();
extern void _ZN7S3562C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3562C3D1Ev,_ZTv0_n24_N7S3562C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S3562C3D1Ev,_ZThn12_N7S3562C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3562C3D0Ev,_ZTv0_n24_N7S3562C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S3562C3D0Ev,_ZThn12_N7S3562C3D0Ev)() __attribute__((weak));
extern void _ZN7S3562C42v8Ev();
extern void _ZN7S3562C42v9Ev();
extern void _ZN7S3562C43v10Ev();
extern void _ZN7S3562C62v3Ev();
extern void _ZN7S3562C62v4Ev();
extern void _ZN7S3562C62v5Ev();
extern void _ZN7S3562C62v6Ev();
extern void _ZN7S3562C62v7Ev();
static  VTBL_ENTRY vtc_S3562C3[] = {
  ABISELECT(72,40),
  0,
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C3[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3562C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3562C3D0Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3562C3[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C3D1Ev,_ZTv0_n24_N7S3562C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C3D0Ev,_ZTv0_n24_N7S3562C3D0Ev),
  (VTBL_ENTRY)&_ZN7S3562C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3562C43v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S3562C3[0]),
  (VTBL_ENTRY)&_ZN7S3562C62v3Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v7Ev,
};
extern VTBL_ENTRY _ZTV7S3562C3[];
extern void _ZN7S3562C52v2Ev();
extern void _ZN7S3562C4D1Ev();
extern void _ZN7S3562C4D0Ev();
extern void _ZN7S3562C42v8Ev();
extern void _ZN7S3562C42v9Ev();
extern void _ZN7S3562C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C4__7S3562C3[] = {
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C4[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3562C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3562C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3562C43v10Ev,
};
extern void _ZN7S3562C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C5__7S3562C4__7S3562C3[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S3562C4[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
};
extern void _ZN7S3562C62v3Ev();
extern void _ZN7S3562C62v4Ev();
extern void _ZN7S3562C62v5Ev();
extern void _ZN7S3562C62v6Ev();
extern void _ZN7S3562C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C6__7S3562C4__7S3562C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S3562C4[0]),
  (VTBL_ENTRY)&_ZN7S3562C62v3Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v7Ev,
};
static  VTT_ENTRY vtt_S3562C3[] = {
  {&(_ZTV7S3562C3[6]),  6,39},
  {&(_ZTV7S3562C3[21]),  21,39},
  {&(_ZTV7S3562C3[6]),  6,39},
  {&(_ZTV7S3562C3[34]),  34,39},
  {&(_tg__ZTV7S3562C4__7S3562C3[5]),  5,11},
  {&(_tg__ZTV7S3562C5__7S3562C4__7S3562C3[3]),  3,4},
  {&(_tg__ZTV7S3562C6__7S3562C4__7S3562C3[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S3562C3[];
extern  VTBL_ENTRY _ZTV7S3562C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3562C3[];
static VTBL_ENTRY alt_thunk_names196[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C3D0Ev,_ZTv0_n24_N7S3562C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3562C3D0Ev,_ZThn12_N7S3562C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C3D1Ev,_ZTv0_n24_N7S3562C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3562C3D1Ev,_ZThn12_N7S3562C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3562C3 = {  "S3562C3", // class name
  bases_S3562C3, 3,
  &(vtc_S3562C3[0]), // expected_vtbl_contents
  &(vtt_S3562C3[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S3562C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3562C3),39, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3562C3),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names196,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3562C7  {
  void *s3562c7f0;
  short s3562c7f1;
  virtual void  v19(); // _ZN7S3562C73v19Ev
  virtual void  v20(); // _ZN7S3562C73v20Ev
  virtual void  v21(); // _ZN7S3562C73v21Ev
  virtual void  v22(); // _ZN7S3562C73v22Ev
  virtual void  v23(); // _ZN7S3562C73v23Ev
  virtual void  v24(); // _ZN7S3562C73v24Ev
  ~S3562C7(); // tgen
  S3562C7(); // tgen
};
//SIG(-1 S3562C7) C1{ v1 v2 v3 v4 v5 v6 Fp Fs}


void  S3562C7 ::v19(){vfunc_called(this, "_ZN7S3562C73v19Ev");}
void  S3562C7 ::v20(){vfunc_called(this, "_ZN7S3562C73v20Ev");}
void  S3562C7 ::v21(){vfunc_called(this, "_ZN7S3562C73v21Ev");}
void  S3562C7 ::v22(){vfunc_called(this, "_ZN7S3562C73v22Ev");}
void  S3562C7 ::v23(){vfunc_called(this, "_ZN7S3562C73v23Ev");}
void  S3562C7 ::v24(){vfunc_called(this, "_ZN7S3562C73v24Ev");}
S3562C7 ::~S3562C7(){ note_dtor("S3562C7", this);} // tgen
S3562C7 ::S3562C7(){ note_ctor("S3562C7", this);} // tgen

static void Test_S3562C7()
{
  extern Class_Descriptor cd_S3562C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3562C7, buf);
    S3562C7 *dp, &lv = *(dp=new (buf) S3562C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3562C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3562C7)");
    check_field_offset(lv, s3562c7f0, ABISELECT(8,4), "S3562C7.s3562c7f0");
    check_field_offset(lv, s3562c7f1, ABISELECT(16,8), "S3562C7.s3562c7f1");
    test_class_info(&lv, &cd_S3562C7);
    dp->~S3562C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3562C7(Test_S3562C7, "S3562C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3562C7C1Ev();
extern void _ZN7S3562C7D1Ev();
Name_Map name_map_S3562C7[] = {
  NSPAIR(_ZN7S3562C7C1Ev),
  NSPAIR(_ZN7S3562C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3562C7[];
extern void _ZN7S3562C73v19Ev();
extern void _ZN7S3562C73v20Ev();
extern void _ZN7S3562C73v21Ev();
extern void _ZN7S3562C73v22Ev();
extern void _ZN7S3562C73v23Ev();
extern void _ZN7S3562C73v24Ev();
static  VTBL_ENTRY vtc_S3562C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C7[0]),
  (VTBL_ENTRY)&_ZN7S3562C73v19Ev,
  (VTBL_ENTRY)&_ZN7S3562C73v20Ev,
  (VTBL_ENTRY)&_ZN7S3562C73v21Ev,
  (VTBL_ENTRY)&_ZN7S3562C73v22Ev,
  (VTBL_ENTRY)&_ZN7S3562C73v23Ev,
  (VTBL_ENTRY)&_ZN7S3562C73v24Ev,
};
extern VTBL_ENTRY _ZTI7S3562C7[];
extern  VTBL_ENTRY _ZTV7S3562C7[];
Class_Descriptor cd_S3562C7 = {  "S3562C7", // class name
  0,0,//no base classes
  &(vtc_S3562C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3562C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3562C7),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  S3562C2  : S3562C3 {
  ::S3562C7 s3562c2f0[4];
  virtual  ~S3562C2(); // _ZN7S3562C2D2Ev
  virtual void  v14(); // _ZN7S3562C23v14Ev
  virtual void  v15(); // _ZN7S3562C23v15Ev
  virtual void  v16(); // _ZN7S3562C23v16Ev
  virtual void  v17(); // _ZN7S3562C23v17Ev
  virtual void  v18(); // _ZN7S3562C23v18Ev
  S3562C2(); // tgen
};
//SIG(-1 S3562C2) C1{ BC2{ VBC3{ VBC4{ v6} VBC5{ v7 v8 v9 v10 v11 Fp FC4} vd v12 v13 v14 Fp[6]} v15 v16 v17 FL} vd v1 v2 v3 v4 v5 FC6{ v18 v19 v20 v21 v22 v23 Fp Fs}[4]}


 S3562C2 ::~S3562C2(){ note_dtor("S3562C2", this);}
void  S3562C2 ::v14(){vfunc_called(this, "_ZN7S3562C23v14Ev");}
void  S3562C2 ::v15(){vfunc_called(this, "_ZN7S3562C23v15Ev");}
void  S3562C2 ::v16(){vfunc_called(this, "_ZN7S3562C23v16Ev");}
void  S3562C2 ::v17(){vfunc_called(this, "_ZN7S3562C23v17Ev");}
void  S3562C2 ::v18(){vfunc_called(this, "_ZN7S3562C23v18Ev");}
S3562C2 ::S3562C2(){ note_ctor("S3562C2", this);} // tgen

static void Test_S3562C2()
{
  extern Class_Descriptor cd_S3562C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,26)];
    init_test(&cd_S3562C2, buf);
    S3562C2 *dp, &lv = *(dp=new (buf) S3562C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,100), "sizeof(S3562C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3562C2)");
    check_base_class_offset(lv, (S3562C5*)(S3562C4*), 0, "S3562C2");
    check_base_class_offset(lv, (S3562C6*)(S3562C4*), ABISELECT(168,88), "S3562C2");
    check_base_class_offset(lv, (S3562C4*)(S3562C3*), ABISELECT(112,60), "S3562C2");
    check_base_class_offset(lv, (S3562C3*), 0, "S3562C2");
    check_field_offset(lv, s3562c2f0, ABISELECT(16,12), "S3562C2.s3562c2f0");
    test_class_info(&lv, &cd_S3562C2);
    dp->~S3562C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3562C2(Test_S3562C2, "S3562C2", ABISELECT(192,100));

#else // __cplusplus

extern void _ZN7S3562C2C1Ev();
extern void _ZN7S3562C2D2Ev();
Name_Map name_map_S3562C2[] = {
  NSPAIR(_ZN7S3562C2C1Ev),
  NSPAIR(_ZN7S3562C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3562C5;
extern VTBL_ENTRY _ZTI7S3562C5[];
extern  VTBL_ENTRY _ZTV7S3562C5[];
extern Class_Descriptor cd_S3562C6;
extern VTBL_ENTRY _ZTI7S3562C6[];
extern  VTBL_ENTRY _ZTV7S3562C6[];
extern Class_Descriptor cd_S3562C4;
extern VTBL_ENTRY _ZTI7S3562C4[];
extern  VTBL_ENTRY _ZTV7S3562C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3562C4[];
extern Class_Descriptor cd_S3562C3;
extern VTBL_ENTRY _ZTI7S3562C3[];
extern  VTBL_ENTRY _ZTV7S3562C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3562C3[];
static Base_Class bases_S3562C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3562C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3562C6,    ABISELECT(168,88), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3562C4,    ABISELECT(112,60), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3562C3,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3562C2[];
extern void _ZN7S3562C52v2Ev();
extern void _ZN7S3562C33v11Ev();
extern void _ZN7S3562C33v12Ev();
extern void _ZN7S3562C33v13Ev();
extern void _ZN7S3562C2D1Ev();
extern void _ZN7S3562C2D0Ev();
extern void _ZN7S3562C23v14Ev();
extern void _ZN7S3562C23v15Ev();
extern void _ZN7S3562C23v16Ev();
extern void _ZN7S3562C23v17Ev();
extern void _ZN7S3562C23v18Ev();
extern void _ZN7S3562C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3562C2D1Ev,_ZTv0_n24_N7S3562C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S3562C2D1Ev,_ZThn60_N7S3562C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3562C2D0Ev,_ZTv0_n24_N7S3562C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S3562C2D0Ev,_ZThn60_N7S3562C2D0Ev)() __attribute__((weak));
extern void _ZN7S3562C42v8Ev();
extern void _ZN7S3562C42v9Ev();
extern void _ZN7S3562C43v10Ev();
extern void _ZN7S3562C62v3Ev();
extern void _ZN7S3562C62v4Ev();
extern void _ZN7S3562C62v5Ev();
extern void _ZN7S3562C62v6Ev();
extern void _ZN7S3562C62v7Ev();
static  VTBL_ENTRY vtc_S3562C2[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C2[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3562C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3562C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v18Ev,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S3562C2[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C2D1Ev,_ZTv0_n24_N7S3562C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C2D0Ev,_ZTv0_n24_N7S3562C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3562C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3562C43v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3562C2[0]),
  (VTBL_ENTRY)&_ZN7S3562C62v3Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v7Ev,
};
extern VTBL_ENTRY _ZTV7S3562C2[];
extern void _ZN7S3562C52v2Ev();
extern void _ZN7S3562C33v11Ev();
extern void _ZN7S3562C33v12Ev();
extern void _ZN7S3562C33v13Ev();
extern void _ZN7S3562C3D1Ev();
extern void _ZN7S3562C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C3__7S3562C2[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C3[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3562C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3562C3D0Ev,
};
extern void _ZN7S3562C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3562C3D1Ev,_ZTv0_n24_N7S3562C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S3562C3D1Ev,_ZThn60_N7S3562C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3562C3D0Ev,_ZTv0_n24_N7S3562C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S3562C3D0Ev,_ZThn60_N7S3562C3D0Ev)() __attribute__((weak));
extern void _ZN7S3562C42v8Ev();
extern void _ZN7S3562C42v9Ev();
extern void _ZN7S3562C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C4__7S3562C3__7S3562C2[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S3562C3[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C3D1Ev,_ZTv0_n24_N7S3562C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C3D0Ev,_ZTv0_n24_N7S3562C3D0Ev),
  (VTBL_ENTRY)&_ZN7S3562C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3562C43v10Ev,
};
extern void _ZN7S3562C62v3Ev();
extern void _ZN7S3562C62v4Ev();
extern void _ZN7S3562C62v5Ev();
extern void _ZN7S3562C62v6Ev();
extern void _ZN7S3562C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C6__7S3562C3__7S3562C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3562C3[0]),
  (VTBL_ENTRY)&_ZN7S3562C62v3Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v7Ev,
};
extern void _ZN7S3562C52v2Ev();
extern void _ZN7S3562C4D1Ev();
extern void _ZN7S3562C4D0Ev();
extern void _ZN7S3562C42v8Ev();
extern void _ZN7S3562C42v9Ev();
extern void _ZN7S3562C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C4__7S3562C2[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C4[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3562C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3562C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3562C43v10Ev,
};
extern void _ZN7S3562C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C5__7S3562C4__7S3562C2[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S3562C4[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
};
extern void _ZN7S3562C62v3Ev();
extern void _ZN7S3562C62v4Ev();
extern void _ZN7S3562C62v5Ev();
extern void _ZN7S3562C62v6Ev();
extern void _ZN7S3562C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C6__7S3562C4__7S3562C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S3562C4[0]),
  (VTBL_ENTRY)&_ZN7S3562C62v3Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v7Ev,
};
static  VTT_ENTRY vtt_S3562C2[] = {
  {&(_ZTV7S3562C2[6]),  6,44},
  {&(_tg__ZTV7S3562C3__7S3562C2[6]),  6,12},
  {&(_tg__ZTV7S3562C4__7S3562C3__7S3562C2[9]),  9,15},
  {&(_tg__ZTV7S3562C3__7S3562C2[6]),  6,12},
  {&(_tg__ZTV7S3562C6__7S3562C3__7S3562C2[7]),  7,12},
  {&(_ZTV7S3562C2[26]),  26,44},
  {&(_ZTV7S3562C2[6]),  6,44},
  {&(_ZTV7S3562C2[39]),  39,44},
  {&(_tg__ZTV7S3562C4__7S3562C2[5]),  5,11},
  {&(_tg__ZTV7S3562C5__7S3562C4__7S3562C2[3]),  3,4},
  {&(_tg__ZTV7S3562C6__7S3562C4__7S3562C2[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S3562C2[];
extern  VTBL_ENTRY _ZTV7S3562C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3562C2[];
static VTBL_ENTRY alt_thunk_names197[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C3D0Ev,_ZTv0_n24_N7S3562C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3562C3D0Ev,_ZThn60_N7S3562C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C3D1Ev,_ZTv0_n24_N7S3562C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3562C3D1Ev,_ZThn60_N7S3562C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C2D0Ev,_ZTv0_n24_N7S3562C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3562C2D0Ev,_ZThn60_N7S3562C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C2D1Ev,_ZTv0_n24_N7S3562C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3562C2D1Ev,_ZThn60_N7S3562C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3562C2 = {  "S3562C2", // class name
  bases_S3562C2, 4,
  &(vtc_S3562C2[0]), // expected_vtbl_contents
  &(vtt_S3562C2[0]), // expected_vtt_contents
  ABISELECT(192,100), // object size
  NSPAIRA(_ZTI7S3562C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3562C2),44, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3562C2),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names197,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3562C1  : S3562C2 , virtual S3562C7 {
  virtual  ~S3562C1(); // _ZN7S3562C1D2Ev
  virtual void  v1(); // _ZN7S3562C12v1Ev
  S3562C1(); // tgen
};
//SIG(1 S3562C1) C1{ BC2{ BC3{ VBC4{ VBC5{ v2} VBC6{ v3 v4 v5 v6 v7 Fp FC5} vd v8 v9 v10 Fp[6]} v11 v12 v13 FL} vd v14 v15 v16 v17 v18 FC7{ v19 v20 v21 v22 v23 v24 Fp Fs}[4]} VBC7 vd v1}


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

static void Test_S3562C1()
{
  extern Class_Descriptor cd_S3562C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,29)];
    init_test(&cd_S3562C1, buf);
    S3562C1 *dp, &lv = *(dp=new (buf) S3562C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,112), "sizeof(S3562C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3562C1)");
    check_base_class_offset(lv, (S3562C5*)(S3562C4*), 0, "S3562C1");
    check_base_class_offset(lv, (S3562C6*)(S3562C4*), ABISELECT(168,88), "S3562C1");
    check_base_class_offset(lv, (S3562C4*)(S3562C3*)(S3562C2*), ABISELECT(112,60), "S3562C1");
    check_base_class_offset(lv, (S3562C3*)(S3562C2*), 0, "S3562C1");
    check_base_class_offset(lv, (S3562C2*), 0, "S3562C1");
    check_base_class_offset(lv, (S3562C7*), ABISELECT(192,100), "S3562C1");
    test_class_info(&lv, &cd_S3562C1);
    dp->~S3562C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3562C1(Test_S3562C1, "S3562C1", ABISELECT(216,112));

#else // __cplusplus

extern void _ZN7S3562C1C1Ev();
extern void _ZN7S3562C1D2Ev();
Name_Map name_map_S3562C1[] = {
  NSPAIR(_ZN7S3562C1C1Ev),
  NSPAIR(_ZN7S3562C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3562C5;
extern VTBL_ENTRY _ZTI7S3562C5[];
extern  VTBL_ENTRY _ZTV7S3562C5[];
extern Class_Descriptor cd_S3562C6;
extern VTBL_ENTRY _ZTI7S3562C6[];
extern  VTBL_ENTRY _ZTV7S3562C6[];
extern Class_Descriptor cd_S3562C4;
extern VTBL_ENTRY _ZTI7S3562C4[];
extern  VTBL_ENTRY _ZTV7S3562C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3562C4[];
extern Class_Descriptor cd_S3562C3;
extern VTBL_ENTRY _ZTI7S3562C3[];
extern  VTBL_ENTRY _ZTV7S3562C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3562C3[];
extern Class_Descriptor cd_S3562C2;
extern VTBL_ENTRY _ZTI7S3562C2[];
extern  VTBL_ENTRY _ZTV7S3562C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3562C2[];
extern Class_Descriptor cd_S3562C7;
extern VTBL_ENTRY _ZTI7S3562C7[];
extern  VTBL_ENTRY _ZTV7S3562C7[];
static Base_Class bases_S3562C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3562C5,    0, //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
    2, //immediately_derived
  0, 1},
  {&cd_S3562C6,    ABISELECT(168,88), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3562C4,    ABISELECT(112,60), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3562C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3562C2,    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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3562C7,    ABISELECT(192,100), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3562C1[];
extern void _ZN7S3562C52v2Ev();
extern void _ZN7S3562C33v11Ev();
extern void _ZN7S3562C33v12Ev();
extern void _ZN7S3562C33v13Ev();
extern void _ZN7S3562C1D1Ev();
extern void _ZN7S3562C1D0Ev();
extern void _ZN7S3562C23v14Ev();
extern void _ZN7S3562C23v15Ev();
extern void _ZN7S3562C23v16Ev();
extern void _ZN7S3562C23v17Ev();
extern void _ZN7S3562C23v18Ev();
extern void _ZN7S3562C12v1Ev();
extern void _ZN7S3562C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3562C1D1Ev,_ZTv0_n24_N7S3562C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S3562C1D1Ev,_ZThn60_N7S3562C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3562C1D0Ev,_ZTv0_n24_N7S3562C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S3562C1D0Ev,_ZThn60_N7S3562C1D0Ev)() __attribute__((weak));
extern void _ZN7S3562C42v8Ev();
extern void _ZN7S3562C42v9Ev();
extern void _ZN7S3562C43v10Ev();
extern void _ZN7S3562C62v3Ev();
extern void _ZN7S3562C62v4Ev();
extern void _ZN7S3562C62v5Ev();
extern void _ZN7S3562C62v6Ev();
extern void _ZN7S3562C62v7Ev();
extern void _ZN7S3562C73v19Ev();
extern void _ZN7S3562C73v20Ev();
extern void _ZN7S3562C73v21Ev();
extern void _ZN7S3562C73v22Ev();
extern void _ZN7S3562C73v23Ev();
extern void _ZN7S3562C73v24Ev();
static  VTBL_ENTRY vtc_S3562C1[] = {
  ABISELECT(192,100),
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C1[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3562C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3562C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3562C12v1Ev,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S3562C1[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C1D1Ev,_ZTv0_n24_N7S3562C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C1D0Ev,_ZTv0_n24_N7S3562C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3562C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3562C43v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3562C1[0]),
  (VTBL_ENTRY)&_ZN7S3562C62v3Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S3562C1[0]),
  (VTBL_ENTRY)&_ZN7S3562C73v19Ev,
  (VTBL_ENTRY)&_ZN7S3562C73v20Ev,
  (VTBL_ENTRY)&_ZN7S3562C73v21Ev,
  (VTBL_ENTRY)&_ZN7S3562C73v22Ev,
  (VTBL_ENTRY)&_ZN7S3562C73v23Ev,
  (VTBL_ENTRY)&_ZN7S3562C73v24Ev,
};
extern VTBL_ENTRY _ZTV7S3562C1[];
extern void _ZN7S3562C52v2Ev();
extern void _ZN7S3562C33v11Ev();
extern void _ZN7S3562C33v12Ev();
extern void _ZN7S3562C33v13Ev();
extern void _ZN7S3562C2D1Ev();
extern void _ZN7S3562C2D0Ev();
extern void _ZN7S3562C23v14Ev();
extern void _ZN7S3562C23v15Ev();
extern void _ZN7S3562C23v16Ev();
extern void _ZN7S3562C23v17Ev();
extern void _ZN7S3562C23v18Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C2__7S3562C1[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C2[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3562C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3562C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3562C23v18Ev,
};
extern void _ZN7S3562C52v2Ev();
extern void _ZN7S3562C33v11Ev();
extern void _ZN7S3562C33v12Ev();
extern void _ZN7S3562C33v13Ev();
extern void _ZN7S3562C3D1Ev();
extern void _ZN7S3562C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C37S3562C2__7S3562C1[] = {
  ABISELECT(168,88),
  0,
  ABISELECT(112,60),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C3[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3562C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3562C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3562C3D0Ev,
};
extern void _ZN7S3562C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3562C3D1Ev,_ZTv0_n24_N7S3562C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S3562C3D1Ev,_ZThn60_N7S3562C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3562C3D0Ev,_ZTv0_n24_N7S3562C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S3562C3D0Ev,_ZThn60_N7S3562C3D0Ev)() __attribute__((weak));
extern void _ZN7S3562C42v8Ev();
extern void _ZN7S3562C42v9Ev();
extern void _ZN7S3562C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C4__7S3562C37S3562C2__7S3562C1[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S3562C3[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C3D1Ev,_ZTv0_n24_N7S3562C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C3D0Ev,_ZTv0_n24_N7S3562C3D0Ev),
  (VTBL_ENTRY)&_ZN7S3562C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3562C43v10Ev,
};
extern void _ZN7S3562C62v3Ev();
extern void _ZN7S3562C62v4Ev();
extern void _ZN7S3562C62v5Ev();
extern void _ZN7S3562C62v6Ev();
extern void _ZN7S3562C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C6__7S3562C37S3562C2__7S3562C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3562C3[0]),
  (VTBL_ENTRY)&_ZN7S3562C62v3Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v7Ev,
};
extern void _ZN7S3562C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3562C2D1Ev,_ZTv0_n24_N7S3562C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S3562C2D1Ev,_ZThn60_N7S3562C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3562C2D0Ev,_ZTv0_n24_N7S3562C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S3562C2D0Ev,_ZThn60_N7S3562C2D0Ev)() __attribute__((weak));
extern void _ZN7S3562C42v8Ev();
extern void _ZN7S3562C42v9Ev();
extern void _ZN7S3562C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C4__7S3562C2__7S3562C1[] = {
  0,
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S3562C2[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C2D1Ev,_ZTv0_n24_N7S3562C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3562C2D0Ev,_ZTv0_n24_N7S3562C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3562C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3562C43v10Ev,
};
extern void _ZN7S3562C62v3Ev();
extern void _ZN7S3562C62v4Ev();
extern void _ZN7S3562C62v5Ev();
extern void _ZN7S3562C62v6Ev();
extern void _ZN7S3562C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C6__7S3562C2__7S3562C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI7S3562C2[0]),
  (VTBL_ENTRY)&_ZN7S3562C62v3Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v7Ev,
};
extern void _ZN7S3562C52v2Ev();
extern void _ZN7S3562C4D1Ev();
extern void _ZN7S3562C4D0Ev();
extern void _ZN7S3562C42v8Ev();
extern void _ZN7S3562C42v9Ev();
extern void _ZN7S3562C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C4__7S3562C1[] = {
  ABISELECT(56,28),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S3562C4[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3562C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3562C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3562C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3562C43v10Ev,
};
extern void _ZN7S3562C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C5__7S3562C4__7S3562C1[] = {
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S3562C4[0]),
  (VTBL_ENTRY)&_ZN7S3562C52v2Ev,
};
extern void _ZN7S3562C62v3Ev();
extern void _ZN7S3562C62v4Ev();
extern void _ZN7S3562C62v5Ev();
extern void _ZN7S3562C62v6Ev();
extern void _ZN7S3562C62v7Ev();
static  VTBL_ENTRY _tg__ZTV7S3562C6__7S3562C4__7S3562C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S3562C4[0]),
  (VTBL_ENTRY)&_ZN7S3562C62v3Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v4Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v5Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v6Ev,
  (VTBL_ENTRY)&_ZN7S3562C62v7Ev,
};
static  VTT_ENTRY vtt_S3562C1[] = {
  {&(_ZTV7S3562C1[7]),  7,60},
  {&(_tg__ZTV7S3562C2__7S3562C1[6]),  6,17},
  {&(_tg__ZTV7S3562C37S3562C2__7S3562C1[6]),  6,12},
  {&(_tg__ZTV7S3562C4__7S3562C37S3562C2__7S3562C1[9]),  9,15},
  {&(_tg__ZTV7S3562C37S3562C2__7S3562C1[6]),  6,12},
  {&(_tg__ZTV7S3562C6__7S3562C37S3562C2__7S3562C1[7]),  7,12},
  {&(_tg__ZTV7S3562C4__7S3562C2__7S3562C1[9]),  9,15},
  {&(_tg__ZTV7S3562C2__7S3562C1[6]),  6,17},
  {&(_tg__ZTV7S3562C6__7S3562C2__7S3562C1[7]),  7,12},
  {&(_ZTV7S3562C1[28]),  28,60},
  {&(_ZTV7S3562C1[7]),  7,60},
  {&(_ZTV7S3562C1[41]),  41,60},
  {&(_ZTV7S3562C1[54]),  54,60},
  {&(_tg__ZTV7S3562C4__7S3562C1[5]),  5,11},
  {&(_tg__ZTV7S3562C5__7S3562C4__7S3562C1[3]),  3,4},
  {&(_tg__ZTV7S3562C6__7S3562C4__7S3562C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI7S3562C1[];
extern  VTBL_ENTRY _ZTV7S3562C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3562C1[];
static VTBL_ENTRY alt_thunk_names198[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C2D0Ev,_ZTv0_n24_N7S3562C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3562C2D0Ev,_ZThn60_N7S3562C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C2D1Ev,_ZTv0_n24_N7S3562C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3562C2D1Ev,_ZThn60_N7S3562C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C3D0Ev,_ZTv0_n24_N7S3562C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3562C3D0Ev,_ZThn60_N7S3562C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C3D1Ev,_ZTv0_n24_N7S3562C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3562C3D1Ev,_ZThn60_N7S3562C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C1D0Ev,_ZTv0_n24_N7S3562C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3562C1D0Ev,_ZThn60_N7S3562C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3562C1D1Ev,_ZTv0_n24_N7S3562C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3562C1D1Ev,_ZThn60_N7S3562C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3562C1 = {  "S3562C1", // class name
  bases_S3562C1, 6,
  &(vtc_S3562C1[0]), // expected_vtbl_contents
  &(vtt_S3562C1[0]), // expected_vtt_contents
  ABISELECT(216,112), // object size
  NSPAIRA(_ZTI7S3562C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3562C1),60, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3562C1),16, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names198,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19456C6  {
  int s19456c6f0;
  virtual void  v4(); // _ZN8S19456C62v4Ev
  virtual void  v5(); // _ZN8S19456C62v5Ev
  virtual void  v6(); // _ZN8S19456C62v6Ev
  virtual void  v7(); // _ZN8S19456C62v7Ev
  virtual void  v8(); // _ZN8S19456C62v8Ev
  ~S19456C6(); // tgen
  S19456C6(); // tgen
};
//SIG(-1 S19456C6) C1{ v1 v2 v3 v4 v5 Fi}


void  S19456C6 ::v4(){vfunc_called(this, "_ZN8S19456C62v4Ev");}
void  S19456C6 ::v5(){vfunc_called(this, "_ZN8S19456C62v5Ev");}
void  S19456C6 ::v6(){vfunc_called(this, "_ZN8S19456C62v6Ev");}
void  S19456C6 ::v7(){vfunc_called(this, "_ZN8S19456C62v7Ev");}
void  S19456C6 ::v8(){vfunc_called(this, "_ZN8S19456C62v8Ev");}
S19456C6 ::~S19456C6(){ note_dtor("S19456C6", this);} // tgen
S19456C6 ::S19456C6(){ note_ctor("S19456C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19456C6C1Ev();
extern void _ZN8S19456C6D1Ev();
Name_Map name_map_S19456C6[] = {
  NSPAIR(_ZN8S19456C6C1Ev),
  NSPAIR(_ZN8S19456C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19456C6[];
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
static  VTBL_ENTRY vtc_S19456C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C6[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
};
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
Class_Descriptor cd_S19456C6 = {  "S19456C6", // class name
  0,0,//no base classes
  &(vtc_S19456C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19456C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19456C6),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19456C7  : S19456C6 {
  virtual void  v9(); // _ZN8S19456C72v9Ev
  virtual void  v10(); // _ZN8S19456C73v10Ev
  ~S19456C7(); // tgen
  S19456C7(); // tgen
};
//SIG(-1 S19456C7) C1{ BC2{ v3 v4 v5 v6 v7 Fi} v1 v2}


void  S19456C7 ::v9(){vfunc_called(this, "_ZN8S19456C72v9Ev");}
void  S19456C7 ::v10(){vfunc_called(this, "_ZN8S19456C73v10Ev");}
S19456C7 ::~S19456C7(){ note_dtor("S19456C7", this);} // tgen
S19456C7 ::S19456C7(){ note_ctor("S19456C7", this);} // tgen

static void Test_S19456C7()
{
  extern Class_Descriptor cd_S19456C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19456C7, buf);
    S19456C7 *dp, &lv = *(dp=new (buf) S19456C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19456C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19456C7)");
    check_base_class_offset(lv, (S19456C6*), 0, "S19456C7");
    test_class_info(&lv, &cd_S19456C7);
    dp->~S19456C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19456C7(Test_S19456C7, "S19456C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19456C7C1Ev();
extern void _ZN8S19456C7D1Ev();
Name_Map name_map_S19456C7[] = {
  NSPAIR(_ZN8S19456C7C1Ev),
  NSPAIR(_ZN8S19456C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19456C6;
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
static Base_Class bases_S19456C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19456C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19456C7[];
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY vtc_S19456C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C7[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern VTBL_ENTRY _ZTI8S19456C7[];
extern  VTBL_ENTRY _ZTV8S19456C7[];
Class_Descriptor cd_S19456C7 = {  "S19456C7", // class name
  bases_S19456C7, 1,
  &(vtc_S19456C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19456C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19456C7),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19456C5  : virtual S19456C6 , virtual S19456C7 {
  void *s19456c5f0;
  virtual void  v11(); // _ZN8S19456C53v11Ev
  virtual void  v12(); // _ZN8S19456C53v12Ev
  virtual void  v13(); // _ZN8S19456C53v13Ev
  ~S19456C5(); // tgen
  S19456C5(); // tgen
};
//SIG(-1 S19456C5) C1{ VBC2{ v4 v5 v6 v7 v8 Fi} VBC3{ BC2 v9 v10} v1 v2 v3 Fp}


void  S19456C5 ::v11(){vfunc_called(this, "_ZN8S19456C53v11Ev");}
void  S19456C5 ::v12(){vfunc_called(this, "_ZN8S19456C53v12Ev");}
void  S19456C5 ::v13(){vfunc_called(this, "_ZN8S19456C53v13Ev");}
S19456C5 ::~S19456C5(){ note_dtor("S19456C5", this);} // tgen
S19456C5 ::S19456C5(){ note_ctor("S19456C5", this);} // tgen

static void Test_S19456C5()
{
  extern Class_Descriptor cd_S19456C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S19456C5, buf);
    S19456C5 *dp, &lv = *(dp=new (buf) S19456C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19456C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19456C5)");
    /*is_ambiguous_... S19456C5::S19456C6 */ AMB_check_base_class_offset(lv, (S19456C6*), ABISELECT(16,8), "S19456C5");
    check_base_class_offset(lv, (S19456C6*)(S19456C7*), ABISELECT(32,16), "S19456C5");
    check_base_class_offset(lv, (S19456C7*), ABISELECT(32,16), "S19456C5");
    check_field_offset(lv, s19456c5f0, ABISELECT(8,4), "S19456C5.s19456c5f0");
    test_class_info(&lv, &cd_S19456C5);
    dp->~S19456C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19456C5(Test_S19456C5, "S19456C5", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S19456C5C1Ev();
extern void _ZN8S19456C5D1Ev();
Name_Map name_map_S19456C5[] = {
  NSPAIR(_ZN8S19456C5C1Ev),
  NSPAIR(_ZN8S19456C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19456C6;
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
extern Class_Descriptor cd_S19456C6;
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
extern Class_Descriptor cd_S19456C7;
extern VTBL_ENTRY _ZTI8S19456C7[];
extern  VTBL_ENTRY _ZTV8S19456C7[];
static Base_Class bases_S19456C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19456C6,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19456C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19456C7,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19456C5[];
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY vtc_S19456C5[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern VTBL_ENTRY _ZTV8S19456C5[];
static  VTT_ENTRY vtt_S19456C5[] = {
  {&(_ZTV8S19456C5[4]),  4,35},
  {&(_ZTV8S19456C5[14]),  14,35},
  {&(_ZTV8S19456C5[28]),  28,35},
};
extern VTBL_ENTRY _ZTI8S19456C5[];
extern  VTBL_ENTRY _ZTV8S19456C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C5[];
Class_Descriptor cd_S19456C5 = {  "S19456C5", // class name
  bases_S19456C5, 3,
  &(vtc_S19456C5[0]), // expected_vtbl_contents
  &(vtt_S19456C5[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S19456C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19456C5),35, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19456C5),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19456C4  : S19456C5 {
  int s19456c4f0[5];
  virtual void  v14(); // _ZN8S19456C43v14Ev
  virtual void  v15(); // _ZN8S19456C43v15Ev
  virtual void  v16(); // _ZN8S19456C43v16Ev
  virtual void  v17(); // _ZN8S19456C43v17Ev
  ~S19456C4(); // tgen
  S19456C4(); // tgen
};
//SIG(-1 S19456C4) C1{ BC2{ VBC3{ v5 v6 v7 v8 v9 Fi} VBC4{ BC3 v10 v11} v12 v13 v14 Fp} v1 v2 v3 v4 Fi[5]}


void  S19456C4 ::v14(){vfunc_called(this, "_ZN8S19456C43v14Ev");}
void  S19456C4 ::v15(){vfunc_called(this, "_ZN8S19456C43v15Ev");}
void  S19456C4 ::v16(){vfunc_called(this, "_ZN8S19456C43v16Ev");}
void  S19456C4 ::v17(){vfunc_called(this, "_ZN8S19456C43v17Ev");}
S19456C4 ::~S19456C4(){ note_dtor("S19456C4", this);} // tgen
S19456C4 ::S19456C4(){ note_ctor("S19456C4", this);} // tgen

static void Test_S19456C4()
{
  extern Class_Descriptor cd_S19456C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S19456C4, buf);
    S19456C4 *dp, &lv = *(dp=new (buf) S19456C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S19456C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19456C4)");
    /*is_ambiguous_... S19456C5::S19456C6 */ AMB_check_base_class_offset(lv, (S19456C6*)(S19456C5*), ABISELECT(40,28), "S19456C4");
    check_base_class_offset(lv, (S19456C6*)(S19456C7*), ABISELECT(56,36), "S19456C4");
    check_base_class_offset(lv, (S19456C7*)(S19456C5*), ABISELECT(56,36), "S19456C4");
    check_base_class_offset(lv, (S19456C5*), 0, "S19456C4");
    check_field_offset(lv, s19456c4f0, ABISELECT(16,8), "S19456C4.s19456c4f0");
    test_class_info(&lv, &cd_S19456C4);
    dp->~S19456C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19456C4(Test_S19456C4, "S19456C4", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S19456C4C1Ev();
extern void _ZN8S19456C4D1Ev();
Name_Map name_map_S19456C4[] = {
  NSPAIR(_ZN8S19456C4C1Ev),
  NSPAIR(_ZN8S19456C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19456C6;
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
extern Class_Descriptor cd_S19456C6;
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
extern Class_Descriptor cd_S19456C7;
extern VTBL_ENTRY _ZTI8S19456C7[];
extern  VTBL_ENTRY _ZTV8S19456C7[];
extern Class_Descriptor cd_S19456C5;
extern VTBL_ENTRY _ZTI8S19456C5[];
extern  VTBL_ENTRY _ZTV8S19456C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C5[];
static Base_Class bases_S19456C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19456C6,    ABISELECT(40,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19456C6,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19456C7,    ABISELECT(56,36), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19456C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19456C4[];
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
extern void _ZN8S19456C43v14Ev();
extern void _ZN8S19456C43v15Ev();
extern void _ZN8S19456C43v16Ev();
extern void _ZN8S19456C43v17Ev();
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY vtc_S19456C4[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v17Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern VTBL_ENTRY _ZTV8S19456C4[];
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C5__8S19456C4[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C6__8S19456C5__8S19456C4[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C7__8S19456C5__8S19456C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
static  VTT_ENTRY vtt_S19456C4[] = {
  {&(_ZTV8S19456C4[4]),  4,39},
  {&(_tg__ZTV8S19456C5__8S19456C4[4]),  4,7},
  {&(_tg__ZTV8S19456C6__8S19456C5__8S19456C4[7]),  7,12},
  {&(_tg__ZTV8S19456C7__8S19456C5__8S19456C4[9]),  9,16},
  {&(_ZTV8S19456C4[18]),  18,39},
  {&(_ZTV8S19456C4[32]),  32,39},
};
extern VTBL_ENTRY _ZTI8S19456C4[];
extern  VTBL_ENTRY _ZTV8S19456C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C4[];
Class_Descriptor cd_S19456C4 = {  "S19456C4", // class name
  bases_S19456C4, 4,
  &(vtc_S19456C4[0]), // expected_vtbl_contents
  &(vtt_S19456C4[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S19456C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19456C4),39, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19456C4),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19456C3  : virtual S19456C4 {
  virtual void  v18(); // _ZN8S19456C33v18Ev
  virtual void  v19(); // _ZN8S19456C33v19Ev
  virtual void  v20(); // _ZN8S19456C33v20Ev
  virtual void  v21(); // _ZN8S19456C33v21Ev
  virtual void  v22(); // _ZN8S19456C33v22Ev
  virtual void  v23(); // _ZN8S19456C33v23Ev
  ~S19456C3(); // tgen
  S19456C3(); // tgen
};
//SIG(-1 S19456C3) C1{ VBC2{ BC3{ VBC4{ v7 v8 v9 v10 v11 Fi} VBC5{ BC4 v12 v13} v14 v15 v16 Fp} v17 v18 v19 v20 Fi[5]} v1 v2 v3 v4 v5 v6}


void  S19456C3 ::v18(){vfunc_called(this, "_ZN8S19456C33v18Ev");}
void  S19456C3 ::v19(){vfunc_called(this, "_ZN8S19456C33v19Ev");}
void  S19456C3 ::v20(){vfunc_called(this, "_ZN8S19456C33v20Ev");}
void  S19456C3 ::v21(){vfunc_called(this, "_ZN8S19456C33v21Ev");}
void  S19456C3 ::v22(){vfunc_called(this, "_ZN8S19456C33v22Ev");}
void  S19456C3 ::v23(){vfunc_called(this, "_ZN8S19456C33v23Ev");}
S19456C3 ::~S19456C3(){ note_dtor("S19456C3", this);} // tgen
S19456C3 ::S19456C3(){ note_ctor("S19456C3", this);} // tgen

static void Test_S19456C3()
{
  extern Class_Descriptor cd_S19456C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S19456C3, buf);
    S19456C3 *dp, &lv = *(dp=new (buf) S19456C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19456C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19456C3)");
    /*is_ambiguous_... S19456C5::S19456C6 */ AMB_check_base_class_offset(lv, (S19456C6*)(S19456C5*)(S19456C4*), ABISELECT(48,32), "S19456C3");
    check_base_class_offset(lv, (S19456C6*)(S19456C7*), ABISELECT(64,40), "S19456C3");
    check_base_class_offset(lv, (S19456C7*)(S19456C5*)(S19456C4*), ABISELECT(64,40), "S19456C3");
    check_base_class_offset(lv, (S19456C5*)(S19456C4*), ABISELECT(8,4), "S19456C3");
    check_base_class_offset(lv, (S19456C4*), ABISELECT(8,4), "S19456C3");
    test_class_info(&lv, &cd_S19456C3);
    dp->~S19456C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19456C3(Test_S19456C3, "S19456C3", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S19456C3C1Ev();
extern void _ZN8S19456C3D1Ev();
Name_Map name_map_S19456C3[] = {
  NSPAIR(_ZN8S19456C3C1Ev),
  NSPAIR(_ZN8S19456C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19456C6;
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
extern Class_Descriptor cd_S19456C6;
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
extern Class_Descriptor cd_S19456C7;
extern VTBL_ENTRY _ZTI8S19456C7[];
extern  VTBL_ENTRY _ZTV8S19456C7[];
extern Class_Descriptor cd_S19456C5;
extern VTBL_ENTRY _ZTI8S19456C5[];
extern  VTBL_ENTRY _ZTV8S19456C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C5[];
extern Class_Descriptor cd_S19456C4;
extern VTBL_ENTRY _ZTI8S19456C4[];
extern  VTBL_ENTRY _ZTV8S19456C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C4[];
static Base_Class bases_S19456C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19456C6,    ABISELECT(48,32), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19456C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19456C7,    ABISELECT(64,40), //bcp->offset
    41, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19456C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19456C4,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19456C3[];
extern void _ZN8S19456C33v18Ev();
extern void _ZN8S19456C33v19Ev();
extern void _ZN8S19456C33v20Ev();
extern void _ZN8S19456C33v21Ev();
extern void _ZN8S19456C33v22Ev();
extern void _ZN8S19456C33v23Ev();
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
extern void _ZN8S19456C43v14Ev();
extern void _ZN8S19456C43v15Ev();
extern void _ZN8S19456C43v16Ev();
extern void _ZN8S19456C43v17Ev();
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY vtc_S19456C3[] = {
  ABISELECT(64,40),
  ABISELECT(48,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v23Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v17Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern VTBL_ENTRY _ZTV8S19456C3[];
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
extern void _ZN8S19456C43v14Ev();
extern void _ZN8S19456C43v15Ev();
extern void _ZN8S19456C43v16Ev();
extern void _ZN8S19456C43v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C4__8S19456C3[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v17Ev,
};
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C58S19456C4__8S19456C3[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C6__8S19456C58S19456C4__8S19456C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C7__8S19456C58S19456C4__8S19456C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C6__8S19456C4__8S19456C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C7__8S19456C4__8S19456C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
static  VTT_ENTRY vtt_S19456C3[] = {
  {&(_ZTV8S19456C3[5]),  5,57},
  {&(_ZTV8S19456C3[22]),  22,57},
  {&(_ZTV8S19456C3[36]),  36,57},
  {&(_ZTV8S19456C3[50]),  50,57},
  {&(_tg__ZTV8S19456C4__8S19456C3[4]),  4,11},
  {&(_tg__ZTV8S19456C58S19456C4__8S19456C3[4]),  4,7},
  {&(_tg__ZTV8S19456C6__8S19456C58S19456C4__8S19456C3[7]),  7,12},
  {&(_tg__ZTV8S19456C7__8S19456C58S19456C4__8S19456C3[9]),  9,16},
  {&(_tg__ZTV8S19456C6__8S19456C4__8S19456C3[7]),  7,12},
  {&(_tg__ZTV8S19456C7__8S19456C4__8S19456C3[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S19456C3[];
extern  VTBL_ENTRY _ZTV8S19456C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C3[];
Class_Descriptor cd_S19456C3 = {  "S19456C3", // class name
  bases_S19456C3, 5,
  &(vtc_S19456C3[0]), // expected_vtbl_contents
  &(vtt_S19456C3[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S19456C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19456C3),57, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19456C3),10, //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  S19456C2  : S19456C3 {
  virtual void  v24(); // _ZN8S19456C23v24Ev
  virtual void  v25(); // _ZN8S19456C23v25Ev
  virtual void  v26(); // _ZN8S19456C23v26Ev
  virtual void  v27(); // _ZN8S19456C23v27Ev
  virtual void  v28(); // _ZN8S19456C23v28Ev
  ~S19456C2(); // tgen
  S19456C2(); // tgen
};
//SIG(-1 S19456C2) C1{ BC2{ VBC3{ BC4{ VBC5{ v6 v7 v8 v9 v10 Fi} VBC6{ BC5 v11 v12} v13 v14 v15 Fp} v16 v17 v18 v19 Fi[5]} v20 v21 v22 v23 v24 v25} v1 v2 v3 v4 v5}


void  S19456C2 ::v24(){vfunc_called(this, "_ZN8S19456C23v24Ev");}
void  S19456C2 ::v25(){vfunc_called(this, "_ZN8S19456C23v25Ev");}
void  S19456C2 ::v26(){vfunc_called(this, "_ZN8S19456C23v26Ev");}
void  S19456C2 ::v27(){vfunc_called(this, "_ZN8S19456C23v27Ev");}
void  S19456C2 ::v28(){vfunc_called(this, "_ZN8S19456C23v28Ev");}
S19456C2 ::~S19456C2(){ note_dtor("S19456C2", this);} // tgen
S19456C2 ::S19456C2(){ note_ctor("S19456C2", this);} // tgen

static void Test_S19456C2()
{
  extern Class_Descriptor cd_S19456C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S19456C2, buf);
    S19456C2 *dp, &lv = *(dp=new (buf) S19456C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19456C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19456C2)");
    /*is_ambiguous_... S19456C5::S19456C6 */ AMB_check_base_class_offset(lv, (S19456C6*)(S19456C5*)(S19456C4*), ABISELECT(48,32), "S19456C2");
    check_base_class_offset(lv, (S19456C6*)(S19456C7*), ABISELECT(64,40), "S19456C2");
    check_base_class_offset(lv, (S19456C7*)(S19456C5*)(S19456C4*), ABISELECT(64,40), "S19456C2");
    check_base_class_offset(lv, (S19456C5*)(S19456C4*), ABISELECT(8,4), "S19456C2");
    check_base_class_offset(lv, (S19456C4*)(S19456C3*), ABISELECT(8,4), "S19456C2");
    check_base_class_offset(lv, (S19456C3*), 0, "S19456C2");
    test_class_info(&lv, &cd_S19456C2);
    dp->~S19456C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19456C2(Test_S19456C2, "S19456C2", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S19456C2C1Ev();
extern void _ZN8S19456C2D1Ev();
Name_Map name_map_S19456C2[] = {
  NSPAIR(_ZN8S19456C2C1Ev),
  NSPAIR(_ZN8S19456C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19456C6;
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
extern Class_Descriptor cd_S19456C6;
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
extern Class_Descriptor cd_S19456C7;
extern VTBL_ENTRY _ZTI8S19456C7[];
extern  VTBL_ENTRY _ZTV8S19456C7[];
extern Class_Descriptor cd_S19456C5;
extern VTBL_ENTRY _ZTI8S19456C5[];
extern  VTBL_ENTRY _ZTV8S19456C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C5[];
extern Class_Descriptor cd_S19456C4;
extern VTBL_ENTRY _ZTI8S19456C4[];
extern  VTBL_ENTRY _ZTV8S19456C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C4[];
extern Class_Descriptor cd_S19456C3;
extern VTBL_ENTRY _ZTI8S19456C3[];
extern  VTBL_ENTRY _ZTV8S19456C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C3[];
static Base_Class bases_S19456C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19456C6,    ABISELECT(48,32), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19456C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19456C7,    ABISELECT(64,40), //bcp->offset
    46, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19456C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19456C4,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19456C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19456C2[];
extern void _ZN8S19456C33v18Ev();
extern void _ZN8S19456C33v19Ev();
extern void _ZN8S19456C33v20Ev();
extern void _ZN8S19456C33v21Ev();
extern void _ZN8S19456C33v22Ev();
extern void _ZN8S19456C33v23Ev();
extern void _ZN8S19456C23v24Ev();
extern void _ZN8S19456C23v25Ev();
extern void _ZN8S19456C23v26Ev();
extern void _ZN8S19456C23v27Ev();
extern void _ZN8S19456C23v28Ev();
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
extern void _ZN8S19456C43v14Ev();
extern void _ZN8S19456C43v15Ev();
extern void _ZN8S19456C43v16Ev();
extern void _ZN8S19456C43v17Ev();
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY vtc_S19456C2[] = {
  ABISELECT(64,40),
  ABISELECT(48,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C2[0]),
  (VTBL_ENTRY)&_ZN8S19456C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v24Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v25Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v26Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v27Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v28Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19456C2[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v17Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19456C2[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19456C2[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern VTBL_ENTRY _ZTV8S19456C2[];
extern void _ZN8S19456C33v18Ev();
extern void _ZN8S19456C33v19Ev();
extern void _ZN8S19456C33v20Ev();
extern void _ZN8S19456C33v21Ev();
extern void _ZN8S19456C33v22Ev();
extern void _ZN8S19456C33v23Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C3__8S19456C2[] = {
  ABISELECT(64,40),
  ABISELECT(48,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v23Ev,
};
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
extern void _ZN8S19456C43v14Ev();
extern void _ZN8S19456C43v15Ev();
extern void _ZN8S19456C43v16Ev();
extern void _ZN8S19456C43v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C4__8S19456C3__8S19456C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v17Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C6__8S19456C3__8S19456C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C7__8S19456C3__8S19456C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
extern void _ZN8S19456C43v14Ev();
extern void _ZN8S19456C43v15Ev();
extern void _ZN8S19456C43v16Ev();
extern void _ZN8S19456C43v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C4__8S19456C2[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v17Ev,
};
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C58S19456C4__8S19456C2[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C6__8S19456C58S19456C4__8S19456C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C7__8S19456C58S19456C4__8S19456C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C6__8S19456C4__8S19456C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C7__8S19456C4__8S19456C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
static  VTT_ENTRY vtt_S19456C2[] = {
  {&(_ZTV8S19456C2[5]),  5,62},
  {&(_tg__ZTV8S19456C3__8S19456C2[5]),  5,11},
  {&(_tg__ZTV8S19456C4__8S19456C3__8S19456C2[11]),  11,18},
  {&(_tg__ZTV8S19456C6__8S19456C3__8S19456C2[7]),  7,12},
  {&(_tg__ZTV8S19456C7__8S19456C3__8S19456C2[9]),  9,16},
  {&(_ZTV8S19456C2[27]),  27,62},
  {&(_ZTV8S19456C2[41]),  41,62},
  {&(_ZTV8S19456C2[55]),  55,62},
  {&(_tg__ZTV8S19456C4__8S19456C2[4]),  4,11},
  {&(_tg__ZTV8S19456C58S19456C4__8S19456C2[4]),  4,7},
  {&(_tg__ZTV8S19456C6__8S19456C58S19456C4__8S19456C2[7]),  7,12},
  {&(_tg__ZTV8S19456C7__8S19456C58S19456C4__8S19456C2[9]),  9,16},
  {&(_tg__ZTV8S19456C6__8S19456C4__8S19456C2[7]),  7,12},
  {&(_tg__ZTV8S19456C7__8S19456C4__8S19456C2[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S19456C2[];
extern  VTBL_ENTRY _ZTV8S19456C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C2[];
Class_Descriptor cd_S19456C2 = {  "S19456C2", // class name
  bases_S19456C2, 6,
  &(vtc_S19456C2[0]), // expected_vtbl_contents
  &(vtt_S19456C2[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S19456C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19456C2),62, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19456C2),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19456C1  : virtual S19456C2 {
  void *s19456c1f0[5];
  virtual void  v1(); // _ZN8S19456C12v1Ev
  virtual void  v2(); // _ZN8S19456C12v2Ev
  virtual void  v3(); // _ZN8S19456C12v3Ev
  ~S19456C1(); // tgen
  S19456C1(); // tgen
};
//SIG(1 S19456C1) C1{ VBC2{ BC3{ VBC4{ BC5{ VBC6{ v4 v5 v6 v7 v8 Fi} VBC7{ BC6 v9 v10} v11 v12 v13 Fp} v14 v15 v16 v17 Fi[5]} v18 v19 v20 v21 v22 v23} v24 v25 v26 v27 v28} v1 v2 v3 Fp[5]}


void  S19456C1 ::v1(){vfunc_called(this, "_ZN8S19456C12v1Ev");}
void  S19456C1 ::v2(){vfunc_called(this, "_ZN8S19456C12v2Ev");}
void  S19456C1 ::v3(){vfunc_called(this, "_ZN8S19456C12v3Ev");}
S19456C1 ::~S19456C1(){ note_dtor("S19456C1", this);} // tgen
S19456C1 ::S19456C1(){ note_ctor("S19456C1", this);} // tgen

static void Test_S19456C1()
{
  extern Class_Descriptor cd_S19456C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,18)];
    init_test(&cd_S19456C1, buf);
    S19456C1 *dp, &lv = *(dp=new (buf) S19456C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S19456C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19456C1)");
    /*is_ambiguous_... S19456C5::S19456C6 */ AMB_check_base_class_offset(lv, (S19456C6*)(S19456C5*)(S19456C4*), ABISELECT(88,52), "S19456C1");
    check_base_class_offset(lv, (S19456C6*)(S19456C7*), ABISELECT(104,60), "S19456C1");
    check_base_class_offset(lv, (S19456C7*)(S19456C5*)(S19456C4*), ABISELECT(104,60), "S19456C1");
    check_base_class_offset(lv, (S19456C5*)(S19456C4*), ABISELECT(48,24), "S19456C1");
    check_base_class_offset(lv, (S19456C4*)(S19456C3*)(S19456C2*), ABISELECT(48,24), "S19456C1");
    check_base_class_offset(lv, (S19456C3*)(S19456C2*), 0, "S19456C1");
    check_base_class_offset(lv, (S19456C2*), 0, "S19456C1");
    check_field_offset(lv, s19456c1f0, ABISELECT(8,4), "S19456C1.s19456c1f0");
    test_class_info(&lv, &cd_S19456C1);
    dp->~S19456C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19456C1(Test_S19456C1, "S19456C1", ABISELECT(120,68));

#else // __cplusplus

extern void _ZN8S19456C1C1Ev();
extern void _ZN8S19456C1D1Ev();
Name_Map name_map_S19456C1[] = {
  NSPAIR(_ZN8S19456C1C1Ev),
  NSPAIR(_ZN8S19456C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19456C6;
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
extern Class_Descriptor cd_S19456C6;
extern VTBL_ENTRY _ZTI8S19456C6[];
extern  VTBL_ENTRY _ZTV8S19456C6[];
extern Class_Descriptor cd_S19456C7;
extern VTBL_ENTRY _ZTI8S19456C7[];
extern  VTBL_ENTRY _ZTV8S19456C7[];
extern Class_Descriptor cd_S19456C5;
extern VTBL_ENTRY _ZTI8S19456C5[];
extern  VTBL_ENTRY _ZTV8S19456C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C5[];
extern Class_Descriptor cd_S19456C4;
extern VTBL_ENTRY _ZTI8S19456C4[];
extern  VTBL_ENTRY _ZTV8S19456C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C4[];
extern Class_Descriptor cd_S19456C3;
extern VTBL_ENTRY _ZTI8S19456C3[];
extern  VTBL_ENTRY _ZTV8S19456C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C3[];
extern Class_Descriptor cd_S19456C2;
extern VTBL_ENTRY _ZTI8S19456C2[];
extern  VTBL_ENTRY _ZTV8S19456C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C2[];
static Base_Class bases_S19456C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19456C6,    ABISELECT(88,52), //bcp->offset
    49, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19456C6,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19456C7,    ABISELECT(104,60), //bcp->offset
    61, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19456C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19456C4,    ABISELECT(48,24), //bcp->offset
    31, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19456C3,    0, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19456C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19456C1[];
extern void _ZN8S19456C33v18Ev();
extern void _ZN8S19456C33v19Ev();
extern void _ZN8S19456C33v20Ev();
extern void _ZN8S19456C33v21Ev();
extern void _ZN8S19456C33v22Ev();
extern void _ZN8S19456C33v23Ev();
extern void _ZN8S19456C23v24Ev();
extern void _ZN8S19456C23v25Ev();
extern void _ZN8S19456C23v26Ev();
extern void _ZN8S19456C23v27Ev();
extern void _ZN8S19456C23v28Ev();
extern void _ZN8S19456C12v1Ev();
extern void _ZN8S19456C12v2Ev();
extern void _ZN8S19456C12v3Ev();
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
extern void _ZN8S19456C43v14Ev();
extern void _ZN8S19456C43v15Ev();
extern void _ZN8S19456C43v16Ev();
extern void _ZN8S19456C43v17Ev();
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY vtc_S19456C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C1[0]),
  (VTBL_ENTRY)&_ZN8S19456C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v24Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v25Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v26Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v27Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v28Ev,
  (VTBL_ENTRY)&_ZN8S19456C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19456C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19456C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19456C1[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v17Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19456C1[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S19456C1[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern VTBL_ENTRY _ZTV8S19456C1[];
extern void _ZN8S19456C33v18Ev();
extern void _ZN8S19456C33v19Ev();
extern void _ZN8S19456C33v20Ev();
extern void _ZN8S19456C33v21Ev();
extern void _ZN8S19456C33v22Ev();
extern void _ZN8S19456C33v23Ev();
extern void _ZN8S19456C23v24Ev();
extern void _ZN8S19456C23v25Ev();
extern void _ZN8S19456C23v26Ev();
extern void _ZN8S19456C23v27Ev();
extern void _ZN8S19456C23v28Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C2__8S19456C1[] = {
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C2[0]),
  (VTBL_ENTRY)&_ZN8S19456C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v24Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v25Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v26Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v27Ev,
  (VTBL_ENTRY)&_ZN8S19456C23v28Ev,
};
extern void _ZN8S19456C33v18Ev();
extern void _ZN8S19456C33v19Ev();
extern void _ZN8S19456C33v20Ev();
extern void _ZN8S19456C33v21Ev();
extern void _ZN8S19456C33v22Ev();
extern void _ZN8S19456C33v23Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C38S19456C2__8S19456C1[] = {
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v20Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v21Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19456C33v23Ev,
};
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
extern void _ZN8S19456C43v14Ev();
extern void _ZN8S19456C43v15Ev();
extern void _ZN8S19456C43v16Ev();
extern void _ZN8S19456C43v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C4__8S19456C38S19456C2__8S19456C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v17Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C6__8S19456C38S19456C2__8S19456C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C7__8S19456C38S19456C2__8S19456C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S19456C3[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
extern void _ZN8S19456C43v14Ev();
extern void _ZN8S19456C43v15Ev();
extern void _ZN8S19456C43v16Ev();
extern void _ZN8S19456C43v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C4__8S19456C2__8S19456C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19456C2[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v17Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C6__8S19456C2__8S19456C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19456C2[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C7__8S19456C2__8S19456C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S19456C2[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
extern void _ZN8S19456C43v14Ev();
extern void _ZN8S19456C43v15Ev();
extern void _ZN8S19456C43v16Ev();
extern void _ZN8S19456C43v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C4__8S19456C1[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19456C43v17Ev,
};
extern void _ZN8S19456C53v11Ev();
extern void _ZN8S19456C53v12Ev();
extern void _ZN8S19456C53v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C58S19456C4__8S19456C1[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19456C53v13Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C6__8S19456C58S19456C4__8S19456C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C7__8S19456C58S19456C4__8S19456C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19456C5[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C6__8S19456C4__8S19456C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
};
extern void _ZN8S19456C62v4Ev();
extern void _ZN8S19456C62v5Ev();
extern void _ZN8S19456C62v6Ev();
extern void _ZN8S19456C62v7Ev();
extern void _ZN8S19456C62v8Ev();
extern void _ZN8S19456C72v9Ev();
extern void _ZN8S19456C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19456C7__8S19456C4__8S19456C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19456C4[0]),
  (VTBL_ENTRY)&_ZN8S19456C62v4Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v7Ev,
  (VTBL_ENTRY)&_ZN8S19456C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19456C72v9Ev,
  (VTBL_ENTRY)&_ZN8S19456C73v10Ev,
};
static  VTT_ENTRY vtt_S19456C1[] = {
  {&(_ZTV8S19456C1[17]),  17,77},
  {&(_ZTV8S19456C1[17]),  17,77},
  {&(_ZTV8S19456C1[42]),  42,77},
  {&(_ZTV8S19456C1[56]),  56,77},
  {&(_ZTV8S19456C1[70]),  70,77},
  {&(_tg__ZTV8S19456C2__8S19456C1[5]),  5,16},
  {&(_tg__ZTV8S19456C38S19456C2__8S19456C1[5]),  5,11},
  {&(_tg__ZTV8S19456C4__8S19456C38S19456C2__8S19456C1[11]),  11,18},
  {&(_tg__ZTV8S19456C6__8S19456C38S19456C2__8S19456C1[7]),  7,12},
  {&(_tg__ZTV8S19456C7__8S19456C38S19456C2__8S19456C1[9]),  9,16},
  {&(_tg__ZTV8S19456C4__8S19456C2__8S19456C1[11]),  11,18},
  {&(_tg__ZTV8S19456C6__8S19456C2__8S19456C1[7]),  7,12},
  {&(_tg__ZTV8S19456C7__8S19456C2__8S19456C1[9]),  9,16},
  {&(_tg__ZTV8S19456C4__8S19456C1[4]),  4,11},
  {&(_tg__ZTV8S19456C58S19456C4__8S19456C1[4]),  4,7},
  {&(_tg__ZTV8S19456C6__8S19456C58S19456C4__8S19456C1[7]),  7,12},
  {&(_tg__ZTV8S19456C7__8S19456C58S19456C4__8S19456C1[9]),  9,16},
  {&(_tg__ZTV8S19456C6__8S19456C4__8S19456C1[7]),  7,12},
  {&(_tg__ZTV8S19456C7__8S19456C4__8S19456C1[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S19456C1[];
extern  VTBL_ENTRY _ZTV8S19456C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19456C1[];
Class_Descriptor cd_S19456C1 = {  "S19456C1", // class name
  bases_S19456C1, 7,
  &(vtc_S19456C1[0]), // expected_vtbl_contents
  &(vtt_S19456C1[0]), // expected_vtt_contents
  ABISELECT(120,68), // object size
  NSPAIRA(_ZTI8S19456C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19456C1),77, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19456C1),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3816C2  : S3712C3_nt {
  int s3816c2f0;
  char s3816c2f1;
  int s3816c2f2;
  ::S10225C3 s3816c2f3;
  ::S3812C7 s3816c2f4;
  ::S2405C26 s3816c2f5;
  ::S11969C23_nt s3816c2f6;
  ::S10225C3 s3816c2f7;
  virtual  ~S3816C2(); // _ZN7S3816C2D1Ev
  virtual void  v2(); // _ZN7S3816C22v2Ev
  S3816C2(); // tgen
};
//SIG(-1 S3816C2) C1{ BC2{ vd m Fi} vd v1 Fi Fc Fi FC3{ BC4{ vd v5 v6 v7} vd v2 v3 v4 FC5{ FL[4]}} FC6{ BC7{ vd v13 v14 v15} vd v8 v9 v10 v11 v12 Fi} FC8{ m Fp Fi FC9{ m} FC9} FC10{ m Fp} FC3}


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

static void Test_S3816C2()
{
  extern Class_Descriptor cd_S3816C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,30)];
    init_test(&cd_S3816C2, buf);
    S3816C2 *dp, &lv = *(dp=new (buf) S3816C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S3816C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3816C2)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S3816C2");
    check_field_offset(lv, s3816c2f0, ABISELECT(12,8), "S3816C2.s3816c2f0");
    check_field_offset(lv, s3816c2f1, ABISELECT(16,12), "S3816C2.s3816c2f1");
    check_field_offset(lv, s3816c2f2, ABISELECT(20,16), "S3816C2.s3816c2f2");
    check_field_offset(lv, s3816c2f3, ABISELECT(24,20), "S3816C2.s3816c2f3");
    check_field_offset(lv, s3816c2f4, ABISELECT(64,56), "S3816C2.s3816c2f4");
    check_field_offset(lv, s3816c2f5, ABISELECT(80,64), "S3816C2.s3816c2f5");
    check_field_offset(lv, s3816c2f6, ABISELECT(96,76), "S3816C2.s3816c2f6");
    check_field_offset(lv, s3816c2f7, ABISELECT(104,80), "S3816C2.s3816c2f7");
    test_class_info(&lv, &cd_S3816C2);
    dp->~S3816C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3816C2(Test_S3816C2, "S3816C2", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN7S3816C2C1Ev();
extern void _ZN7S3816C2D1Ev();
Name_Map name_map_S3816C2[] = {
  NSPAIR(_ZN7S3816C2C1Ev),
  NSPAIR(_ZN7S3816C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S3816C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3816C2[];
extern void _ZN7S3816C2D1Ev();
extern void _ZN7S3816C2D0Ev();
extern void _ZN7S3816C22v2Ev();
static  VTBL_ENTRY vtc_S3816C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3816C2[0]),
  (VTBL_ENTRY)&_ZN7S3816C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3816C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3816C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S3816C2[];
extern  VTBL_ENTRY _ZTV7S3816C2[];
Class_Descriptor cd_S3816C2 = {  "S3816C2", // class name
  bases_S3816C2, 1,
  &(vtc_S3816C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI7S3816C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3816C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3816C1  : S3816C2 {
  virtual  ~S3816C1(); // _ZN7S3816C1D1Ev
  virtual void  v1(); // _ZN7S3816C12v1Ev
  S3816C1(); // tgen
};
//SIG(1 S3816C1) C1{ BC2{ BC3{ vd m Fi} vd v2 Fi Fc Fi FC4{ BC5{ vd v6 v7 v8} vd v3 v4 v5 FC6{ FL[4]}} FC7{ BC8{ vd v14 v15 v16} vd v9 v10 v11 v12 v13 Fi} FC9{ m Fp Fi FC10{ m} FC10} FC11{ m Fp} FC4} vd v1}


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

static void Test_S3816C1()
{
  extern Class_Descriptor cd_S3816C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,30)];
    init_test(&cd_S3816C1, buf);
    S3816C1 *dp, &lv = *(dp=new (buf) S3816C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S3816C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3816C1)");
    check_base_class_offset(lv, (S3712C3_nt*)(S3816C2*), 0, "S3816C1");
    check_base_class_offset(lv, (S3816C2*), 0, "S3816C1");
    test_class_info(&lv, &cd_S3816C1);
    dp->~S3816C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3816C1(Test_S3816C1, "S3816C1", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN7S3816C1C1Ev();
extern void _ZN7S3816C1D1Ev();
Name_Map name_map_S3816C1[] = {
  NSPAIR(_ZN7S3816C1C1Ev),
  NSPAIR(_ZN7S3816C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
extern Class_Descriptor cd_S3816C2;
extern VTBL_ENTRY _ZTI7S3816C2[];
extern  VTBL_ENTRY _ZTV7S3816C2[];
static Base_Class bases_S3816C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3816C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3816C1[];
extern void _ZN7S3816C1D1Ev();
extern void _ZN7S3816C1D0Ev();
extern void _ZN7S3816C22v2Ev();
extern void _ZN7S3816C12v1Ev();
static  VTBL_ENTRY vtc_S3816C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3816C1[0]),
  (VTBL_ENTRY)&_ZN7S3816C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3816C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3816C22v2Ev,
  (VTBL_ENTRY)&_ZN7S3816C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3816C1[];
extern  VTBL_ENTRY _ZTV7S3816C1[];
Class_Descriptor cd_S3816C1 = {  "S3816C1", // class name
  bases_S3816C1, 2,
  &(vtc_S3816C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI7S3816C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3816C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20561C5  {
  virtual void  v12(); // _ZN8S20561C53v12Ev
  ~S20561C5(); // tgen
  S20561C5(); // tgen
};
//SIG(-1 S20561C5) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20561C5C1Ev();
extern void _ZN8S20561C5D1Ev();
Name_Map name_map_S20561C5[] = {
  NSPAIR(_ZN8S20561C5C1Ev),
  NSPAIR(_ZN8S20561C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20561C5[];
extern void _ZN8S20561C53v12Ev();
static  VTBL_ENTRY vtc_S20561C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C5[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
};
extern VTBL_ENTRY _ZTI8S20561C5[];
extern  VTBL_ENTRY _ZTV8S20561C5[];
Class_Descriptor cd_S20561C5 = {  "S20561C5", // class name
  0,0,//no base classes
  &(vtc_S20561C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20561C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20561C5),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  S20561C4  {
  void *s20561c4f0;
  ::S20561C5 s20561c4f1;
  virtual void  v7(); // _ZN8S20561C42v7Ev
  virtual void  v8(); // _ZN8S20561C42v8Ev
  virtual void  v9(); // _ZN8S20561C42v9Ev
  virtual void  v10(); // _ZN8S20561C43v10Ev
  virtual void  v11(); // _ZN8S20561C43v11Ev
  ~S20561C4(); // tgen
  S20561C4(); // tgen
};
//SIG(-1 S20561C4) C1{ v1 v2 v3 v4 v5 Fp FC2{ v6}}


void  S20561C4 ::v7(){vfunc_called(this, "_ZN8S20561C42v7Ev");}
void  S20561C4 ::v8(){vfunc_called(this, "_ZN8S20561C42v8Ev");}
void  S20561C4 ::v9(){vfunc_called(this, "_ZN8S20561C42v9Ev");}
void  S20561C4 ::v10(){vfunc_called(this, "_ZN8S20561C43v10Ev");}
void  S20561C4 ::v11(){vfunc_called(this, "_ZN8S20561C43v11Ev");}
S20561C4 ::~S20561C4(){ note_dtor("S20561C4", this);} // tgen
S20561C4 ::S20561C4(){ note_ctor("S20561C4", this);} // tgen

static void Test_S20561C4()
{
  extern Class_Descriptor cd_S20561C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20561C4, buf);
    S20561C4 *dp, &lv = *(dp=new (buf) S20561C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20561C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20561C4)");
    check_field_offset(lv, s20561c4f0, ABISELECT(8,4), "S20561C4.s20561c4f0");
    check_field_offset(lv, s20561c4f1, ABISELECT(16,8), "S20561C4.s20561c4f1");
    test_class_info(&lv, &cd_S20561C4);
    dp->~S20561C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20561C4(Test_S20561C4, "S20561C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20561C4C1Ev();
extern void _ZN8S20561C4D1Ev();
Name_Map name_map_S20561C4[] = {
  NSPAIR(_ZN8S20561C4C1Ev),
  NSPAIR(_ZN8S20561C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20561C4[];
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
static  VTBL_ENTRY vtc_S20561C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C4[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
};
extern VTBL_ENTRY _ZTI8S20561C4[];
extern  VTBL_ENTRY _ZTV8S20561C4[];
Class_Descriptor cd_S20561C4 = {  "S20561C4", // class name
  0,0,//no base classes
  &(vtc_S20561C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20561C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20561C4),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  S20561C6  : virtual S20561C5 {
  __tsi64 s20561c6f0;
  void *s20561c6f1;
  virtual void  v13(); // _ZN8S20561C63v13Ev
  virtual void  v14(); // _ZN8S20561C63v14Ev
  virtual void  v15(); // _ZN8S20561C63v15Ev
  ~S20561C6(); // tgen
  S20561C6(); // tgen
};
//SIG(-1 S20561C6) C1{ VBC2{ v4} v1 v2 v3 FL Fp}


void  S20561C6 ::v13(){vfunc_called(this, "_ZN8S20561C63v13Ev");}
void  S20561C6 ::v14(){vfunc_called(this, "_ZN8S20561C63v14Ev");}
void  S20561C6 ::v15(){vfunc_called(this, "_ZN8S20561C63v15Ev");}
S20561C6 ::~S20561C6(){ note_dtor("S20561C6", this);} // tgen
S20561C6 ::S20561C6(){ note_ctor("S20561C6", this);} // tgen

static void Test_S20561C6()
{
  extern Class_Descriptor cd_S20561C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20561C6, buf);
    S20561C6 *dp, &lv = *(dp=new (buf) S20561C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20561C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20561C6)");
    check_base_class_offset(lv, (S20561C5*), 0, "S20561C6");
    check_field_offset(lv, s20561c6f0, ABISELECT(8,4), "S20561C6.s20561c6f0");
    check_field_offset(lv, s20561c6f1, ABISELECT(16,12), "S20561C6.s20561c6f1");
    test_class_info(&lv, &cd_S20561C6);
    dp->~S20561C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20561C6(Test_S20561C6, "S20561C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20561C6C1Ev();
extern void _ZN8S20561C6D1Ev();
Name_Map name_map_S20561C6[] = {
  NSPAIR(_ZN8S20561C6C1Ev),
  NSPAIR(_ZN8S20561C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20561C5;
extern VTBL_ENTRY _ZTI8S20561C5[];
extern  VTBL_ENTRY _ZTV8S20561C5[];
static Base_Class bases_S20561C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20561C5,    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 _ZTI8S20561C6[];
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C63v13Ev();
extern void _ZN8S20561C63v14Ev();
extern void _ZN8S20561C63v15Ev();
static  VTBL_ENTRY vtc_S20561C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C6[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v15Ev,
};
extern VTBL_ENTRY _ZTV8S20561C6[];
static  VTT_ENTRY vtt_S20561C6[] = {
  {&(_ZTV8S20561C6[4]),  4,8},
  {&(_ZTV8S20561C6[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S20561C6[];
extern  VTBL_ENTRY _ZTV8S20561C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C6[];
Class_Descriptor cd_S20561C6 = {  "S20561C6", // class name
  bases_S20561C6, 1,
  &(vtc_S20561C6[0]), // expected_vtbl_contents
  &(vtt_S20561C6[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20561C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20561C6),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20561C6),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  S20561C7  : virtual S20561C5 , virtual S20561C4 {
  void *s20561c7f0[6];
  virtual  ~S20561C7(); // _ZN8S20561C7D2Ev
  virtual void  v16(); // _ZN8S20561C73v16Ev
  virtual void  v17(); // _ZN8S20561C73v17Ev
  virtual void  v18(); // _ZN8S20561C73v18Ev
  S20561C7(); // tgen
};
//SIG(-1 S20561C7) C1{ VBC2{ v4} VBC3{ v5 v6 v7 v8 v9 Fp FC2} vd v1 v2 v3 Fp[6]}


 S20561C7 ::~S20561C7(){ note_dtor("S20561C7", this);}
void  S20561C7 ::v16(){vfunc_called(this, "_ZN8S20561C73v16Ev");}
void  S20561C7 ::v17(){vfunc_called(this, "_ZN8S20561C73v17Ev");}
void  S20561C7 ::v18(){vfunc_called(this, "_ZN8S20561C73v18Ev");}
S20561C7 ::S20561C7(){ note_ctor("S20561C7", this);} // tgen

static void Test_S20561C7()
{
  extern Class_Descriptor cd_S20561C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S20561C7, buf);
    S20561C7 *dp, &lv = *(dp=new (buf) S20561C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20561C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20561C7)");
    check_base_class_offset(lv, (S20561C5*), 0, "S20561C7");
    check_base_class_offset(lv, (S20561C4*), ABISELECT(56,28), "S20561C7");
    check_field_offset(lv, s20561c7f0, ABISELECT(8,4), "S20561C7.s20561c7f0");
    test_class_info(&lv, &cd_S20561C7);
    dp->~S20561C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20561C7(Test_S20561C7, "S20561C7", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S20561C7C1Ev();
extern void _ZN8S20561C7D2Ev();
Name_Map name_map_S20561C7[] = {
  NSPAIR(_ZN8S20561C7C1Ev),
  NSPAIR(_ZN8S20561C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20561C5;
extern VTBL_ENTRY _ZTI8S20561C5[];
extern  VTBL_ENTRY _ZTV8S20561C5[];
extern Class_Descriptor cd_S20561C4;
extern VTBL_ENTRY _ZTI8S20561C4[];
extern  VTBL_ENTRY _ZTV8S20561C4[];
static Base_Class bases_S20561C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20561C5,    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_S20561C4,    ABISELECT(56,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20561C7[];
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C7D1Ev();
extern void _ZN8S20561C7D0Ev();
extern void _ZN8S20561C73v16Ev();
extern void _ZN8S20561C73v17Ev();
extern void _ZN8S20561C73v18Ev();
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
static  VTBL_ENTRY vtc_S20561C7[] = {
  ABISELECT(56,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C7[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20561C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v18Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20561C7[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S20561C7[];
static  VTT_ENTRY vtt_S20561C7[] = {
  {&(_ZTV8S20561C7[5]),  5,23},
  {&(_ZTV8S20561C7[5]),  5,23},
  {&(_ZTV8S20561C7[18]),  18,23},
};
extern VTBL_ENTRY _ZTI8S20561C7[];
extern  VTBL_ENTRY _ZTV8S20561C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C7[];
Class_Descriptor cd_S20561C7 = {  "S20561C7", // class name
  bases_S20561C7, 2,
  &(vtc_S20561C7[0]), // expected_vtbl_contents
  &(vtt_S20561C7[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S20561C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20561C7),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20561C7),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  S20561C3  : S20561C4 , S20561C6 {
  ::S20561C7 s20561c3f0;
  ~S20561C3(); // tgen
  S20561C3(); // tgen
};
//SIG(-1 S20561C3) C1{ BC2{ v1 v2 v3 v4 v5 Fp FC3{ v6}} BC4{ VBC3 v7 v8 v9 FL Fp} FC5{ VBC3 VBC2 vd v10 v11 v12 Fp[6]}}


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

static void Test_S20561C3()
{
  extern Class_Descriptor cd_S20561C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S20561C3, buf);
    S20561C3 *dp, &lv = *(dp=new (buf) S20561C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S20561C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20561C3)");
    check_base_class_offset(lv, (S20561C4*), 0, "S20561C3");
    check_base_class_offset(lv, (S20561C5*)(S20561C6*), ABISELECT(24,12), "S20561C3");
    check_base_class_offset(lv, (S20561C6*), ABISELECT(24,12), "S20561C3");
    check_field_offset(lv, s20561c3f0, ABISELECT(48,28), "S20561C3.s20561c3f0");
    test_class_info(&lv, &cd_S20561C3);
    dp->~S20561C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20561C3(Test_S20561C3, "S20561C3", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S20561C3C1Ev();
extern void _ZN8S20561C3D1Ev();
Name_Map name_map_S20561C3[] = {
  NSPAIR(_ZN8S20561C3C1Ev),
  NSPAIR(_ZN8S20561C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20561C4;
extern VTBL_ENTRY _ZTI8S20561C4[];
extern  VTBL_ENTRY _ZTV8S20561C4[];
extern Class_Descriptor cd_S20561C5;
extern VTBL_ENTRY _ZTI8S20561C5[];
extern  VTBL_ENTRY _ZTV8S20561C5[];
extern Class_Descriptor cd_S20561C6;
extern VTBL_ENTRY _ZTI8S20561C6[];
extern  VTBL_ENTRY _ZTV8S20561C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C6[];
static Base_Class bases_S20561C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20561C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20561C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20561C6,    ABISELECT(24,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20561C3[];
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C63v13Ev();
extern void _ZN8S20561C63v14Ev();
extern void _ZN8S20561C63v15Ev();
static  VTBL_ENTRY vtc_S20561C3[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C3[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20561C3[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v15Ev,
};
extern VTBL_ENTRY _ZTV8S20561C3[];
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C63v13Ev();
extern void _ZN8S20561C63v14Ev();
extern void _ZN8S20561C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C6__8S20561C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C6[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v15Ev,
};
static  VTT_ENTRY vtt_S20561C3[] = {
  {&(_ZTV8S20561C3[3]),  3,16},
  {&(_tg__ZTV8S20561C6__8S20561C3[4]),  4,8},
  {&(_tg__ZTV8S20561C6__8S20561C3[4]),  4,8},
  {&(_ZTV8S20561C3[12]),  12,16},
  {&(_ZTV8S20561C3[12]),  12,16},
};
extern VTBL_ENTRY _ZTI8S20561C3[];
extern  VTBL_ENTRY _ZTV8S20561C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C3[];
Class_Descriptor cd_S20561C3 = {  "S20561C3", // class name
  bases_S20561C3, 3,
  &(vtc_S20561C3[0]), // expected_vtbl_contents
  &(vtt_S20561C3[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S20561C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20561C3),16, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20561C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20561C2  : virtual S20561C3 , S20561C7 {
  virtual  ~S20561C2(); // _ZN8S20561C2D2Ev
  virtual void  v19(); // _ZN8S20561C23v19Ev
  virtual void  v20(); // _ZN8S20561C23v20Ev
  virtual void  v21(); // _ZN8S20561C23v21Ev
  S20561C2(); // tgen
};
//SIG(-1 S20561C2) C1{ VBC2{ BC3{ v4 v5 v6 v7 v8 Fp FC4{ v9}} BC5{ VBC4 v10 v11 v12 FL Fp} FC6{ VBC4 VBC3 vd v13 v14 v15 Fp[6]}} BC6 vd v1 v2 v3}


 S20561C2 ::~S20561C2(){ note_dtor("S20561C2", this);}
void  S20561C2 ::v19(){vfunc_called(this, "_ZN8S20561C23v19Ev");}
void  S20561C2 ::v20(){vfunc_called(this, "_ZN8S20561C23v20Ev");}
void  S20561C2 ::v21(){vfunc_called(this, "_ZN8S20561C23v21Ev");}
S20561C2 ::S20561C2(){ note_ctor("S20561C2", this);} // tgen

static void Test_S20561C2()
{
  extern Class_Descriptor cd_S20561C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,28)];
    init_test(&cd_S20561C2, buf);
    S20561C2 *dp, &lv = *(dp=new (buf) S20561C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,108), "sizeof(S20561C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20561C2)");
    check_base_class_offset(lv, (S20561C4*)(S20561C3*), ABISELECT(56,28), "S20561C2");
    check_base_class_offset(lv, (S20561C5*)(S20561C6*)(S20561C3*), ABISELECT(80,40), "S20561C2");
    check_base_class_offset(lv, (S20561C5*)(S20561C7*), ABISELECT(80,40), "S20561C2");
    check_base_class_offset(lv, (S20561C6*)(S20561C3*), ABISELECT(80,40), "S20561C2");
    check_base_class_offset(lv, (S20561C3*), ABISELECT(56,28), "S20561C2");
    check_base_class_offset(lv, (S20561C4*)(S20561C7*), ABISELECT(184,96), "S20561C2");
    check_base_class_offset(lv, (S20561C7*), 0, "S20561C2");
    test_class_info(&lv, &cd_S20561C2);
    dp->~S20561C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20561C2(Test_S20561C2, "S20561C2", ABISELECT(208,108));

#else // __cplusplus

extern void _ZN8S20561C2C1Ev();
extern void _ZN8S20561C2D2Ev();
Name_Map name_map_S20561C2[] = {
  NSPAIR(_ZN8S20561C2C1Ev),
  NSPAIR(_ZN8S20561C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20561C4;
extern VTBL_ENTRY _ZTI8S20561C4[];
extern  VTBL_ENTRY _ZTV8S20561C4[];
extern Class_Descriptor cd_S20561C5;
extern VTBL_ENTRY _ZTI8S20561C5[];
extern  VTBL_ENTRY _ZTV8S20561C5[];
extern Class_Descriptor cd_S20561C6;
extern VTBL_ENTRY _ZTI8S20561C6[];
extern  VTBL_ENTRY _ZTV8S20561C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C6[];
extern Class_Descriptor cd_S20561C3;
extern VTBL_ENTRY _ZTI8S20561C3[];
extern  VTBL_ENTRY _ZTV8S20561C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C3[];
extern Class_Descriptor cd_S20561C4;
extern VTBL_ENTRY _ZTI8S20561C4[];
extern  VTBL_ENTRY _ZTV8S20561C4[];
extern Class_Descriptor cd_S20561C7;
extern VTBL_ENTRY _ZTI8S20561C7[];
extern  VTBL_ENTRY _ZTV8S20561C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C7[];
static Base_Class bases_S20561C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20561C4,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20561C5,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20561C6,    ABISELECT(80,40), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20561C3,    ABISELECT(56,28), //bcp->offset
    15, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20561C4,    ABISELECT(184,96), //bcp->offset
    39, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20561C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20561C2[];
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C2D1Ev();
extern void _ZN8S20561C2D0Ev();
extern void _ZN8S20561C73v16Ev();
extern void _ZN8S20561C73v17Ev();
extern void _ZN8S20561C73v18Ev();
extern void _ZN8S20561C23v19Ev();
extern void _ZN8S20561C23v20Ev();
extern void _ZN8S20561C23v21Ev();
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C63v13Ev();
extern void _ZN8S20561C63v14Ev();
extern void _ZN8S20561C63v15Ev();
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
static  VTBL_ENTRY vtc_S20561C2[] = {
  ABISELECT(56,28),
  ABISELECT(184,96),
  ABISELECT(80,40),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C2[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20561C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20561C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20561C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20561C23v21Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20561C2[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
  0,
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20561C2[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20561C2[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S20561C2[];
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C7D1Ev();
extern void _ZN8S20561C7D0Ev();
extern void _ZN8S20561C73v16Ev();
extern void _ZN8S20561C73v17Ev();
extern void _ZN8S20561C73v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C7__8S20561C2[] = {
  ABISELECT(184,96),
  ABISELECT(80,40),
  ABISELECT(80,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C7[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20561C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v18Ev,
};
extern void _ZN8S20561C53v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C5__8S20561C7__8S20561C2[] = {
  0,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20561C7[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
};
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C4__8S20561C7__8S20561C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20561C7[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
};
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C3__8S20561C2[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C3[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
};
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C63v13Ev();
extern void _ZN8S20561C63v14Ev();
extern void _ZN8S20561C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C68S20561C3__8S20561C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C6[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v15Ev,
};
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C63v13Ev();
extern void _ZN8S20561C63v14Ev();
extern void _ZN8S20561C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C6__8S20561C3__8S20561C2[] = {
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20561C3[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v15Ev,
};
static  VTT_ENTRY vtt_S20561C2[] = {
  {&(_ZTV8S20561C2[6]),  6,51},
  {&(_tg__ZTV8S20561C7__8S20561C2[5]),  5,11},
  {&(_tg__ZTV8S20561C5__8S20561C7__8S20561C2[3]),  3,4},
  {&(_tg__ZTV8S20561C4__8S20561C7__8S20561C2[7]),  7,12},
  {&(_ZTV8S20561C2[26]),  26,51},
  {&(_ZTV8S20561C2[35]),  35,51},
  {&(_ZTV8S20561C2[35]),  35,51},
  {&(_ZTV8S20561C2[46]),  46,51},
  {&(_tg__ZTV8S20561C3__8S20561C2[3]),  3,8},
  {&(_tg__ZTV8S20561C68S20561C3__8S20561C2[4]),  4,8},
  {&(_tg__ZTV8S20561C68S20561C3__8S20561C2[4]),  4,8},
  {&(_tg__ZTV8S20561C6__8S20561C3__8S20561C2[4]),  4,8},
  {&(_tg__ZTV8S20561C6__8S20561C3__8S20561C2[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S20561C2[];
extern  VTBL_ENTRY _ZTV8S20561C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C2[];
Class_Descriptor cd_S20561C2 = {  "S20561C2", // class name
  bases_S20561C2, 6,
  &(vtc_S20561C2[0]), // expected_vtbl_contents
  &(vtt_S20561C2[0]), // expected_vtt_contents
  ABISELECT(208,108), // object size
  NSPAIRA(_ZTI8S20561C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20561C2),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20561C2),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20561C1  : virtual S20561C2 {
  __tsi64 s20561c1f0[4];
  virtual  ~S20561C1(); // _ZN8S20561C1D2Ev
  virtual void  v1(); // _ZN8S20561C12v1Ev
  virtual void  v2(); // _ZN8S20561C12v2Ev
  virtual void  v3(); // _ZN8S20561C12v3Ev
  virtual void  v4(); // _ZN8S20561C12v4Ev
  virtual void  v5(); // _ZN8S20561C12v5Ev
  virtual void  v6(); // _ZN8S20561C12v6Ev
  S20561C1(); // tgen
};
//SIG(1 S20561C1) C1{ VBC2{ VBC3{ BC4{ v7 v8 v9 v10 v11 Fp FC5{ v12}} BC6{ VBC5 v13 v14 v15 FL Fp} FC7{ VBC5 VBC4 vd v16 v17 v18 Fp[6]}} BC7 vd v19 v20 v21} vd v1 v2 v3 v4 v5 v6 FL[4]}


 S20561C1 ::~S20561C1(){ note_dtor("S20561C1", this);}
void  S20561C1 ::v1(){vfunc_called(this, "_ZN8S20561C12v1Ev");}
void  S20561C1 ::v2(){vfunc_called(this, "_ZN8S20561C12v2Ev");}
void  S20561C1 ::v3(){vfunc_called(this, "_ZN8S20561C12v3Ev");}
void  S20561C1 ::v4(){vfunc_called(this, "_ZN8S20561C12v4Ev");}
void  S20561C1 ::v5(){vfunc_called(this, "_ZN8S20561C12v5Ev");}
void  S20561C1 ::v6(){vfunc_called(this, "_ZN8S20561C12v6Ev");}
S20561C1 ::S20561C1(){ note_ctor("S20561C1", this);} // tgen

static void Test_S20561C1()
{
  extern Class_Descriptor cd_S20561C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,37)];
    init_test(&cd_S20561C1, buf);
    S20561C1 *dp, &lv = *(dp=new (buf) S20561C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,144), "sizeof(S20561C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20561C1)");
    check_base_class_offset(lv, (S20561C4*)(S20561C3*), ABISELECT(96,64), "S20561C1");
    check_base_class_offset(lv, (S20561C5*)(S20561C6*)(S20561C3*), 0, "S20561C1");
    check_base_class_offset(lv, (S20561C5*)(S20561C7*)(S20561C2*), 0, "S20561C1");
    check_base_class_offset(lv, (S20561C6*)(S20561C3*), ABISELECT(120,76), "S20561C1");
    check_base_class_offset(lv, (S20561C3*)(S20561C2*), ABISELECT(96,64), "S20561C1");
    check_base_class_offset(lv, (S20561C4*)(S20561C7*)(S20561C2*), ABISELECT(224,132), "S20561C1");
    check_base_class_offset(lv, (S20561C7*)(S20561C2*), ABISELECT(40,36), "S20561C1");
    check_base_class_offset(lv, (S20561C2*), ABISELECT(40,36), "S20561C1");
    check_field_offset(lv, s20561c1f0, ABISELECT(8,4), "S20561C1.s20561c1f0");
    test_class_info(&lv, &cd_S20561C1);
    dp->~S20561C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20561C1(Test_S20561C1, "S20561C1", ABISELECT(248,144));

#else // __cplusplus

extern void _ZN8S20561C1C1Ev();
extern void _ZN8S20561C1D2Ev();
Name_Map name_map_S20561C1[] = {
  NSPAIR(_ZN8S20561C1C1Ev),
  NSPAIR(_ZN8S20561C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20561C4;
extern VTBL_ENTRY _ZTI8S20561C4[];
extern  VTBL_ENTRY _ZTV8S20561C4[];
extern Class_Descriptor cd_S20561C5;
extern VTBL_ENTRY _ZTI8S20561C5[];
extern  VTBL_ENTRY _ZTV8S20561C5[];
extern Class_Descriptor cd_S20561C6;
extern VTBL_ENTRY _ZTI8S20561C6[];
extern  VTBL_ENTRY _ZTV8S20561C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C6[];
extern Class_Descriptor cd_S20561C3;
extern VTBL_ENTRY _ZTI8S20561C3[];
extern  VTBL_ENTRY _ZTV8S20561C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C3[];
extern Class_Descriptor cd_S20561C4;
extern VTBL_ENTRY _ZTI8S20561C4[];
extern  VTBL_ENTRY _ZTV8S20561C4[];
extern Class_Descriptor cd_S20561C7;
extern VTBL_ENTRY _ZTI8S20561C7[];
extern  VTBL_ENTRY _ZTV8S20561C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C7[];
extern Class_Descriptor cd_S20561C2;
extern VTBL_ENTRY _ZTI8S20561C2[];
extern  VTBL_ENTRY _ZTV8S20561C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C2[];
static Base_Class bases_S20561C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20561C4,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20561C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20561C6,    ABISELECT(120,76), //bcp->offset
    54, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20561C3,    ABISELECT(96,64), //bcp->offset
    38, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20561C4,    ABISELECT(224,132), //bcp->offset
    62, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20561C7,    ABISELECT(40,36), //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20561C2,    ABISELECT(40,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20561C1[];
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C1D1Ev();
extern void _ZN8S20561C1D0Ev();
extern void _ZN8S20561C12v1Ev();
extern void _ZN8S20561C12v2Ev();
extern void _ZN8S20561C12v3Ev();
extern void _ZN8S20561C12v4Ev();
extern void _ZN8S20561C12v5Ev();
extern void _ZN8S20561C12v6Ev();
extern void _ZN8S20561C53v12Ev();
extern void ABISELECT(_ZTv0_n56_N8S20561C1D1Ev,_ZTv0_n28_N8S20561C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20561C1D1Ev,_ZThn36_N8S20561C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20561C1D0Ev,_ZTv0_n28_N8S20561C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20561C1D0Ev,_ZThn36_N8S20561C1D0Ev)() __attribute__((weak));
extern void _ZN8S20561C73v16Ev();
extern void _ZN8S20561C73v17Ev();
extern void _ZN8S20561C73v18Ev();
extern void _ZN8S20561C23v19Ev();
extern void _ZN8S20561C23v20Ev();
extern void _ZN8S20561C23v21Ev();
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C63v13Ev();
extern void _ZN8S20561C63v14Ev();
extern void _ZN8S20561C63v15Ev();
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
static  VTBL_ENTRY vtc_S20561C1[] = {
  ABISELECT(224,132),
  0,
  ABISELECT(96,64),
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C1[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20561C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20561C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20561C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20561C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20561C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20561C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20561C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-36),
  ABISELECT(56,28),
  ABISELECT(184,96),
  ABISELECT(-40,-36),
  ABISELECT(-40,-36),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20561C1[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20561C1D1Ev,_ZTv0_n28_N8S20561C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20561C1D0Ev,_ZTv0_n28_N8S20561C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20561C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20561C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20561C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20561C23v21Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S20561C1[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S20561C1[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v15Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S20561C1[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
};
extern VTBL_ENTRY _ZTV8S20561C1[];
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C2D1Ev();
extern void _ZN8S20561C2D0Ev();
extern void _ZN8S20561C73v16Ev();
extern void _ZN8S20561C73v17Ev();
extern void _ZN8S20561C73v18Ev();
extern void _ZN8S20561C23v19Ev();
extern void _ZN8S20561C23v20Ev();
extern void _ZN8S20561C23v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C2__8S20561C1[] = {
  ABISELECT(56,28),
  ABISELECT(184,96),
  ABISELECT(-40,-36),
  ABISELECT(-40,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C2[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20561C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20561C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20561C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20561C23v21Ev,
};
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C7D1Ev();
extern void _ZN8S20561C7D0Ev();
extern void _ZN8S20561C73v16Ev();
extern void _ZN8S20561C73v17Ev();
extern void _ZN8S20561C73v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C78S20561C2__8S20561C1[] = {
  ABISELECT(184,96),
  ABISELECT(-40,-36),
  ABISELECT(-40,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C7[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20561C7D0Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v16Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20561C73v18Ev,
};
extern void _ZN8S20561C53v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C5__8S20561C78S20561C2__8S20561C1[] = {
  0,
  ABISELECT(40,36),
  (VTBL_ENTRY)&(_ZTI8S20561C7[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
};
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C4__8S20561C78S20561C2__8S20561C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20561C7[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
};
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C3__8S20561C2__8S20561C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-64),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20561C2[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
};
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C63v13Ev();
extern void _ZN8S20561C63v14Ev();
extern void _ZN8S20561C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C68S20561C3__8S20561C2__8S20561C1[] = {
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S20561C2[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v15Ev,
};
extern void _ZN8S20561C53v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C5__8S20561C2__8S20561C1[] = {
  0,
  ABISELECT(40,36),
  (VTBL_ENTRY)&(_ZTI8S20561C2[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
};
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C4__A1__8S20561C2__8S20561C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S20561C2[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
};
extern void _ZN8S20561C42v7Ev();
extern void _ZN8S20561C42v8Ev();
extern void _ZN8S20561C42v9Ev();
extern void _ZN8S20561C43v10Ev();
extern void _ZN8S20561C43v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C3__8S20561C1[] = {
  ABISELECT(-96,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C3[0]),
  (VTBL_ENTRY)&_ZN8S20561C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20561C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20561C43v11Ev,
};
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C63v13Ev();
extern void _ZN8S20561C63v14Ev();
extern void _ZN8S20561C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C68S20561C3__8S20561C1[] = {
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S20561C6[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v15Ev,
};
extern void _ZN8S20561C53v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C5__8S20561C68S20561C3__8S20561C1[] = {
  0,
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S20561C6[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
};
extern void _ZN8S20561C53v12Ev();
extern void _ZN8S20561C63v13Ev();
extern void _ZN8S20561C63v14Ev();
extern void _ZN8S20561C63v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C6__8S20561C3__8S20561C1[] = {
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20561C3[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v13Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v14Ev,
  (VTBL_ENTRY)&_ZN8S20561C63v15Ev,
};
extern void _ZN8S20561C53v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20561C5__8S20561C3__8S20561C1[] = {
  0,
  ABISELECT(96,64),
  (VTBL_ENTRY)&(_ZTI8S20561C3[0]),
  (VTBL_ENTRY)&_ZN8S20561C53v12Ev,
};
static  VTT_ENTRY vtt_S20561C1[] = {
  {&(_ZTV8S20561C1[7]),  7,74},
  {&(_ZTV8S20561C1[29]),  29,74},
  {&(_ZTV8S20561C1[49]),  49,74},
  {&(_ZTV8S20561C1[58]),  58,74},
  {&(_ZTV8S20561C1[7]),  7,74},
  {&(_ZTV8S20561C1[69]),  69,74},
  {&(_tg__ZTV8S20561C2__8S20561C1[6]),  6,15},
  {&(_tg__ZTV8S20561C78S20561C2__8S20561C1[5]),  5,11},
  {&(_tg__ZTV8S20561C5__8S20561C78S20561C2__8S20561C1[3]),  3,4},
  {&(_tg__ZTV8S20561C4__8S20561C78S20561C2__8S20561C1[7]),  7,12},
  {&(_tg__ZTV8S20561C3__8S20561C2__8S20561C1[11]),  11,16},
  {&(_tg__ZTV8S20561C68S20561C3__8S20561C2__8S20561C1[4]),  4,8},
  {&(_tg__ZTV8S20561C5__8S20561C2__8S20561C1[3]),  3,4},
  {&(_tg__ZTV8S20561C4__A1__8S20561C2__8S20561C1[7]),  7,12},
  {&(_tg__ZTV8S20561C3__8S20561C1[3]),  3,8},
  {&(_tg__ZTV8S20561C68S20561C3__8S20561C1[4]),  4,8},
  {&(_tg__ZTV8S20561C5__8S20561C68S20561C3__8S20561C1[3]),  3,4},
  {&(_tg__ZTV8S20561C6__8S20561C3__8S20561C1[4]),  4,8},
  {&(_tg__ZTV8S20561C5__8S20561C3__8S20561C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20561C1[];
extern  VTBL_ENTRY _ZTV8S20561C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20561C1[];
static VTBL_ENTRY alt_thunk_names199[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20561C1D0Ev,_ZTv0_n28_N8S20561C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20561C1D0Ev,_ZThn36_N8S20561C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20561C1D1Ev,_ZTv0_n28_N8S20561C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20561C1D1Ev,_ZThn36_N8S20561C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20561C1 = {  "S20561C1", // class name
  bases_S20561C1, 7,
  &(vtc_S20561C1[0]), // expected_vtbl_contents
  &(vtt_S20561C1[0]), // expected_vtt_contents
  ABISELECT(248,144), // object size
  NSPAIRA(_ZTI8S20561C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20561C1),74, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20561C1),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names199,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16402C1  {
  ::S11969C23_nt s16402c1f0;
  char s16402c1f1;
  ::S2405C20_nt s16402c1f2;
  ::S2405C20_nt s16402c1f3;
  ::S10225C3 s16402c1f4;
  ::S10225C15_nt s16402c1f5;
  ::S2405C25 s16402c1f6;
  void  mf16402c1(); // _ZN8S16402C19mf16402c1Ev
};
//SIG(1 S16402C1) C1{ m FC2{ m Fp} Fc FC3{ m Fp Fi FC4{ m}} FC3 FC5{ BC6{ vd v4 v5 v6} vd v1 v2 v3 FC7{ FL[4]}} FC8{ BC9{ m Fp Fi FC10{ m} FC10}} FC11{ BC9}}


void  S16402C1 ::mf16402c1(){}

static void Test_S16402C1()
{
  {
    init_simple_test("S16402C1");
    S16402C1 lv;
    check2(sizeof(lv), ABISELECT(120,92), "sizeof(S16402C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16402C1)");
    check_field_offset(lv, s16402c1f0, 0, "S16402C1.s16402c1f0");
    check_field_offset(lv, s16402c1f1, ABISELECT(8,4), "S16402C1.s16402c1f1");
    check_field_offset(lv, s16402c1f2, ABISELECT(16,8), "S16402C1.s16402c1f2");
    check_field_offset(lv, s16402c1f3, ABISELECT(32,20), "S16402C1.s16402c1f3");
    check_field_offset(lv, s16402c1f4, ABISELECT(48,32), "S16402C1.s16402c1f4");
    check_field_offset(lv, s16402c1f5, ABISELECT(88,68), "S16402C1.s16402c1f5");
    check_field_offset(lv, s16402c1f6, ABISELECT(104,80), "S16402C1.s16402c1f6");
  }
}
static Arrange_To_Call_Me vS16402C1(Test_S16402C1, "S16402C1", ABISELECT(120,92));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16403C1  {
  ::S11969C23_nt s16403c1f0;
  char s16403c1f1;
  ::S2405C20_nt s16403c1f2;
  ::S2405C20_nt s16403c1f3;
  ::S3704C4_nt s16403c1f4;
  ::S10225C15_nt s16403c1f5;
  ::S2405C25 s16403c1f6;
  void  mf16403c1(); // _ZN8S16403C19mf16403c1Ev
};
//SIG(1 S16403C1) C1{ m FC2{ m Fp} Fc FC3{ m Fp Fi FC4{ m}} FC3 FC5{ BC6{ vd v4 v5 v6} vd v1 v2 v3 FL[4]} FC7{ BC8{ m Fp Fi FC9{ m} FC9}} FC10{ BC8}}


void  S16403C1 ::mf16403c1(){}

static void Test_S16403C1()
{
  {
    init_simple_test("S16403C1");
    S16403C1 lv;
    check2(sizeof(lv), ABISELECT(120,92), "sizeof(S16403C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16403C1)");
    check_field_offset(lv, s16403c1f0, 0, "S16403C1.s16403c1f0");
    check_field_offset(lv, s16403c1f1, ABISELECT(8,4), "S16403C1.s16403c1f1");
    check_field_offset(lv, s16403c1f2, ABISELECT(16,8), "S16403C1.s16403c1f2");
    check_field_offset(lv, s16403c1f3, ABISELECT(32,20), "S16403C1.s16403c1f3");
    check_field_offset(lv, s16403c1f4, ABISELECT(48,32), "S16403C1.s16403c1f4");
    check_field_offset(lv, s16403c1f5, ABISELECT(88,68), "S16403C1.s16403c1f5");
    check_field_offset(lv, s16403c1f6, ABISELECT(104,80), "S16403C1.s16403c1f6");
  }
}
static Arrange_To_Call_Me vS16403C1(Test_S16403C1, "S16403C1", ABISELECT(120,92));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21188C6  : virtual S3572C5 , virtual S3572C4 {
  unsigned char s21188c6f0:1;
  void *s21188c6f1[3];
  ~S21188C6(); // tgen
  S21188C6(); // tgen
};
//SIG(-1 S21188C6) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ vd m FC2 FC4{}} Fc:1 Fp[3]}


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

static void Test_S21188C6()
{
  extern Class_Descriptor cd_S21188C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S21188C6, buf);
    S21188C6 *dp, &lv = *(dp=new (buf) S21188C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S21188C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21188C6)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(40,20), "S21188C6");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(80,44), "S21188C6");
    set_bf_and_test(lv, s21188c6f0, ABISELECT(8,4), 0, 1, 1, "S21188C6");
    check_field_offset(lv, s21188c6f1, ABISELECT(16,8), "S21188C6.s21188c6f1");
    test_class_info(&lv, &cd_S21188C6);
    dp->~S21188C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21188C6(Test_S21188C6, "S21188C6", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN8S21188C6C1Ev();
extern void _ZN8S21188C6D1Ev();
Name_Map name_map_S21188C6[] = {
  NSPAIR(_ZN8S21188C6C1Ev),
  NSPAIR(_ZN8S21188C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
static Base_Class bases_S21188C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(80,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21188C6[];
extern void _ZN8S21188C6D1Ev();
extern void _ZN8S21188C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21188C6D1Ev,_ZTv0_n12_N8S21188C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S21188C6D1Ev,_ZThn44_N8S21188C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21188C6D0Ev,_ZTv0_n12_N8S21188C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S21188C6D0Ev,_ZThn44_N8S21188C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21188C6[] = {
  ABISELECT(80,44),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21188C6[0]),
  (VTBL_ENTRY)&_ZN8S21188C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21188C6D0Ev,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21188C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C6D1Ev,_ZTv0_n12_N8S21188C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C6D0Ev,_ZTv0_n12_N8S21188C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21188C6[];
static  VTT_ENTRY vtt_S21188C6[] = {
  {&(_ZTV8S21188C6[4]),  4,11},
  {&(_ZTV8S21188C6[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21188C6[];
extern  VTBL_ENTRY _ZTV8S21188C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21188C6[];
static VTBL_ENTRY alt_thunk_names200[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21188C6D0Ev,_ZTv0_n12_N8S21188C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21188C6D0Ev,_ZThn44_N8S21188C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21188C6D1Ev,_ZTv0_n12_N8S21188C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21188C6D1Ev,_ZThn44_N8S21188C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21188C6 = {  "S21188C6", // class name
  bases_S21188C6, 2,
  &(vtc_S21188C6[0]), // expected_vtbl_contents
  &(vtt_S21188C6[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI8S21188C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21188C6),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21188C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names200,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21188C5  : virtual S3572C5 , virtual S21188C6 {
  short s21188c5f0;
  int s21188c5f1[2];
  char s21188c5f2;
  __tsi64 s21188c5f3;
  int s21188c5f4;
  ::S3572C6_nt s21188c5f5;
  void *s21188c5f6;
  char s21188c5f7;
  short s21188c5f8;
  ::S3572C4 s21188c5f9;
  int s21188c5f10[2];
  __tsi64 s21188c5f11;
  virtual  ~S21188C5(); // _ZN8S21188C5D2Ev
  S21188C5(); // tgen
};
//SIG(-1 S21188C5) C1{ VBC2{ m Fp Fs Fi Fp Fl[2]} VBC3{ VBC2 VBC4{ vd m FC2 FC5{}} Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC5 Fp Fc Fs FC4 Fi[2] FL}


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

static void Test_S21188C5()
{
  extern Class_Descriptor cd_S21188C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,43)];
    init_test(&cd_S21188C5, buf);
    S21188C5 *dp, &lv = *(dp=new (buf) S21188C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,168), "sizeof(S21188C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21188C5)");
    check_base_class_offset(lv, (S3572C5*), ABISELECT(128,92), "S21188C5");
    check_base_class_offset(lv, (S3572C5*)(S21188C6*), ABISELECT(128,92), "S21188C5");
    check_base_class_offset(lv, (S3572C4*)(S21188C6*), ABISELECT(208,136), "S21188C5");
    check_base_class_offset(lv, (S21188C6*), ABISELECT(168,116), "S21188C5");
    check_field_offset(lv, s21188c5f0, ABISELECT(8,4), "S21188C5.s21188c5f0");
    check_field_offset(lv, s21188c5f1, ABISELECT(12,8), "S21188C5.s21188c5f1");
    check_field_offset(lv, s21188c5f2, ABISELECT(20,16), "S21188C5.s21188c5f2");
    check_field_offset(lv, s21188c5f3, ABISELECT(24,20), "S21188C5.s21188c5f3");
    check_field_offset(lv, s21188c5f4, ABISELECT(32,28), "S21188C5.s21188c5f4");
    check_field_offset(lv, s21188c5f5, ABISELECT(36,32), "S21188C5.s21188c5f5");
    check_field_offset(lv, s21188c5f6, ABISELECT(40,36), "S21188C5.s21188c5f6");
    check_field_offset(lv, s21188c5f7, ABISELECT(48,40), "S21188C5.s21188c5f7");
    check_field_offset(lv, s21188c5f8, ABISELECT(50,42), "S21188C5.s21188c5f8");
    check_field_offset(lv, s21188c5f9, ABISELECT(56,44), "S21188C5.s21188c5f9");
    check_field_offset(lv, s21188c5f10, ABISELECT(112,76), "S21188C5.s21188c5f10");
    check_field_offset(lv, s21188c5f11, ABISELECT(120,84), "S21188C5.s21188c5f11");
    test_class_info(&lv, &cd_S21188C5);
    dp->~S21188C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21188C5(Test_S21188C5, "S21188C5", ABISELECT(264,168));

#else // __cplusplus

extern void _ZN8S21188C5C1Ev();
extern void _ZN8S21188C5D2Ev();
Name_Map name_map_S21188C5[] = {
  NSPAIR(_ZN8S21188C5C1Ev),
  NSPAIR(_ZN8S21188C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S21188C6;
extern VTBL_ENTRY _ZTI8S21188C6[];
extern  VTBL_ENTRY _ZTV8S21188C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21188C6[];
static Base_Class bases_S21188C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C5,    ABISELECT(128,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3572C4,    ABISELECT(208,136), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21188C6,    ABISELECT(168,116), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21188C5[];
extern void _ZN8S21188C5D1Ev();
extern void _ZN8S21188C5D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S21188C5D1Ev,_ZTv0_n20_N8S21188C5D1Ev)();
extern void ABISELECT(_ZThn168_N8S21188C5D1Ev,_ZThn116_N8S21188C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21188C5D0Ev,_ZTv0_n20_N8S21188C5D0Ev)();
extern void ABISELECT(_ZThn168_N8S21188C5D0Ev,_ZThn116_N8S21188C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21188C5D1Ev,_ZTv0_n12_N8S21188C5D1Ev)();
extern void ABISELECT(_ZThn208_N8S21188C5D1Ev,_ZThn136_N8S21188C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21188C5D0Ev,_ZTv0_n12_N8S21188C5D0Ev)();
extern void ABISELECT(_ZThn208_N8S21188C5D0Ev,_ZThn136_N8S21188C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21188C5[] = {
  ABISELECT(208,136),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21188C5[0]),
  (VTBL_ENTRY)&_ZN8S21188C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21188C5D0Ev,
  ABISELECT(-168,-116),
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21188C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21188C5D1Ev,_ZTv0_n20_N8S21188C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21188C5D0Ev,_ZTv0_n20_N8S21188C5D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21188C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C5D1Ev,_ZTv0_n12_N8S21188C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C5D0Ev,_ZTv0_n12_N8S21188C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21188C5[];
extern void _ZN8S21188C6D1Ev();
extern void _ZN8S21188C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21188C6__8S21188C5[] = {
  ABISELECT(40,20),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21188C6[0]),
  (VTBL_ENTRY)&_ZN8S21188C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21188C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21188C6D1Ev,_ZTv0_n12_N8S21188C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21188C6D1Ev,_ZThn20_N8S21188C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21188C6D0Ev,_ZTv0_n12_N8S21188C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21188C6D0Ev,_ZThn20_N8S21188C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21188C6__8S21188C5[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21188C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C6D1Ev,_ZTv0_n12_N8S21188C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C6D0Ev,_ZTv0_n12_N8S21188C6D0Ev),
};
static  VTT_ENTRY vtt_S21188C5[] = {
  {&(_ZTV8S21188C5[5]),  5,19},
  {&(_ZTV8S21188C5[12]),  12,19},
  {&(_ZTV8S21188C5[17]),  17,19},
  {&(_tg__ZTV8S21188C6__8S21188C5[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21188C6__8S21188C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21188C5[];
extern  VTBL_ENTRY _ZTV8S21188C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21188C5[];
static VTBL_ENTRY alt_thunk_names201[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21188C6D0Ev,_ZTv0_n12_N8S21188C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21188C6D0Ev,_ZThn20_N8S21188C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21188C6D1Ev,_ZTv0_n12_N8S21188C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21188C6D1Ev,_ZThn20_N8S21188C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21188C5D0Ev,_ZTv0_n12_N8S21188C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21188C5D0Ev,_ZThn136_N8S21188C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21188C5D1Ev,_ZTv0_n12_N8S21188C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21188C5D1Ev,_ZThn136_N8S21188C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21188C5D0Ev,_ZTv0_n20_N8S21188C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21188C5D0Ev,_ZThn116_N8S21188C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21188C5D1Ev,_ZTv0_n20_N8S21188C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21188C5D1Ev,_ZThn116_N8S21188C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21188C5 = {  "S21188C5", // class name
  bases_S21188C5, 3,
  &(vtc_S21188C5[0]), // expected_vtbl_contents
  &(vtt_S21188C5[0]), // expected_vtt_contents
  ABISELECT(264,168), // object size
  NSPAIRA(_ZTI8S21188C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21188C5),19, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21188C5),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names201,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21188C1  : virtual S3572C4 , virtual S21188C5 {
  void *s21188c1f0;
  int s21188c1f1;
  short s21188c1f2;
  int s21188c1f3[8];
  ~S21188C1(); // tgen
  S21188C1(); // tgen
};
//SIG(1 S21188C1) C1{ VBC2{ vd m FC3{ m Fp Fs Fi Fp Fl[2]} FC4{}} VBC5{ VBC3 VBC6{ VBC3 VBC2 Fc:1 Fp[3]} vd Fs Fi[2] Fc FL Fi FC4 Fp Fc Fs FC2 Fi[2] FL} Fp Fi Fs Fi[8]}


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

static void Test_S21188C1()
{
  extern Class_Descriptor cd_S21188C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,55)];
    init_test(&cd_S21188C1, buf);
    S21188C1 *dp, &lv = *(dp=new (buf) S21188C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S21188C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21188C1)");
    check_base_class_offset(lv, (S3572C4*), ABISELECT(56,48), "S21188C1");
    check_base_class_offset(lv, (S3572C4*)(S21188C6*), ABISELECT(56,48), "S21188C1");
    check_base_class_offset(lv, (S3572C5*)(S21188C5*), ABISELECT(240,172), "S21188C1");
    check_base_class_offset(lv, (S3572C5*)(S21188C6*), ABISELECT(240,172), "S21188C1");
    check_base_class_offset(lv, (S21188C6*)(S21188C5*), ABISELECT(280,196), "S21188C1");
    check_base_class_offset(lv, (S21188C5*), ABISELECT(112,80), "S21188C1");
    check_field_offset(lv, s21188c1f0, ABISELECT(8,4), "S21188C1.s21188c1f0");
    check_field_offset(lv, s21188c1f1, ABISELECT(16,8), "S21188C1.s21188c1f1");
    check_field_offset(lv, s21188c1f2, ABISELECT(20,12), "S21188C1.s21188c1f2");
    check_field_offset(lv, s21188c1f3, ABISELECT(24,16), "S21188C1.s21188c1f3");
    test_class_info(&lv, &cd_S21188C1);
    dp->~S21188C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21188C1(Test_S21188C1, "S21188C1", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN8S21188C1C1Ev();
extern void _ZN8S21188C1D1Ev();
Name_Map name_map_S21188C1[] = {
  NSPAIR(_ZN8S21188C1C1Ev),
  NSPAIR(_ZN8S21188C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3572C4;
extern VTBL_ENTRY _ZTI7S3572C4[];
extern  VTBL_ENTRY _ZTV7S3572C4[];
extern Class_Descriptor cd_S3572C5;
extern VTBL_ENTRY _ZTI7S3572C5[];
extern Class_Descriptor cd_S21188C6;
extern VTBL_ENTRY _ZTI8S21188C6[];
extern  VTBL_ENTRY _ZTV8S21188C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21188C6[];
extern Class_Descriptor cd_S21188C5;
extern VTBL_ENTRY _ZTI8S21188C5[];
extern  VTBL_ENTRY _ZTV8S21188C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21188C5[];
static Base_Class bases_S21188C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C4,    ABISELECT(56,48), //bcp->offset
    8, //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_S3572C5,    ABISELECT(240,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21188C6,    ABISELECT(280,196), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21188C5,    ABISELECT(112,80), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21188C1[];
extern void _ZN8S21188C1D1Ev();
extern void _ZN8S21188C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21188C1D1Ev,_ZTv0_n12_N8S21188C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S21188C1D1Ev,_ZThn48_N8S21188C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21188C1D0Ev,_ZTv0_n12_N8S21188C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S21188C1D0Ev,_ZThn48_N8S21188C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21188C1D1Ev,_ZTv0_n24_N8S21188C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S21188C1D1Ev,_ZThn80_N8S21188C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21188C1D0Ev,_ZTv0_n24_N8S21188C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S21188C1D0Ev,_ZThn80_N8S21188C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21188C1D1Ev,_ZTv0_n20_N8S21188C1D1Ev)();
extern void ABISELECT(_ZThn280_N8S21188C1D1Ev,_ZThn196_N8S21188C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21188C1D0Ev,_ZTv0_n20_N8S21188C1D0Ev)();
extern void ABISELECT(_ZThn280_N8S21188C1D0Ev,_ZThn196_N8S21188C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21188C1[] = {
  ABISELECT(280,196),
  ABISELECT(240,172),
  ABISELECT(112,80),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21188C1[0]),
  (VTBL_ENTRY)&_ZN8S21188C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21188C1D0Ev,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S21188C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C1D1Ev,_ZTv0_n12_N8S21188C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C1D0Ev,_ZTv0_n12_N8S21188C1D0Ev),
  ABISELECT(-112,-80),
  ABISELECT(-56,-32),
  ABISELECT(168,116),
  ABISELECT(128,92),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S21188C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21188C1D1Ev,_ZTv0_n24_N8S21188C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21188C1D0Ev,_ZTv0_n24_N8S21188C1D0Ev),
  ABISELECT(-280,-196),
  ABISELECT(-224,-148),
  ABISELECT(-40,-24),
  ABISELECT(-280,-196),
  (VTBL_ENTRY)&(_ZTI8S21188C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21188C1D1Ev,_ZTv0_n20_N8S21188C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21188C1D0Ev,_ZTv0_n20_N8S21188C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21188C1[];
extern void _ZN8S21188C5D1Ev();
extern void _ZN8S21188C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21188C5__8S21188C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(168,116),
  ABISELECT(128,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21188C5[0]),
  (VTBL_ENTRY)&_ZN8S21188C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21188C5D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21188C5D1Ev,_ZTv0_n20_N8S21188C5D1Ev)();
extern void ABISELECT(_ZThn168_N8S21188C5D1Ev,_ZThn116_N8S21188C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21188C5D0Ev,_ZTv0_n20_N8S21188C5D0Ev)();
extern void ABISELECT(_ZThn168_N8S21188C5D0Ev,_ZThn116_N8S21188C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21188C6__8S21188C5__8S21188C1[] = {
  ABISELECT(-168,-116),
  ABISELECT(-224,-148),
  ABISELECT(-40,-24),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21188C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21188C5D1Ev,_ZTv0_n20_N8S21188C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21188C5D0Ev,_ZTv0_n20_N8S21188C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21188C5D1Ev,_ZTv0_n12_N8S21188C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21188C5D0Ev,_ZTv0_n12_N8S21188C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21188C5__8S21188C1[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S21188C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C5D1Ev,_ZTv0_n12_N8S21188C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C5D0Ev,_ZTv0_n12_N8S21188C5D0Ev),
};
extern void _ZN8S21188C6D1Ev();
extern void _ZN8S21188C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21188C6__8S21188C1[] = {
  ABISELECT(-224,-148),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21188C6[0]),
  (VTBL_ENTRY)&_ZN8S21188C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21188C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21188C6D1Ev,_ZTv0_n12_N8S21188C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21188C6D0Ev,_ZTv0_n12_N8S21188C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3572C4__8S21188C6__8S21188C1[] = {
  ABISELECT(224,148),
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI8S21188C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C6D1Ev,_ZTv0_n12_N8S21188C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21188C6D0Ev,_ZTv0_n12_N8S21188C6D0Ev),
};
static  VTT_ENTRY vtt_S21188C1[] = {
  {&(_ZTV8S21188C1[6]),  6,28},
  {&(_ZTV8S21188C1[11]),  11,28},
  {&(_ZTV8S21188C1[19]),  19,28},
  {&(_ZTV8S21188C1[26]),  26,28},
  {&(_tg__ZTV8S21188C5__8S21188C1[5]),  5,7},
  {&(_tg__ZTV8S21188C6__8S21188C5__8S21188C1[5]),  5,7},
  {&(_tg__ZTV7S3572C4__8S21188C5__8S21188C1[3]),  3,5},
  {&(_tg__ZTV8S21188C6__8S21188C1[4]),  4,6},
  {&(_tg__ZTV7S3572C4__8S21188C6__8S21188C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21188C1[];
extern  VTBL_ENTRY _ZTV8S21188C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21188C1[];
static VTBL_ENTRY alt_thunk_names202[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21188C5D0Ev,_ZTv0_n20_N8S21188C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21188C5D0Ev,_ZThn116_N8S21188C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21188C5D1Ev,_ZTv0_n20_N8S21188C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21188C5D1Ev,_ZThn116_N8S21188C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21188C1D0Ev,_ZTv0_n20_N8S21188C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21188C1D0Ev,_ZThn196_N8S21188C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21188C1D1Ev,_ZTv0_n20_N8S21188C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21188C1D1Ev,_ZThn196_N8S21188C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21188C1D0Ev,_ZTv0_n24_N8S21188C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21188C1D0Ev,_ZThn80_N8S21188C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21188C1D1Ev,_ZTv0_n24_N8S21188C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21188C1D1Ev,_ZThn80_N8S21188C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21188C1D0Ev,_ZTv0_n12_N8S21188C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21188C1D0Ev,_ZThn48_N8S21188C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21188C1D1Ev,_ZTv0_n12_N8S21188C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21188C1D1Ev,_ZThn48_N8S21188C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21188C1 = {  "S21188C1", // class name
  bases_S21188C1, 4,
  &(vtc_S21188C1[0]), // expected_vtbl_contents
  &(vtt_S21188C1[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI8S21188C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21188C1),28, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21188C1),9, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names202,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8141C12_nt  {
  __tsi64 s8141c12f0;
};
//SIG(-1 S8141C12_nt) C1{ FL}



//skip512 S8141C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8141C1  : S3712C3_nt {
  void *s8141c1f0[3];
  int s8141c1f1;
  ::S10225C15_nt s8141c1f2;
  ::S2405C20_nt s8141c1f3;
  ::S10225C3 s8141c1f4;
  ::S8141C12_nt s8141c1f5;
  void *s8141c1f6;
  int s8141c1f7[3];
  virtual  ~S8141C1(); // _ZN7S8141C1D1Ev
  S8141C1(); // tgen
};
//SIG(1 S8141C1) C1{ BC2{ vd m Fi} vd Fp[3] Fi FC3{ BC4{ m Fp Fi FC5{ m} FC5}} FC6{ m Fp Fi FC7{ m}} FC8{ BC9{ vd v4 v5 v6} vd v1 v2 v3 FC10{ FL[4]}} FC11{ FL} Fp Fi[3]}


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

static void Test_S8141C1()
{
  extern Class_Descriptor cd_S8141C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,28)];
    init_test(&cd_S8141C1, buf);
    S8141C1 *dp, &lv = *(dp=new (buf) S8141C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,108), "sizeof(S8141C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8141C1)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S8141C1");
    check_field_offset(lv, s8141c1f0, ABISELECT(16,8), "S8141C1.s8141c1f0");
    check_field_offset(lv, s8141c1f1, ABISELECT(40,20), "S8141C1.s8141c1f1");
    check_field_offset(lv, s8141c1f2, ABISELECT(48,24), "S8141C1.s8141c1f2");
    check_field_offset(lv, s8141c1f3, ABISELECT(64,36), "S8141C1.s8141c1f3");
    check_field_offset(lv, s8141c1f4, ABISELECT(80,48), "S8141C1.s8141c1f4");
    check_field_offset(lv, s8141c1f5, ABISELECT(120,84), "S8141C1.s8141c1f5");
    check_field_offset(lv, s8141c1f6, ABISELECT(128,92), "S8141C1.s8141c1f6");
    check_field_offset(lv, s8141c1f7, ABISELECT(136,96), "S8141C1.s8141c1f7");
    test_class_info(&lv, &cd_S8141C1);
    dp->~S8141C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8141C1(Test_S8141C1, "S8141C1", ABISELECT(152,108));

#else // __cplusplus

extern void _ZN7S8141C1C1Ev();
extern void _ZN7S8141C1D1Ev();
Name_Map name_map_S8141C1[] = {
  NSPAIR(_ZN7S8141C1C1Ev),
  NSPAIR(_ZN7S8141C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S8141C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8141C1[];
extern void _ZN7S8141C1D1Ev();
extern void _ZN7S8141C1D0Ev();
static  VTBL_ENTRY vtc_S8141C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8141C1[0]),
  (VTBL_ENTRY)&_ZN7S8141C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8141C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8141C1[];
extern  VTBL_ENTRY _ZTV7S8141C1[];
Class_Descriptor cd_S8141C1 = {  "S8141C1", // class name
  bases_S8141C1, 1,
  &(vtc_S8141C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,108), // object size
  NSPAIRA(_ZTI7S8141C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8141C1),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  S19531C4  {
  int s19531c4f0;
  virtual void  v4(); // _ZN8S19531C42v4Ev
  virtual void  v5(); // _ZN8S19531C42v5Ev
  virtual void  v6(); // _ZN8S19531C42v6Ev
  virtual void  v7(); // _ZN8S19531C42v7Ev
  virtual void  v8(); // _ZN8S19531C42v8Ev
  ~S19531C4(); // tgen
  S19531C4(); // tgen
};
//SIG(-1 S19531C4) C1{ v1 v2 v3 v4 v5 Fi}


void  S19531C4 ::v4(){vfunc_called(this, "_ZN8S19531C42v4Ev");}
void  S19531C4 ::v5(){vfunc_called(this, "_ZN8S19531C42v5Ev");}
void  S19531C4 ::v6(){vfunc_called(this, "_ZN8S19531C42v6Ev");}
void  S19531C4 ::v7(){vfunc_called(this, "_ZN8S19531C42v7Ev");}
void  S19531C4 ::v8(){vfunc_called(this, "_ZN8S19531C42v8Ev");}
S19531C4 ::~S19531C4(){ note_dtor("S19531C4", this);} // tgen
S19531C4 ::S19531C4(){ note_ctor("S19531C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19531C4C1Ev();
extern void _ZN8S19531C4D1Ev();
Name_Map name_map_S19531C4[] = {
  NSPAIR(_ZN8S19531C4C1Ev),
  NSPAIR(_ZN8S19531C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19531C4[];
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
static  VTBL_ENTRY vtc_S19531C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19531C4[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
};
extern VTBL_ENTRY _ZTI8S19531C4[];
extern  VTBL_ENTRY _ZTV8S19531C4[];
Class_Descriptor cd_S19531C4 = {  "S19531C4", // class name
  0,0,//no base classes
  &(vtc_S19531C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19531C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19531C4),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19531C5  : S19531C4 {
  virtual void  v9(); // _ZN8S19531C52v9Ev
  virtual void  v10(); // _ZN8S19531C53v10Ev
  ~S19531C5(); // tgen
  S19531C5(); // tgen
};
//SIG(-1 S19531C5) C1{ BC2{ v3 v4 v5 v6 v7 Fi} v1 v2}


void  S19531C5 ::v9(){vfunc_called(this, "_ZN8S19531C52v9Ev");}
void  S19531C5 ::v10(){vfunc_called(this, "_ZN8S19531C53v10Ev");}
S19531C5 ::~S19531C5(){ note_dtor("S19531C5", this);} // tgen
S19531C5 ::S19531C5(){ note_ctor("S19531C5", this);} // tgen

static void Test_S19531C5()
{
  extern Class_Descriptor cd_S19531C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19531C5, buf);
    S19531C5 *dp, &lv = *(dp=new (buf) S19531C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19531C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19531C5)");
    check_base_class_offset(lv, (S19531C4*), 0, "S19531C5");
    test_class_info(&lv, &cd_S19531C5);
    dp->~S19531C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19531C5(Test_S19531C5, "S19531C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19531C5C1Ev();
extern void _ZN8S19531C5D1Ev();
Name_Map name_map_S19531C5[] = {
  NSPAIR(_ZN8S19531C5C1Ev),
  NSPAIR(_ZN8S19531C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19531C4;
extern VTBL_ENTRY _ZTI8S19531C4[];
extern  VTBL_ENTRY _ZTV8S19531C4[];
static Base_Class bases_S19531C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19531C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19531C5[];
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C52v9Ev();
extern void _ZN8S19531C53v10Ev();
static  VTBL_ENTRY vtc_S19531C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19531C5[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19531C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19531C53v10Ev,
};
extern VTBL_ENTRY _ZTI8S19531C5[];
extern  VTBL_ENTRY _ZTV8S19531C5[];
Class_Descriptor cd_S19531C5 = {  "S19531C5", // class name
  bases_S19531C5, 1,
  &(vtc_S19531C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19531C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19531C5),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19531C3  : virtual S19531C4 , virtual S19531C5 {
  void *s19531c3f0;
  virtual void  v11(); // _ZN8S19531C33v11Ev
  virtual void  v12(); // _ZN8S19531C33v12Ev
  virtual void  v13(); // _ZN8S19531C33v13Ev
  ~S19531C3(); // tgen
  S19531C3(); // tgen
};
//SIG(-1 S19531C3) C1{ VBC2{ v4 v5 v6 v7 v8 Fi} VBC3{ BC2 v9 v10} v1 v2 v3 Fp}


void  S19531C3 ::v11(){vfunc_called(this, "_ZN8S19531C33v11Ev");}
void  S19531C3 ::v12(){vfunc_called(this, "_ZN8S19531C33v12Ev");}
void  S19531C3 ::v13(){vfunc_called(this, "_ZN8S19531C33v13Ev");}
S19531C3 ::~S19531C3(){ note_dtor("S19531C3", this);} // tgen
S19531C3 ::S19531C3(){ note_ctor("S19531C3", this);} // tgen

static void Test_S19531C3()
{
  extern Class_Descriptor cd_S19531C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S19531C3, buf);
    S19531C3 *dp, &lv = *(dp=new (buf) S19531C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19531C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19531C3)");
    /*is_ambiguous_... S19531C3::S19531C4 */ AMB_check_base_class_offset(lv, (S19531C4*), ABISELECT(16,8), "S19531C3");
    check_base_class_offset(lv, (S19531C4*)(S19531C5*), ABISELECT(32,16), "S19531C3");
    check_base_class_offset(lv, (S19531C5*), ABISELECT(32,16), "S19531C3");
    check_field_offset(lv, s19531c3f0, ABISELECT(8,4), "S19531C3.s19531c3f0");
    test_class_info(&lv, &cd_S19531C3);
    dp->~S19531C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19531C3(Test_S19531C3, "S19531C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S19531C3C1Ev();
extern void _ZN8S19531C3D1Ev();
Name_Map name_map_S19531C3[] = {
  NSPAIR(_ZN8S19531C3C1Ev),
  NSPAIR(_ZN8S19531C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19531C4;
extern VTBL_ENTRY _ZTI8S19531C4[];
extern  VTBL_ENTRY _ZTV8S19531C4[];
extern Class_Descriptor cd_S19531C4;
extern VTBL_ENTRY _ZTI8S19531C4[];
extern  VTBL_ENTRY _ZTV8S19531C4[];
extern Class_Descriptor cd_S19531C5;
extern VTBL_ENTRY _ZTI8S19531C5[];
extern  VTBL_ENTRY _ZTV8S19531C5[];
static Base_Class bases_S19531C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19531C4,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19531C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19531C5,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19531C3[];
extern void _ZN8S19531C33v11Ev();
extern void _ZN8S19531C33v12Ev();
extern void _ZN8S19531C33v13Ev();
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C52v9Ev();
extern void _ZN8S19531C53v10Ev();
static  VTBL_ENTRY vtc_S19531C3[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19531C3[0]),
  (VTBL_ENTRY)&_ZN8S19531C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19531C3[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19531C3[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19531C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19531C53v10Ev,
};
extern VTBL_ENTRY _ZTV8S19531C3[];
static  VTT_ENTRY vtt_S19531C3[] = {
  {&(_ZTV8S19531C3[4]),  4,35},
  {&(_ZTV8S19531C3[14]),  14,35},
  {&(_ZTV8S19531C3[28]),  28,35},
};
extern VTBL_ENTRY _ZTI8S19531C3[];
extern  VTBL_ENTRY _ZTV8S19531C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19531C3[];
Class_Descriptor cd_S19531C3 = {  "S19531C3", // class name
  bases_S19531C3, 3,
  &(vtc_S19531C3[0]), // expected_vtbl_contents
  &(vtt_S19531C3[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S19531C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19531C3),35, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19531C3),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19531C6  : S19531C4 {
  long double s19531c6f0;
  void *s19531c6f1[7];
  virtual void  v14(); // _ZN8S19531C63v14Ev
  virtual void  v15(); // _ZN8S19531C63v15Ev
  virtual void  v16(); // _ZN8S19531C63v16Ev
  virtual void  v17(); // _ZN8S19531C63v17Ev
  virtual void  v18(); // _ZN8S19531C63v18Ev
  virtual void  v19(); // _ZN8S19531C63v19Ev
  ~S19531C6(); // tgen
  S19531C6(); // tgen
};
//SIG(-1 S19531C6) C1{ BC2{ v7 v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 FD Fp[7]}


void  S19531C6 ::v14(){vfunc_called(this, "_ZN8S19531C63v14Ev");}
void  S19531C6 ::v15(){vfunc_called(this, "_ZN8S19531C63v15Ev");}
void  S19531C6 ::v16(){vfunc_called(this, "_ZN8S19531C63v16Ev");}
void  S19531C6 ::v17(){vfunc_called(this, "_ZN8S19531C63v17Ev");}
void  S19531C6 ::v18(){vfunc_called(this, "_ZN8S19531C63v18Ev");}
void  S19531C6 ::v19(){vfunc_called(this, "_ZN8S19531C63v19Ev");}
S19531C6 ::~S19531C6(){ note_dtor("S19531C6", this);} // tgen
S19531C6 ::S19531C6(){ note_ctor("S19531C6", this);} // tgen

static void Test_S19531C6()
{
  extern Class_Descriptor cd_S19531C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S19531C6, buf);
    S19531C6 *dp, &lv = *(dp=new (buf) S19531C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S19531C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19531C6)");
    check_base_class_offset(lv, (S19531C4*), 0, "S19531C6");
    check_field_offset(lv, s19531c6f0, ABISELECT(16,8), "S19531C6.s19531c6f0");
    check_field_offset(lv, s19531c6f1, ABISELECT(32,20), "S19531C6.s19531c6f1");
    test_class_info(&lv, &cd_S19531C6);
    dp->~S19531C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19531C6(Test_S19531C6, "S19531C6", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN8S19531C6C1Ev();
extern void _ZN8S19531C6D1Ev();
Name_Map name_map_S19531C6[] = {
  NSPAIR(_ZN8S19531C6C1Ev),
  NSPAIR(_ZN8S19531C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19531C4;
extern VTBL_ENTRY _ZTI8S19531C4[];
extern  VTBL_ENTRY _ZTV8S19531C4[];
static Base_Class bases_S19531C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19531C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19531C6[];
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C63v14Ev();
extern void _ZN8S19531C63v15Ev();
extern void _ZN8S19531C63v16Ev();
extern void _ZN8S19531C63v17Ev();
extern void _ZN8S19531C63v18Ev();
extern void _ZN8S19531C63v19Ev();
static  VTBL_ENTRY vtc_S19531C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19531C6[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v19Ev,
};
extern VTBL_ENTRY _ZTI8S19531C6[];
extern  VTBL_ENTRY _ZTV8S19531C6[];
Class_Descriptor cd_S19531C6 = {  "S19531C6", // class name
  bases_S19531C6, 1,
  &(vtc_S19531C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI8S19531C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19531C6),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19531C2  : S19531C3 , S19531C6 {
  void *s19531c2f0;
  char s19531c2f1;
  virtual void  v20(); // _ZN8S19531C23v20Ev
  virtual void  v21(); // _ZN8S19531C23v21Ev
  virtual void  v22(); // _ZN8S19531C23v22Ev
  virtual void  v23(); // _ZN8S19531C23v23Ev
  ~S19531C2(); // tgen
  S19531C2(); // tgen
};
//SIG(-1 S19531C2) C1{ BC2{ VBC3{ v5 v6 v7 v8 v9 Fi} VBC4{ BC3 v10 v11} v12 v13 v14 Fp} BC5{ BC3 v15 v16 v17 v18 v19 v20 FD Fp[7]} v1 v2 v3 v4 Fp Fc}


void  S19531C2 ::v20(){vfunc_called(this, "_ZN8S19531C23v20Ev");}
void  S19531C2 ::v21(){vfunc_called(this, "_ZN8S19531C23v21Ev");}
void  S19531C2 ::v22(){vfunc_called(this, "_ZN8S19531C23v22Ev");}
void  S19531C2 ::v23(){vfunc_called(this, "_ZN8S19531C23v23Ev");}
S19531C2 ::~S19531C2(){ note_dtor("S19531C2", this);} // tgen
S19531C2 ::S19531C2(){ note_ctor("S19531C2", this);} // tgen

static void Test_S19531C2()
{
  extern Class_Descriptor cd_S19531C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,21)];
    init_test(&cd_S19531C2, buf);
    S19531C2 *dp, &lv = *(dp=new (buf) S19531C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S19531C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19531C2)");
    /*is_ambiguous_... S19531C3::S19531C4 */ AMB_check_base_class_offset(lv, (S19531C4*)(S19531C3*), ABISELECT(120,64), "S19531C2");
    check_base_class_offset(lv, (S19531C4*)(S19531C5*), ABISELECT(136,72), "S19531C2");
    check_base_class_offset(lv, (S19531C5*)(S19531C3*), ABISELECT(136,72), "S19531C2");
    check_base_class_offset(lv, (S19531C3*), 0, "S19531C2");
    check_base_class_offset(lv, (S19531C4*)(S19531C6*), ABISELECT(16,8), "S19531C2");
    check_base_class_offset(lv, (S19531C6*), ABISELECT(16,8), "S19531C2");
    check_field_offset(lv, s19531c2f0, ABISELECT(104,56), "S19531C2.s19531c2f0");
    check_field_offset(lv, s19531c2f1, ABISELECT(112,60), "S19531C2.s19531c2f1");
    test_class_info(&lv, &cd_S19531C2);
    dp->~S19531C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19531C2(Test_S19531C2, "S19531C2", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN8S19531C2C1Ev();
extern void _ZN8S19531C2D1Ev();
Name_Map name_map_S19531C2[] = {
  NSPAIR(_ZN8S19531C2C1Ev),
  NSPAIR(_ZN8S19531C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19531C4;
extern VTBL_ENTRY _ZTI8S19531C4[];
extern  VTBL_ENTRY _ZTV8S19531C4[];
extern Class_Descriptor cd_S19531C4;
extern VTBL_ENTRY _ZTI8S19531C4[];
extern  VTBL_ENTRY _ZTV8S19531C4[];
extern Class_Descriptor cd_S19531C5;
extern VTBL_ENTRY _ZTI8S19531C5[];
extern  VTBL_ENTRY _ZTV8S19531C5[];
extern Class_Descriptor cd_S19531C3;
extern VTBL_ENTRY _ZTI8S19531C3[];
extern  VTBL_ENTRY _ZTV8S19531C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19531C3[];
extern Class_Descriptor cd_S19531C4;
extern VTBL_ENTRY _ZTI8S19531C4[];
extern  VTBL_ENTRY _ZTV8S19531C4[];
extern Class_Descriptor cd_S19531C6;
extern VTBL_ENTRY _ZTI8S19531C6[];
extern  VTBL_ENTRY _ZTV8S19531C6[];
static Base_Class bases_S19531C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19531C4,    ABISELECT(120,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19531C4,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19531C5,    ABISELECT(136,72), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19531C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19531C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19531C6,    ABISELECT(16,8), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19531C2[];
extern void _ZN8S19531C33v11Ev();
extern void _ZN8S19531C33v12Ev();
extern void _ZN8S19531C33v13Ev();
extern void _ZN8S19531C23v20Ev();
extern void _ZN8S19531C23v21Ev();
extern void _ZN8S19531C23v22Ev();
extern void _ZN8S19531C23v23Ev();
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C63v14Ev();
extern void _ZN8S19531C63v15Ev();
extern void _ZN8S19531C63v16Ev();
extern void _ZN8S19531C63v17Ev();
extern void _ZN8S19531C63v18Ev();
extern void _ZN8S19531C63v19Ev();
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C52v9Ev();
extern void _ZN8S19531C53v10Ev();
static  VTBL_ENTRY vtc_S19531C2[] = {
  ABISELECT(136,72),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19531C2[0]),
  (VTBL_ENTRY)&_ZN8S19531C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v22Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v23Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19531C2[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19531C2[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S19531C2[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19531C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19531C53v10Ev,
};
extern VTBL_ENTRY _ZTV8S19531C2[];
extern void _ZN8S19531C33v11Ev();
extern void _ZN8S19531C33v12Ev();
extern void _ZN8S19531C33v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19531C3__8S19531C2[] = {
  ABISELECT(136,72),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19531C3[0]),
  (VTBL_ENTRY)&_ZN8S19531C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v13Ev,
};
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19531C4__8S19531C3__8S19531C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19531C3[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
};
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C52v9Ev();
extern void _ZN8S19531C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19531C5__8S19531C3__8S19531C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S19531C3[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19531C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19531C53v10Ev,
};
static  VTT_ENTRY vtt_S19531C2[] = {
  {&(_ZTV8S19531C2[4]),  4,52},
  {&(_tg__ZTV8S19531C3__8S19531C2[4]),  4,7},
  {&(_tg__ZTV8S19531C4__8S19531C3__8S19531C2[7]),  7,12},
  {&(_tg__ZTV8S19531C5__8S19531C3__8S19531C2[9]),  9,16},
  {&(_ZTV8S19531C2[31]),  31,52},
  {&(_ZTV8S19531C2[45]),  45,52},
};
extern VTBL_ENTRY _ZTI8S19531C2[];
extern  VTBL_ENTRY _ZTV8S19531C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19531C2[];
Class_Descriptor cd_S19531C2 = {  "S19531C2", // class name
  bases_S19531C2, 6,
  &(vtc_S19531C2[0]), // expected_vtbl_contents
  &(vtt_S19531C2[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI8S19531C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19531C2),52, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19531C2),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19531C1  : virtual S19531C2 {
  virtual void  v1(); // _ZN8S19531C12v1Ev
  virtual void  v2(); // _ZN8S19531C12v2Ev
  virtual void  v3(); // _ZN8S19531C12v3Ev
  ~S19531C1(); // tgen
  S19531C1(); // tgen
};
//SIG(1 S19531C1) C1{ VBC2{ BC3{ VBC4{ v4 v5 v6 v7 v8 Fi} VBC5{ BC4 v9 v10} v11 v12 v13 Fp} BC6{ BC4 v14 v15 v16 v17 v18 v19 FD Fp[7]} v20 v21 v22 v23 Fp Fc} v1 v2 v3}


void  S19531C1 ::v1(){vfunc_called(this, "_ZN8S19531C12v1Ev");}
void  S19531C1 ::v2(){vfunc_called(this, "_ZN8S19531C12v2Ev");}
void  S19531C1 ::v3(){vfunc_called(this, "_ZN8S19531C12v3Ev");}
S19531C1 ::~S19531C1(){ note_dtor("S19531C1", this);} // tgen
S19531C1 ::S19531C1(){ note_ctor("S19531C1", this);} // tgen

static void Test_S19531C1()
{
  extern Class_Descriptor cd_S19531C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,22)];
    init_test(&cd_S19531C1, buf);
    S19531C1 *dp, &lv = *(dp=new (buf) S19531C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,84), "sizeof(S19531C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19531C1)");
    /*is_ambiguous_... S19531C3::S19531C4 */ AMB_check_base_class_offset(lv, (S19531C4*)(S19531C3*)(S19531C2*), ABISELECT(136,68), "S19531C1");
    check_base_class_offset(lv, (S19531C4*)(S19531C5*), ABISELECT(152,76), "S19531C1");
    check_base_class_offset(lv, (S19531C5*)(S19531C3*)(S19531C2*), ABISELECT(152,76), "S19531C1");
    check_base_class_offset(lv, (S19531C3*)(S19531C2*), ABISELECT(16,4), "S19531C1");
    check_base_class_offset(lv, (S19531C4*)(S19531C6*)(S19531C2*), ABISELECT(32,12), "S19531C1");
    check_base_class_offset(lv, (S19531C6*)(S19531C2*), ABISELECT(32,12), "S19531C1");
    check_base_class_offset(lv, (S19531C2*), ABISELECT(16,4), "S19531C1");
    test_class_info(&lv, &cd_S19531C1);
    dp->~S19531C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19531C1(Test_S19531C1, "S19531C1", ABISELECT(176,84));

#else // __cplusplus

extern void _ZN8S19531C1C1Ev();
extern void _ZN8S19531C1D1Ev();
Name_Map name_map_S19531C1[] = {
  NSPAIR(_ZN8S19531C1C1Ev),
  NSPAIR(_ZN8S19531C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19531C4;
extern VTBL_ENTRY _ZTI8S19531C4[];
extern  VTBL_ENTRY _ZTV8S19531C4[];
extern Class_Descriptor cd_S19531C4;
extern VTBL_ENTRY _ZTI8S19531C4[];
extern  VTBL_ENTRY _ZTV8S19531C4[];
extern Class_Descriptor cd_S19531C5;
extern VTBL_ENTRY _ZTI8S19531C5[];
extern  VTBL_ENTRY _ZTV8S19531C5[];
extern Class_Descriptor cd_S19531C3;
extern VTBL_ENTRY _ZTI8S19531C3[];
extern  VTBL_ENTRY _ZTV8S19531C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19531C3[];
extern Class_Descriptor cd_S19531C4;
extern VTBL_ENTRY _ZTI8S19531C4[];
extern  VTBL_ENTRY _ZTV8S19531C4[];
extern Class_Descriptor cd_S19531C6;
extern VTBL_ENTRY _ZTI8S19531C6[];
extern  VTBL_ENTRY _ZTV8S19531C6[];
extern Class_Descriptor cd_S19531C2;
extern VTBL_ENTRY _ZTI8S19531C2[];
extern  VTBL_ENTRY _ZTV8S19531C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19531C2[];
static Base_Class bases_S19531C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19531C4,    ABISELECT(136,68), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19531C4,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19531C5,    ABISELECT(152,76), //bcp->offset
    62, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19531C3,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19531C4,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19531C6,    ABISELECT(32,12), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19531C2,    ABISELECT(16,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19531C1[];
extern void _ZN8S19531C12v1Ev();
extern void _ZN8S19531C12v2Ev();
extern void _ZN8S19531C12v3Ev();
extern void _ZN8S19531C33v11Ev();
extern void _ZN8S19531C33v12Ev();
extern void _ZN8S19531C33v13Ev();
extern void _ZN8S19531C23v20Ev();
extern void _ZN8S19531C23v21Ev();
extern void _ZN8S19531C23v22Ev();
extern void _ZN8S19531C23v23Ev();
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C63v14Ev();
extern void _ZN8S19531C63v15Ev();
extern void _ZN8S19531C63v16Ev();
extern void _ZN8S19531C63v17Ev();
extern void _ZN8S19531C63v18Ev();
extern void _ZN8S19531C63v19Ev();
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C52v9Ev();
extern void _ZN8S19531C53v10Ev();
static  VTBL_ENTRY vtc_S19531C1[] = {
  ABISELECT(152,76),
  ABISELECT(136,68),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19531C1[0]),
  (VTBL_ENTRY)&_ZN8S19531C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19531C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19531C12v3Ev,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(136,72),
  ABISELECT(120,64),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19531C1[0]),
  (VTBL_ENTRY)&_ZN8S19531C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v22Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v23Ev,
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19531C1[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19531C63v19Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI8S19531C1[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S19531C1[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19531C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19531C53v10Ev,
};
extern VTBL_ENTRY _ZTV8S19531C1[];
extern void _ZN8S19531C33v11Ev();
extern void _ZN8S19531C33v12Ev();
extern void _ZN8S19531C33v13Ev();
extern void _ZN8S19531C23v20Ev();
extern void _ZN8S19531C23v21Ev();
extern void _ZN8S19531C23v22Ev();
extern void _ZN8S19531C23v23Ev();
static  VTBL_ENTRY _tg__ZTV8S19531C2__8S19531C1[] = {
  ABISELECT(136,72),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19531C2[0]),
  (VTBL_ENTRY)&_ZN8S19531C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v20Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v21Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v22Ev,
  (VTBL_ENTRY)&_ZN8S19531C23v23Ev,
};
extern void _ZN8S19531C33v11Ev();
extern void _ZN8S19531C33v12Ev();
extern void _ZN8S19531C33v13Ev();
static  VTBL_ENTRY _tg__ZTV8S19531C38S19531C2__8S19531C1[] = {
  ABISELECT(136,72),
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19531C3[0]),
  (VTBL_ENTRY)&_ZN8S19531C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19531C33v13Ev,
};
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19531C4__8S19531C38S19531C2__8S19531C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19531C3[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
};
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C52v9Ev();
extern void _ZN8S19531C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19531C5__8S19531C38S19531C2__8S19531C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S19531C3[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19531C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19531C53v10Ev,
};
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19531C4__8S19531C2__8S19531C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19531C2[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
};
extern void _ZN8S19531C42v4Ev();
extern void _ZN8S19531C42v5Ev();
extern void _ZN8S19531C42v6Ev();
extern void _ZN8S19531C42v7Ev();
extern void _ZN8S19531C42v8Ev();
extern void _ZN8S19531C52v9Ev();
extern void _ZN8S19531C53v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19531C5__8S19531C2__8S19531C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S19531C2[0]),
  (VTBL_ENTRY)&_ZN8S19531C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19531C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19531C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19531C53v10Ev,
};
static  VTT_ENTRY vtt_S19531C1[] = {
  {&(_ZTV8S19531C1[5]),  5,78},
  {&(_ZTV8S19531C1[30]),  30,78},
  {&(_ZTV8S19531C1[57]),  57,78},
  {&(_ZTV8S19531C1[71]),  71,78},
  {&(_ZTV8S19531C1[39]),  39,78},
  {&(_tg__ZTV8S19531C2__8S19531C1[4]),  4,11},
  {&(_tg__ZTV8S19531C38S19531C2__8S19531C1[4]),  4,7},
  {&(_tg__ZTV8S19531C4__8S19531C38S19531C2__8S19531C1[7]),  7,12},
  {&(_tg__ZTV8S19531C5__8S19531C38S19531C2__8S19531C1[9]),  9,16},
  {&(_tg__ZTV8S19531C4__8S19531C2__8S19531C1[7]),  7,12},
  {&(_tg__ZTV8S19531C5__8S19531C2__8S19531C1[9]),  9,16},
};
extern VTBL_ENTRY _ZTI8S19531C1[];
extern  VTBL_ENTRY _ZTV8S19531C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19531C1[];
Class_Descriptor cd_S19531C1 = {  "S19531C1", // class name
  bases_S19531C1, 7,
  &(vtc_S19531C1[0]), // expected_vtbl_contents
  &(vtt_S19531C1[0]), // expected_vtt_contents
  ABISELECT(176,84), // object size
  NSPAIRA(_ZTI8S19531C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19531C1),78, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19531C1),11, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15078C1  {
  char s15078c1f0;
  int s15078c1f1;
  ::S10225C3 s15078c1f2;
  ::S10225C19 s15078c1f3;
  ::S2405C26 s15078c1f4;
  ::S10225C3 s15078c1f5;
  ::S2405C22 s15078c1f6;
  void  mf15078c1(); // _ZN8S15078C19mf15078c1Ev
};
//SIG(1 S15078C1) C1{ m Fc Fi FC2{ BC3{ vd v4 v5 v6} vd v1 v2 v3 FC4{ FL[4]}} FC5{ BC3 vd v7 v8 v9 Fi} FC6{ m Fp Fi FC7{ m} FC7} FC2 FC8{ m Fp Fi FC9{ m} FC9}}


void  S15078C1 ::mf15078c1(){}

static void Test_S15078C1()
{
  {
    init_simple_test("S15078C1");
    S15078C1 lv;
    check2(sizeof(lv), ABISELECT(136,112), "sizeof(S15078C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15078C1)");
    check_field_offset(lv, s15078c1f0, 0, "S15078C1.s15078c1f0");
    check_field_offset(lv, s15078c1f1, 4, "S15078C1.s15078c1f1");
    check_field_offset(lv, s15078c1f2, 8, "S15078C1.s15078c1f2");
    check_field_offset(lv, s15078c1f3, ABISELECT(48,44), "S15078C1.s15078c1f3");
    check_field_offset(lv, s15078c1f4, ABISELECT(64,52), "S15078C1.s15078c1f4");
    check_field_offset(lv, s15078c1f5, ABISELECT(80,64), "S15078C1.s15078c1f5");
    check_field_offset(lv, s15078c1f6, ABISELECT(120,100), "S15078C1.s15078c1f6");
  }
}
static Arrange_To_Call_Me vS15078C1(Test_S15078C1, "S15078C1", ABISELECT(136,112));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8142C1  : S3712C3_nt {
  void *s8142c1f0[3];
  int s8142c1f1;
  ::S10225C15_nt s8142c1f2;
  ::S2405C20_nt s8142c1f3;
  ::S3704C4_nt s8142c1f4;
  ::S8141C12_nt s8142c1f5;
  void *s8142c1f6;
  int s8142c1f7[3];
  virtual  ~S8142C1(); // _ZN7S8142C1D1Ev
  S8142C1(); // tgen
};
//SIG(1 S8142C1) C1{ BC2{ vd m Fi} vd Fp[3] Fi FC3{ BC4{ m Fp Fi FC5{ m} FC5}} FC6{ m Fp Fi FC7{ m}} FC8{ BC9{ vd v4 v5 v6} vd v1 v2 v3 FL[4]} FC10{ FL} Fp Fi[3]}


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

static void Test_S8142C1()
{
  extern Class_Descriptor cd_S8142C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,28)];
    init_test(&cd_S8142C1, buf);
    S8142C1 *dp, &lv = *(dp=new (buf) S8142C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,108), "sizeof(S8142C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8142C1)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S8142C1");
    check_field_offset(lv, s8142c1f0, ABISELECT(16,8), "S8142C1.s8142c1f0");
    check_field_offset(lv, s8142c1f1, ABISELECT(40,20), "S8142C1.s8142c1f1");
    check_field_offset(lv, s8142c1f2, ABISELECT(48,24), "S8142C1.s8142c1f2");
    check_field_offset(lv, s8142c1f3, ABISELECT(64,36), "S8142C1.s8142c1f3");
    check_field_offset(lv, s8142c1f4, ABISELECT(80,48), "S8142C1.s8142c1f4");
    check_field_offset(lv, s8142c1f5, ABISELECT(120,84), "S8142C1.s8142c1f5");
    check_field_offset(lv, s8142c1f6, ABISELECT(128,92), "S8142C1.s8142c1f6");
    check_field_offset(lv, s8142c1f7, ABISELECT(136,96), "S8142C1.s8142c1f7");
    test_class_info(&lv, &cd_S8142C1);
    dp->~S8142C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8142C1(Test_S8142C1, "S8142C1", ABISELECT(152,108));

#else // __cplusplus

extern void _ZN7S8142C1C1Ev();
extern void _ZN7S8142C1D1Ev();
Name_Map name_map_S8142C1[] = {
  NSPAIR(_ZN7S8142C1C1Ev),
  NSPAIR(_ZN7S8142C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S8142C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8142C1[];
extern void _ZN7S8142C1D1Ev();
extern void _ZN7S8142C1D0Ev();
static  VTBL_ENTRY vtc_S8142C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8142C1[0]),
  (VTBL_ENTRY)&_ZN7S8142C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8142C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8142C1[];
extern  VTBL_ENTRY _ZTV7S8142C1[];
Class_Descriptor cd_S8142C1 = {  "S8142C1", // class name
  bases_S8142C1, 1,
  &(vtc_S8142C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,108), // object size
  NSPAIRA(_ZTI7S8142C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8142C1),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  S15079C1  {
  char s15079c1f0;
  int s15079c1f1;
  ::S3704C4_nt s15079c1f2;
  ::S10225C19 s15079c1f3;
  ::S2405C26 s15079c1f4;
  ::S3704C4_nt s15079c1f5;
  ::S2405C22 s15079c1f6;
  void  mf15079c1(); // _ZN8S15079C19mf15079c1Ev
};
//SIG(1 S15079C1) C1{ m Fc Fi FC2{ BC3{ vd v4 v5 v6} vd v1 v2 v3 FL[4]} FC4{ BC5{ vd v10 v11 v12} vd v7 v8 v9 Fi} FC6{ m Fp Fi FC7{ m} FC7} FC2 FC8{ m Fp Fi FC9{ m} FC9}}


void  S15079C1 ::mf15079c1(){}

static void Test_S15079C1()
{
  {
    init_simple_test("S15079C1");
    S15079C1 lv;
    check2(sizeof(lv), ABISELECT(136,112), "sizeof(S15079C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15079C1)");
    check_field_offset(lv, s15079c1f0, 0, "S15079C1.s15079c1f0");
    check_field_offset(lv, s15079c1f1, 4, "S15079C1.s15079c1f1");
    check_field_offset(lv, s15079c1f2, 8, "S15079C1.s15079c1f2");
    check_field_offset(lv, s15079c1f3, ABISELECT(48,44), "S15079C1.s15079c1f3");
    check_field_offset(lv, s15079c1f4, ABISELECT(64,52), "S15079C1.s15079c1f4");
    check_field_offset(lv, s15079c1f5, ABISELECT(80,64), "S15079C1.s15079c1f5");
    check_field_offset(lv, s15079c1f6, ABISELECT(120,100), "S15079C1.s15079c1f6");
  }
}
static Arrange_To_Call_Me vS15079C1(Test_S15079C1, "S15079C1", ABISELECT(136,112));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1621C5  {
  int s1621c5f0;
  virtual void  v4(); // _ZN7S1621C52v4Ev
  virtual void  v5(); // _ZN7S1621C52v5Ev
  virtual void  v6(); // _ZN7S1621C52v6Ev
  virtual void  v7(); // _ZN7S1621C52v7Ev
  virtual void  v8(); // _ZN7S1621C52v8Ev
  ~S1621C5(); // tgen
  S1621C5(); // tgen
};
//SIG(-1 S1621C5) C1{ v1 v2 v3 v4 v5 Fi}


void  S1621C5 ::v4(){vfunc_called(this, "_ZN7S1621C52v4Ev");}
void  S1621C5 ::v5(){vfunc_called(this, "_ZN7S1621C52v5Ev");}
void  S1621C5 ::v6(){vfunc_called(this, "_ZN7S1621C52v6Ev");}
void  S1621C5 ::v7(){vfunc_called(this, "_ZN7S1621C52v7Ev");}
void  S1621C5 ::v8(){vfunc_called(this, "_ZN7S1621C52v8Ev");}
S1621C5 ::~S1621C5(){ note_dtor("S1621C5", this);} // tgen
S1621C5 ::S1621C5(){ note_ctor("S1621C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S1621C5C1Ev();
extern void _ZN7S1621C5D1Ev();
Name_Map name_map_S1621C5[] = {
  NSPAIR(_ZN7S1621C5C1Ev),
  NSPAIR(_ZN7S1621C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1621C5[];
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
static  VTBL_ENTRY vtc_S1621C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C5[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
};
extern VTBL_ENTRY _ZTI7S1621C5[];
extern  VTBL_ENTRY _ZTV7S1621C5[];
Class_Descriptor cd_S1621C5 = {  "S1621C5", // class name
  0,0,//no base classes
  &(vtc_S1621C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1621C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1621C5),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1621C6  : S1621C5 {
  virtual void  v9(); // _ZN7S1621C62v9Ev
  virtual void  v10(); // _ZN7S1621C63v10Ev
  ~S1621C6(); // tgen
  S1621C6(); // tgen
};
//SIG(-1 S1621C6) C1{ BC2{ v3 v4 v5 v6 v7 Fi} v1 v2}


void  S1621C6 ::v9(){vfunc_called(this, "_ZN7S1621C62v9Ev");}
void  S1621C6 ::v10(){vfunc_called(this, "_ZN7S1621C63v10Ev");}
S1621C6 ::~S1621C6(){ note_dtor("S1621C6", this);} // tgen
S1621C6 ::S1621C6(){ note_ctor("S1621C6", this);} // tgen

static void Test_S1621C6()
{
  extern Class_Descriptor cd_S1621C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1621C6, buf);
    S1621C6 *dp, &lv = *(dp=new (buf) S1621C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1621C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1621C6)");
    check_base_class_offset(lv, (S1621C5*), 0, "S1621C6");
    test_class_info(&lv, &cd_S1621C6);
    dp->~S1621C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1621C6(Test_S1621C6, "S1621C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1621C6C1Ev();
extern void _ZN7S1621C6D1Ev();
Name_Map name_map_S1621C6[] = {
  NSPAIR(_ZN7S1621C6C1Ev),
  NSPAIR(_ZN7S1621C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1621C5;
extern VTBL_ENTRY _ZTI7S1621C5[];
extern  VTBL_ENTRY _ZTV7S1621C5[];
static Base_Class bases_S1621C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1621C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1621C6[];
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C62v9Ev();
extern void _ZN7S1621C63v10Ev();
static  VTBL_ENTRY vtc_S1621C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C6[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1621C62v9Ev,
  (VTBL_ENTRY)&_ZN7S1621C63v10Ev,
};
extern VTBL_ENTRY _ZTI7S1621C6[];
extern  VTBL_ENTRY _ZTV7S1621C6[];
Class_Descriptor cd_S1621C6 = {  "S1621C6", // class name
  bases_S1621C6, 1,
  &(vtc_S1621C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1621C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1621C6),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1621C4  : virtual S1621C5 , virtual S1621C6 {
  void *s1621c4f0;
  virtual void  v11(); // _ZN7S1621C43v11Ev
  virtual void  v12(); // _ZN7S1621C43v12Ev
  virtual void  v13(); // _ZN7S1621C43v13Ev
  ~S1621C4(); // tgen
  S1621C4(); // tgen
};
//SIG(-1 S1621C4) C1{ VBC2{ v4 v5 v6 v7 v8 Fi} VBC3{ BC2 v9 v10} v1 v2 v3 Fp}


void  S1621C4 ::v11(){vfunc_called(this, "_ZN7S1621C43v11Ev");}
void  S1621C4 ::v12(){vfunc_called(this, "_ZN7S1621C43v12Ev");}
void  S1621C4 ::v13(){vfunc_called(this, "_ZN7S1621C43v13Ev");}
S1621C4 ::~S1621C4(){ note_dtor("S1621C4", this);} // tgen
S1621C4 ::S1621C4(){ note_ctor("S1621C4", this);} // tgen

static void Test_S1621C4()
{
  extern Class_Descriptor cd_S1621C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S1621C4, buf);
    S1621C4 *dp, &lv = *(dp=new (buf) S1621C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S1621C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1621C4)");
    /*is_ambiguous_... S1621C4::S1621C5 */ AMB_check_base_class_offset(lv, (S1621C5*), ABISELECT(16,8), "S1621C4");
    check_base_class_offset(lv, (S1621C5*)(S1621C6*), ABISELECT(32,16), "S1621C4");
    check_base_class_offset(lv, (S1621C6*), ABISELECT(32,16), "S1621C4");
    check_field_offset(lv, s1621c4f0, ABISELECT(8,4), "S1621C4.s1621c4f0");
    test_class_info(&lv, &cd_S1621C4);
    dp->~S1621C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1621C4(Test_S1621C4, "S1621C4", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S1621C4C1Ev();
extern void _ZN7S1621C4D1Ev();
Name_Map name_map_S1621C4[] = {
  NSPAIR(_ZN7S1621C4C1Ev),
  NSPAIR(_ZN7S1621C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1621C5;
extern VTBL_ENTRY _ZTI7S1621C5[];
extern  VTBL_ENTRY _ZTV7S1621C5[];
extern Class_Descriptor cd_S1621C5;
extern VTBL_ENTRY _ZTI7S1621C5[];
extern  VTBL_ENTRY _ZTV7S1621C5[];
extern Class_Descriptor cd_S1621C6;
extern VTBL_ENTRY _ZTI7S1621C6[];
extern  VTBL_ENTRY _ZTV7S1621C6[];
static Base_Class bases_S1621C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1621C5,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1621C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1621C6,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1621C4[];
extern void _ZN7S1621C43v11Ev();
extern void _ZN7S1621C43v12Ev();
extern void _ZN7S1621C43v13Ev();
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C62v9Ev();
extern void _ZN7S1621C63v10Ev();
static  VTBL_ENTRY vtc_S1621C4[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v13Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1621C62v9Ev,
  (VTBL_ENTRY)&_ZN7S1621C63v10Ev,
};
extern VTBL_ENTRY _ZTV7S1621C4[];
static  VTT_ENTRY vtt_S1621C4[] = {
  {&(_ZTV7S1621C4[4]),  4,35},
  {&(_ZTV7S1621C4[14]),  14,35},
  {&(_ZTV7S1621C4[28]),  28,35},
};
extern VTBL_ENTRY _ZTI7S1621C4[];
extern  VTBL_ENTRY _ZTV7S1621C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1621C4[];
Class_Descriptor cd_S1621C4 = {  "S1621C4", // class name
  bases_S1621C4, 3,
  &(vtc_S1621C4[0]), // expected_vtbl_contents
  &(vtt_S1621C4[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S1621C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1621C4),35, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1621C4),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1621C3  : S1621C4 {
  int s1621c3f0[5];
  virtual void  v14(); // _ZN7S1621C33v14Ev
  virtual void  v15(); // _ZN7S1621C33v15Ev
  virtual void  v16(); // _ZN7S1621C33v16Ev
  virtual void  v17(); // _ZN7S1621C33v17Ev
  ~S1621C3(); // tgen
  S1621C3(); // tgen
};
//SIG(-1 S1621C3) C1{ BC2{ VBC3{ v5 v6 v7 v8 v9 Fi} VBC4{ BC3 v10 v11} v12 v13 v14 Fp} v1 v2 v3 v4 Fi[5]}


void  S1621C3 ::v14(){vfunc_called(this, "_ZN7S1621C33v14Ev");}
void  S1621C3 ::v15(){vfunc_called(this, "_ZN7S1621C33v15Ev");}
void  S1621C3 ::v16(){vfunc_called(this, "_ZN7S1621C33v16Ev");}
void  S1621C3 ::v17(){vfunc_called(this, "_ZN7S1621C33v17Ev");}
S1621C3 ::~S1621C3(){ note_dtor("S1621C3", this);} // tgen
S1621C3 ::S1621C3(){ note_ctor("S1621C3", this);} // tgen

static void Test_S1621C3()
{
  extern Class_Descriptor cd_S1621C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S1621C3, buf);
    S1621C3 *dp, &lv = *(dp=new (buf) S1621C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S1621C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1621C3)");
    /*is_ambiguous_... S1621C4::S1621C5 */ AMB_check_base_class_offset(lv, (S1621C5*)(S1621C4*), ABISELECT(40,28), "S1621C3");
    check_base_class_offset(lv, (S1621C5*)(S1621C6*), ABISELECT(56,36), "S1621C3");
    check_base_class_offset(lv, (S1621C6*)(S1621C4*), ABISELECT(56,36), "S1621C3");
    check_base_class_offset(lv, (S1621C4*), 0, "S1621C3");
    check_field_offset(lv, s1621c3f0, ABISELECT(16,8), "S1621C3.s1621c3f0");
    test_class_info(&lv, &cd_S1621C3);
    dp->~S1621C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1621C3(Test_S1621C3, "S1621C3", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S1621C3C1Ev();
extern void _ZN7S1621C3D1Ev();
Name_Map name_map_S1621C3[] = {
  NSPAIR(_ZN7S1621C3C1Ev),
  NSPAIR(_ZN7S1621C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1621C5;
extern VTBL_ENTRY _ZTI7S1621C5[];
extern  VTBL_ENTRY _ZTV7S1621C5[];
extern Class_Descriptor cd_S1621C5;
extern VTBL_ENTRY _ZTI7S1621C5[];
extern  VTBL_ENTRY _ZTV7S1621C5[];
extern Class_Descriptor cd_S1621C6;
extern VTBL_ENTRY _ZTI7S1621C6[];
extern  VTBL_ENTRY _ZTV7S1621C6[];
extern Class_Descriptor cd_S1621C4;
extern VTBL_ENTRY _ZTI7S1621C4[];
extern  VTBL_ENTRY _ZTV7S1621C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1621C4[];
static Base_Class bases_S1621C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1621C5,    ABISELECT(40,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1621C5,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1621C6,    ABISELECT(56,36), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1621C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1621C3[];
extern void _ZN7S1621C43v11Ev();
extern void _ZN7S1621C43v12Ev();
extern void _ZN7S1621C43v13Ev();
extern void _ZN7S1621C33v14Ev();
extern void _ZN7S1621C33v15Ev();
extern void _ZN7S1621C33v16Ev();
extern void _ZN7S1621C33v17Ev();
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C62v9Ev();
extern void _ZN7S1621C63v10Ev();
static  VTBL_ENTRY vtc_S1621C3[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C3[0]),
  (VTBL_ENTRY)&_ZN7S1621C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v17Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S1621C3[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1621C3[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1621C62v9Ev,
  (VTBL_ENTRY)&_ZN7S1621C63v10Ev,
};
extern VTBL_ENTRY _ZTV7S1621C3[];
extern void _ZN7S1621C43v11Ev();
extern void _ZN7S1621C43v12Ev();
extern void _ZN7S1621C43v13Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C4__7S1621C3[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v13Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C5__7S1621C4__7S1621C3[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C62v9Ev();
extern void _ZN7S1621C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C6__7S1621C4__7S1621C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1621C62v9Ev,
  (VTBL_ENTRY)&_ZN7S1621C63v10Ev,
};
static  VTT_ENTRY vtt_S1621C3[] = {
  {&(_ZTV7S1621C3[4]),  4,39},
  {&(_tg__ZTV7S1621C4__7S1621C3[4]),  4,7},
  {&(_tg__ZTV7S1621C5__7S1621C4__7S1621C3[7]),  7,12},
  {&(_tg__ZTV7S1621C6__7S1621C4__7S1621C3[9]),  9,16},
  {&(_ZTV7S1621C3[18]),  18,39},
  {&(_ZTV7S1621C3[32]),  32,39},
};
extern VTBL_ENTRY _ZTI7S1621C3[];
extern  VTBL_ENTRY _ZTV7S1621C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1621C3[];
Class_Descriptor cd_S1621C3 = {  "S1621C3", // class name
  bases_S1621C3, 4,
  &(vtc_S1621C3[0]), // expected_vtbl_contents
  &(vtt_S1621C3[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S1621C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1621C3),39, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1621C3),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1621C2  : S1621C3 {
  virtual void  v18(); // _ZN7S1621C23v18Ev
  virtual void  v19(); // _ZN7S1621C23v19Ev
  virtual void  v20(); // _ZN7S1621C23v20Ev
  virtual void  v21(); // _ZN7S1621C23v21Ev
  virtual void  v22(); // _ZN7S1621C23v22Ev
  virtual void  v23(); // _ZN7S1621C23v23Ev
  ~S1621C2(); // tgen
  S1621C2(); // tgen
};
//SIG(-1 S1621C2) C1{ BC2{ BC3{ VBC4{ v7 v8 v9 v10 v11 Fi} VBC5{ BC4 v12 v13} v14 v15 v16 Fp} v17 v18 v19 v20 Fi[5]} v1 v2 v3 v4 v5 v6}


void  S1621C2 ::v18(){vfunc_called(this, "_ZN7S1621C23v18Ev");}
void  S1621C2 ::v19(){vfunc_called(this, "_ZN7S1621C23v19Ev");}
void  S1621C2 ::v20(){vfunc_called(this, "_ZN7S1621C23v20Ev");}
void  S1621C2 ::v21(){vfunc_called(this, "_ZN7S1621C23v21Ev");}
void  S1621C2 ::v22(){vfunc_called(this, "_ZN7S1621C23v22Ev");}
void  S1621C2 ::v23(){vfunc_called(this, "_ZN7S1621C23v23Ev");}
S1621C2 ::~S1621C2(){ note_dtor("S1621C2", this);} // tgen
S1621C2 ::S1621C2(){ note_ctor("S1621C2", this);} // tgen

static void Test_S1621C2()
{
  extern Class_Descriptor cd_S1621C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S1621C2, buf);
    S1621C2 *dp, &lv = *(dp=new (buf) S1621C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S1621C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1621C2)");
    /*is_ambiguous_... S1621C4::S1621C5 */ AMB_check_base_class_offset(lv, (S1621C5*)(S1621C4*)(S1621C3*), ABISELECT(40,28), "S1621C2");
    check_base_class_offset(lv, (S1621C5*)(S1621C6*), ABISELECT(56,36), "S1621C2");
    check_base_class_offset(lv, (S1621C6*)(S1621C4*)(S1621C3*), ABISELECT(56,36), "S1621C2");
    check_base_class_offset(lv, (S1621C4*)(S1621C3*), 0, "S1621C2");
    check_base_class_offset(lv, (S1621C3*), 0, "S1621C2");
    test_class_info(&lv, &cd_S1621C2);
    dp->~S1621C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1621C2(Test_S1621C2, "S1621C2", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S1621C2C1Ev();
extern void _ZN7S1621C2D1Ev();
Name_Map name_map_S1621C2[] = {
  NSPAIR(_ZN7S1621C2C1Ev),
  NSPAIR(_ZN7S1621C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1621C5;
extern VTBL_ENTRY _ZTI7S1621C5[];
extern  VTBL_ENTRY _ZTV7S1621C5[];
extern Class_Descriptor cd_S1621C5;
extern VTBL_ENTRY _ZTI7S1621C5[];
extern  VTBL_ENTRY _ZTV7S1621C5[];
extern Class_Descriptor cd_S1621C6;
extern VTBL_ENTRY _ZTI7S1621C6[];
extern  VTBL_ENTRY _ZTV7S1621C6[];
extern Class_Descriptor cd_S1621C4;
extern VTBL_ENTRY _ZTI7S1621C4[];
extern  VTBL_ENTRY _ZTV7S1621C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1621C4[];
extern Class_Descriptor cd_S1621C3;
extern VTBL_ENTRY _ZTI7S1621C3[];
extern  VTBL_ENTRY _ZTV7S1621C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1621C3[];
static Base_Class bases_S1621C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1621C5,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1621C5,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1621C6,    ABISELECT(56,36), //bcp->offset
    29, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1621C4,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1621C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1621C2[];
extern void _ZN7S1621C43v11Ev();
extern void _ZN7S1621C43v12Ev();
extern void _ZN7S1621C43v13Ev();
extern void _ZN7S1621C33v14Ev();
extern void _ZN7S1621C33v15Ev();
extern void _ZN7S1621C33v16Ev();
extern void _ZN7S1621C33v17Ev();
extern void _ZN7S1621C23v18Ev();
extern void _ZN7S1621C23v19Ev();
extern void _ZN7S1621C23v20Ev();
extern void _ZN7S1621C23v21Ev();
extern void _ZN7S1621C23v22Ev();
extern void _ZN7S1621C23v23Ev();
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C62v9Ev();
extern void _ZN7S1621C63v10Ev();
static  VTBL_ENTRY vtc_S1621C2[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C2[0]),
  (VTBL_ENTRY)&_ZN7S1621C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v23Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S1621C2[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1621C2[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1621C62v9Ev,
  (VTBL_ENTRY)&_ZN7S1621C63v10Ev,
};
extern VTBL_ENTRY _ZTV7S1621C2[];
extern void _ZN7S1621C43v11Ev();
extern void _ZN7S1621C43v12Ev();
extern void _ZN7S1621C43v13Ev();
extern void _ZN7S1621C33v14Ev();
extern void _ZN7S1621C33v15Ev();
extern void _ZN7S1621C33v16Ev();
extern void _ZN7S1621C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C3__7S1621C2[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C3[0]),
  (VTBL_ENTRY)&_ZN7S1621C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v17Ev,
};
extern void _ZN7S1621C43v11Ev();
extern void _ZN7S1621C43v12Ev();
extern void _ZN7S1621C43v13Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C47S1621C3__7S1621C2[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v13Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C5__7S1621C47S1621C3__7S1621C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C62v9Ev();
extern void _ZN7S1621C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C6__7S1621C47S1621C3__7S1621C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1621C62v9Ev,
  (VTBL_ENTRY)&_ZN7S1621C63v10Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C5__7S1621C3__7S1621C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S1621C3[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C62v9Ev();
extern void _ZN7S1621C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C6__7S1621C3__7S1621C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1621C3[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1621C62v9Ev,
  (VTBL_ENTRY)&_ZN7S1621C63v10Ev,
};
static  VTT_ENTRY vtt_S1621C2[] = {
  {&(_ZTV7S1621C2[4]),  4,45},
  {&(_tg__ZTV7S1621C3__7S1621C2[4]),  4,11},
  {&(_tg__ZTV7S1621C47S1621C3__7S1621C2[4]),  4,7},
  {&(_tg__ZTV7S1621C5__7S1621C47S1621C3__7S1621C2[7]),  7,12},
  {&(_tg__ZTV7S1621C6__7S1621C47S1621C3__7S1621C2[9]),  9,16},
  {&(_tg__ZTV7S1621C5__7S1621C3__7S1621C2[7]),  7,12},
  {&(_tg__ZTV7S1621C6__7S1621C3__7S1621C2[9]),  9,16},
  {&(_ZTV7S1621C2[24]),  24,45},
  {&(_ZTV7S1621C2[38]),  38,45},
};
extern VTBL_ENTRY _ZTI7S1621C2[];
extern  VTBL_ENTRY _ZTV7S1621C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1621C2[];
Class_Descriptor cd_S1621C2 = {  "S1621C2", // class name
  bases_S1621C2, 5,
  &(vtc_S1621C2[0]), // expected_vtbl_contents
  &(vtt_S1621C2[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S1621C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1621C2),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1621C2),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  S1621C1  : S1621C2 {
  virtual void  v1(); // _ZN7S1621C12v1Ev
  virtual void  v2(); // _ZN7S1621C12v2Ev
  virtual void  v3(); // _ZN7S1621C12v3Ev
  ~S1621C1(); // tgen
  S1621C1(); // tgen
};
//SIG(1 S1621C1) C1{ BC2{ BC3{ BC4{ VBC5{ v4 v5 v6 v7 v8 Fi} VBC6{ BC5 v9 v10} v11 v12 v13 Fp} v14 v15 v16 v17 Fi[5]} v18 v19 v20 v21 v22 v23} v1 v2 v3}


void  S1621C1 ::v1(){vfunc_called(this, "_ZN7S1621C12v1Ev");}
void  S1621C1 ::v2(){vfunc_called(this, "_ZN7S1621C12v2Ev");}
void  S1621C1 ::v3(){vfunc_called(this, "_ZN7S1621C12v3Ev");}
S1621C1 ::~S1621C1(){ note_dtor("S1621C1", this);} // tgen
S1621C1 ::S1621C1(){ note_ctor("S1621C1", this);} // tgen

static void Test_S1621C1()
{
  extern Class_Descriptor cd_S1621C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S1621C1, buf);
    S1621C1 *dp, &lv = *(dp=new (buf) S1621C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S1621C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1621C1)");
    /*is_ambiguous_... S1621C4::S1621C5 */ AMB_check_base_class_offset(lv, (S1621C5*)(S1621C4*)(S1621C3*)(S1621C2*), ABISELECT(40,28), "S1621C1");
    check_base_class_offset(lv, (S1621C5*)(S1621C6*), ABISELECT(56,36), "S1621C1");
    check_base_class_offset(lv, (S1621C6*)(S1621C4*)(S1621C3*)(S1621C2*), ABISELECT(56,36), "S1621C1");
    check_base_class_offset(lv, (S1621C4*)(S1621C3*)(S1621C2*), 0, "S1621C1");
    check_base_class_offset(lv, (S1621C3*)(S1621C2*), 0, "S1621C1");
    check_base_class_offset(lv, (S1621C2*), 0, "S1621C1");
    test_class_info(&lv, &cd_S1621C1);
    dp->~S1621C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1621C1(Test_S1621C1, "S1621C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S1621C1C1Ev();
extern void _ZN7S1621C1D1Ev();
Name_Map name_map_S1621C1[] = {
  NSPAIR(_ZN7S1621C1C1Ev),
  NSPAIR(_ZN7S1621C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1621C5;
extern VTBL_ENTRY _ZTI7S1621C5[];
extern  VTBL_ENTRY _ZTV7S1621C5[];
extern Class_Descriptor cd_S1621C5;
extern VTBL_ENTRY _ZTI7S1621C5[];
extern  VTBL_ENTRY _ZTV7S1621C5[];
extern Class_Descriptor cd_S1621C6;
extern VTBL_ENTRY _ZTI7S1621C6[];
extern  VTBL_ENTRY _ZTV7S1621C6[];
extern Class_Descriptor cd_S1621C4;
extern VTBL_ENTRY _ZTI7S1621C4[];
extern  VTBL_ENTRY _ZTV7S1621C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1621C4[];
extern Class_Descriptor cd_S1621C3;
extern VTBL_ENTRY _ZTI7S1621C3[];
extern  VTBL_ENTRY _ZTV7S1621C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1621C3[];
extern Class_Descriptor cd_S1621C2;
extern VTBL_ENTRY _ZTI7S1621C2[];
extern  VTBL_ENTRY _ZTV7S1621C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1621C2[];
static Base_Class bases_S1621C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1621C5,    ABISELECT(40,28), //bcp->offset
    20, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1621C5,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1621C6,    ABISELECT(56,36), //bcp->offset
    32, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S1621C4,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1621C3,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S1621C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S1621C1[];
extern void _ZN7S1621C43v11Ev();
extern void _ZN7S1621C43v12Ev();
extern void _ZN7S1621C43v13Ev();
extern void _ZN7S1621C33v14Ev();
extern void _ZN7S1621C33v15Ev();
extern void _ZN7S1621C33v16Ev();
extern void _ZN7S1621C33v17Ev();
extern void _ZN7S1621C23v18Ev();
extern void _ZN7S1621C23v19Ev();
extern void _ZN7S1621C23v20Ev();
extern void _ZN7S1621C23v21Ev();
extern void _ZN7S1621C23v22Ev();
extern void _ZN7S1621C23v23Ev();
extern void _ZN7S1621C12v1Ev();
extern void _ZN7S1621C12v2Ev();
extern void _ZN7S1621C12v3Ev();
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C62v9Ev();
extern void _ZN7S1621C63v10Ev();
static  VTBL_ENTRY vtc_S1621C1[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C1[0]),
  (VTBL_ENTRY)&_ZN7S1621C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1621C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1621C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1621C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S1621C1[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1621C1[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1621C62v9Ev,
  (VTBL_ENTRY)&_ZN7S1621C63v10Ev,
};
extern VTBL_ENTRY _ZTV7S1621C1[];
extern void _ZN7S1621C43v11Ev();
extern void _ZN7S1621C43v12Ev();
extern void _ZN7S1621C43v13Ev();
extern void _ZN7S1621C33v14Ev();
extern void _ZN7S1621C33v15Ev();
extern void _ZN7S1621C33v16Ev();
extern void _ZN7S1621C33v17Ev();
extern void _ZN7S1621C23v18Ev();
extern void _ZN7S1621C23v19Ev();
extern void _ZN7S1621C23v20Ev();
extern void _ZN7S1621C23v21Ev();
extern void _ZN7S1621C23v22Ev();
extern void _ZN7S1621C23v23Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C2__7S1621C1[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C2[0]),
  (VTBL_ENTRY)&_ZN7S1621C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1621C23v23Ev,
};
extern void _ZN7S1621C43v11Ev();
extern void _ZN7S1621C43v12Ev();
extern void _ZN7S1621C43v13Ev();
extern void _ZN7S1621C33v14Ev();
extern void _ZN7S1621C33v15Ev();
extern void _ZN7S1621C33v16Ev();
extern void _ZN7S1621C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C37S1621C2__7S1621C1[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C3[0]),
  (VTBL_ENTRY)&_ZN7S1621C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1621C33v17Ev,
};
extern void _ZN7S1621C43v11Ev();
extern void _ZN7S1621C43v12Ev();
extern void _ZN7S1621C43v13Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C47S1621C37S1621C2__7S1621C1[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1621C43v13Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C5__7S1621C47S1621C37S1621C2__7S1621C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C62v9Ev();
extern void _ZN7S1621C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C6__7S1621C47S1621C37S1621C2__7S1621C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1621C4[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1621C62v9Ev,
  (VTBL_ENTRY)&_ZN7S1621C63v10Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C5__7S1621C37S1621C2__7S1621C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S1621C3[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C62v9Ev();
extern void _ZN7S1621C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C6__7S1621C37S1621C2__7S1621C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1621C3[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1621C62v9Ev,
  (VTBL_ENTRY)&_ZN7S1621C63v10Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C5__7S1621C2__7S1621C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S1621C2[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
};
extern void _ZN7S1621C52v4Ev();
extern void _ZN7S1621C52v5Ev();
extern void _ZN7S1621C52v6Ev();
extern void _ZN7S1621C52v7Ev();
extern void _ZN7S1621C52v8Ev();
extern void _ZN7S1621C62v9Ev();
extern void _ZN7S1621C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S1621C6__7S1621C2__7S1621C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S1621C2[0]),
  (VTBL_ENTRY)&_ZN7S1621C52v4Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v5Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v6Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v7Ev,
  (VTBL_ENTRY)&_ZN7S1621C52v8Ev,
  (VTBL_ENTRY)&_ZN7S1621C62v9Ev,
  (VTBL_ENTRY)&_ZN7S1621C63v10Ev,
};
static  VTT_ENTRY vtt_S1621C1[] = {
  {&(_ZTV7S1621C1[4]),  4,48},
  {&(_tg__ZTV7S1621C2__7S1621C1[4]),  4,17},
  {&(_tg__ZTV7S1621C37S1621C2__7S1621C1[4]),  4,11},
  {&(_tg__ZTV7S1621C47S1621C37S1621C2__7S1621C1[4]),  4,7},
  {&(_tg__ZTV7S1621C5__7S1621C47S1621C37S1621C2__7S1621C1[7]),  7,12},
  {&(_tg__ZTV7S1621C6__7S1621C47S1621C37S1621C2__7S1621C1[9]),  9,16},
  {&(_tg__ZTV7S1621C5__7S1621C37S1621C2__7S1621C1[7]),  7,12},
  {&(_tg__ZTV7S1621C6__7S1621C37S1621C2__7S1621C1[9]),  9,16},
  {&(_tg__ZTV7S1621C5__7S1621C2__7S1621C1[7]),  7,12},
  {&(_tg__ZTV7S1621C6__7S1621C2__7S1621C1[9]),  9,16},
  {&(_ZTV7S1621C1[27]),  27,48},
  {&(_ZTV7S1621C1[41]),  41,48},
};
extern VTBL_ENTRY _ZTI7S1621C1[];
extern  VTBL_ENTRY _ZTV7S1621C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1621C1[];
Class_Descriptor cd_S1621C1 = {  "S1621C1", // class name
  bases_S1621C1, 6,
  &(vtc_S1621C1[0]), // expected_vtbl_contents
  &(vtt_S1621C1[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S1621C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1621C1),48, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1621C1),12, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21429C2_nt  {
  __tsi64 s21429c2f0[4];
  void  mf21429c2(); // _ZN11S21429C2_nt9mf21429c2Ev
};
//SIG(-1 S21429C2_nt) C1{ m FL[4]}


void  S21429C2_nt ::mf21429c2(){}

//skip512 S21429C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21429C1  {
  ::S21429C2_nt s21429c1f0;
  ::S10225C15_nt s21429c1f1;
  ::S2405C25 s21429c1f2;
  ::S2405C5_nt s21429c1f3;
  void  mf21429c1(); // _ZN8S21429C19mf21429c1Ev
  virtual  ~S21429C1(); // _ZN8S21429C1D1Ev
  S21429C1(); // tgen
};
//SIG(1 S21429C1) C1{ vd m FC2{ m FL[4]} FC3{ BC4{ m Fp Fi FC5{ m} FC5}} FC6{ BC4} FC7{ BC8{ m Fp Fi FC9{ m} FC10{ m}}}}


void  S21429C1 ::mf21429c1(){}
 S21429C1 ::~S21429C1(){ note_dtor("S21429C1", this);}
S21429C1 ::S21429C1(){ note_ctor("S21429C1", this);} // tgen

static void Test_S21429C1()
{
  extern Class_Descriptor cd_S21429C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S21429C1, buf);
    S21429C1 *dp, &lv = *(dp=new (buf) S21429C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S21429C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21429C1)");
    check_field_offset(lv, s21429c1f0, ABISELECT(8,4), "S21429C1.s21429c1f0");
    check_field_offset(lv, s21429c1f1, ABISELECT(40,36), "S21429C1.s21429c1f1");
    check_field_offset(lv, s21429c1f2, ABISELECT(56,48), "S21429C1.s21429c1f2");
    check_field_offset(lv, s21429c1f3, ABISELECT(72,60), "S21429C1.s21429c1f3");
    test_class_info(&lv, &cd_S21429C1);
    dp->~S21429C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21429C1(Test_S21429C1, "S21429C1", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN8S21429C1C1Ev();
extern void _ZN8S21429C1D1Ev();
Name_Map name_map_S21429C1[] = {
  NSPAIR(_ZN8S21429C1C1Ev),
  NSPAIR(_ZN8S21429C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21429C1[];
extern void _ZN8S21429C1D1Ev();
extern void _ZN8S21429C1D0Ev();
static  VTBL_ENTRY vtc_S21429C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21429C1[0]),
  (VTBL_ENTRY)&_ZN8S21429C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21429C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21429C1[];
extern  VTBL_ENTRY _ZTV8S21429C1[];
Class_Descriptor cd_S21429C1 = {  "S21429C1", // class name
  0,0,//no base classes
  &(vtc_S21429C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI8S21429C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21429C1),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  S4780C3  {
  ::S2405C20_nt s4780c3f0;
  int s4780c3f1[2];
  char s4780c3f2;
  virtual  ~S4780C3(); // _ZN7S4780C3D1Ev
  virtual void  v3(); // _ZN7S4780C32v3Ev
  virtual void  v4(); // _ZN7S4780C32v4Ev
  virtual void  v5(); // _ZN7S4780C32v5Ev
  S4780C3(); // tgen
};
//SIG(-1 S4780C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4780C3 ::~S4780C3(){ note_dtor("S4780C3", this);}
void  S4780C3 ::v3(){vfunc_called(this, "_ZN7S4780C32v3Ev");}
void  S4780C3 ::v4(){vfunc_called(this, "_ZN7S4780C32v4Ev");}
void  S4780C3 ::v5(){vfunc_called(this, "_ZN7S4780C32v5Ev");}
S4780C3 ::S4780C3(){ note_ctor("S4780C3", this);} // tgen

static void Test_S4780C3()
{
  extern Class_Descriptor cd_S4780C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4780C3, buf);
    S4780C3 *dp, &lv = *(dp=new (buf) S4780C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4780C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4780C3)");
    check_field_offset(lv, s4780c3f0, ABISELECT(8,4), "S4780C3.s4780c3f0");
    check_field_offset(lv, s4780c3f1, ABISELECT(24,16), "S4780C3.s4780c3f1");
    check_field_offset(lv, s4780c3f2, ABISELECT(32,24), "S4780C3.s4780c3f2");
    test_class_info(&lv, &cd_S4780C3);
    dp->~S4780C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4780C3(Test_S4780C3, "S4780C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4780C3C1Ev();
extern void _ZN7S4780C3D1Ev();
Name_Map name_map_S4780C3[] = {
  NSPAIR(_ZN7S4780C3C1Ev),
  NSPAIR(_ZN7S4780C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4780C3[];
extern void _ZN7S4780C3D1Ev();
extern void _ZN7S4780C3D0Ev();
extern void _ZN7S4780C32v3Ev();
extern void _ZN7S4780C32v4Ev();
extern void _ZN7S4780C32v5Ev();
static  VTBL_ENTRY vtc_S4780C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4780C3[0]),
  (VTBL_ENTRY)&_ZN7S4780C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4780C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4780C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4780C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4780C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4780C3[];
extern  VTBL_ENTRY _ZTV7S4780C3[];
Class_Descriptor cd_S4780C3 = {  "S4780C3", // class name
  0,0,//no base classes
  &(vtc_S4780C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4780C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4780C3),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  S4780C2_nt  : S4780C3 {
  void *s4780c2f0;
  virtual void  v6(); // _ZN10S4780C2_nt2v6Ev
  virtual void  v7(); // _ZN10S4780C2_nt2v7Ev
  ~S4780C2_nt(); // tgen
  S4780C2_nt(); // tgen
};
//SIG(-1 S4780C2_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4780C2_nt ::v6(){vfunc_called(this, "_ZN10S4780C2_nt2v6Ev");}
void  S4780C2_nt ::v7(){vfunc_called(this, "_ZN10S4780C2_nt2v7Ev");}
S4780C2_nt ::~S4780C2_nt(){ note_dtor("S4780C2_nt", this);} // tgen
S4780C2_nt ::S4780C2_nt(){ note_ctor("S4780C2_nt", this);} // tgen

//skip512 S4780C2_nt

#else // __cplusplus

extern void _ZN10S4780C2_ntC1Ev();
extern void _ZN10S4780C2_ntD1Ev();
Name_Map name_map_S4780C2_nt[] = {
  NSPAIR(_ZN10S4780C2_ntC1Ev),
  NSPAIR(_ZN10S4780C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4780C3;
extern VTBL_ENTRY _ZTI7S4780C3[];
extern  VTBL_ENTRY _ZTV7S4780C3[];
static Base_Class bases_S4780C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4780C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4780C2_nt[];
extern void _ZN10S4780C2_ntD1Ev();
extern void _ZN10S4780C2_ntD0Ev();
extern void _ZN7S4780C32v3Ev();
extern void _ZN7S4780C32v4Ev();
extern void _ZN7S4780C32v5Ev();
extern void _ZN10S4780C2_nt2v6Ev();
extern void _ZN10S4780C2_nt2v7Ev();
static  VTBL_ENTRY vtc_S4780C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4780C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4780C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4780C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S4780C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4780C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4780C32v5Ev,
  (VTBL_ENTRY)&_ZN10S4780C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4780C2_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S4780C2_nt[];
VTBL_ENTRY *P__ZTI10S4780C2_nt = _ZTI10S4780C2_nt; 
extern  VTBL_ENTRY _ZTV10S4780C2_nt[];
Class_Descriptor cd_S4780C2_nt = {  "S4780C2_nt", // class name
  bases_S4780C2_nt, 1,
  &(vtc_S4780C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S4780C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4780C2_nt),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4780C7_nt  {
  char s4780c7f0[1312];
};
//SIG(-1 S4780C7_nt) C1{ Fc[1312]}



//skip512 S4780C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4780C8_nt  {
  int s4780c8f0[4];
  char s4780c8f1[32];
};
//SIG(-1 S4780C8_nt) C1{ Fi[4] Fc[32]}



//skip512 S4780C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4780C6_nt  {
  ::S4780C7_nt s4780c6f0;
  ::S4780C8_nt s4780c6f1;
  char s4780c6f2[32];
};
//SIG(-1 S4780C6_nt) C1{ FC2{ Fc[1312]} FC3{ Fi[4] Fc[32]} Fc[32]}



//skip512 S4780C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4780C1  : S4780C2_nt {
  int s4780c1f0;
  ::S4780C6_nt s4780c1f1;
  virtual  ~S4780C1(); // _ZN7S4780C1D1Ev
  virtual void  v1(); // _ZN7S4780C12v1Ev
  virtual void  v2(); // _ZN7S4780C12v2Ev
  S4780C1(); // tgen
};
//SIG(1 S4780C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} vd v1 v2 Fi FC6{ FC7{ Fc[1312]} FC8{ Fi[4] Fc[32]} Fc[32]}}


 S4780C1 ::~S4780C1(){ note_dtor("S4780C1", this);}
void  S4780C1 ::v1(){vfunc_called(this, "_ZN7S4780C12v1Ev");}
void  S4780C1 ::v2(){vfunc_called(this, "_ZN7S4780C12v2Ev");}
S4780C1 ::S4780C1(){ note_ctor("S4780C1", this);} // tgen

static void Test_S4780C1()
{
  extern Class_Descriptor cd_S4780C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(182,358)];
    init_test(&cd_S4780C1, buf);
    S4780C1 *dp, &lv = *(dp=new (buf) S4780C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1448,1428), "sizeof(S4780C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4780C1)");
    check_base_class_offset(lv, (S4780C3*)(S4780C2_nt*), 0, "S4780C1");
    check_base_class_offset(lv, (S4780C2_nt*), 0, "S4780C1");
    check_field_offset(lv, s4780c1f0, ABISELECT(48,32), "S4780C1.s4780c1f0");
    check_field_offset(lv, s4780c1f1, ABISELECT(52,36), "S4780C1.s4780c1f1");
    test_class_info(&lv, &cd_S4780C1);
    dp->~S4780C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4780C1(Test_S4780C1, "S4780C1", ABISELECT(1448,1428));

#else // __cplusplus

extern void _ZN7S4780C1C1Ev();
extern void _ZN7S4780C1D1Ev();
Name_Map name_map_S4780C1[] = {
  NSPAIR(_ZN7S4780C1C1Ev),
  NSPAIR(_ZN7S4780C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4780C3;
extern VTBL_ENTRY _ZTI7S4780C3[];
extern  VTBL_ENTRY _ZTV7S4780C3[];
extern Class_Descriptor cd_S4780C2_nt;
extern VTBL_ENTRY _ZTI10S4780C2_nt[];
extern  VTBL_ENTRY _ZTV10S4780C2_nt[];
static Base_Class bases_S4780C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4780C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4780C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4780C1[];
extern void _ZN7S4780C1D1Ev();
extern void _ZN7S4780C1D0Ev();
extern void _ZN7S4780C32v3Ev();
extern void _ZN7S4780C32v4Ev();
extern void _ZN7S4780C32v5Ev();
extern void _ZN10S4780C2_nt2v6Ev();
extern void _ZN10S4780C2_nt2v7Ev();
extern void _ZN7S4780C12v1Ev();
extern void _ZN7S4780C12v2Ev();
static  VTBL_ENTRY vtc_S4780C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4780C1[0]),
  (VTBL_ENTRY)&_ZN7S4780C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4780C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4780C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4780C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4780C32v5Ev,
  (VTBL_ENTRY)&_ZN10S4780C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4780C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S4780C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4780C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4780C1[];
extern  VTBL_ENTRY _ZTV7S4780C1[];
Class_Descriptor cd_S4780C1 = {  "S4780C1", // class name
  bases_S4780C1, 2,
  &(vtc_S4780C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1448,1428), // object size
  NSPAIRA(_ZTI7S4780C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4780C1),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S11949C3_nt  {
  int s11949c3f0[4];
  __tsi64 s11949c3f1[2];
};
//SIG(1 S11949C3_nt) U1{ Fi[4] FL[2]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S11949C2  {
  ::S11949C3_nt s11949c2f0;
  ::S11949C3_nt s11949c2f1;
  void *s11949c2f2;
  void *s11949c2f3;
  int s11949c2f4;
  char s11949c2f5;
  char s11949c2f6;
  char s11949c2f7[2];
  void *s11949c2f8;
  char s11949c2f9[8];
  char s11949c2f10[4];
};
//SIG(1 S11949C2) C1{ FU2{ Fi[4] FL[2]} FU2 Fp Fp Fi Fc Fc Fc[2] Fp Fc[8] Fc[4]}



static void Test_S11949C2()
{
  {
    init_simple_test("S11949C2");
    S11949C2 lv;
    check2(sizeof(lv), ABISELECT(80,64), "sizeof(S11949C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11949C2)");
    check_field_offset(lv, s11949c2f0, 0, "S11949C2.s11949c2f0");
    check_field_offset(lv, s11949c2f1, 16, "S11949C2.s11949c2f1");
    check_field_offset(lv, s11949c2f2, 32, "S11949C2.s11949c2f2");
    check_field_offset(lv, s11949c2f3, ABISELECT(40,36), "S11949C2.s11949c2f3");
    check_field_offset(lv, s11949c2f4, ABISELECT(48,40), "S11949C2.s11949c2f4");
    check_field_offset(lv, s11949c2f5, ABISELECT(52,44), "S11949C2.s11949c2f5");
    check_field_offset(lv, s11949c2f6, ABISELECT(53,45), "S11949C2.s11949c2f6");
    check_field_offset(lv, s11949c2f7, ABISELECT(54,46), "S11949C2.s11949c2f7");
    check_field_offset(lv, s11949c2f8, ABISELECT(56,48), "S11949C2.s11949c2f8");
    check_field_offset(lv, s11949c2f9, ABISELECT(64,52), "S11949C2.s11949c2f9");
    check_field_offset(lv, s11949c2f10, ABISELECT(72,60), "S11949C2.s11949c2f10");
  }
}
static Arrange_To_Call_Me vS11949C2(Test_S11949C2, "S11949C2", ABISELECT(80,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11949C1  {
  ::S11949C2 s11949c1f0[128];
  __tsi64 s11949c1f1;
  int s11949c1f2;
  int s11949c1f3;
  void *s11949c1f4;
  void *s11949c1f5;
  void *s11949c1f6;
  int s11949c1f7;
  char s11949c1f8[9316];
};
//SIG(1 S11949C1) C1{ FC2{ FU3{ Fi[4] FL[2]} FU3 Fp Fp Fi Fc Fc Fc[2] Fp Fc[8] Fc[4]}[128] FL Fi Fi Fp Fp Fp Fi Fc[9316]}



static void Test_S11949C1()
{
  {
    init_simple_test("S11949C1");
    S11949C1 lv;
    check2(sizeof(lv), ABISELECT(19600,17540), "sizeof(S11949C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11949C1)");
    check_field_offset(lv, s11949c1f0, 0, "S11949C1.s11949c1f0");
    check_field_offset(lv, s11949c1f1, ABISELECT(10240,8192), "S11949C1.s11949c1f1");
    check_field_offset(lv, s11949c1f2, ABISELECT(10248,8200), "S11949C1.s11949c1f2");
    check_field_offset(lv, s11949c1f3, ABISELECT(10252,8204), "S11949C1.s11949c1f3");
    check_field_offset(lv, s11949c1f4, ABISELECT(10256,8208), "S11949C1.s11949c1f4");
    check_field_offset(lv, s11949c1f5, ABISELECT(10264,8212), "S11949C1.s11949c1f5");
    check_field_offset(lv, s11949c1f6, ABISELECT(10272,8216), "S11949C1.s11949c1f6");
    check_field_offset(lv, s11949c1f7, ABISELECT(10280,8220), "S11949C1.s11949c1f7");
    check_field_offset(lv, s11949c1f8, ABISELECT(10284,8224), "S11949C1.s11949c1f8");
  }
}
static Arrange_To_Call_Me vS11949C1(Test_S11949C1, "S11949C1", ABISELECT(19600,17540));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13084C2  {
  int s13084c2f0;
  void *s13084c2f1;
  int s13084c2f2;
  void *s13084c2f3;
  int s13084c2f4;
  void *s13084c2f5;
  int s13084c2f6;
  void *s13084c2f7;
  int s13084c2f8;
  void *s13084c2f9;
  int s13084c2f10;
  void *s13084c2f11;
  int s13084c2f12[2];
};
//SIG(-1 S13084C2) C1{ Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]}



static void Test_S13084C2()
{
  {
    init_simple_test("S13084C2");
    S13084C2 lv;
    check2(sizeof(lv), ABISELECT(104,56), "sizeof(S13084C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13084C2)");
    check_field_offset(lv, s13084c2f0, 0, "S13084C2.s13084c2f0");
    check_field_offset(lv, s13084c2f1, ABISELECT(8,4), "S13084C2.s13084c2f1");
    check_field_offset(lv, s13084c2f2, ABISELECT(16,8), "S13084C2.s13084c2f2");
    check_field_offset(lv, s13084c2f3, ABISELECT(24,12), "S13084C2.s13084c2f3");
    check_field_offset(lv, s13084c2f4, ABISELECT(32,16), "S13084C2.s13084c2f4");
    check_field_offset(lv, s13084c2f5, ABISELECT(40,20), "S13084C2.s13084c2f5");
    check_field_offset(lv, s13084c2f6, ABISELECT(48,24), "S13084C2.s13084c2f6");
    check_field_offset(lv, s13084c2f7, ABISELECT(56,28), "S13084C2.s13084c2f7");
    check_field_offset(lv, s13084c2f8, ABISELECT(64,32), "S13084C2.s13084c2f8");
    check_field_offset(lv, s13084c2f9, ABISELECT(72,36), "S13084C2.s13084c2f9");
    check_field_offset(lv, s13084c2f10, ABISELECT(80,40), "S13084C2.s13084c2f10");
    check_field_offset(lv, s13084c2f11, ABISELECT(88,44), "S13084C2.s13084c2f11");
    check_field_offset(lv, s13084c2f12, ABISELECT(96,48), "S13084C2.s13084c2f12");
  }
}
static Arrange_To_Call_Me vS13084C2(Test_S13084C2, "S13084C2", ABISELECT(104,56));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13084C3_nt  {
  int s13084c3f0;
  void *s13084c3f1[7];
  short s13084c3f2;
  char s13084c3f3[10];
};
//SIG(-1 S13084C3_nt) C1{ Fi Fp[7] Fs Fc[10]}



//skip512 S13084C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13084C1  {
  int s13084c1f0[2];
  ::S13084C2 s13084c1f1;
  void *s13084c1f2;
  ::S13084C3_nt s13084c1f3;
  void *s13084c1f4;
  char s13084c1f5[528];
  void *s13084c1f6[2];
  int s13084c1f7[2];
  char s13084c1f8[7];
};
//SIG(1 S13084C1) C1{ Fi[2] FC2{ Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} Fp FC3{ Fi Fp[7] Fs Fc[10]} Fp Fc[528] Fp[2] Fi[2] Fc[7]}



static void Test_S13084C1()
{
  {
    init_simple_test("S13084C1");
    S13084C1 lv;
    check2(sizeof(lv), ABISELECT(768,668), "sizeof(S13084C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13084C1)");
    check_field_offset(lv, s13084c1f0, 0, "S13084C1.s13084c1f0");
    check_field_offset(lv, s13084c1f1, 8, "S13084C1.s13084c1f1");
    check_field_offset(lv, s13084c1f2, ABISELECT(112,64), "S13084C1.s13084c1f2");
    check_field_offset(lv, s13084c1f3, ABISELECT(120,68), "S13084C1.s13084c1f3");
    check_field_offset(lv, s13084c1f4, ABISELECT(200,112), "S13084C1.s13084c1f4");
    check_field_offset(lv, s13084c1f5, ABISELECT(208,116), "S13084C1.s13084c1f5");
    check_field_offset(lv, s13084c1f6, ABISELECT(736,644), "S13084C1.s13084c1f6");
    check_field_offset(lv, s13084c1f7, ABISELECT(752,652), "S13084C1.s13084c1f7");
    check_field_offset(lv, s13084c1f8, ABISELECT(760,660), "S13084C1.s13084c1f8");
  }
}
static Arrange_To_Call_Me vS13084C1(Test_S13084C1, "S13084C1", ABISELECT(768,668));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6393C2  {
  int s6393c2f0;
  virtual void  v1(); // _ZN7S6393C22v1Ev
  virtual void  v2(); // _ZN7S6393C22v2Ev
  ~S6393C2(); // tgen
  S6393C2(); // tgen
};
//SIG(-1 S6393C2) C1{ v1 v2 Fi}


void  S6393C2 ::v1(){vfunc_called(this, "_ZN7S6393C22v1Ev");}
void  S6393C2 ::v2(){vfunc_called(this, "_ZN7S6393C22v2Ev");}
S6393C2 ::~S6393C2(){ note_dtor("S6393C2", this);} // tgen
S6393C2 ::S6393C2(){ note_ctor("S6393C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6393C2C1Ev();
extern void _ZN7S6393C2D1Ev();
Name_Map name_map_S6393C2[] = {
  NSPAIR(_ZN7S6393C2C1Ev),
  NSPAIR(_ZN7S6393C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6393C2[];
extern void _ZN7S6393C22v1Ev();
extern void _ZN7S6393C22v2Ev();
static  VTBL_ENTRY vtc_S6393C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6393C2[0]),
  (VTBL_ENTRY)&_ZN7S6393C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6393C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6393C2[];
extern  VTBL_ENTRY _ZTV7S6393C2[];
Class_Descriptor cd_S6393C2 = {  "S6393C2", // class name
  0,0,//no base classes
  &(vtc_S6393C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6393C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6393C2),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  S6393C3_nt  {
  short s6393c3f0;
  virtual void  v3(); // _ZN10S6393C3_nt2v3Ev
  ~S6393C3_nt(); // tgen
  S6393C3_nt(); // tgen
};
//SIG(-1 S6393C3_nt) C1{ v1 Fs}


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

//skip512 S6393C3_nt

#else // __cplusplus

extern void _ZN10S6393C3_ntC1Ev();
extern void _ZN10S6393C3_ntD1Ev();
Name_Map name_map_S6393C3_nt[] = {
  NSPAIR(_ZN10S6393C3_ntC1Ev),
  NSPAIR(_ZN10S6393C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6393C3_nt[];
extern void _ZN10S6393C3_nt2v3Ev();
static  VTBL_ENTRY vtc_S6393C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6393C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S6393C3_nt2v3Ev,
};
extern VTBL_ENTRY _ZTI10S6393C3_nt[];
VTBL_ENTRY *P__ZTI10S6393C3_nt = _ZTI10S6393C3_nt; 
extern  VTBL_ENTRY _ZTV10S6393C3_nt[];
Class_Descriptor cd_S6393C3_nt = {  "S6393C3_nt", // class name
  0,0,//no base classes
  &(vtc_S6393C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S6393C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6393C3_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

union  S6393C5  {
  long double s6393c5f0[5];
  char s6393c5f1;
  char s6393c5f2;
  __tsi64 s6393c5f3[6];
  void  mf6393c5(); // _ZN7S6393C58mf6393c5Ev
};
//SIG(1 S6393C5) U1{ m FD[5] Fc Fc FL[6]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S6393C4  {
  int s6393c4f0;
  ::S6393C5 s6393c4f1;
  int s6393c4f2;
  char s6393c4f3;
  void  mf6393c4(); // _ZN7S6393C48mf6393c4Ev
};
//SIG(-1 S6393C4) C1{ m Fi FU2{ m FD[5] Fc Fc FL[6]} Fi Fc}


void  S6393C4 ::mf6393c4(){}

static void Test_S6393C4()
{
  {
    init_simple_test("S6393C4");
    S6393C4 lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S6393C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6393C4)");
    check_field_offset(lv, s6393c4f0, 0, "S6393C4.s6393c4f0");
    check_field_offset(lv, s6393c4f1, ABISELECT(16,4), "S6393C4.s6393c4f1");
    check_field_offset(lv, s6393c4f2, ABISELECT(96,64), "S6393C4.s6393c4f2");
    check_field_offset(lv, s6393c4f3, ABISELECT(100,68), "S6393C4.s6393c4f3");
  }
}
static Arrange_To_Call_Me vS6393C4(Test_S6393C4, "S6393C4", ABISELECT(112,72));

#else // __cplusplus

extern VTBL_ENTRY _ZTI7S6393C4[];
VTBL_ENTRY *P__ZTI7S6393C4 = _ZTI7S6393C4; 
Class_Descriptor cd_S6393C4 = {  "S6393C4", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI7S6393C4),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  S6393C6  : virtual S6393C2 , virtual S6393C4 , S6393C3_nt {
  ::S6393C5 s6393c6f0;
  virtual void  v4(); // _ZN7S6393C62v4Ev
  ~S6393C6(); // tgen
  S6393C6(); // tgen
};
//SIG(-1 S6393C6) C1{ VBC2{ v2 v3 Fi} VBC3{ m Fi FU4{ m FD[5] Fc Fc FL[6]} Fi Fc} BC5{ v4 Fs} v1 FU4}


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

static void Test_S6393C6()
{
  extern Class_Descriptor cd_S6393C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,38)];
    init_test(&cd_S6393C6, buf);
    S6393C6 *dp, &lv = *(dp=new (buf) S6393C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,148), "sizeof(S6393C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6393C6)");
    check_base_class_offset(lv, (S6393C2*), ABISELECT(96,68), "S6393C6");
    check_base_class_offset(lv, (S6393C4*), ABISELECT(112,76), "S6393C6");
    check_base_class_offset(lv, (S6393C3_nt*), 0, "S6393C6");
    check_field_offset(lv, s6393c6f0, ABISELECT(16,8), "S6393C6.s6393c6f0");
    test_class_info(&lv, &cd_S6393C6);
    dp->~S6393C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6393C6(Test_S6393C6, "S6393C6", ABISELECT(224,148));

#else // __cplusplus

extern void _ZN7S6393C6C1Ev();
extern void _ZN7S6393C6D1Ev();
Name_Map name_map_S6393C6[] = {
  NSPAIR(_ZN7S6393C6C1Ev),
  NSPAIR(_ZN7S6393C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6393C2;
extern VTBL_ENTRY _ZTI7S6393C2[];
extern  VTBL_ENTRY _ZTV7S6393C2[];
extern Class_Descriptor cd_S6393C4;
extern VTBL_ENTRY _ZTI7S6393C4[];
extern Class_Descriptor cd_S6393C3_nt;
extern VTBL_ENTRY _ZTI10S6393C3_nt[];
extern  VTBL_ENTRY _ZTV10S6393C3_nt[];
static Base_Class bases_S6393C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6393C2,    ABISELECT(96,68), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6393C4,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6393C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S6393C6[];
extern void _ZN10S6393C3_nt2v3Ev();
extern void _ZN7S6393C62v4Ev();
extern void _ZN7S6393C22v1Ev();
extern void _ZN7S6393C22v2Ev();
static  VTBL_ENTRY vtc_S6393C6[] = {
  ABISELECT(112,76),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S6393C6[0]),
  (VTBL_ENTRY)&_ZN10S6393C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN7S6393C62v4Ev,
  0,
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S6393C6[0]),
  (VTBL_ENTRY)&_ZN7S6393C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6393C22v2Ev,
};
extern VTBL_ENTRY _ZTV7S6393C6[];
static  VTT_ENTRY vtt_S6393C6[] = {
  {&(_ZTV7S6393C6[4]),  4,12},
  {&(_ZTV7S6393C6[10]),  10,12},
};
extern VTBL_ENTRY _ZTI7S6393C6[];
extern  VTBL_ENTRY _ZTV7S6393C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6393C6[];
Class_Descriptor cd_S6393C6 = {  "S6393C6", // class name
  bases_S6393C6, 3,
  &(vtc_S6393C6[0]), // expected_vtbl_contents
  &(vtt_S6393C6[0]), // expected_vtt_contents
  ABISELECT(224,148), // object size
  NSPAIRA(_ZTI7S6393C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6393C6),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6393C6),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6393C1  : S6393C2 , virtual S6393C3_nt , S6393C4 , virtual S6393C6 {
  short s6393c1f0;
  ::S6393C2 s6393c1f1[8];
  short s6393c1f2;
  void *s6393c1f3;
  ~S6393C1(); // tgen
  S6393C1(); // tgen
};
//SIG(1 S6393C1) C1{ BC2{ v1 v2 Fi} VBC3{ v3 Fs} BC4{ m Fi FU5{ m FD[5] Fc Fc FL[6]} Fi Fc} VBC6{ VBC2 VBC4 BC3 v4 FU5} Fs FC2[8] Fs Fp}


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

static void Test_S6393C1()
{
  extern Class_Descriptor cd_S6393C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(34,79)];
    init_test(&cd_S6393C1, buf);
    S6393C1 *dp, &lv = *(dp=new (buf) S6393C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,312), "sizeof(S6393C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6393C1)");
    /*is_ambiguous_... S6393C1::S6393C2 */ AMB_check_base_class_offset(lv, (S6393C2*), 0, "S6393C1");
    /*is_ambiguous_... S6393C1::S6393C3_nt */ AMB_check_base_class_offset(lv, (S6393C3_nt*), ABISELECT(280,156), "S6393C1");
    /*is_ambiguous_... S6393C1::S6393C4 */ AMB_check_base_class_offset(lv, (S6393C4*), ABISELECT(16,8), "S6393C1");
    check_base_class_offset(lv, (S6393C2*)(S6393C6*), ABISELECT(400,232), "S6393C1");
    check_base_class_offset(lv, (S6393C4*)(S6393C6*), ABISELECT(416,240), "S6393C1");
    check_base_class_offset(lv, (S6393C3_nt*)(S6393C6*), ABISELECT(304,164), "S6393C1");
    check_base_class_offset(lv, (S6393C6*), ABISELECT(304,164), "S6393C1");
    check_field_offset(lv, s6393c1f0, ABISELECT(128,80), "S6393C1.s6393c1f0");
    check_field_offset(lv, s6393c1f1, ABISELECT(136,84), "S6393C1.s6393c1f1");
    check_field_offset(lv, s6393c1f2, ABISELECT(264,148), "S6393C1.s6393c1f2");
    check_field_offset(lv, s6393c1f3, ABISELECT(272,152), "S6393C1.s6393c1f3");
    test_class_info(&lv, &cd_S6393C1);
    dp->~S6393C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6393C1(Test_S6393C1, "S6393C1", ABISELECT(528,312));

#else // __cplusplus

extern void _ZN7S6393C1C1Ev();
extern void _ZN7S6393C1D1Ev();
Name_Map name_map_S6393C1[] = {
  NSPAIR(_ZN7S6393C1C1Ev),
  NSPAIR(_ZN7S6393C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6393C2;
extern VTBL_ENTRY _ZTI7S6393C2[];
extern  VTBL_ENTRY _ZTV7S6393C2[];
extern Class_Descriptor cd_S6393C3_nt;
extern VTBL_ENTRY _ZTI10S6393C3_nt[];
extern  VTBL_ENTRY _ZTV10S6393C3_nt[];
extern Class_Descriptor cd_S6393C4;
extern VTBL_ENTRY _ZTI7S6393C4[];
extern Class_Descriptor cd_S6393C2;
extern VTBL_ENTRY _ZTI7S6393C2[];
extern  VTBL_ENTRY _ZTV7S6393C2[];
extern Class_Descriptor cd_S6393C4;
extern VTBL_ENTRY _ZTI7S6393C4[];
extern Class_Descriptor cd_S6393C3_nt;
extern VTBL_ENTRY _ZTI10S6393C3_nt[];
extern  VTBL_ENTRY _ZTV10S6393C3_nt[];
extern Class_Descriptor cd_S6393C6;
extern VTBL_ENTRY _ZTI7S6393C6[];
extern  VTBL_ENTRY _ZTV7S6393C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6393C6[];
static Base_Class bases_S6393C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6393C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6393C3_nt,    ABISELECT(280,156), //bcp->offset
    8, //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_S6393C4,    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_S6393C2,    ABISELECT(400,232), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6393C4,    ABISELECT(416,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
    6, //immediately_derived
  0, 1},
  {&cd_S6393C3_nt,    ABISELECT(304,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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6393C6,    ABISELECT(304,164), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6393C1[];
extern void _ZN7S6393C22v1Ev();
extern void _ZN7S6393C22v2Ev();
extern void _ZN10S6393C3_nt2v3Ev();
extern void _ZN10S6393C3_nt2v3Ev();
extern void _ZN7S6393C62v4Ev();
extern void _ZN7S6393C22v1Ev();
extern void _ZN7S6393C22v2Ev();
static  VTBL_ENTRY vtc_S6393C1[] = {
  ABISELECT(416,240),
  ABISELECT(400,232),
  ABISELECT(304,164),
  ABISELECT(280,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S6393C1[0]),
  (VTBL_ENTRY)&_ZN7S6393C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6393C22v2Ev,
  0,
  ABISELECT(-280,-156),
  (VTBL_ENTRY)&(_ZTI7S6393C1[0]),
  (VTBL_ENTRY)&_ZN10S6393C3_nt2v3Ev,
  0,
  0,
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI7S6393C1[0]),
  (VTBL_ENTRY)&_ZN10S6393C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN7S6393C62v4Ev,
  0,
  0,
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI7S6393C1[0]),
  (VTBL_ENTRY)&_ZN7S6393C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6393C22v2Ev,
};
extern VTBL_ENTRY _ZTV7S6393C1[];
extern void _ZN10S6393C3_nt2v3Ev();
extern void _ZN7S6393C62v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6393C6__7S6393C1[] = {
  ABISELECT(112,76),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S6393C6[0]),
  (VTBL_ENTRY)&_ZN10S6393C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN7S6393C62v4Ev,
};
extern void _ZN7S6393C22v1Ev();
extern void _ZN7S6393C22v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6393C2__7S6393C6__7S6393C1[] = {
  0,
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S6393C6[0]),
  (VTBL_ENTRY)&_ZN7S6393C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6393C22v2Ev,
};
static  VTT_ENTRY vtt_S6393C1[] = {
  {&(_ZTV7S6393C1[6]),  6,26},
  {&(_ZTV7S6393C1[11]),  11,26},
  {&(_ZTV7S6393C1[18]),  18,26},
  {&(_ZTV7S6393C1[24]),  24,26},
  {&(_tg__ZTV7S6393C6__7S6393C1[4]),  4,6},
  {&(_tg__ZTV7S6393C2__7S6393C6__7S6393C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S6393C1[];
extern  VTBL_ENTRY _ZTV7S6393C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6393C1[];
Class_Descriptor cd_S6393C1 = {  "S6393C1", // class name
  bases_S6393C1, 7,
  &(vtc_S6393C1[0]), // expected_vtbl_contents
  &(vtt_S6393C1[0]), // expected_vtt_contents
  ABISELECT(528,312), // object size
  NSPAIRA(_ZTI7S6393C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6393C1),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6393C1),6, //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  S21499C7_nt  {
  void *s21499c7f0[2];
  void  mf21499c7(); // _ZN11S21499C7_nt9mf21499c7Ev
};
//SIG(-1 S21499C7_nt) C1{ m Fp[2]}


void  S21499C7_nt ::mf21499c7(){}

//skip512 S21499C7_nt

#else // __cplusplus

Class_Descriptor cd_S21499C7_nt = {  "S21499C7_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  S21499C1  {
  ::S2405C20_nt s21499c1f0;
  void *s21499c1f1[2];
  int s21499c1f2;
  char s21499c1f3[3];
  int s21499c1f4;
  void *s21499c1f5;
  int s21499c1f6[2];
  ::S11969C23_nt s21499c1f7;
  ::S11969C34 s21499c1f8;
  char s21499c1f9[2];
  ::S11969C22_nt s21499c1f10;
  ::S21499C7_nt s21499c1f11;
  void  mf21499c1(); // _ZN8S21499C19mf21499c1Ev
  virtual  ~S21499C1(); // _ZN8S21499C1D1Ev
  S21499C1(); // tgen
};
//SIG(1 S21499C1) C1{ vd m FC2{ m Fp Fi FC3{ m}} Fp[2] Fi Fc[3] Fi Fp Fi[2] FC4{ m Fp} FC5{ m Fp[2]} Fc[2] FC6{ m Fp[2]} FC7{ m Fp[2]}}


void  S21499C1 ::mf21499c1(){}
 S21499C1 ::~S21499C1(){ note_dtor("S21499C1", this);}
S21499C1 ::S21499C1(){ note_ctor("S21499C1", this);} // tgen

static void Test_S21499C1()
{
  extern Class_Descriptor cd_S21499C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S21499C1, buf);
    S21499C1 *dp, &lv = *(dp=new (buf) S21499C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S21499C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21499C1)");
    check_field_offset(lv, s21499c1f0, ABISELECT(8,4), "S21499C1.s21499c1f0");
    check_field_offset(lv, s21499c1f1, ABISELECT(24,16), "S21499C1.s21499c1f1");
    check_field_offset(lv, s21499c1f2, ABISELECT(40,24), "S21499C1.s21499c1f2");
    check_field_offset(lv, s21499c1f3, ABISELECT(44,28), "S21499C1.s21499c1f3");
    check_field_offset(lv, s21499c1f4, ABISELECT(48,32), "S21499C1.s21499c1f4");
    check_field_offset(lv, s21499c1f5, ABISELECT(56,36), "S21499C1.s21499c1f5");
    check_field_offset(lv, s21499c1f6, ABISELECT(64,40), "S21499C1.s21499c1f6");
    check_field_offset(lv, s21499c1f7, ABISELECT(72,48), "S21499C1.s21499c1f7");
    check_field_offset(lv, s21499c1f8, ABISELECT(80,52), "S21499C1.s21499c1f8");
    check_field_offset(lv, s21499c1f9, ABISELECT(96,60), "S21499C1.s21499c1f9");
    check_field_offset(lv, s21499c1f10, ABISELECT(104,64), "S21499C1.s21499c1f10");
    check_field_offset(lv, s21499c1f11, ABISELECT(120,72), "S21499C1.s21499c1f11");
    test_class_info(&lv, &cd_S21499C1);
    dp->~S21499C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21499C1(Test_S21499C1, "S21499C1", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN8S21499C1C1Ev();
extern void _ZN8S21499C1D1Ev();
Name_Map name_map_S21499C1[] = {
  NSPAIR(_ZN8S21499C1C1Ev),
  NSPAIR(_ZN8S21499C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21499C1[];
extern void _ZN8S21499C1D1Ev();
extern void _ZN8S21499C1D0Ev();
static  VTBL_ENTRY vtc_S21499C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21499C1[0]),
  (VTBL_ENTRY)&_ZN8S21499C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21499C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21499C1[];
extern  VTBL_ENTRY _ZTV8S21499C1[];
Class_Descriptor cd_S21499C1 = {  "S21499C1", // class name
  0,0,//no base classes
  &(vtc_S21499C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI8S21499C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21499C1),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  S20035C2  {
  int s20035c2f0;
  virtual void  v2(); // _ZN8S20035C22v2Ev
  virtual void  v3(); // _ZN8S20035C22v3Ev
  ~S20035C2(); // tgen
  S20035C2(); // tgen
};
//SIG(-1 S20035C2) C1{ v1 v2 Fi}


void  S20035C2 ::v2(){vfunc_called(this, "_ZN8S20035C22v2Ev");}
void  S20035C2 ::v3(){vfunc_called(this, "_ZN8S20035C22v3Ev");}
S20035C2 ::~S20035C2(){ note_dtor("S20035C2", this);} // tgen
S20035C2 ::S20035C2(){ note_ctor("S20035C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20035C2C1Ev();
extern void _ZN8S20035C2D1Ev();
Name_Map name_map_S20035C2[] = {
  NSPAIR(_ZN8S20035C2C1Ev),
  NSPAIR(_ZN8S20035C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20035C2[];
extern void _ZN8S20035C22v2Ev();
extern void _ZN8S20035C22v3Ev();
static  VTBL_ENTRY vtc_S20035C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20035C2[0]),
  (VTBL_ENTRY)&_ZN8S20035C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20035C22v3Ev,
};
extern VTBL_ENTRY _ZTI8S20035C2[];
extern  VTBL_ENTRY _ZTV8S20035C2[];
Class_Descriptor cd_S20035C2 = {  "S20035C2", // class name
  0,0,//no base classes
  &(vtc_S20035C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20035C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20035C2),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  S20035C1  : virtual S20035C2 {
  char  :0;
  char s20035c1f1[5];
  ::S6393C4 s20035c1f2;
  void *s20035c1f3;
  ::S6393C6 s20035c1f4;
  virtual void  v1(); // _ZN8S20035C12v1Ev
  ~S20035C1(); // tgen
  S20035C1(); // tgen
};
//SIG(1 S20035C1) C1{ VBC2{ v2 v3 Fi} v1 Fc:0 Fc[5] FC3{ m Fi FU4{ m FD[5] Fc Fc FL[6]} Fi Fc} Fp FC5{ VBC6{ v5 v6 Fi} VBC3 BC7{ v7 Fs} v4 FU4}}


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

static void Test_S20035C1()
{
  extern Class_Descriptor cd_S20035C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,62)];
    init_test(&cd_S20035C1, buf);
    S20035C1 *dp, &lv = *(dp=new (buf) S20035C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,244), "sizeof(S20035C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20035C1)");
    check_base_class_offset(lv, (S20035C2*), ABISELECT(368,236), "S20035C1");
    check_field_offset(lv, s20035c1f1, ABISELECT(8,4), "S20035C1.s20035c1f1");
    check_field_offset(lv, s20035c1f2, ABISELECT(16,12), "S20035C1.s20035c1f2");
    check_field_offset(lv, s20035c1f3, ABISELECT(128,84), "S20035C1.s20035c1f3");
    check_field_offset(lv, s20035c1f4, ABISELECT(144,88), "S20035C1.s20035c1f4");
    test_class_info(&lv, &cd_S20035C1);
    dp->~S20035C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20035C1(Test_S20035C1, "S20035C1", ABISELECT(384,244));

#else // __cplusplus

extern void _ZN8S20035C1C1Ev();
extern void _ZN8S20035C1D1Ev();
Name_Map name_map_S20035C1[] = {
  NSPAIR(_ZN8S20035C1C1Ev),
  NSPAIR(_ZN8S20035C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20035C2;
extern VTBL_ENTRY _ZTI8S20035C2[];
extern  VTBL_ENTRY _ZTV8S20035C2[];
static Base_Class bases_S20035C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20035C2,    ABISELECT(368,236), //bcp->offset
    4, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20035C1[];
extern void _ZN8S20035C12v1Ev();
extern void _ZN8S20035C22v2Ev();
extern void _ZN8S20035C22v3Ev();
static  VTBL_ENTRY vtc_S20035C1[] = {
  ABISELECT(368,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S20035C1[0]),
  (VTBL_ENTRY)&_ZN8S20035C12v1Ev,
  0,
  0,
  ABISELECT(-368,-236),
  (VTBL_ENTRY)&(_ZTI8S20035C1[0]),
  (VTBL_ENTRY)&_ZN8S20035C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20035C22v3Ev,
};
extern VTBL_ENTRY _ZTV8S20035C1[];
static  VTT_ENTRY vtt_S20035C1[] = {
  {&(_ZTV8S20035C1[3]),  3,10},
  {&(_ZTV8S20035C1[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20035C1[];
extern  VTBL_ENTRY _ZTV8S20035C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20035C1[];
Class_Descriptor cd_S20035C1 = {  "S20035C1", // class name
  bases_S20035C1, 1,
  &(vtc_S20035C1[0]), // expected_vtbl_contents
  &(vtt_S20035C1[0]), // expected_vtt_contents
  ABISELECT(384,244), // object size
  NSPAIRA(_ZTI8S20035C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20035C1),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20035C1),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  S6908C4  {
  virtual void  v19(); // _ZN7S6908C43v19Ev
  virtual void  v20(); // _ZN7S6908C43v20Ev
  virtual void  v21(); // _ZN7S6908C43v21Ev
  ~S6908C4(); // tgen
  S6908C4(); // tgen
};
//SIG(-1 S6908C4) C1{ v1 v2 v3}


void  S6908C4 ::v19(){vfunc_called(this, "_ZN7S6908C43v19Ev");}
void  S6908C4 ::v20(){vfunc_called(this, "_ZN7S6908C43v20Ev");}
void  S6908C4 ::v21(){vfunc_called(this, "_ZN7S6908C43v21Ev");}
S6908C4 ::~S6908C4(){ note_dtor("S6908C4", this);} // tgen
S6908C4 ::S6908C4(){ note_ctor("S6908C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6908C4C1Ev();
extern void _ZN7S6908C4D1Ev();
Name_Map name_map_S6908C4[] = {
  NSPAIR(_ZN7S6908C4C1Ev),
  NSPAIR(_ZN7S6908C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6908C4[];
extern void _ZN7S6908C43v19Ev();
extern void _ZN7S6908C43v20Ev();
extern void _ZN7S6908C43v21Ev();
static  VTBL_ENTRY vtc_S6908C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6908C4[0]),
  (VTBL_ENTRY)&_ZN7S6908C43v19Ev,
  (VTBL_ENTRY)&_ZN7S6908C43v20Ev,
  (VTBL_ENTRY)&_ZN7S6908C43v21Ev,
};
extern VTBL_ENTRY _ZTI7S6908C4[];
extern  VTBL_ENTRY _ZTV7S6908C4[];
Class_Descriptor cd_S6908C4 = {  "S6908C4", // class name
  0,0,//no base classes
  &(vtc_S6908C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6908C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6908C4),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  S6908C3  : virtual S6908C4 {
  void *s6908c3f0;
  virtual void  v12(); // _ZN7S6908C33v12Ev
  virtual void  v13(); // _ZN7S6908C33v13Ev
  virtual void  v14(); // _ZN7S6908C33v14Ev
  virtual void  v15(); // _ZN7S6908C33v15Ev
  virtual void  v16(); // _ZN7S6908C33v16Ev
  virtual void  v17(); // _ZN7S6908C33v17Ev
  virtual void  v18(); // _ZN7S6908C33v18Ev
  ~S6908C3(); // tgen
  S6908C3(); // tgen
};
//SIG(-1 S6908C3) C1{ VBC2{ v8 v9 v10} v1 v2 v3 v4 v5 v6 v7 Fp}


void  S6908C3 ::v12(){vfunc_called(this, "_ZN7S6908C33v12Ev");}
void  S6908C3 ::v13(){vfunc_called(this, "_ZN7S6908C33v13Ev");}
void  S6908C3 ::v14(){vfunc_called(this, "_ZN7S6908C33v14Ev");}
void  S6908C3 ::v15(){vfunc_called(this, "_ZN7S6908C33v15Ev");}
void  S6908C3 ::v16(){vfunc_called(this, "_ZN7S6908C33v16Ev");}
void  S6908C3 ::v17(){vfunc_called(this, "_ZN7S6908C33v17Ev");}
void  S6908C3 ::v18(){vfunc_called(this, "_ZN7S6908C33v18Ev");}
S6908C3 ::~S6908C3(){ note_dtor("S6908C3", this);} // tgen
S6908C3 ::S6908C3(){ note_ctor("S6908C3", this);} // tgen

static void Test_S6908C3()
{
  extern Class_Descriptor cd_S6908C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6908C3, buf);
    S6908C3 *dp, &lv = *(dp=new (buf) S6908C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6908C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6908C3)");
    check_base_class_offset(lv, (S6908C4*), 0, "S6908C3");
    check_field_offset(lv, s6908c3f0, ABISELECT(8,4), "S6908C3.s6908c3f0");
    test_class_info(&lv, &cd_S6908C3);
    dp->~S6908C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6908C3(Test_S6908C3, "S6908C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6908C3C1Ev();
extern void _ZN7S6908C3D1Ev();
Name_Map name_map_S6908C3[] = {
  NSPAIR(_ZN7S6908C3C1Ev),
  NSPAIR(_ZN7S6908C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6908C4;
extern VTBL_ENTRY _ZTI7S6908C4[];
extern  VTBL_ENTRY _ZTV7S6908C4[];
static Base_Class bases_S6908C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6908C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6908C3[];
extern void _ZN7S6908C43v19Ev();
extern void _ZN7S6908C43v20Ev();
extern void _ZN7S6908C43v21Ev();
extern void _ZN7S6908C33v12Ev();
extern void _ZN7S6908C33v13Ev();
extern void _ZN7S6908C33v14Ev();
extern void _ZN7S6908C33v15Ev();
extern void _ZN7S6908C33v16Ev();
extern void _ZN7S6908C33v17Ev();
extern void _ZN7S6908C33v18Ev();
static  VTBL_ENTRY vtc_S6908C3[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6908C3[0]),
  (VTBL_ENTRY)&_ZN7S6908C43v19Ev,
  (VTBL_ENTRY)&_ZN7S6908C43v20Ev,
  (VTBL_ENTRY)&_ZN7S6908C43v21Ev,
  (VTBL_ENTRY)&_ZN7S6908C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6908C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6908C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6908C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6908C33v16Ev,
  (VTBL_ENTRY)&_ZN7S6908C33v17Ev,
  (VTBL_ENTRY)&_ZN7S6908C33v18Ev,
};
extern VTBL_ENTRY _ZTV7S6908C3[];
static  VTT_ENTRY vtt_S6908C3[] = {
  {&(_ZTV7S6908C3[6]),  6,16},
  {&(_ZTV7S6908C3[6]),  6,16},
};
extern VTBL_ENTRY _ZTI7S6908C3[];
extern  VTBL_ENTRY _ZTV7S6908C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6908C3[];
Class_Descriptor cd_S6908C3 = {  "S6908C3", // class name
  bases_S6908C3, 1,
  &(vtc_S6908C3[0]), // expected_vtbl_contents
  &(vtt_S6908C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6908C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6908C3),16, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6908C3),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  S6908C2  {
  ::S6908C3 s6908c2f0;
  int s6908c2f1;
  virtual void  v5(); // _ZN7S6908C22v5Ev
  virtual void  v6(); // _ZN7S6908C22v6Ev
  virtual void  v7(); // _ZN7S6908C22v7Ev
  virtual void  v8(); // _ZN7S6908C22v8Ev
  virtual void  v9(); // _ZN7S6908C22v9Ev
  virtual void  v10(); // _ZN7S6908C23v10Ev
  virtual void  v11(); // _ZN7S6908C23v11Ev
  ~S6908C2(); // tgen
  S6908C2(); // tgen
};
//SIG(-1 S6908C2) C1{ v1 v2 v3 v4 v5 v6 v7 FC2{ VBC3{ v15 v16 v17} v8 v9 v10 v11 v12 v13 v14 Fp} Fi}


void  S6908C2 ::v5(){vfunc_called(this, "_ZN7S6908C22v5Ev");}
void  S6908C2 ::v6(){vfunc_called(this, "_ZN7S6908C22v6Ev");}
void  S6908C2 ::v7(){vfunc_called(this, "_ZN7S6908C22v7Ev");}
void  S6908C2 ::v8(){vfunc_called(this, "_ZN7S6908C22v8Ev");}
void  S6908C2 ::v9(){vfunc_called(this, "_ZN7S6908C22v9Ev");}
void  S6908C2 ::v10(){vfunc_called(this, "_ZN7S6908C23v10Ev");}
void  S6908C2 ::v11(){vfunc_called(this, "_ZN7S6908C23v11Ev");}
S6908C2 ::~S6908C2(){ note_dtor("S6908C2", this);} // tgen
S6908C2 ::S6908C2(){ note_ctor("S6908C2", this);} // tgen

static void Test_S6908C2()
{
  extern Class_Descriptor cd_S6908C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S6908C2, buf);
    S6908C2 *dp, &lv = *(dp=new (buf) S6908C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6908C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6908C2)");
    check_field_offset(lv, s6908c2f0, ABISELECT(8,4), "S6908C2.s6908c2f0");
    check_field_offset(lv, s6908c2f1, ABISELECT(24,12), "S6908C2.s6908c2f1");
    test_class_info(&lv, &cd_S6908C2);
    dp->~S6908C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6908C2(Test_S6908C2, "S6908C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S6908C2C1Ev();
extern void _ZN7S6908C2D1Ev();
Name_Map name_map_S6908C2[] = {
  NSPAIR(_ZN7S6908C2C1Ev),
  NSPAIR(_ZN7S6908C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6908C2[];
extern void _ZN7S6908C22v5Ev();
extern void _ZN7S6908C22v6Ev();
extern void _ZN7S6908C22v7Ev();
extern void _ZN7S6908C22v8Ev();
extern void _ZN7S6908C22v9Ev();
extern void _ZN7S6908C23v10Ev();
extern void _ZN7S6908C23v11Ev();
static  VTBL_ENTRY vtc_S6908C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6908C2[0]),
  (VTBL_ENTRY)&_ZN7S6908C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6908C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6908C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6908C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6908C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6908C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6908C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S6908C2[];
extern  VTBL_ENTRY _ZTV7S6908C2[];
Class_Descriptor cd_S6908C2 = {  "S6908C2", // class name
  0,0,//no base classes
  &(vtc_S6908C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S6908C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6908C2),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6908C1  : S6908C2 {
  long double s6908c1f0;
  long s6908c1f1;
  virtual void  v1(); // _ZN7S6908C12v1Ev
  virtual void  v2(); // _ZN7S6908C12v2Ev
  virtual void  v3(); // _ZN7S6908C12v3Ev
  virtual void  v4(); // _ZN7S6908C12v4Ev
  ~S6908C1(); // tgen
  S6908C1(); // tgen
};
//SIG(1 S6908C1) C1{ BC2{ v5 v6 v7 v8 v9 v10 v11 FC3{ VBC4{ v19 v20 v21} v12 v13 v14 v15 v16 v17 v18 Fp} Fi} v1 v2 v3 v4 FD Fl}


void  S6908C1 ::v1(){vfunc_called(this, "_ZN7S6908C12v1Ev");}
void  S6908C1 ::v2(){vfunc_called(this, "_ZN7S6908C12v2Ev");}
void  S6908C1 ::v3(){vfunc_called(this, "_ZN7S6908C12v3Ev");}
void  S6908C1 ::v4(){vfunc_called(this, "_ZN7S6908C12v4Ev");}
S6908C1 ::~S6908C1(){ note_dtor("S6908C1", this);} // tgen
S6908C1 ::S6908C1(){ note_ctor("S6908C1", this);} // tgen

static void Test_S6908C1()
{
  extern Class_Descriptor cd_S6908C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S6908C1, buf);
    S6908C1 *dp, &lv = *(dp=new (buf) S6908C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S6908C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6908C1)");
    check_base_class_offset(lv, (S6908C2*), 0, "S6908C1");
    check_field_offset(lv, s6908c1f0, ABISELECT(32,16), "S6908C1.s6908c1f0");
    check_field_offset(lv, s6908c1f1, ABISELECT(48,28), "S6908C1.s6908c1f1");
    test_class_info(&lv, &cd_S6908C1);
    dp->~S6908C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6908C1(Test_S6908C1, "S6908C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S6908C1C1Ev();
extern void _ZN7S6908C1D1Ev();
Name_Map name_map_S6908C1[] = {
  NSPAIR(_ZN7S6908C1C1Ev),
  NSPAIR(_ZN7S6908C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6908C2;
extern VTBL_ENTRY _ZTI7S6908C2[];
extern  VTBL_ENTRY _ZTV7S6908C2[];
static Base_Class bases_S6908C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6908C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6908C1[];
extern void _ZN7S6908C22v5Ev();
extern void _ZN7S6908C22v6Ev();
extern void _ZN7S6908C22v7Ev();
extern void _ZN7S6908C22v8Ev();
extern void _ZN7S6908C22v9Ev();
extern void _ZN7S6908C23v10Ev();
extern void _ZN7S6908C23v11Ev();
extern void _ZN7S6908C12v1Ev();
extern void _ZN7S6908C12v2Ev();
extern void _ZN7S6908C12v3Ev();
extern void _ZN7S6908C12v4Ev();
static  VTBL_ENTRY vtc_S6908C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6908C1[0]),
  (VTBL_ENTRY)&_ZN7S6908C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6908C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6908C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6908C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6908C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6908C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6908C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6908C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6908C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6908C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6908C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S6908C1[];
extern  VTBL_ENTRY _ZTV7S6908C1[];
Class_Descriptor cd_S6908C1 = {  "S6908C1", // class name
  bases_S6908C1, 1,
  &(vtc_S6908C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S6908C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6908C1),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  S3706C2  : S3712C3_nt {
  virtual void  v2(); // _ZN7S3706C22v2Ev
  ~S3706C2(); // tgen
  S3706C2(); // tgen
};
//SIG(-1 S3706C2) C1{ BC2{ vd m Fi} v1}


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

static void Test_S3706C2()
{
  extern Class_Descriptor cd_S3706C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3706C2, buf);
    S3706C2 *dp, &lv = *(dp=new (buf) S3706C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3706C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3706C2)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S3706C2");
    test_class_info(&lv, &cd_S3706C2);
    dp->~S3706C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3706C2(Test_S3706C2, "S3706C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3706C2C1Ev();
extern void _ZN7S3706C2D1Ev();
Name_Map name_map_S3706C2[] = {
  NSPAIR(_ZN7S3706C2C1Ev),
  NSPAIR(_ZN7S3706C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S3706C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3706C2[];
extern void _ZN7S3706C2D1Ev();
extern void _ZN7S3706C2D0Ev();
extern void _ZN7S3706C22v2Ev();
static  VTBL_ENTRY vtc_S3706C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3706C2[0]),
  (VTBL_ENTRY)&_ZN7S3706C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3706C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3706C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S3706C2[];
extern  VTBL_ENTRY _ZTV7S3706C2[];
Class_Descriptor cd_S3706C2 = {  "S3706C2", // class name
  bases_S3706C2, 1,
  &(vtc_S3706C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3706C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3706C2),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  S3706C1  : S3706C2 {
  ::S10225C3 s3706c1f0;
  ::S10225C15_nt s3706c1f1;
  virtual  ~S3706C1(); // _ZN7S3706C1D1Ev
  virtual void  v1(); // _ZN7S3706C12v1Ev
  S3706C1(); // tgen
};
//SIG(1 S3706C1) C1{ BC2{ BC3{ vd m Fi} v2} vd v1 FC4{ BC5{ vd v6 v7 v8} vd v3 v4 v5 FC6{ FL[4]}} FC7{ BC8{ m Fp Fi FC9{ m} FC9}}}


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

static void Test_S3706C1()
{
  extern Class_Descriptor cd_S3706C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S3706C1, buf);
    S3706C1 *dp, &lv = *(dp=new (buf) S3706C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S3706C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3706C1)");
    check_base_class_offset(lv, (S3712C3_nt*)(S3706C2*), 0, "S3706C1");
    check_base_class_offset(lv, (S3706C2*), 0, "S3706C1");
    check_field_offset(lv, s3706c1f0, ABISELECT(16,8), "S3706C1.s3706c1f0");
    check_field_offset(lv, s3706c1f1, ABISELECT(56,44), "S3706C1.s3706c1f1");
    test_class_info(&lv, &cd_S3706C1);
    dp->~S3706C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3706C1(Test_S3706C1, "S3706C1", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S3706C1C1Ev();
extern void _ZN7S3706C1D1Ev();
Name_Map name_map_S3706C1[] = {
  NSPAIR(_ZN7S3706C1C1Ev),
  NSPAIR(_ZN7S3706C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
extern Class_Descriptor cd_S3706C2;
extern VTBL_ENTRY _ZTI7S3706C2[];
extern  VTBL_ENTRY _ZTV7S3706C2[];
static Base_Class bases_S3706C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3706C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3706C1[];
extern void _ZN7S3706C1D1Ev();
extern void _ZN7S3706C1D0Ev();
extern void _ZN7S3706C22v2Ev();
extern void _ZN7S3706C12v1Ev();
static  VTBL_ENTRY vtc_S3706C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3706C1[0]),
  (VTBL_ENTRY)&_ZN7S3706C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3706C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3706C22v2Ev,
  (VTBL_ENTRY)&_ZN7S3706C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3706C1[];
extern  VTBL_ENTRY _ZTV7S3706C1[];
Class_Descriptor cd_S3706C1 = {  "S3706C1", // class name
  bases_S3706C1, 2,
  &(vtc_S3706C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S3706C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3706C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19155C5  {
  int s19155c5f0;
  virtual void  v3(); // _ZN8S19155C52v3Ev
  virtual void  v4(); // _ZN8S19155C52v4Ev
  ~S19155C5(); // tgen
  S19155C5(); // tgen
};
//SIG(-1 S19155C5) C1{ v1 v2 Fi}


void  S19155C5 ::v3(){vfunc_called(this, "_ZN8S19155C52v3Ev");}
void  S19155C5 ::v4(){vfunc_called(this, "_ZN8S19155C52v4Ev");}
S19155C5 ::~S19155C5(){ note_dtor("S19155C5", this);} // tgen
S19155C5 ::S19155C5(){ note_ctor("S19155C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19155C5C1Ev();
extern void _ZN8S19155C5D1Ev();
Name_Map name_map_S19155C5[] = {
  NSPAIR(_ZN8S19155C5C1Ev),
  NSPAIR(_ZN8S19155C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19155C5[];
extern void _ZN8S19155C52v3Ev();
extern void _ZN8S19155C52v4Ev();
static  VTBL_ENTRY vtc_S19155C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19155C5[0]),
  (VTBL_ENTRY)&_ZN8S19155C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19155C52v4Ev,
};
extern VTBL_ENTRY _ZTI8S19155C5[];
extern  VTBL_ENTRY _ZTV8S19155C5[];
Class_Descriptor cd_S19155C5 = {  "S19155C5", // class name
  0,0,//no base classes
  &(vtc_S19155C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19155C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19155C5),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  S19155C6  {
  short s19155c6f0;
  virtual void  v5(); // _ZN8S19155C62v5Ev
  ~S19155C6(); // tgen
  S19155C6(); // tgen
};
//SIG(-1 S19155C6) C1{ v1 Fs}


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

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

#else // __cplusplus

extern void _ZN8S19155C6C1Ev();
extern void _ZN8S19155C6D1Ev();
Name_Map name_map_S19155C6[] = {
  NSPAIR(_ZN8S19155C6C1Ev),
  NSPAIR(_ZN8S19155C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19155C6[];
extern void _ZN8S19155C62v5Ev();
static  VTBL_ENTRY vtc_S19155C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19155C6[0]),
  (VTBL_ENTRY)&_ZN8S19155C62v5Ev,
};
extern VTBL_ENTRY _ZTI8S19155C6[];
extern  VTBL_ENTRY _ZTV8S19155C6[];
Class_Descriptor cd_S19155C6 = {  "S19155C6", // class name
  0,0,//no base classes
  &(vtc_S19155C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19155C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19155C6),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  S19155C2  : S6393C4 , virtual S19155C5 , S19155C6 {
  ::S6393C4 s19155c2f0;
  short s19155c2f1;
  virtual void  v6(); // _ZN8S19155C22v6Ev
  ~S19155C2(); // tgen
  S19155C2(); // tgen
};
//SIG(-1 S19155C2) C1{ BC2{ m Fi FU3{ m FD[5] Fc Fc FL[6]} Fi Fc} VBC4{ v2 v3 Fi} BC5{ v4 Fs} v1 FC2 Fs}


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

static void Test_S19155C2()
{
  extern Class_Descriptor cd_S19155C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,42)];
    init_test(&cd_S19155C2, buf);
    S19155C2 *dp, &lv = *(dp=new (buf) S19155C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,164), "sizeof(S19155C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19155C2)");
    check_base_class_offset(lv, (S6393C4*), ABISELECT(16,8), "S19155C2");
    check_base_class_offset(lv, (S19155C5*), ABISELECT(248,156), "S19155C2");
    check_base_class_offset(lv, (S19155C6*), 0, "S19155C2");
    check_field_offset(lv, s19155c2f0, ABISELECT(128,80), "S19155C2.s19155c2f0");
    check_field_offset(lv, s19155c2f1, ABISELECT(240,152), "S19155C2.s19155c2f1");
    test_class_info(&lv, &cd_S19155C2);
    dp->~S19155C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19155C2(Test_S19155C2, "S19155C2", ABISELECT(272,164));

#else // __cplusplus

extern void _ZN8S19155C2C1Ev();
extern void _ZN8S19155C2D1Ev();
Name_Map name_map_S19155C2[] = {
  NSPAIR(_ZN8S19155C2C1Ev),
  NSPAIR(_ZN8S19155C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6393C4;
extern VTBL_ENTRY _ZTI7S6393C4[];
extern Class_Descriptor cd_S19155C5;
extern VTBL_ENTRY _ZTI8S19155C5[];
extern  VTBL_ENTRY _ZTV8S19155C5[];
extern Class_Descriptor cd_S19155C6;
extern VTBL_ENTRY _ZTI8S19155C6[];
extern  VTBL_ENTRY _ZTV8S19155C6[];
static Base_Class bases_S19155C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6393C4,    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_S19155C5,    ABISELECT(248,156), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19155C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19155C2[];
extern void _ZN8S19155C62v5Ev();
extern void _ZN8S19155C22v6Ev();
extern void _ZN8S19155C52v3Ev();
extern void _ZN8S19155C52v4Ev();
static  VTBL_ENTRY vtc_S19155C2[] = {
  ABISELECT(248,156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19155C2[0]),
  (VTBL_ENTRY)&_ZN8S19155C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19155C22v6Ev,
  0,
  0,
  ABISELECT(-248,-156),
  (VTBL_ENTRY)&(_ZTI8S19155C2[0]),
  (VTBL_ENTRY)&_ZN8S19155C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19155C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19155C2[];
static  VTT_ENTRY vtt_S19155C2[] = {
  {&(_ZTV8S19155C2[3]),  3,11},
  {&(_ZTV8S19155C2[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19155C2[];
extern  VTBL_ENTRY _ZTV8S19155C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19155C2[];
Class_Descriptor cd_S19155C2 = {  "S19155C2", // class name
  bases_S19155C2, 3,
  &(vtc_S19155C2[0]), // expected_vtbl_contents
  &(vtt_S19155C2[0]), // expected_vtt_contents
  ABISELECT(272,164), // object size
  NSPAIRA(_ZTI8S19155C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19155C2),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19155C2),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19155C1  : virtual S19155C2 {
  ::S3572C6_nt s19155c1f0;
  int s19155c1f1;
  int s19155c1f2[7];
  virtual void  v1(); // _ZN8S19155C12v1Ev
  virtual void  v2(); // _ZN8S19155C12v2Ev
  ~S19155C1(); // tgen
  S19155C1(); // tgen
};
//SIG(1 S19155C1) C1{ VBC2{ BC3{ m Fi FU4{ m FD[5] Fc Fc FL[6]} Fi Fc} VBC5{ v3 v4 Fi} BC6{ v5 Fs} v6 FC3 Fs} v1 v2 FC7{} Fi Fi[7]}


void  S19155C1 ::v1(){vfunc_called(this, "_ZN8S19155C12v1Ev");}
void  S19155C1 ::v2(){vfunc_called(this, "_ZN8S19155C12v2Ev");}
S19155C1 ::~S19155C1(){ note_dtor("S19155C1", this);} // tgen
S19155C1 ::S19155C1(){ note_ctor("S19155C1", this);} // tgen

static void Test_S19155C1()
{
  extern Class_Descriptor cd_S19155C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,52)];
    init_test(&cd_S19155C1, buf);
    S19155C1 *dp, &lv = *(dp=new (buf) S19155C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,204), "sizeof(S19155C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19155C1)");
    check_base_class_offset(lv, (S6393C4*)(S19155C2*), ABISELECT(64,48), "S19155C1");
    check_base_class_offset(lv, (S19155C5*)(S19155C2*), ABISELECT(296,196), "S19155C1");
    check_base_class_offset(lv, (S19155C6*)(S19155C2*), ABISELECT(48,40), "S19155C1");
    check_base_class_offset(lv, (S19155C2*), ABISELECT(48,40), "S19155C1");
    check_field_offset(lv, s19155c1f0, ABISELECT(8,4), "S19155C1.s19155c1f0");
    check_field_offset(lv, s19155c1f1, ABISELECT(12,8), "S19155C1.s19155c1f1");
    check_field_offset(lv, s19155c1f2, ABISELECT(16,12), "S19155C1.s19155c1f2");
    test_class_info(&lv, &cd_S19155C1);
    dp->~S19155C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19155C1(Test_S19155C1, "S19155C1", ABISELECT(320,204));

#else // __cplusplus

extern void _ZN8S19155C1C1Ev();
extern void _ZN8S19155C1D1Ev();
Name_Map name_map_S19155C1[] = {
  NSPAIR(_ZN8S19155C1C1Ev),
  NSPAIR(_ZN8S19155C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6393C4;
extern VTBL_ENTRY _ZTI7S6393C4[];
extern Class_Descriptor cd_S19155C5;
extern VTBL_ENTRY _ZTI8S19155C5[];
extern  VTBL_ENTRY _ZTV8S19155C5[];
extern Class_Descriptor cd_S19155C6;
extern VTBL_ENTRY _ZTI8S19155C6[];
extern  VTBL_ENTRY _ZTV8S19155C6[];
extern Class_Descriptor cd_S19155C2;
extern VTBL_ENTRY _ZTI8S19155C2[];
extern  VTBL_ENTRY _ZTV8S19155C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19155C2[];
static Base_Class bases_S19155C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6393C4,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19155C5,    ABISELECT(296,196), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19155C6,    ABISELECT(48,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19155C2,    ABISELECT(48,40), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19155C1[];
extern void _ZN8S19155C12v1Ev();
extern void _ZN8S19155C12v2Ev();
extern void _ZN8S19155C62v5Ev();
extern void _ZN8S19155C22v6Ev();
extern void _ZN8S19155C52v3Ev();
extern void _ZN8S19155C52v4Ev();
static  VTBL_ENTRY vtc_S19155C1[] = {
  ABISELECT(296,196),
  ABISELECT(48,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19155C1[0]),
  (VTBL_ENTRY)&_ZN8S19155C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19155C12v2Ev,
  0,
  0,
  ABISELECT(248,156),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S19155C1[0]),
  (VTBL_ENTRY)&_ZN8S19155C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19155C22v6Ev,
  0,
  0,
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI8S19155C1[0]),
  (VTBL_ENTRY)&_ZN8S19155C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19155C52v4Ev,
};
extern VTBL_ENTRY _ZTV8S19155C1[];
extern void _ZN8S19155C62v5Ev();
extern void _ZN8S19155C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19155C2__8S19155C1[] = {
  ABISELECT(248,156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19155C2[0]),
  (VTBL_ENTRY)&_ZN8S19155C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19155C22v6Ev,
};
extern void _ZN8S19155C52v3Ev();
extern void _ZN8S19155C52v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19155C5__8S19155C2__8S19155C1[] = {
  0,
  0,
  ABISELECT(-248,-156),
  (VTBL_ENTRY)&(_ZTI8S19155C2[0]),
  (VTBL_ENTRY)&_ZN8S19155C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19155C52v4Ev,
};
static  VTT_ENTRY vtt_S19155C1[] = {
  {&(_ZTV8S19155C1[4]),  4,19},
  {&(_ZTV8S19155C1[11]),  11,19},
  {&(_ZTV8S19155C1[17]),  17,19},
  {&(_tg__ZTV8S19155C2__8S19155C1[3]),  3,5},
  {&(_tg__ZTV8S19155C5__8S19155C2__8S19155C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19155C1[];
extern  VTBL_ENTRY _ZTV8S19155C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19155C1[];
Class_Descriptor cd_S19155C1 = {  "S19155C1", // class name
  bases_S19155C1, 4,
  &(vtc_S19155C1[0]), // expected_vtbl_contents
  &(vtt_S19155C1[0]), // expected_vtt_contents
  ABISELECT(320,204), // object size
  NSPAIRA(_ZTI8S19155C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19155C1),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19155C1),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3439C3  {
  int s3439c3f0;
  virtual void  v9(); // _ZN7S3439C32v9Ev
  virtual void  v10(); // _ZN7S3439C33v10Ev
  virtual void  v11(); // _ZN7S3439C33v11Ev
  virtual void  v12(); // _ZN7S3439C33v12Ev
  virtual void  v13(); // _ZN7S3439C33v13Ev
  ~S3439C3(); // tgen
  S3439C3(); // tgen
};
//SIG(-1 S3439C3) C1{ v1 v2 v3 v4 v5 Fi}


void  S3439C3 ::v9(){vfunc_called(this, "_ZN7S3439C32v9Ev");}
void  S3439C3 ::v10(){vfunc_called(this, "_ZN7S3439C33v10Ev");}
void  S3439C3 ::v11(){vfunc_called(this, "_ZN7S3439C33v11Ev");}
void  S3439C3 ::v12(){vfunc_called(this, "_ZN7S3439C33v12Ev");}
void  S3439C3 ::v13(){vfunc_called(this, "_ZN7S3439C33v13Ev");}
S3439C3 ::~S3439C3(){ note_dtor("S3439C3", this);} // tgen
S3439C3 ::S3439C3(){ note_ctor("S3439C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3439C3C1Ev();
extern void _ZN7S3439C3D1Ev();
Name_Map name_map_S3439C3[] = {
  NSPAIR(_ZN7S3439C3C1Ev),
  NSPAIR(_ZN7S3439C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3439C3[];
extern void _ZN7S3439C32v9Ev();
extern void _ZN7S3439C33v10Ev();
extern void _ZN7S3439C33v11Ev();
extern void _ZN7S3439C33v12Ev();
extern void _ZN7S3439C33v13Ev();
static  VTBL_ENTRY vtc_S3439C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3439C3[0]),
  (VTBL_ENTRY)&_ZN7S3439C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v13Ev,
};
extern VTBL_ENTRY _ZTI7S3439C3[];
extern  VTBL_ENTRY _ZTV7S3439C3[];
Class_Descriptor cd_S3439C3 = {  "S3439C3", // class name
  0,0,//no base classes
  &(vtc_S3439C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3439C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3439C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3439C2  : S3439C3 {
  long double s3439c2f0;
  void *s3439c2f1[7];
  virtual void  v14(); // _ZN7S3439C23v14Ev
  virtual void  v15(); // _ZN7S3439C23v15Ev
  virtual void  v16(); // _ZN7S3439C23v16Ev
  virtual void  v17(); // _ZN7S3439C23v17Ev
  virtual void  v18(); // _ZN7S3439C23v18Ev
  virtual void  v19(); // _ZN7S3439C23v19Ev
  ~S3439C2(); // tgen
  S3439C2(); // tgen
};
//SIG(-1 S3439C2) C1{ BC2{ v7 v8 v9 v10 v11 Fi} v1 v2 v3 v4 v5 v6 FD Fp[7]}


void  S3439C2 ::v14(){vfunc_called(this, "_ZN7S3439C23v14Ev");}
void  S3439C2 ::v15(){vfunc_called(this, "_ZN7S3439C23v15Ev");}
void  S3439C2 ::v16(){vfunc_called(this, "_ZN7S3439C23v16Ev");}
void  S3439C2 ::v17(){vfunc_called(this, "_ZN7S3439C23v17Ev");}
void  S3439C2 ::v18(){vfunc_called(this, "_ZN7S3439C23v18Ev");}
void  S3439C2 ::v19(){vfunc_called(this, "_ZN7S3439C23v19Ev");}
S3439C2 ::~S3439C2(){ note_dtor("S3439C2", this);} // tgen
S3439C2 ::S3439C2(){ note_ctor("S3439C2", this);} // tgen

static void Test_S3439C2()
{
  extern Class_Descriptor cd_S3439C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,13)];
    init_test(&cd_S3439C2, buf);
    S3439C2 *dp, &lv = *(dp=new (buf) S3439C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S3439C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3439C2)");
    check_base_class_offset(lv, (S3439C3*), 0, "S3439C2");
    check_field_offset(lv, s3439c2f0, ABISELECT(16,8), "S3439C2.s3439c2f0");
    check_field_offset(lv, s3439c2f1, ABISELECT(32,20), "S3439C2.s3439c2f1");
    test_class_info(&lv, &cd_S3439C2);
    dp->~S3439C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3439C2(Test_S3439C2, "S3439C2", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN7S3439C2C1Ev();
extern void _ZN7S3439C2D1Ev();
Name_Map name_map_S3439C2[] = {
  NSPAIR(_ZN7S3439C2C1Ev),
  NSPAIR(_ZN7S3439C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3439C3;
extern VTBL_ENTRY _ZTI7S3439C3[];
extern  VTBL_ENTRY _ZTV7S3439C3[];
static Base_Class bases_S3439C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3439C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3439C2[];
extern void _ZN7S3439C32v9Ev();
extern void _ZN7S3439C33v10Ev();
extern void _ZN7S3439C33v11Ev();
extern void _ZN7S3439C33v12Ev();
extern void _ZN7S3439C33v13Ev();
extern void _ZN7S3439C23v14Ev();
extern void _ZN7S3439C23v15Ev();
extern void _ZN7S3439C23v16Ev();
extern void _ZN7S3439C23v17Ev();
extern void _ZN7S3439C23v18Ev();
extern void _ZN7S3439C23v19Ev();
static  VTBL_ENTRY vtc_S3439C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3439C2[0]),
  (VTBL_ENTRY)&_ZN7S3439C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3439C2[];
extern  VTBL_ENTRY _ZTV7S3439C2[];
Class_Descriptor cd_S3439C2 = {  "S3439C2", // class name
  bases_S3439C2, 1,
  &(vtc_S3439C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI7S3439C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3439C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3439C1  : S3439C2 , S6508C16_nt {
  virtual void  v1(); // _ZN7S3439C12v1Ev
  virtual void  v2(); // _ZN7S3439C12v2Ev
  virtual void  v3(); // _ZN7S3439C12v3Ev
  virtual void  v4(); // _ZN7S3439C12v4Ev
  virtual void  v5(); // _ZN7S3439C12v5Ev
  virtual void  v6(); // _ZN7S3439C12v6Ev
  virtual void  v7(); // _ZN7S3439C12v7Ev
  virtual void  v8(); // _ZN7S3439C12v8Ev
  ~S3439C1(); // tgen
  S3439C1(); // tgen
};
//SIG(1 S3439C1) C1{ BC2{ BC3{ v9 v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 v19 FD Fp[7]} BC4{ m Fi} v1 v2 v3 v4 v5 v6 v7 v8}


void  S3439C1 ::v1(){vfunc_called(this, "_ZN7S3439C12v1Ev");}
void  S3439C1 ::v2(){vfunc_called(this, "_ZN7S3439C12v2Ev");}
void  S3439C1 ::v3(){vfunc_called(this, "_ZN7S3439C12v3Ev");}
void  S3439C1 ::v4(){vfunc_called(this, "_ZN7S3439C12v4Ev");}
void  S3439C1 ::v5(){vfunc_called(this, "_ZN7S3439C12v5Ev");}
void  S3439C1 ::v6(){vfunc_called(this, "_ZN7S3439C12v6Ev");}
void  S3439C1 ::v7(){vfunc_called(this, "_ZN7S3439C12v7Ev");}
void  S3439C1 ::v8(){vfunc_called(this, "_ZN7S3439C12v8Ev");}
S3439C1 ::~S3439C1(){ note_dtor("S3439C1", this);} // tgen
S3439C1 ::S3439C1(){ note_ctor("S3439C1", this);} // tgen

static void Test_S3439C1()
{
  extern Class_Descriptor cd_S3439C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,14)];
    init_test(&cd_S3439C1, buf);
    S3439C1 *dp, &lv = *(dp=new (buf) S3439C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S3439C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3439C1)");
    check_base_class_offset(lv, (S3439C3*)(S3439C2*), 0, "S3439C1");
    check_base_class_offset(lv, (S3439C2*), 0, "S3439C1");
    check_base_class_offset(lv, (S6508C16_nt*), ABISELECT(88,48), "S3439C1");
    test_class_info(&lv, &cd_S3439C1);
    dp->~S3439C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3439C1(Test_S3439C1, "S3439C1", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S3439C1C1Ev();
extern void _ZN7S3439C1D1Ev();
Name_Map name_map_S3439C1[] = {
  NSPAIR(_ZN7S3439C1C1Ev),
  NSPAIR(_ZN7S3439C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3439C3;
extern VTBL_ENTRY _ZTI7S3439C3[];
extern  VTBL_ENTRY _ZTV7S3439C3[];
extern Class_Descriptor cd_S3439C2;
extern VTBL_ENTRY _ZTI7S3439C2[];
extern  VTBL_ENTRY _ZTV7S3439C2[];
extern Class_Descriptor cd_S6508C16_nt;
extern VTBL_ENTRY _ZTI11S6508C16_nt[];
static Base_Class bases_S3439C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3439C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3439C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S6508C16_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3439C1[];
extern void _ZN7S3439C32v9Ev();
extern void _ZN7S3439C33v10Ev();
extern void _ZN7S3439C33v11Ev();
extern void _ZN7S3439C33v12Ev();
extern void _ZN7S3439C33v13Ev();
extern void _ZN7S3439C23v14Ev();
extern void _ZN7S3439C23v15Ev();
extern void _ZN7S3439C23v16Ev();
extern void _ZN7S3439C23v17Ev();
extern void _ZN7S3439C23v18Ev();
extern void _ZN7S3439C23v19Ev();
extern void _ZN7S3439C12v1Ev();
extern void _ZN7S3439C12v2Ev();
extern void _ZN7S3439C12v3Ev();
extern void _ZN7S3439C12v4Ev();
extern void _ZN7S3439C12v5Ev();
extern void _ZN7S3439C12v6Ev();
extern void _ZN7S3439C12v7Ev();
extern void _ZN7S3439C12v8Ev();
static  VTBL_ENTRY vtc_S3439C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3439C1[0]),
  (VTBL_ENTRY)&_ZN7S3439C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3439C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3439C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3439C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3439C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3439C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3439C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3439C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3439C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3439C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3439C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S3439C1[];
extern  VTBL_ENTRY _ZTV7S3439C1[];
Class_Descriptor cd_S3439C1 = {  "S3439C1", // class name
  bases_S3439C1, 3,
  &(vtc_S3439C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S3439C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3439C1),21, //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  S20387C3_nt  {
  virtual void  v17(); // _ZN11S20387C3_nt3v17Ev
  virtual void  v18(); // _ZN11S20387C3_nt3v18Ev
  ~S20387C3_nt(); // tgen
  S20387C3_nt(); // tgen
};
//SIG(1 S20387C3_nt) C1{ v1 v2}


void  S20387C3_nt ::v17(){vfunc_called(this, "_ZN11S20387C3_nt3v17Ev");}
void  S20387C3_nt ::v18(){vfunc_called(this, "_ZN11S20387C3_nt3v18Ev");}
S20387C3_nt ::~S20387C3_nt(){ note_dtor("S20387C3_nt", this);} // tgen
S20387C3_nt ::S20387C3_nt(){ note_ctor("S20387C3_nt", this);} // tgen

//skip512 S20387C3_nt

#else // __cplusplus

extern void _ZN11S20387C3_ntC1Ev();
extern void _ZN11S20387C3_ntD1Ev();
Name_Map name_map_S20387C3_nt[] = {
  NSPAIR(_ZN11S20387C3_ntC1Ev),
  NSPAIR(_ZN11S20387C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20387C3_nt[];
extern void _ZN11S20387C3_nt3v17Ev();
extern void _ZN11S20387C3_nt3v18Ev();
static  VTBL_ENTRY vtc_S20387C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20387C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20387C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S20387C3_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI11S20387C3_nt[];
VTBL_ENTRY *P__ZTI11S20387C3_nt = _ZTI11S20387C3_nt; 
extern  VTBL_ENTRY _ZTV11S20387C3_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20387C2  {
  ::S20387C3_nt s20387c2f0[3];
  long double s20387c2f1;
  virtual  ~S20387C2(); // _ZN8S20387C2D1Ev
  virtual void  v8(); // _ZN8S20387C22v8Ev
  virtual void  v9(); // _ZN8S20387C22v9Ev
  virtual void  v10(); // _ZN8S20387C23v10Ev
  virtual void  v11(); // _ZN8S20387C23v11Ev
  virtual void  v12(); // _ZN8S20387C23v12Ev
  virtual void  v13(); // _ZN8S20387C23v13Ev
  virtual void  v14(); // _ZN8S20387C23v14Ev
  S20387C2(); // tgen
};
//SIG(-1 S20387C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ v8 v9}[3] FD}


 S20387C2 ::~S20387C2(){ note_dtor("S20387C2", this);}
void  S20387C2 ::v8(){vfunc_called(this, "_ZN8S20387C22v8Ev");}
void  S20387C2 ::v9(){vfunc_called(this, "_ZN8S20387C22v9Ev");}
void  S20387C2 ::v10(){vfunc_called(this, "_ZN8S20387C23v10Ev");}
void  S20387C2 ::v11(){vfunc_called(this, "_ZN8S20387C23v11Ev");}
void  S20387C2 ::v12(){vfunc_called(this, "_ZN8S20387C23v12Ev");}
void  S20387C2 ::v13(){vfunc_called(this, "_ZN8S20387C23v13Ev");}
void  S20387C2 ::v14(){vfunc_called(this, "_ZN8S20387C23v14Ev");}
S20387C2 ::S20387C2(){ note_ctor("S20387C2", this);} // tgen

static void Test_S20387C2()
{
  extern Class_Descriptor cd_S20387C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S20387C2, buf);
    S20387C2 *dp, &lv = *(dp=new (buf) S20387C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S20387C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20387C2)");
    check_field_offset(lv, s20387c2f0, ABISELECT(8,4), "S20387C2.s20387c2f0");
    check_field_offset(lv, s20387c2f1, ABISELECT(32,16), "S20387C2.s20387c2f1");
    test_class_info(&lv, &cd_S20387C2);
    dp->~S20387C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20387C2(Test_S20387C2, "S20387C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S20387C2C1Ev();
extern void _ZN8S20387C2D1Ev();
Name_Map name_map_S20387C2[] = {
  NSPAIR(_ZN8S20387C2C1Ev),
  NSPAIR(_ZN8S20387C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20387C2[];
extern void _ZN8S20387C2D1Ev();
extern void _ZN8S20387C2D0Ev();
extern void _ZN8S20387C22v8Ev();
extern void _ZN8S20387C22v9Ev();
extern void _ZN8S20387C23v10Ev();
extern void _ZN8S20387C23v11Ev();
extern void _ZN8S20387C23v12Ev();
extern void _ZN8S20387C23v13Ev();
extern void _ZN8S20387C23v14Ev();
static  VTBL_ENTRY vtc_S20387C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20387C2[0]),
  (VTBL_ENTRY)&_ZN8S20387C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20387C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20387C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20387C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20387C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20387C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20387C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20387C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20387C23v14Ev,
};
extern VTBL_ENTRY _ZTI8S20387C2[];
extern  VTBL_ENTRY _ZTV8S20387C2[];
Class_Descriptor cd_S20387C2 = {  "S20387C2", // class name
  0,0,//no base classes
  &(vtc_S20387C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S20387C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20387C2),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  S20387C5  {
  virtual void  v15(); // _ZN8S20387C53v15Ev
  ~S20387C5(); // tgen
  S20387C5(); // tgen
};
//SIG(-1 S20387C5) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20387C5C1Ev();
extern void _ZN8S20387C5D1Ev();
Name_Map name_map_S20387C5[] = {
  NSPAIR(_ZN8S20387C5C1Ev),
  NSPAIR(_ZN8S20387C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20387C5[];
extern void _ZN8S20387C53v15Ev();
static  VTBL_ENTRY vtc_S20387C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20387C5[0]),
  (VTBL_ENTRY)&_ZN8S20387C53v15Ev,
};
extern VTBL_ENTRY _ZTI8S20387C5[];
extern  VTBL_ENTRY _ZTV8S20387C5[];
Class_Descriptor cd_S20387C5 = {  "S20387C5", // class name
  0,0,//no base classes
  &(vtc_S20387C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20387C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20387C5),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  S20387C4  : S20387C5 {
  virtual void  v16(); // _ZN8S20387C43v16Ev
  ~S20387C4(); // tgen
  S20387C4(); // tgen
};
//SIG(-1 S20387C4) C1{ BC2{ v2} v1}


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

static void Test_S20387C4()
{
  extern Class_Descriptor cd_S20387C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20387C4, buf);
    S20387C4 *dp, &lv = *(dp=new (buf) S20387C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20387C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20387C4)");
    check_base_class_offset(lv, (S20387C5*), 0, "S20387C4");
    test_class_info(&lv, &cd_S20387C4);
    dp->~S20387C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20387C4(Test_S20387C4, "S20387C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20387C4C1Ev();
extern void _ZN8S20387C4D1Ev();
Name_Map name_map_S20387C4[] = {
  NSPAIR(_ZN8S20387C4C1Ev),
  NSPAIR(_ZN8S20387C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20387C5;
extern VTBL_ENTRY _ZTI8S20387C5[];
extern  VTBL_ENTRY _ZTV8S20387C5[];
static Base_Class bases_S20387C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20387C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20387C4[];
extern void _ZN8S20387C53v15Ev();
extern void _ZN8S20387C43v16Ev();
static  VTBL_ENTRY vtc_S20387C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20387C4[0]),
  (VTBL_ENTRY)&_ZN8S20387C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20387C43v16Ev,
};
extern VTBL_ENTRY _ZTI8S20387C4[];
extern  VTBL_ENTRY _ZTV8S20387C4[];
Class_Descriptor cd_S20387C4 = {  "S20387C4", // class name
  bases_S20387C4, 1,
  &(vtc_S20387C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20387C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20387C4),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20387C1  : virtual S20387C2 , S20387C4 {
  __tsi64 s20387c1f0;
  int s20387c1f1;
  virtual void  v1(); // _ZN8S20387C12v1Ev
  virtual void  v2(); // _ZN8S20387C12v2Ev
  virtual void  v3(); // _ZN8S20387C12v3Ev
  virtual void  v4(); // _ZN8S20387C12v4Ev
  virtual void  v5(); // _ZN8S20387C12v5Ev
  virtual void  v6(); // _ZN8S20387C12v6Ev
  virtual void  v7(); // _ZN8S20387C12v7Ev
  ~S20387C1(); // tgen
  S20387C1(); // tgen
};
//SIG(1 S20387C1) C1{ VBC2{ vd v8 v9 v10 v11 v12 v13 v14 FC3{ v17 v18}[3] FD} BC4{ BC5{ v15} v16} v1 v2 v3 v4 v5 v6 v7 FL Fi}


void  S20387C1 ::v1(){vfunc_called(this, "_ZN8S20387C12v1Ev");}
void  S20387C1 ::v2(){vfunc_called(this, "_ZN8S20387C12v2Ev");}
void  S20387C1 ::v3(){vfunc_called(this, "_ZN8S20387C12v3Ev");}
void  S20387C1 ::v4(){vfunc_called(this, "_ZN8S20387C12v4Ev");}
void  S20387C1 ::v5(){vfunc_called(this, "_ZN8S20387C12v5Ev");}
void  S20387C1 ::v6(){vfunc_called(this, "_ZN8S20387C12v6Ev");}
void  S20387C1 ::v7(){vfunc_called(this, "_ZN8S20387C12v7Ev");}
S20387C1 ::~S20387C1(){ note_dtor("S20387C1", this);} // tgen
S20387C1 ::S20387C1(){ note_ctor("S20387C1", this);} // tgen

static void Test_S20387C1()
{
  extern Class_Descriptor cd_S20387C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S20387C1, buf);
    S20387C1 *dp, &lv = *(dp=new (buf) S20387C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S20387C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20387C1)");
    check_base_class_offset(lv, (S20387C2*), ABISELECT(32,16), "S20387C1");
    check_base_class_offset(lv, (S20387C5*)(S20387C4*), 0, "S20387C1");
    check_base_class_offset(lv, (S20387C4*), 0, "S20387C1");
    check_field_offset(lv, s20387c1f0, ABISELECT(8,4), "S20387C1.s20387c1f0");
    check_field_offset(lv, s20387c1f1, ABISELECT(16,12), "S20387C1.s20387c1f1");
    test_class_info(&lv, &cd_S20387C1);
    dp->~S20387C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20387C1(Test_S20387C1, "S20387C1", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S20387C1C1Ev();
extern void _ZN8S20387C1D1Ev();
Name_Map name_map_S20387C1[] = {
  NSPAIR(_ZN8S20387C1C1Ev),
  NSPAIR(_ZN8S20387C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20387C2;
extern VTBL_ENTRY _ZTI8S20387C2[];
extern  VTBL_ENTRY _ZTV8S20387C2[];
extern Class_Descriptor cd_S20387C5;
extern VTBL_ENTRY _ZTI8S20387C5[];
extern  VTBL_ENTRY _ZTV8S20387C5[];
extern Class_Descriptor cd_S20387C4;
extern VTBL_ENTRY _ZTI8S20387C4[];
extern  VTBL_ENTRY _ZTV8S20387C4[];
static Base_Class bases_S20387C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20387C2,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20387C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20387C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20387C1[];
extern void _ZN8S20387C53v15Ev();
extern void _ZN8S20387C43v16Ev();
extern void _ZN8S20387C12v1Ev();
extern void _ZN8S20387C12v2Ev();
extern void _ZN8S20387C12v3Ev();
extern void _ZN8S20387C12v4Ev();
extern void _ZN8S20387C12v5Ev();
extern void _ZN8S20387C12v6Ev();
extern void _ZN8S20387C12v7Ev();
extern void _ZN8S20387C1D1Ev();
extern void _ZN8S20387C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20387C1D1Ev,_ZTv0_n12_N8S20387C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20387C1D1Ev,_ZThn16_N8S20387C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20387C1D0Ev,_ZTv0_n12_N8S20387C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20387C1D0Ev,_ZThn16_N8S20387C1D0Ev)() __attribute__((weak));
extern void _ZN8S20387C22v8Ev();
extern void _ZN8S20387C22v9Ev();
extern void _ZN8S20387C23v10Ev();
extern void _ZN8S20387C23v11Ev();
extern void _ZN8S20387C23v12Ev();
extern void _ZN8S20387C23v13Ev();
extern void _ZN8S20387C23v14Ev();
static  VTBL_ENTRY vtc_S20387C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20387C1[0]),
  (VTBL_ENTRY)&_ZN8S20387C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20387C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20387C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20387C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20387C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20387C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20387C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20387C12v6Ev,
  (VTBL_ENTRY)&_ZN8S20387C12v7Ev,
  (VTBL_ENTRY)&_ZN8S20387C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20387C1D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20387C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20387C1D1Ev,_ZTv0_n12_N8S20387C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20387C1D0Ev,_ZTv0_n12_N8S20387C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20387C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20387C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20387C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20387C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20387C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20387C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20387C23v14Ev,
};
extern VTBL_ENTRY _ZTV8S20387C1[];
static  VTT_ENTRY vtt_S20387C1[] = {
  {&(_ZTV8S20387C1[3]),  3,33},
  {&(_ZTV8S20387C1[24]),  24,33},
};
extern VTBL_ENTRY _ZTI8S20387C1[];
extern  VTBL_ENTRY _ZTV8S20387C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20387C1[];
static VTBL_ENTRY alt_thunk_names203[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20387C1D0Ev,_ZTv0_n12_N8S20387C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20387C1D0Ev,_ZThn16_N8S20387C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20387C1D1Ev,_ZTv0_n12_N8S20387C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20387C1D1Ev,_ZThn16_N8S20387C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20387C1 = {  "S20387C1", // class name
  bases_S20387C1, 3,
  &(vtc_S20387C1[0]), // expected_vtbl_contents
  &(vtt_S20387C1[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S20387C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20387C1),33, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20387C1),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names203,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3707C2  : S3712C3_nt {
  virtual void  v2(); // _ZN7S3707C22v2Ev
  ~S3707C2(); // tgen
  S3707C2(); // tgen
};
//SIG(-1 S3707C2) C1{ BC2{ vd m Fi} v1}


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

static void Test_S3707C2()
{
  extern Class_Descriptor cd_S3707C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3707C2, buf);
    S3707C2 *dp, &lv = *(dp=new (buf) S3707C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3707C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3707C2)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S3707C2");
    test_class_info(&lv, &cd_S3707C2);
    dp->~S3707C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3707C2(Test_S3707C2, "S3707C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3707C2C1Ev();
extern void _ZN7S3707C2D1Ev();
Name_Map name_map_S3707C2[] = {
  NSPAIR(_ZN7S3707C2C1Ev),
  NSPAIR(_ZN7S3707C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S3707C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3707C2[];
extern void _ZN7S3707C2D1Ev();
extern void _ZN7S3707C2D0Ev();
extern void _ZN7S3707C22v2Ev();
static  VTBL_ENTRY vtc_S3707C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3707C2[0]),
  (VTBL_ENTRY)&_ZN7S3707C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3707C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3707C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S3707C2[];
extern  VTBL_ENTRY _ZTV7S3707C2[];
Class_Descriptor cd_S3707C2 = {  "S3707C2", // class name
  bases_S3707C2, 1,
  &(vtc_S3707C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3707C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3707C2),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  S3707C1  : S3707C2 {
  ::S3704C4_nt s3707c1f0;
  ::S10225C15_nt s3707c1f1;
  virtual  ~S3707C1(); // _ZN7S3707C1D1Ev
  virtual void  v1(); // _ZN7S3707C12v1Ev
  S3707C1(); // tgen
};
//SIG(1 S3707C1) C1{ BC2{ BC3{ vd m Fi} v2} vd v1 FC4{ BC5{ vd v6 v7 v8} vd v3 v4 v5 FL[4]} FC6{ BC7{ m Fp Fi FC8{ m} FC8}}}


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

static void Test_S3707C1()
{
  extern Class_Descriptor cd_S3707C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S3707C1, buf);
    S3707C1 *dp, &lv = *(dp=new (buf) S3707C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S3707C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3707C1)");
    check_base_class_offset(lv, (S3712C3_nt*)(S3707C2*), 0, "S3707C1");
    check_base_class_offset(lv, (S3707C2*), 0, "S3707C1");
    check_field_offset(lv, s3707c1f0, ABISELECT(16,8), "S3707C1.s3707c1f0");
    check_field_offset(lv, s3707c1f1, ABISELECT(56,44), "S3707C1.s3707c1f1");
    test_class_info(&lv, &cd_S3707C1);
    dp->~S3707C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3707C1(Test_S3707C1, "S3707C1", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S3707C1C1Ev();
extern void _ZN7S3707C1D1Ev();
Name_Map name_map_S3707C1[] = {
  NSPAIR(_ZN7S3707C1C1Ev),
  NSPAIR(_ZN7S3707C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
extern Class_Descriptor cd_S3707C2;
extern VTBL_ENTRY _ZTI7S3707C2[];
extern  VTBL_ENTRY _ZTV7S3707C2[];
static Base_Class bases_S3707C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3707C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3707C1[];
extern void _ZN7S3707C1D1Ev();
extern void _ZN7S3707C1D0Ev();
extern void _ZN7S3707C22v2Ev();
extern void _ZN7S3707C12v1Ev();
static  VTBL_ENTRY vtc_S3707C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3707C1[0]),
  (VTBL_ENTRY)&_ZN7S3707C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3707C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3707C22v2Ev,
  (VTBL_ENTRY)&_ZN7S3707C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3707C1[];
extern  VTBL_ENTRY _ZTV7S3707C1[];
Class_Descriptor cd_S3707C1 = {  "S3707C1", // class name
  bases_S3707C1, 2,
  &(vtc_S3707C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S3707C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3707C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8357C4  : S1890C4_nt {
  int s8357c4f0;
  void *s8357c4f1;
  virtual  ~S8357C4(); // _ZN7S8357C4D1Ev
  S8357C4(); // tgen
};
//SIG(-1 S8357C4) C1{ BC2{ vd m} vd Fi Fp}


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

static void Test_S8357C4()
{
  extern Class_Descriptor cd_S8357C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S8357C4, buf);
    S8357C4 *dp, &lv = *(dp=new (buf) S8357C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S8357C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8357C4)");
    check_base_class_offset(lv, (S1890C4_nt*), 0, "S8357C4");
    check_field_offset(lv, s8357c4f0, ABISELECT(8,4), "S8357C4.s8357c4f0");
    check_field_offset(lv, s8357c4f1, ABISELECT(16,8), "S8357C4.s8357c4f1");
    test_class_info(&lv, &cd_S8357C4);
    dp->~S8357C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8357C4(Test_S8357C4, "S8357C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S8357C4C1Ev();
extern void _ZN7S8357C4D1Ev();
Name_Map name_map_S8357C4[] = {
  NSPAIR(_ZN7S8357C4C1Ev),
  NSPAIR(_ZN7S8357C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1890C4_nt;
extern VTBL_ENTRY _ZTI10S1890C4_nt[];
extern  VTBL_ENTRY _ZTV10S1890C4_nt[];
static Base_Class bases_S8357C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1890C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8357C4[];
extern void _ZN7S8357C4D1Ev();
extern void _ZN7S8357C4D0Ev();
static  VTBL_ENTRY vtc_S8357C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8357C4[0]),
  (VTBL_ENTRY)&_ZN7S8357C4D1Ev,
  (VTBL_ENTRY)&_ZN7S8357C4D0Ev,
};
extern VTBL_ENTRY _ZTI7S8357C4[];
extern  VTBL_ENTRY _ZTV7S8357C4[];
Class_Descriptor cd_S8357C4 = {  "S8357C4", // class name
  bases_S8357C4, 1,
  &(vtc_S8357C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S8357C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8357C4),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8357C3  : S8357C4 {
  ~S8357C3(); // tgen
  S8357C3(); // tgen
};
//SIG(-1 S8357C3) C1{ BC2{ BC3{ vd m} vd Fi Fp}}


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

static void Test_S8357C3()
{
  extern Class_Descriptor cd_S8357C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S8357C3, buf);
    S8357C3 *dp, &lv = *(dp=new (buf) S8357C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S8357C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8357C3)");
    check_base_class_offset(lv, (S1890C4_nt*)(S8357C4*), 0, "S8357C3");
    check_base_class_offset(lv, (S8357C4*), 0, "S8357C3");
    test_class_info(&lv, &cd_S8357C3);
    dp->~S8357C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8357C3(Test_S8357C3, "S8357C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S8357C3C1Ev();
extern void _ZN7S8357C3D1Ev();
Name_Map name_map_S8357C3[] = {
  NSPAIR(_ZN7S8357C3C1Ev),
  NSPAIR(_ZN7S8357C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1890C4_nt;
extern VTBL_ENTRY _ZTI10S1890C4_nt[];
extern  VTBL_ENTRY _ZTV10S1890C4_nt[];
extern Class_Descriptor cd_S8357C4;
extern VTBL_ENTRY _ZTI7S8357C4[];
extern  VTBL_ENTRY _ZTV7S8357C4[];
static Base_Class bases_S8357C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1890C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S8357C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S8357C3[];
extern void _ZN7S8357C3D1Ev();
extern void _ZN7S8357C3D0Ev();
static  VTBL_ENTRY vtc_S8357C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8357C3[0]),
  (VTBL_ENTRY)&_ZN7S8357C3D1Ev,
  (VTBL_ENTRY)&_ZN7S8357C3D0Ev,
};
extern VTBL_ENTRY _ZTI7S8357C3[];
extern  VTBL_ENTRY _ZTV7S8357C3[];
Class_Descriptor cd_S8357C3 = {  "S8357C3", // class name
  bases_S8357C3, 2,
  &(vtc_S8357C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S8357C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8357C3),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8357C1  : S1890C4_nt {
  void *s8357c1f0;
  int s8357c1f1;
  void *s8357c1f2;
  int s8357c1f3;
  void *s8357c1f4;
  int s8357c1f5;
  long s8357c1f6;
  void *s8357c1f7;
  long s8357c1f8;
  void *s8357c1f9[2];
  int s8357c1f10[2];
  void *s8357c1f11;
  int s8357c1f12;
  void *s8357c1f13;
  ::S8357C3 s8357c1f14;
  ::S8357C3 s8357c1f15;
  virtual  ~S8357C1(); // _ZN7S8357C1D1Ev
  S8357C1(); // tgen
};
//SIG(1 S8357C1) C1{ BC2{ vd m} vd Fp Fi Fp Fi Fp Fi Fl Fp Fl Fp[2] Fi[2] Fp Fi Fp FC3{ BC4{ BC2 vd Fi Fp}} FC3}


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

static void Test_S8357C1()
{
  extern Class_Descriptor cd_S8357C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,24)];
    init_test(&cd_S8357C1, buf);
    S8357C1 *dp, &lv = *(dp=new (buf) S8357C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S8357C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8357C1)");
    check_base_class_offset(lv, (S1890C4_nt*), 0, "S8357C1");
    check_field_offset(lv, s8357c1f0, ABISELECT(8,4), "S8357C1.s8357c1f0");
    check_field_offset(lv, s8357c1f1, ABISELECT(16,8), "S8357C1.s8357c1f1");
    check_field_offset(lv, s8357c1f2, ABISELECT(24,12), "S8357C1.s8357c1f2");
    check_field_offset(lv, s8357c1f3, ABISELECT(32,16), "S8357C1.s8357c1f3");
    check_field_offset(lv, s8357c1f4, ABISELECT(40,20), "S8357C1.s8357c1f4");
    check_field_offset(lv, s8357c1f5, ABISELECT(48,24), "S8357C1.s8357c1f5");
    check_field_offset(lv, s8357c1f6, ABISELECT(56,28), "S8357C1.s8357c1f6");
    check_field_offset(lv, s8357c1f7, ABISELECT(64,32), "S8357C1.s8357c1f7");
    check_field_offset(lv, s8357c1f8, ABISELECT(72,36), "S8357C1.s8357c1f8");
    check_field_offset(lv, s8357c1f9, ABISELECT(80,40), "S8357C1.s8357c1f9");
    check_field_offset(lv, s8357c1f10, ABISELECT(96,48), "S8357C1.s8357c1f10");
    check_field_offset(lv, s8357c1f11, ABISELECT(104,56), "S8357C1.s8357c1f11");
    check_field_offset(lv, s8357c1f12, ABISELECT(112,60), "S8357C1.s8357c1f12");
    check_field_offset(lv, s8357c1f13, ABISELECT(120,64), "S8357C1.s8357c1f13");
    check_field_offset(lv, s8357c1f14, ABISELECT(128,68), "S8357C1.s8357c1f14");
    check_field_offset(lv, s8357c1f15, ABISELECT(152,80), "S8357C1.s8357c1f15");
    test_class_info(&lv, &cd_S8357C1);
    dp->~S8357C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8357C1(Test_S8357C1, "S8357C1", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN7S8357C1C1Ev();
extern void _ZN7S8357C1D1Ev();
Name_Map name_map_S8357C1[] = {
  NSPAIR(_ZN7S8357C1C1Ev),
  NSPAIR(_ZN7S8357C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1890C4_nt;
extern VTBL_ENTRY _ZTI10S1890C4_nt[];
extern  VTBL_ENTRY _ZTV10S1890C4_nt[];
static Base_Class bases_S8357C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1890C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8357C1[];
extern void _ZN7S8357C1D1Ev();
extern void _ZN7S8357C1D0Ev();
static  VTBL_ENTRY vtc_S8357C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8357C1[0]),
  (VTBL_ENTRY)&_ZN7S8357C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8357C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8357C1[];
extern  VTBL_ENTRY _ZTV7S8357C1[];
Class_Descriptor cd_S8357C1 = {  "S8357C1", // class name
  bases_S8357C1, 1,
  &(vtc_S8357C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI7S8357C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8357C1),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  S7037C2_nt  {
  virtual  ~S7037C2_nt(); // _ZN10S7037C2_ntD1Ev
  virtual void  v6(); // _ZN10S7037C2_nt2v6Ev
  virtual void  v7(); // _ZN10S7037C2_nt2v7Ev
  virtual void  v8(); // _ZN10S7037C2_nt2v8Ev
  virtual void  v9(); // _ZN10S7037C2_nt2v9Ev
  virtual void  v10(); // _ZN10S7037C2_nt3v10Ev
  S7037C2_nt(); // tgen
};
//SIG(-1 S7037C2_nt) C1{ vd v1 v2 v3 v4 v5}


 S7037C2_nt ::~S7037C2_nt(){ note_dtor("S7037C2_nt", this);}
void  S7037C2_nt ::v6(){vfunc_called(this, "_ZN10S7037C2_nt2v6Ev");}
void  S7037C2_nt ::v7(){vfunc_called(this, "_ZN10S7037C2_nt2v7Ev");}
void  S7037C2_nt ::v8(){vfunc_called(this, "_ZN10S7037C2_nt2v8Ev");}
void  S7037C2_nt ::v9(){vfunc_called(this, "_ZN10S7037C2_nt2v9Ev");}
void  S7037C2_nt ::v10(){vfunc_called(this, "_ZN10S7037C2_nt3v10Ev");}
S7037C2_nt ::S7037C2_nt(){ note_ctor("S7037C2_nt", this);} // tgen

//skip512 S7037C2_nt

#else // __cplusplus

extern void _ZN10S7037C2_ntC1Ev();
extern void _ZN10S7037C2_ntD1Ev();
Name_Map name_map_S7037C2_nt[] = {
  NSPAIR(_ZN10S7037C2_ntC1Ev),
  NSPAIR(_ZN10S7037C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7037C2_nt[];
extern void _ZN10S7037C2_ntD1Ev();
extern void _ZN10S7037C2_ntD0Ev();
extern void _ZN10S7037C2_nt2v6Ev();
extern void _ZN10S7037C2_nt2v7Ev();
extern void _ZN10S7037C2_nt2v8Ev();
extern void _ZN10S7037C2_nt2v9Ev();
extern void _ZN10S7037C2_nt3v10Ev();
static  VTBL_ENTRY vtc_S7037C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7037C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7037C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7037C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7037C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7037C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7037C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7037C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7037C2_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S7037C2_nt[];
VTBL_ENTRY *P__ZTI10S7037C2_nt = _ZTI10S7037C2_nt; 
extern  VTBL_ENTRY _ZTV10S7037C2_nt[];
Class_Descriptor cd_S7037C2_nt = {  "S7037C2_nt", // class name
  0,0,//no base classes
  &(vtc_S7037C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7037C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7037C2_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  S7037C3_nt  {
  ::S10224C5_nt s7037c3f0;
  void  mf7037c3(); // _ZN10S7037C3_nt8mf7037c3Ev
};
//SIG(-1 S7037C3_nt) C1{ m FC2{ Fl[4]}}


void  S7037C3_nt ::mf7037c3(){}

//skip512 S7037C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7037C1  : S7037C2_nt {
  void *s7037c1f0;
  int s7037c1f1[2];
  char s7037c1f2[35];
  int s7037c1f3[2];
  void *s7037c1f4;
  ::S7037C3_nt s7037c1f5;
  int s7037c1f6[3];
  virtual  ~S7037C1(); // _ZN7S7037C1D1Ev
  virtual void  v1(); // _ZN7S7037C12v1Ev
  virtual void  v2(); // _ZN7S7037C12v2Ev
  virtual void  v3(); // _ZN7S7037C12v3Ev
  virtual void  v4(); // _ZN7S7037C12v4Ev
  virtual void  v5(); // _ZN7S7037C12v5Ev
  S7037C1(); // tgen
};
//SIG(1 S7037C1) C1{ BC2{ vd v6 v7 v8 v9 v10} vd v1 v2 v3 v4 v5 Fp Fi[2] Fc[35] Fi[2] Fp FC3{ m FC4{ Fl[4]}} Fi[3]}


 S7037C1 ::~S7037C1(){ note_dtor("S7037C1", this);}
void  S7037C1 ::v1(){vfunc_called(this, "_ZN7S7037C12v1Ev");}
void  S7037C1 ::v2(){vfunc_called(this, "_ZN7S7037C12v2Ev");}
void  S7037C1 ::v3(){vfunc_called(this, "_ZN7S7037C12v3Ev");}
void  S7037C1 ::v4(){vfunc_called(this, "_ZN7S7037C12v4Ev");}
void  S7037C1 ::v5(){vfunc_called(this, "_ZN7S7037C12v5Ev");}
S7037C1 ::S7037C1(){ note_ctor("S7037C1", this);} // tgen

static void Test_S7037C1()
{
  extern Class_Descriptor cd_S7037C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S7037C1, buf);
    S7037C1 *dp, &lv = *(dp=new (buf) S7037C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S7037C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7037C1)");
    check_base_class_offset(lv, (S7037C2_nt*), 0, "S7037C1");
    check_field_offset(lv, s7037c1f0, ABISELECT(8,4), "S7037C1.s7037c1f0");
    check_field_offset(lv, s7037c1f1, ABISELECT(16,8), "S7037C1.s7037c1f1");
    check_field_offset(lv, s7037c1f2, ABISELECT(24,16), "S7037C1.s7037c1f2");
    check_field_offset(lv, s7037c1f3, ABISELECT(60,52), "S7037C1.s7037c1f3");
    check_field_offset(lv, s7037c1f4, ABISELECT(72,60), "S7037C1.s7037c1f4");
    check_field_offset(lv, s7037c1f5, ABISELECT(80,64), "S7037C1.s7037c1f5");
    check_field_offset(lv, s7037c1f6, ABISELECT(112,80), "S7037C1.s7037c1f6");
    test_class_info(&lv, &cd_S7037C1);
    dp->~S7037C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7037C1(Test_S7037C1, "S7037C1", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN7S7037C1C1Ev();
extern void _ZN7S7037C1D1Ev();
Name_Map name_map_S7037C1[] = {
  NSPAIR(_ZN7S7037C1C1Ev),
  NSPAIR(_ZN7S7037C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7037C2_nt;
extern VTBL_ENTRY _ZTI10S7037C2_nt[];
extern  VTBL_ENTRY _ZTV10S7037C2_nt[];
static Base_Class bases_S7037C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7037C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7037C1[];
extern void _ZN7S7037C1D1Ev();
extern void _ZN7S7037C1D0Ev();
extern void _ZN10S7037C2_nt2v6Ev();
extern void _ZN10S7037C2_nt2v7Ev();
extern void _ZN10S7037C2_nt2v8Ev();
extern void _ZN10S7037C2_nt2v9Ev();
extern void _ZN10S7037C2_nt3v10Ev();
extern void _ZN7S7037C12v1Ev();
extern void _ZN7S7037C12v2Ev();
extern void _ZN7S7037C12v3Ev();
extern void _ZN7S7037C12v4Ev();
extern void _ZN7S7037C12v5Ev();
static  VTBL_ENTRY vtc_S7037C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7037C1[0]),
  (VTBL_ENTRY)&_ZN7S7037C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7037C1D0Ev,
  (VTBL_ENTRY)&_ZN10S7037C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7037C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7037C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7037C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7037C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S7037C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7037C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7037C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7037C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7037C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S7037C1[];
extern  VTBL_ENTRY _ZTV7S7037C1[];
Class_Descriptor cd_S7037C1 = {  "S7037C1", // class name
  bases_S7037C1, 1,
  &(vtc_S7037C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI7S7037C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7037C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11917C2_nt  {
  void *s11917c2f0;
};
//SIG(-1 S11917C2_nt) C1{ Fp}



//skip512 S11917C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11917C3_nt  {
  void *s11917c3f0[3];
};
//SIG(-1 S11917C3_nt) C1{ Fp[3]}



//skip512 S11917C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11917C4  {
  void *s11917c4f0[18];
};
//SIG(-1 S11917C4) C1{ Fp[18]}



static void Test_S11917C4()
{
  {
    init_simple_test("S11917C4");
    S11917C4 lv;
    check2(sizeof(lv), ABISELECT(144,72), "sizeof(S11917C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11917C4)");
    check_field_offset(lv, s11917c4f0, 0, "S11917C4.s11917c4f0");
  }
}
static Arrange_To_Call_Me vS11917C4(Test_S11917C4, "S11917C4", ABISELECT(144,72));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11917C5  {
  int s11917c5f0[2];
  short s11917c5f1[3];
};
//SIG(-1 S11917C5) C1{ Fi[2] Fs[3]}



static void Test_S11917C5()
{
  {
    init_simple_test("S11917C5");
    S11917C5 lv;
    check2(sizeof(lv), 16, "sizeof(S11917C5)");
    check2(__alignof__(lv), 4, "__alignof__(S11917C5)");
    check_field_offset(lv, s11917c5f0, 0, "S11917C5.s11917c5f0");
    check_field_offset(lv, s11917c5f1, 8, "S11917C5.s11917c5f1");
  }
}
static Arrange_To_Call_Me vS11917C5(Test_S11917C5, "S11917C5", 16);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11917C1  {
  ::S11917C2_nt s11917c1f0;
  char s11917c1f1[39];
  int s11917c1f2;
  void *s11917c1f3;
  int s11917c1f4;
  ::S11917C3_nt s11917c1f5;
  ::S11917C4 s11917c1f6;
  ::S11917C5 s11917c1f7;
  ::S11917C5 s11917c1f8;
  int s11917c1f9[2];
  short s11917c1f10;
  int s11917c1f11;
  short s11917c1f12;
  int s11917c1f13;
  void *s11917c1f14;
  int s11917c1f15;
};
//SIG(1 S11917C1) C1{ FC2{ Fp} Fc[39] Fi Fp Fi FC3{ Fp[3]} FC4{ Fp[18]} FC5{ Fi[2] Fs[3]} FC5 Fi[2] Fs Fi Fs Fi Fp Fi}



static void Test_S11917C1()
{
  {
    init_simple_test("S11917C1");
    S11917C1 lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S11917C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11917C1)");
    check_field_offset(lv, s11917c1f0, 0, "S11917C1.s11917c1f0");
    check_field_offset(lv, s11917c1f1, ABISELECT(8,4), "S11917C1.s11917c1f1");
    check_field_offset(lv, s11917c1f2, ABISELECT(48,44), "S11917C1.s11917c1f2");
    check_field_offset(lv, s11917c1f3, ABISELECT(56,48), "S11917C1.s11917c1f3");
    check_field_offset(lv, s11917c1f4, ABISELECT(64,52), "S11917C1.s11917c1f4");
    check_field_offset(lv, s11917c1f5, ABISELECT(72,56), "S11917C1.s11917c1f5");
    check_field_offset(lv, s11917c1f6, ABISELECT(96,68), "S11917C1.s11917c1f6");
    check_field_offset(lv, s11917c1f7, ABISELECT(240,140), "S11917C1.s11917c1f7");
    check_field_offset(lv, s11917c1f8, ABISELECT(256,156), "S11917C1.s11917c1f8");
    check_field_offset(lv, s11917c1f9, ABISELECT(272,172), "S11917C1.s11917c1f9");
    check_field_offset(lv, s11917c1f10, ABISELECT(280,180), "S11917C1.s11917c1f10");
    check_field_offset(lv, s11917c1f11, ABISELECT(284,184), "S11917C1.s11917c1f11");
    check_field_offset(lv, s11917c1f12, ABISELECT(288,188), "S11917C1.s11917c1f12");
    check_field_offset(lv, s11917c1f13, ABISELECT(292,192), "S11917C1.s11917c1f13");
    check_field_offset(lv, s11917c1f14, ABISELECT(296,196), "S11917C1.s11917c1f14");
    check_field_offset(lv, s11917c1f15, ABISELECT(304,200), "S11917C1.s11917c1f15");
  }
}
static Arrange_To_Call_Me vS11917C1(Test_S11917C1, "S11917C1", ABISELECT(312,204));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5123C3  {
  void *s5123c3f0[8];
  virtual  ~S5123C3(); // _ZN7S5123C3D1Ev
  virtual void  v4(); // _ZN7S5123C32v4Ev
  virtual void  v5(); // _ZN7S5123C32v5Ev
  virtual void  v6(); // _ZN7S5123C32v6Ev
  S5123C3(); // tgen
};
//SIG(-1 S5123C3) C1{ vd v1 v2 v3 Fp[8]}


 S5123C3 ::~S5123C3(){ note_dtor("S5123C3", this);}
void  S5123C3 ::v4(){vfunc_called(this, "_ZN7S5123C32v4Ev");}
void  S5123C3 ::v5(){vfunc_called(this, "_ZN7S5123C32v5Ev");}
void  S5123C3 ::v6(){vfunc_called(this, "_ZN7S5123C32v6Ev");}
S5123C3 ::S5123C3(){ note_ctor("S5123C3", this);} // tgen

static void Test_S5123C3()
{
  extern Class_Descriptor cd_S5123C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S5123C3, buf);
    S5123C3 *dp, &lv = *(dp=new (buf) S5123C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S5123C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5123C3)");
    check_field_offset(lv, s5123c3f0, ABISELECT(8,4), "S5123C3.s5123c3f0");
    test_class_info(&lv, &cd_S5123C3);
    dp->~S5123C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5123C3(Test_S5123C3, "S5123C3", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S5123C3C1Ev();
extern void _ZN7S5123C3D1Ev();
Name_Map name_map_S5123C3[] = {
  NSPAIR(_ZN7S5123C3C1Ev),
  NSPAIR(_ZN7S5123C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5123C3[];
extern void _ZN7S5123C3D1Ev();
extern void _ZN7S5123C3D0Ev();
extern void _ZN7S5123C32v4Ev();
extern void _ZN7S5123C32v5Ev();
extern void _ZN7S5123C32v6Ev();
static  VTBL_ENTRY vtc_S5123C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5123C3[0]),
  (VTBL_ENTRY)&_ZN7S5123C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5123C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5123C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5123C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5123C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S5123C3[];
extern  VTBL_ENTRY _ZTV7S5123C3[];
Class_Descriptor cd_S5123C3 = {  "S5123C3", // class name
  0,0,//no base classes
  &(vtc_S5123C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S5123C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5123C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5123C2  : S5123C3 {
  void *s5123c2f0[4];
  virtual  ~S5123C2(); // _ZN7S5123C2D1Ev
  S5123C2(); // tgen
};
//SIG(-1 S5123C2) C1{ BC2{ vd v1 v2 v3 Fp[8]} vd Fp[4]}


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

static void Test_S5123C2()
{
  extern Class_Descriptor cd_S5123C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[14];
    init_test(&cd_S5123C2, buf);
    S5123C2 *dp, &lv = *(dp=new (buf) S5123C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,52), "sizeof(S5123C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5123C2)");
    check_base_class_offset(lv, (S5123C3*), 0, "S5123C2");
    check_field_offset(lv, s5123c2f0, ABISELECT(72,36), "S5123C2.s5123c2f0");
    test_class_info(&lv, &cd_S5123C2);
    dp->~S5123C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5123C2(Test_S5123C2, "S5123C2", ABISELECT(104,52));

#else // __cplusplus

extern void _ZN7S5123C2C1Ev();
extern void _ZN7S5123C2D1Ev();
Name_Map name_map_S5123C2[] = {
  NSPAIR(_ZN7S5123C2C1Ev),
  NSPAIR(_ZN7S5123C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5123C3;
extern VTBL_ENTRY _ZTI7S5123C3[];
extern  VTBL_ENTRY _ZTV7S5123C3[];
static Base_Class bases_S5123C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5123C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5123C2[];
extern void _ZN7S5123C2D1Ev();
extern void _ZN7S5123C2D0Ev();
extern void _ZN7S5123C32v4Ev();
extern void _ZN7S5123C32v5Ev();
extern void _ZN7S5123C32v6Ev();
static  VTBL_ENTRY vtc_S5123C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5123C2[0]),
  (VTBL_ENTRY)&_ZN7S5123C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5123C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5123C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5123C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5123C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S5123C2[];
extern  VTBL_ENTRY _ZTV7S5123C2[];
Class_Descriptor cd_S5123C2 = {  "S5123C2", // class name
  bases_S5123C2, 1,
  &(vtc_S5123C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,52), // object size
  NSPAIRA(_ZTI7S5123C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5123C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5123C4_nt  {
  void *s5123c4f0;
  char s5123c4f1;
  void  mf5123c4(); // _ZN10S5123C4_nt8mf5123c4Ev
};
//SIG(-1 S5123C4_nt) C1{ m Fp Fc}


void  S5123C4_nt ::mf5123c4(){}

//skip512 S5123C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5123C5_nt  {
  char s5123c5f0[3];
  short s5123c5f1;
  char s5123c5f2;
  int s5123c5f3;
  long s5123c5f4;
  void  mf5123c5(); // _ZN10S5123C5_nt8mf5123c5Ev
};
//SIG(-1 S5123C5_nt) C1{ m Fc[3] Fs Fc Fi Fl}


void  S5123C5_nt ::mf5123c5(){}

//skip512 S5123C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5123C1  : S5123C2 {
  ::S5123C4_nt s5123c1f0;
  ::S5123C5_nt s5123c1f1;
  int s5123c1f2;
  virtual  ~S5123C1(); // _ZN7S5123C1D1Ev
  virtual void  v1(); // _ZN7S5123C12v1Ev
  virtual void  v2(); // _ZN7S5123C12v2Ev
  virtual void  v3(); // _ZN7S5123C12v3Ev
  S5123C1(); // tgen
};
//SIG(1 S5123C1) C1{ BC2{ BC3{ vd v4 v5 v6 Fp[8]} vd Fp[4]} vd v1 v2 v3 FC4{ m Fp Fc} FC5{ m Fc[3] Fs Fc Fi Fl} Fi}


 S5123C1 ::~S5123C1(){ note_dtor("S5123C1", this);}
void  S5123C1 ::v1(){vfunc_called(this, "_ZN7S5123C12v1Ev");}
void  S5123C1 ::v2(){vfunc_called(this, "_ZN7S5123C12v2Ev");}
void  S5123C1 ::v3(){vfunc_called(this, "_ZN7S5123C12v3Ev");}
S5123C1 ::S5123C1(){ note_ctor("S5123C1", this);} // tgen

static void Test_S5123C1()
{
  extern Class_Descriptor cd_S5123C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,21)];
    init_test(&cd_S5123C1, buf);
    S5123C1 *dp, &lv = *(dp=new (buf) S5123C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,80), "sizeof(S5123C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5123C1)");
    check_base_class_offset(lv, (S5123C3*)(S5123C2*), 0, "S5123C1");
    check_base_class_offset(lv, (S5123C2*), 0, "S5123C1");
    check_field_offset(lv, s5123c1f0, ABISELECT(104,52), "S5123C1.s5123c1f0");
    check_field_offset(lv, s5123c1f1, ABISELECT(120,60), "S5123C1.s5123c1f1");
    check_field_offset(lv, s5123c1f2, ABISELECT(144,76), "S5123C1.s5123c1f2");
    test_class_info(&lv, &cd_S5123C1);
    dp->~S5123C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5123C1(Test_S5123C1, "S5123C1", ABISELECT(152,80));

#else // __cplusplus

extern void _ZN7S5123C1C1Ev();
extern void _ZN7S5123C1D1Ev();
Name_Map name_map_S5123C1[] = {
  NSPAIR(_ZN7S5123C1C1Ev),
  NSPAIR(_ZN7S5123C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5123C3;
extern VTBL_ENTRY _ZTI7S5123C3[];
extern  VTBL_ENTRY _ZTV7S5123C3[];
extern Class_Descriptor cd_S5123C2;
extern VTBL_ENTRY _ZTI7S5123C2[];
extern  VTBL_ENTRY _ZTV7S5123C2[];
static Base_Class bases_S5123C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5123C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5123C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5123C1[];
extern void _ZN7S5123C1D1Ev();
extern void _ZN7S5123C1D0Ev();
extern void _ZN7S5123C32v4Ev();
extern void _ZN7S5123C32v5Ev();
extern void _ZN7S5123C32v6Ev();
extern void _ZN7S5123C12v1Ev();
extern void _ZN7S5123C12v2Ev();
extern void _ZN7S5123C12v3Ev();
static  VTBL_ENTRY vtc_S5123C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5123C1[0]),
  (VTBL_ENTRY)&_ZN7S5123C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5123C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5123C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5123C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5123C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5123C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5123C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5123C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S5123C1[];
extern  VTBL_ENTRY _ZTV7S5123C1[];
Class_Descriptor cd_S5123C1 = {  "S5123C1", // class name
  bases_S5123C1, 2,
  &(vtc_S5123C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,80), // object size
  NSPAIRA(_ZTI7S5123C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5123C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15467C1  {
  ::S10225C3 s15467c1f0;
  int s15467c1f1[2];
  ::S10225C15_nt s15467c1f2;
  ::S10225C15_nt s15467c1f3;
  void  mf15467c1(); // _ZN8S15467C19mf15467c1Ev
};
//SIG(1 S15467C1) C1{ m FC2{ BC3{ vd v4 v5 v6} vd v1 v2 v3 FC4{ FL[4]}} Fi[2] FC5{ BC6{ m Fp Fi FC7{ m} FC7}} FC5}


void  S15467C1 ::mf15467c1(){}

static void Test_S15467C1()
{
  {
    init_simple_test("S15467C1");
    S15467C1 lv;
    check2(sizeof(lv), ABISELECT(80,68), "sizeof(S15467C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15467C1)");
    check_field_offset(lv, s15467c1f0, 0, "S15467C1.s15467c1f0");
    check_field_offset(lv, s15467c1f1, ABISELECT(40,36), "S15467C1.s15467c1f1");
    check_field_offset(lv, s15467c1f2, ABISELECT(48,44), "S15467C1.s15467c1f2");
    check_field_offset(lv, s15467c1f3, ABISELECT(64,56), "S15467C1.s15467c1f3");
  }
}
static Arrange_To_Call_Me vS15467C1(Test_S15467C1, "S15467C1", ABISELECT(80,68));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19639C2_nt  {
  int s19639c2f0[10];
};
//SIG(-1 S19639C2_nt) C1{ Fi[10]}



//skip512 S19639C2_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19639C2_nt[];
VTBL_ENTRY *P__ZTI11S19639C2_nt = _ZTI11S19639C2_nt; 
Class_Descriptor cd_S19639C2_nt = {  "S19639C2_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI11S19639C2_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  S19639C3  {
  int s19639c3f0;
  virtual void  v3(); // _ZN8S19639C32v3Ev
  virtual void  v4(); // _ZN8S19639C32v4Ev
  ~S19639C3(); // tgen
  S19639C3(); // tgen
};
//SIG(-1 S19639C3) C1{ v1 v2 Fi}


void  S19639C3 ::v3(){vfunc_called(this, "_ZN8S19639C32v3Ev");}
void  S19639C3 ::v4(){vfunc_called(this, "_ZN8S19639C32v4Ev");}
S19639C3 ::~S19639C3(){ note_dtor("S19639C3", this);} // tgen
S19639C3 ::S19639C3(){ note_ctor("S19639C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19639C3C1Ev();
extern void _ZN8S19639C3D1Ev();
Name_Map name_map_S19639C3[] = {
  NSPAIR(_ZN8S19639C3C1Ev),
  NSPAIR(_ZN8S19639C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19639C3[];
extern void _ZN8S19639C32v3Ev();
extern void _ZN8S19639C32v4Ev();
static  VTBL_ENTRY vtc_S19639C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19639C3[0]),
  (VTBL_ENTRY)&_ZN8S19639C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19639C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S19639C3[];
extern  VTBL_ENTRY _ZTV8S19639C3[];
Class_Descriptor cd_S19639C3 = {  "S19639C3", // class name
  0,0,//no base classes
  &(vtc_S19639C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19639C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19639C3),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  S19639C4  : virtual S19639C3 {
  int s19639c4f0;
  virtual void  v5(); // _ZN8S19639C42v5Ev
  virtual void  v6(); // _ZN8S19639C42v6Ev
  ~S19639C4(); // tgen
  S19639C4(); // tgen
};
//SIG(-1 S19639C4) C1{ VBC2{ v3 v4 Fi} v1 v2 Fi}


void  S19639C4 ::v5(){vfunc_called(this, "_ZN8S19639C42v5Ev");}
void  S19639C4 ::v6(){vfunc_called(this, "_ZN8S19639C42v6Ev");}
S19639C4 ::~S19639C4(){ note_dtor("S19639C4", this);} // tgen
S19639C4 ::S19639C4(){ note_ctor("S19639C4", this);} // tgen

static void Test_S19639C4()
{
  extern Class_Descriptor cd_S19639C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19639C4, buf);
    S19639C4 *dp, &lv = *(dp=new (buf) S19639C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19639C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19639C4)");
    check_base_class_offset(lv, (S19639C3*), ABISELECT(16,8), "S19639C4");
    check_field_offset(lv, s19639c4f0, ABISELECT(8,4), "S19639C4.s19639c4f0");
    test_class_info(&lv, &cd_S19639C4);
    dp->~S19639C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19639C4(Test_S19639C4, "S19639C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19639C4C1Ev();
extern void _ZN8S19639C4D1Ev();
Name_Map name_map_S19639C4[] = {
  NSPAIR(_ZN8S19639C4C1Ev),
  NSPAIR(_ZN8S19639C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19639C3;
extern VTBL_ENTRY _ZTI8S19639C3[];
extern  VTBL_ENTRY _ZTV8S19639C3[];
static Base_Class bases_S19639C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19639C3,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19639C4[];
extern void _ZN8S19639C42v5Ev();
extern void _ZN8S19639C42v6Ev();
extern void _ZN8S19639C32v3Ev();
extern void _ZN8S19639C32v4Ev();
static  VTBL_ENTRY vtc_S19639C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19639C4[0]),
  (VTBL_ENTRY)&_ZN8S19639C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19639C42v6Ev,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19639C4[0]),
  (VTBL_ENTRY)&_ZN8S19639C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19639C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S19639C4[];
static  VTT_ENTRY vtt_S19639C4[] = {
  {&(_ZTV8S19639C4[3]),  3,11},
  {&(_ZTV8S19639C4[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19639C4[];
extern  VTBL_ENTRY _ZTV8S19639C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19639C4[];
Class_Descriptor cd_S19639C4 = {  "S19639C4", // class name
  bases_S19639C4, 1,
  &(vtc_S19639C4[0]), // expected_vtbl_contents
  &(vtt_S19639C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19639C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19639C4),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19639C4),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  S19639C5  : virtual S19639C3 {
  int s19639c5f0;
  virtual void  v7(); // _ZN8S19639C52v7Ev
  virtual void  v8(); // _ZN8S19639C52v8Ev
  ~S19639C5(); // tgen
  S19639C5(); // tgen
};
//SIG(-1 S19639C5) C1{ VBC2{ v3 v4 Fi} v1 v2 Fi}


void  S19639C5 ::v7(){vfunc_called(this, "_ZN8S19639C52v7Ev");}
void  S19639C5 ::v8(){vfunc_called(this, "_ZN8S19639C52v8Ev");}
S19639C5 ::~S19639C5(){ note_dtor("S19639C5", this);} // tgen
S19639C5 ::S19639C5(){ note_ctor("S19639C5", this);} // tgen

static void Test_S19639C5()
{
  extern Class_Descriptor cd_S19639C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19639C5, buf);
    S19639C5 *dp, &lv = *(dp=new (buf) S19639C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19639C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19639C5)");
    check_base_class_offset(lv, (S19639C3*), ABISELECT(16,8), "S19639C5");
    check_field_offset(lv, s19639c5f0, ABISELECT(8,4), "S19639C5.s19639c5f0");
    test_class_info(&lv, &cd_S19639C5);
    dp->~S19639C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19639C5(Test_S19639C5, "S19639C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19639C5C1Ev();
extern void _ZN8S19639C5D1Ev();
Name_Map name_map_S19639C5[] = {
  NSPAIR(_ZN8S19639C5C1Ev),
  NSPAIR(_ZN8S19639C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19639C3;
extern VTBL_ENTRY _ZTI8S19639C3[];
extern  VTBL_ENTRY _ZTV8S19639C3[];
static Base_Class bases_S19639C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19639C3,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19639C5[];
extern void _ZN8S19639C52v7Ev();
extern void _ZN8S19639C52v8Ev();
extern void _ZN8S19639C32v3Ev();
extern void _ZN8S19639C32v4Ev();
static  VTBL_ENTRY vtc_S19639C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19639C5[0]),
  (VTBL_ENTRY)&_ZN8S19639C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19639C52v8Ev,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19639C5[0]),
  (VTBL_ENTRY)&_ZN8S19639C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19639C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S19639C5[];
static  VTT_ENTRY vtt_S19639C5[] = {
  {&(_ZTV8S19639C5[3]),  3,11},
  {&(_ZTV8S19639C5[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19639C5[];
extern  VTBL_ENTRY _ZTV8S19639C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19639C5[];
Class_Descriptor cd_S19639C5 = {  "S19639C5", // class name
  bases_S19639C5, 1,
  &(vtc_S19639C5[0]), // expected_vtbl_contents
  &(vtt_S19639C5[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19639C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19639C5),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19639C5),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  S19639C6  {
  int s19639c6f0[10];
};
//SIG(-1 S19639C6) C1{ Fi[10]}



static void Test_S19639C6()
{
  {
    init_simple_test("S19639C6");
    S19639C6 lv;
    check2(sizeof(lv), 40, "sizeof(S19639C6)");
    check2(__alignof__(lv), 4, "__alignof__(S19639C6)");
    check_field_offset(lv, s19639c6f0, 0, "S19639C6.s19639c6f0");
  }
}
static Arrange_To_Call_Me vS19639C6(Test_S19639C6, "S19639C6", 40);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19639C6[];
VTBL_ENTRY *P__ZTI8S19639C6 = _ZTI8S19639C6; 
Class_Descriptor cd_S19639C6 = {  "S19639C6", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI8S19639C6),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  S19639C1  : virtual S19639C2_nt , virtual S19639C3 , S19639C4 , S19639C5 , virtual S19639C6 {
  int s19639c1f0;
  virtual void  v1(); // _ZN8S19639C12v1Ev
  virtual void  v2(); // _ZN8S19639C12v2Ev
  ~S19639C1(); // tgen
  S19639C1(); // tgen
};
//SIG(1 S19639C1) C1{ VBC2{ Fi[10]} VBC3{ v3 v4 Fi} BC4{ VBC3 v5 v6 Fi} BC5{ VBC3 v7 v8 Fi} VBC6{ Fi[10]} v1 v2 Fi}


void  S19639C1 ::v1(){vfunc_called(this, "_ZN8S19639C12v1Ev");}
void  S19639C1 ::v2(){vfunc_called(this, "_ZN8S19639C12v2Ev");}
S19639C1 ::~S19639C1(){ note_dtor("S19639C1", this);} // tgen
S19639C1 ::S19639C1(){ note_ctor("S19639C1", this);} // tgen

static void Test_S19639C1()
{
  extern Class_Descriptor cd_S19639C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,28)];
    init_test(&cd_S19639C1, buf);
    S19639C1 *dp, &lv = *(dp=new (buf) S19639C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,108), "sizeof(S19639C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19639C1)");
    check_base_class_offset(lv, (S19639C2_nt*), ABISELECT(32,20), "S19639C1");
    check_base_class_offset(lv, (S19639C3*), ABISELECT(72,60), "S19639C1");
    check_base_class_offset(lv, (S19639C3*)(S19639C4*), ABISELECT(72,60), "S19639C1");
    check_base_class_offset(lv, (S19639C3*)(S19639C5*), ABISELECT(72,60), "S19639C1");
    check_base_class_offset(lv, (S19639C4*), 0, "S19639C1");
    check_base_class_offset(lv, (S19639C5*), ABISELECT(16,8), "S19639C1");
    check_base_class_offset(lv, (S19639C6*), ABISELECT(84,68), "S19639C1");
    check_field_offset(lv, s19639c1f0, ABISELECT(28,16), "S19639C1.s19639c1f0");
    test_class_info(&lv, &cd_S19639C1);
    dp->~S19639C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19639C1(Test_S19639C1, "S19639C1", ABISELECT(128,108));

#else // __cplusplus

extern void _ZN8S19639C1C1Ev();
extern void _ZN8S19639C1D1Ev();
Name_Map name_map_S19639C1[] = {
  NSPAIR(_ZN8S19639C1C1Ev),
  NSPAIR(_ZN8S19639C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19639C2_nt;
extern VTBL_ENTRY _ZTI11S19639C2_nt[];
extern Class_Descriptor cd_S19639C3;
extern VTBL_ENTRY _ZTI8S19639C3[];
extern  VTBL_ENTRY _ZTV8S19639C3[];
extern Class_Descriptor cd_S19639C4;
extern VTBL_ENTRY _ZTI8S19639C4[];
extern  VTBL_ENTRY _ZTV8S19639C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19639C4[];
extern Class_Descriptor cd_S19639C5;
extern VTBL_ENTRY _ZTI8S19639C5[];
extern  VTBL_ENTRY _ZTV8S19639C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19639C5[];
extern Class_Descriptor cd_S19639C6;
extern VTBL_ENTRY _ZTI8S19639C6[];
static Base_Class bases_S19639C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19639C2_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19639C3,    ABISELECT(72,60), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19639C4,    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_S19639C5,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19639C6,    ABISELECT(84,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19639C1[];
extern void _ZN8S19639C42v5Ev();
extern void _ZN8S19639C42v6Ev();
extern void _ZN8S19639C12v1Ev();
extern void _ZN8S19639C12v2Ev();
extern void _ZN8S19639C52v7Ev();
extern void _ZN8S19639C52v8Ev();
extern void _ZN8S19639C32v3Ev();
extern void _ZN8S19639C32v4Ev();
static  VTBL_ENTRY vtc_S19639C1[] = {
  ABISELECT(84,68),
  ABISELECT(32,20),
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19639C1[0]),
  (VTBL_ENTRY)&_ZN8S19639C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19639C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19639C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19639C12v2Ev,
  ABISELECT(56,52),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19639C1[0]),
  (VTBL_ENTRY)&_ZN8S19639C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19639C52v8Ev,
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S19639C1[0]),
  (VTBL_ENTRY)&_ZN8S19639C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19639C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S19639C1[];
extern void _ZN8S19639C42v5Ev();
extern void _ZN8S19639C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19639C4__8S19639C1[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19639C4[0]),
  (VTBL_ENTRY)&_ZN8S19639C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19639C42v6Ev,
};
extern void _ZN8S19639C32v3Ev();
extern void _ZN8S19639C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19639C3__8S19639C4__8S19639C1[] = {
  0,
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S19639C4[0]),
  (VTBL_ENTRY)&_ZN8S19639C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19639C32v4Ev,
};
extern void _ZN8S19639C52v7Ev();
extern void _ZN8S19639C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19639C5__8S19639C1[] = {
  ABISELECT(56,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19639C5[0]),
  (VTBL_ENTRY)&_ZN8S19639C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19639C52v8Ev,
};
extern void _ZN8S19639C32v3Ev();
extern void _ZN8S19639C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19639C3__8S19639C5__8S19639C1[] = {
  0,
  0,
  ABISELECT(-56,-52),
  (VTBL_ENTRY)&(_ZTI8S19639C5[0]),
  (VTBL_ENTRY)&_ZN8S19639C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19639C32v4Ev,
};
static  VTT_ENTRY vtt_S19639C1[] = {
  {&(_ZTV8S19639C1[5]),  5,20},
  {&(_tg__ZTV8S19639C4__8S19639C1[3]),  3,5},
  {&(_tg__ZTV8S19639C3__8S19639C4__8S19639C1[4]),  4,6},
  {&(_tg__ZTV8S19639C5__8S19639C1[3]),  3,5},
  {&(_tg__ZTV8S19639C3__8S19639C5__8S19639C1[4]),  4,6},
  {&(_ZTV8S19639C1[18]),  18,20},
  {&(_ZTV8S19639C1[12]),  12,20},
};
extern VTBL_ENTRY _ZTI8S19639C1[];
extern  VTBL_ENTRY _ZTV8S19639C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19639C1[];
Class_Descriptor cd_S19639C1 = {  "S19639C1", // class name
  bases_S19639C1, 5,
  &(vtc_S19639C1[0]), // expected_vtbl_contents
  &(vtt_S19639C1[0]), // expected_vtt_contents
  ABISELECT(128,108), // object size
  NSPAIRA(_ZTI8S19639C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19639C1),20, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19639C1),7, //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  S7533C3  {
  virtual void  v10(); // _ZN7S7533C33v10Ev
  virtual void  v11(); // _ZN7S7533C33v11Ev
  virtual void  v12(); // _ZN7S7533C33v12Ev
  ~S7533C3(); // tgen
  S7533C3(); // tgen
};
//SIG(-1 S7533C3) C1{ v1 v2 v3}


void  S7533C3 ::v10(){vfunc_called(this, "_ZN7S7533C33v10Ev");}
void  S7533C3 ::v11(){vfunc_called(this, "_ZN7S7533C33v11Ev");}
void  S7533C3 ::v12(){vfunc_called(this, "_ZN7S7533C33v12Ev");}
S7533C3 ::~S7533C3(){ note_dtor("S7533C3", this);} // tgen
S7533C3 ::S7533C3(){ note_ctor("S7533C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7533C3C1Ev();
extern void _ZN7S7533C3D1Ev();
Name_Map name_map_S7533C3[] = {
  NSPAIR(_ZN7S7533C3C1Ev),
  NSPAIR(_ZN7S7533C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7533C3[];
extern void _ZN7S7533C33v10Ev();
extern void _ZN7S7533C33v11Ev();
extern void _ZN7S7533C33v12Ev();
static  VTBL_ENTRY vtc_S7533C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7533C3[0]),
  (VTBL_ENTRY)&_ZN7S7533C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7533C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7533C33v12Ev,
};
extern VTBL_ENTRY _ZTI7S7533C3[];
extern  VTBL_ENTRY _ZTV7S7533C3[];
Class_Descriptor cd_S7533C3 = {  "S7533C3", // class name
  0,0,//no base classes
  &(vtc_S7533C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7533C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7533C3),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  S7533C2  : virtual S7533C3 {
  void *s7533c2f0;
  virtual void  v13(); // _ZN7S7533C23v13Ev
  virtual void  v14(); // _ZN7S7533C23v14Ev
  virtual void  v15(); // _ZN7S7533C23v15Ev
  virtual void  v16(); // _ZN7S7533C23v16Ev
  virtual void  v17(); // _ZN7S7533C23v17Ev
  virtual void  v18(); // _ZN7S7533C23v18Ev
  virtual void  v19(); // _ZN7S7533C23v19Ev
  ~S7533C2(); // tgen
  S7533C2(); // tgen
};
//SIG(-1 S7533C2) C1{ VBC2{ v8 v9 v10} v1 v2 v3 v4 v5 v6 v7 Fp}


void  S7533C2 ::v13(){vfunc_called(this, "_ZN7S7533C23v13Ev");}
void  S7533C2 ::v14(){vfunc_called(this, "_ZN7S7533C23v14Ev");}
void  S7533C2 ::v15(){vfunc_called(this, "_ZN7S7533C23v15Ev");}
void  S7533C2 ::v16(){vfunc_called(this, "_ZN7S7533C23v16Ev");}
void  S7533C2 ::v17(){vfunc_called(this, "_ZN7S7533C23v17Ev");}
void  S7533C2 ::v18(){vfunc_called(this, "_ZN7S7533C23v18Ev");}
void  S7533C2 ::v19(){vfunc_called(this, "_ZN7S7533C23v19Ev");}
S7533C2 ::~S7533C2(){ note_dtor("S7533C2", this);} // tgen
S7533C2 ::S7533C2(){ note_ctor("S7533C2", this);} // tgen

static void Test_S7533C2()
{
  extern Class_Descriptor cd_S7533C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7533C2, buf);
    S7533C2 *dp, &lv = *(dp=new (buf) S7533C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7533C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7533C2)");
    check_base_class_offset(lv, (S7533C3*), 0, "S7533C2");
    check_field_offset(lv, s7533c2f0, ABISELECT(8,4), "S7533C2.s7533c2f0");
    test_class_info(&lv, &cd_S7533C2);
    dp->~S7533C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7533C2(Test_S7533C2, "S7533C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7533C2C1Ev();
extern void _ZN7S7533C2D1Ev();
Name_Map name_map_S7533C2[] = {
  NSPAIR(_ZN7S7533C2C1Ev),
  NSPAIR(_ZN7S7533C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7533C3;
extern VTBL_ENTRY _ZTI7S7533C3[];
extern  VTBL_ENTRY _ZTV7S7533C3[];
static Base_Class bases_S7533C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7533C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7533C2[];
extern void _ZN7S7533C33v10Ev();
extern void _ZN7S7533C33v11Ev();
extern void _ZN7S7533C33v12Ev();
extern void _ZN7S7533C23v13Ev();
extern void _ZN7S7533C23v14Ev();
extern void _ZN7S7533C23v15Ev();
extern void _ZN7S7533C23v16Ev();
extern void _ZN7S7533C23v17Ev();
extern void _ZN7S7533C23v18Ev();
extern void _ZN7S7533C23v19Ev();
static  VTBL_ENTRY vtc_S7533C2[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7533C2[0]),
  (VTBL_ENTRY)&_ZN7S7533C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7533C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7533C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v19Ev,
};
extern VTBL_ENTRY _ZTV7S7533C2[];
static  VTT_ENTRY vtt_S7533C2[] = {
  {&(_ZTV7S7533C2[6]),  6,16},
  {&(_ZTV7S7533C2[6]),  6,16},
};
extern VTBL_ENTRY _ZTI7S7533C2[];
extern  VTBL_ENTRY _ZTV7S7533C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7533C2[];
Class_Descriptor cd_S7533C2 = {  "S7533C2", // class name
  bases_S7533C2, 1,
  &(vtc_S7533C2[0]), // expected_vtbl_contents
  &(vtt_S7533C2[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7533C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7533C2),16, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7533C2),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  S7533C1  : S7533C2 {
  __tsi64 s7533c1f0;
  virtual void  v1(); // _ZN7S7533C12v1Ev
  virtual void  v2(); // _ZN7S7533C12v2Ev
  virtual void  v3(); // _ZN7S7533C12v3Ev
  virtual void  v4(); // _ZN7S7533C12v4Ev
  virtual void  v5(); // _ZN7S7533C12v5Ev
  virtual void  v6(); // _ZN7S7533C12v6Ev
  virtual void  v7(); // _ZN7S7533C12v7Ev
  virtual void  v8(); // _ZN7S7533C12v8Ev
  virtual void  v9(); // _ZN7S7533C12v9Ev
  ~S7533C1(); // tgen
  S7533C1(); // tgen
};
//SIG(1 S7533C1) C1{ BC2{ VBC3{ v10 v11 v12} v13 v14 v15 v16 v17 v18 v19 Fp} v1 v2 v3 v4 v5 v6 v7 v8 v9 FL}


void  S7533C1 ::v1(){vfunc_called(this, "_ZN7S7533C12v1Ev");}
void  S7533C1 ::v2(){vfunc_called(this, "_ZN7S7533C12v2Ev");}
void  S7533C1 ::v3(){vfunc_called(this, "_ZN7S7533C12v3Ev");}
void  S7533C1 ::v4(){vfunc_called(this, "_ZN7S7533C12v4Ev");}
void  S7533C1 ::v5(){vfunc_called(this, "_ZN7S7533C12v5Ev");}
void  S7533C1 ::v6(){vfunc_called(this, "_ZN7S7533C12v6Ev");}
void  S7533C1 ::v7(){vfunc_called(this, "_ZN7S7533C12v7Ev");}
void  S7533C1 ::v8(){vfunc_called(this, "_ZN7S7533C12v8Ev");}
void  S7533C1 ::v9(){vfunc_called(this, "_ZN7S7533C12v9Ev");}
S7533C1 ::~S7533C1(){ note_dtor("S7533C1", this);} // tgen
S7533C1 ::S7533C1(){ note_ctor("S7533C1", this);} // tgen

static void Test_S7533C1()
{
  extern Class_Descriptor cd_S7533C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7533C1, buf);
    S7533C1 *dp, &lv = *(dp=new (buf) S7533C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7533C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7533C1)");
    check_base_class_offset(lv, (S7533C3*)(S7533C2*), 0, "S7533C1");
    check_base_class_offset(lv, (S7533C2*), 0, "S7533C1");
    check_field_offset(lv, s7533c1f0, ABISELECT(16,8), "S7533C1.s7533c1f0");
    test_class_info(&lv, &cd_S7533C1);
    dp->~S7533C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7533C1(Test_S7533C1, "S7533C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7533C1C1Ev();
extern void _ZN7S7533C1D1Ev();
Name_Map name_map_S7533C1[] = {
  NSPAIR(_ZN7S7533C1C1Ev),
  NSPAIR(_ZN7S7533C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7533C3;
extern VTBL_ENTRY _ZTI7S7533C3[];
extern  VTBL_ENTRY _ZTV7S7533C3[];
extern Class_Descriptor cd_S7533C2;
extern VTBL_ENTRY _ZTI7S7533C2[];
extern  VTBL_ENTRY _ZTV7S7533C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7533C2[];
static Base_Class bases_S7533C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7533C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7533C2,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7533C1[];
extern void _ZN7S7533C33v10Ev();
extern void _ZN7S7533C33v11Ev();
extern void _ZN7S7533C33v12Ev();
extern void _ZN7S7533C23v13Ev();
extern void _ZN7S7533C23v14Ev();
extern void _ZN7S7533C23v15Ev();
extern void _ZN7S7533C23v16Ev();
extern void _ZN7S7533C23v17Ev();
extern void _ZN7S7533C23v18Ev();
extern void _ZN7S7533C23v19Ev();
extern void _ZN7S7533C12v1Ev();
extern void _ZN7S7533C12v2Ev();
extern void _ZN7S7533C12v3Ev();
extern void _ZN7S7533C12v4Ev();
extern void _ZN7S7533C12v5Ev();
extern void _ZN7S7533C12v6Ev();
extern void _ZN7S7533C12v7Ev();
extern void _ZN7S7533C12v8Ev();
extern void _ZN7S7533C12v9Ev();
static  VTBL_ENTRY vtc_S7533C1[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7533C1[0]),
  (VTBL_ENTRY)&_ZN7S7533C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7533C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7533C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7533C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7533C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7533C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7533C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7533C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7533C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7533C12v7Ev,
  (VTBL_ENTRY)&_ZN7S7533C12v8Ev,
  (VTBL_ENTRY)&_ZN7S7533C12v9Ev,
};
extern VTBL_ENTRY _ZTV7S7533C1[];
extern void _ZN7S7533C33v10Ev();
extern void _ZN7S7533C33v11Ev();
extern void _ZN7S7533C33v12Ev();
extern void _ZN7S7533C23v13Ev();
extern void _ZN7S7533C23v14Ev();
extern void _ZN7S7533C23v15Ev();
extern void _ZN7S7533C23v16Ev();
extern void _ZN7S7533C23v17Ev();
extern void _ZN7S7533C23v18Ev();
extern void _ZN7S7533C23v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7533C2__7S7533C1[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7533C2[0]),
  (VTBL_ENTRY)&_ZN7S7533C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7533C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7533C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7533C23v19Ev,
};
static  VTT_ENTRY vtt_S7533C1[] = {
  {&(_ZTV7S7533C1[6]),  6,25},
  {&(_tg__ZTV7S7533C2__7S7533C1[6]),  6,16},
  {&(_tg__ZTV7S7533C2__7S7533C1[6]),  6,16},
  {&(_ZTV7S7533C1[6]),  6,25},
};
extern VTBL_ENTRY _ZTI7S7533C1[];
extern  VTBL_ENTRY _ZTV7S7533C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7533C1[];
Class_Descriptor cd_S7533C1 = {  "S7533C1", // class name
  bases_S7533C1, 2,
  &(vtc_S7533C1[0]), // expected_vtbl_contents
  &(vtt_S7533C1[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7533C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7533C1),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7533C1),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  S21625C1  {
  int s21625c1f0;
  void *s21625c1f1;
  int s21625c1f2;
  __tsi64 s21625c1f3;
  int s21625c1f4;
  ::S2405C20_nt s21625c1f5;
  ::S21499C7_nt s21625c1f6;
  ::S21499C7_nt s21625c1f7;
  ::S11969C34 s21625c1f8;
  ::S21499C7_nt s21625c1f9;
  char s21625c1f10[2];
  void *s21625c1f11;
  void  mf21625c1(); // _ZN8S21625C19mf21625c1Ev
  virtual  ~S21625C1(); // _ZN8S21625C1D1Ev
  S21625C1(); // tgen
};
//SIG(1 S21625C1) C1{ vd m Fi Fp Fi FL Fi FC2{ m Fp Fi FC3{ m}} FC4{ m Fp[2]} FC4 FC5{ m Fp[2]} FC4 Fc[2] Fp}


void  S21625C1 ::mf21625c1(){}
 S21625C1 ::~S21625C1(){ note_dtor("S21625C1", this);}
S21625C1 ::S21625C1(){ note_ctor("S21625C1", this);} // tgen

static void Test_S21625C1()
{
  extern Class_Descriptor cd_S21625C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,21)];
    init_test(&cd_S21625C1, buf);
    S21625C1 *dp, &lv = *(dp=new (buf) S21625C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,80), "sizeof(S21625C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21625C1)");
    check_field_offset(lv, s21625c1f0, ABISELECT(8,4), "S21625C1.s21625c1f0");
    check_field_offset(lv, s21625c1f1, ABISELECT(16,8), "S21625C1.s21625c1f1");
    check_field_offset(lv, s21625c1f2, ABISELECT(24,12), "S21625C1.s21625c1f2");
    check_field_offset(lv, s21625c1f3, ABISELECT(32,16), "S21625C1.s21625c1f3");
    check_field_offset(lv, s21625c1f4, ABISELECT(40,24), "S21625C1.s21625c1f4");
    check_field_offset(lv, s21625c1f5, ABISELECT(48,28), "S21625C1.s21625c1f5");
    check_field_offset(lv, s21625c1f6, ABISELECT(64,40), "S21625C1.s21625c1f6");
    check_field_offset(lv, s21625c1f7, ABISELECT(80,48), "S21625C1.s21625c1f7");
    check_field_offset(lv, s21625c1f8, ABISELECT(96,56), "S21625C1.s21625c1f8");
    check_field_offset(lv, s21625c1f9, ABISELECT(112,64), "S21625C1.s21625c1f9");
    check_field_offset(lv, s21625c1f10, ABISELECT(128,72), "S21625C1.s21625c1f10");
    check_field_offset(lv, s21625c1f11, ABISELECT(136,76), "S21625C1.s21625c1f11");
    test_class_info(&lv, &cd_S21625C1);
    dp->~S21625C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21625C1(Test_S21625C1, "S21625C1", ABISELECT(144,80));

#else // __cplusplus

extern void _ZN8S21625C1C1Ev();
extern void _ZN8S21625C1D1Ev();
Name_Map name_map_S21625C1[] = {
  NSPAIR(_ZN8S21625C1C1Ev),
  NSPAIR(_ZN8S21625C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21625C1[];
extern void _ZN8S21625C1D1Ev();
extern void _ZN8S21625C1D0Ev();
static  VTBL_ENTRY vtc_S21625C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21625C1[0]),
  (VTBL_ENTRY)&_ZN8S21625C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21625C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21625C1[];
extern  VTBL_ENTRY _ZTV8S21625C1[];
Class_Descriptor cd_S21625C1 = {  "S21625C1", // class name
  0,0,//no base classes
  &(vtc_S21625C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,80), // object size
  NSPAIRA(_ZTI8S21625C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21625C1),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  S4810C3  {
  ::S2405C20_nt s4810c3f0;
  int s4810c3f1[2];
  char s4810c3f2;
  virtual  ~S4810C3(); // _ZN7S4810C3D1Ev
  virtual void  v3(); // _ZN7S4810C32v3Ev
  virtual void  v4(); // _ZN7S4810C32v4Ev
  virtual void  v5(); // _ZN7S4810C32v5Ev
  S4810C3(); // tgen
};
//SIG(-1 S4810C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4810C3 ::~S4810C3(){ note_dtor("S4810C3", this);}
void  S4810C3 ::v3(){vfunc_called(this, "_ZN7S4810C32v3Ev");}
void  S4810C3 ::v4(){vfunc_called(this, "_ZN7S4810C32v4Ev");}
void  S4810C3 ::v5(){vfunc_called(this, "_ZN7S4810C32v5Ev");}
S4810C3 ::S4810C3(){ note_ctor("S4810C3", this);} // tgen

static void Test_S4810C3()
{
  extern Class_Descriptor cd_S4810C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4810C3, buf);
    S4810C3 *dp, &lv = *(dp=new (buf) S4810C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4810C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4810C3)");
    check_field_offset(lv, s4810c3f0, ABISELECT(8,4), "S4810C3.s4810c3f0");
    check_field_offset(lv, s4810c3f1, ABISELECT(24,16), "S4810C3.s4810c3f1");
    check_field_offset(lv, s4810c3f2, ABISELECT(32,24), "S4810C3.s4810c3f2");
    test_class_info(&lv, &cd_S4810C3);
    dp->~S4810C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4810C3(Test_S4810C3, "S4810C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4810C3C1Ev();
extern void _ZN7S4810C3D1Ev();
Name_Map name_map_S4810C3[] = {
  NSPAIR(_ZN7S4810C3C1Ev),
  NSPAIR(_ZN7S4810C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4810C3[];
extern void _ZN7S4810C3D1Ev();
extern void _ZN7S4810C3D0Ev();
extern void _ZN7S4810C32v3Ev();
extern void _ZN7S4810C32v4Ev();
extern void _ZN7S4810C32v5Ev();
static  VTBL_ENTRY vtc_S4810C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4810C3[0]),
  (VTBL_ENTRY)&_ZN7S4810C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4810C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4810C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4810C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4810C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4810C3[];
extern  VTBL_ENTRY _ZTV7S4810C3[];
Class_Descriptor cd_S4810C3 = {  "S4810C3", // class name
  0,0,//no base classes
  &(vtc_S4810C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4810C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4810C3),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  S4810C2  : S4810C3 {
  char s4810c2f0;
  int s4810c2f1;
  void *s4810c2f2[5];
  virtual  ~S4810C2(); // _ZN7S4810C2D1Ev
  virtual void  v6(); // _ZN7S4810C22v6Ev
  virtual void  v7(); // _ZN7S4810C22v7Ev
  S4810C2(); // tgen
};
//SIG(-1 S4810C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fc Fi Fp[5]}


 S4810C2 ::~S4810C2(){ note_dtor("S4810C2", this);}
void  S4810C2 ::v6(){vfunc_called(this, "_ZN7S4810C22v6Ev");}
void  S4810C2 ::v7(){vfunc_called(this, "_ZN7S4810C22v7Ev");}
S4810C2 ::S4810C2(){ note_ctor("S4810C2", this);} // tgen

static void Test_S4810C2()
{
  extern Class_Descriptor cd_S4810C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S4810C2, buf);
    S4810C2 *dp, &lv = *(dp=new (buf) S4810C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S4810C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4810C2)");
    check_base_class_offset(lv, (S4810C3*), 0, "S4810C2");
    check_field_offset(lv, s4810c2f0, ABISELECT(33,25), "S4810C2.s4810c2f0");
    check_field_offset(lv, s4810c2f1, ABISELECT(36,28), "S4810C2.s4810c2f1");
    check_field_offset(lv, s4810c2f2, ABISELECT(40,32), "S4810C2.s4810c2f2");
    test_class_info(&lv, &cd_S4810C2);
    dp->~S4810C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4810C2(Test_S4810C2, "S4810C2", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S4810C2C1Ev();
extern void _ZN7S4810C2D1Ev();
Name_Map name_map_S4810C2[] = {
  NSPAIR(_ZN7S4810C2C1Ev),
  NSPAIR(_ZN7S4810C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4810C3;
extern VTBL_ENTRY _ZTI7S4810C3[];
extern  VTBL_ENTRY _ZTV7S4810C3[];
static Base_Class bases_S4810C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4810C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4810C2[];
extern void _ZN7S4810C2D1Ev();
extern void _ZN7S4810C2D0Ev();
extern void _ZN7S4810C32v3Ev();
extern void _ZN7S4810C32v4Ev();
extern void _ZN7S4810C32v5Ev();
extern void _ZN7S4810C22v6Ev();
extern void _ZN7S4810C22v7Ev();
static  VTBL_ENTRY vtc_S4810C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4810C2[0]),
  (VTBL_ENTRY)&_ZN7S4810C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4810C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4810C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4810C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4810C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4810C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4810C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4810C2[];
extern  VTBL_ENTRY _ZTV7S4810C2[];
Class_Descriptor cd_S4810C2 = {  "S4810C2", // class name
  bases_S4810C2, 1,
  &(vtc_S4810C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S4810C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4810C2),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  S4810C1  : S4810C2 {
  virtual  ~S4810C1(); // _ZN7S4810C1D1Ev
  virtual void  v1(); // _ZN7S4810C12v1Ev
  virtual void  v2(); // _ZN7S4810C12v2Ev
  S4810C1(); // tgen
};
//SIG(1 S4810C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} vd v6 v7 Fc Fi Fp[5]} vd v1 v2}


 S4810C1 ::~S4810C1(){ note_dtor("S4810C1", this);}
void  S4810C1 ::v1(){vfunc_called(this, "_ZN7S4810C12v1Ev");}
void  S4810C1 ::v2(){vfunc_called(this, "_ZN7S4810C12v2Ev");}
S4810C1 ::S4810C1(){ note_ctor("S4810C1", this);} // tgen

static void Test_S4810C1()
{
  extern Class_Descriptor cd_S4810C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S4810C1, buf);
    S4810C1 *dp, &lv = *(dp=new (buf) S4810C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S4810C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4810C1)");
    check_base_class_offset(lv, (S4810C3*)(S4810C2*), 0, "S4810C1");
    check_base_class_offset(lv, (S4810C2*), 0, "S4810C1");
    test_class_info(&lv, &cd_S4810C1);
    dp->~S4810C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4810C1(Test_S4810C1, "S4810C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S4810C1C1Ev();
extern void _ZN7S4810C1D1Ev();
Name_Map name_map_S4810C1[] = {
  NSPAIR(_ZN7S4810C1C1Ev),
  NSPAIR(_ZN7S4810C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4810C3;
extern VTBL_ENTRY _ZTI7S4810C3[];
extern  VTBL_ENTRY _ZTV7S4810C3[];
extern Class_Descriptor cd_S4810C2;
extern VTBL_ENTRY _ZTI7S4810C2[];
extern  VTBL_ENTRY _ZTV7S4810C2[];
static Base_Class bases_S4810C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4810C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4810C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4810C1[];
extern void _ZN7S4810C1D1Ev();
extern void _ZN7S4810C1D0Ev();
extern void _ZN7S4810C32v3Ev();
extern void _ZN7S4810C32v4Ev();
extern void _ZN7S4810C32v5Ev();
extern void _ZN7S4810C22v6Ev();
extern void _ZN7S4810C22v7Ev();
extern void _ZN7S4810C12v1Ev();
extern void _ZN7S4810C12v2Ev();
static  VTBL_ENTRY vtc_S4810C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4810C1[0]),
  (VTBL_ENTRY)&_ZN7S4810C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4810C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4810C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4810C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4810C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4810C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4810C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4810C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4810C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4810C1[];
extern  VTBL_ENTRY _ZTV7S4810C1[];
Class_Descriptor cd_S4810C1 = {  "S4810C1", // class name
  bases_S4810C1, 2,
  &(vtc_S4810C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S4810C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4810C1),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8133C1  : S3712C3_nt {
  void *s8133c1f0;
  ::S11969C23_nt s8133c1f1;
  int s8133c1f2[2];
  ::S10225C3 s8133c1f3;
  virtual  ~S8133C1(); // _ZN7S8133C1D1Ev
  S8133C1(); // tgen
};
//SIG(1 S8133C1) C1{ BC2{ vd m Fi} vd Fp FC3{ m Fp} Fi[2] FC4{ BC5{ vd v4 v5 v6} vd v1 v2 v3 FC6{ FL[4]}}}


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

static void Test_S8133C1()
{
  extern Class_Descriptor cd_S8133C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S8133C1, buf);
    S8133C1 *dp, &lv = *(dp=new (buf) S8133C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S8133C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8133C1)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S8133C1");
    check_field_offset(lv, s8133c1f0, ABISELECT(16,8), "S8133C1.s8133c1f0");
    check_field_offset(lv, s8133c1f1, ABISELECT(24,12), "S8133C1.s8133c1f1");
    check_field_offset(lv, s8133c1f2, ABISELECT(32,16), "S8133C1.s8133c1f2");
    check_field_offset(lv, s8133c1f3, ABISELECT(40,24), "S8133C1.s8133c1f3");
    test_class_info(&lv, &cd_S8133C1);
    dp->~S8133C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8133C1(Test_S8133C1, "S8133C1", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN7S8133C1C1Ev();
extern void _ZN7S8133C1D1Ev();
Name_Map name_map_S8133C1[] = {
  NSPAIR(_ZN7S8133C1C1Ev),
  NSPAIR(_ZN7S8133C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S8133C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8133C1[];
extern void _ZN7S8133C1D1Ev();
extern void _ZN7S8133C1D0Ev();
static  VTBL_ENTRY vtc_S8133C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8133C1[0]),
  (VTBL_ENTRY)&_ZN7S8133C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8133C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8133C1[];
extern  VTBL_ENTRY _ZTV7S8133C1[];
Class_Descriptor cd_S8133C1 = {  "S8133C1", // class name
  bases_S8133C1, 1,
  &(vtc_S8133C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI7S8133C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8133C1),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  S20806C3_nt  {
  void *s20806c3f0;
  virtual void  v2(); // _ZN11S20806C3_nt2v2Ev
  ~S20806C3_nt(); // tgen
  S20806C3_nt(); // tgen
};
//SIG(-1 S20806C3_nt) C1{ v1 Fp}


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

//skip512 S20806C3_nt

#else // __cplusplus

extern void _ZN11S20806C3_ntC1Ev();
extern void _ZN11S20806C3_ntD1Ev();
Name_Map name_map_S20806C3_nt[] = {
  NSPAIR(_ZN11S20806C3_ntC1Ev),
  NSPAIR(_ZN11S20806C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20806C3_nt[];
extern void _ZN11S20806C3_nt2v2Ev();
static  VTBL_ENTRY vtc_S20806C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20806C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20806C3_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI11S20806C3_nt[];
VTBL_ENTRY *P__ZTI11S20806C3_nt = _ZTI11S20806C3_nt; 
extern  VTBL_ENTRY _ZTV11S20806C3_nt[];
Class_Descriptor cd_S20806C3_nt = {  "S20806C3_nt", // class name
  0,0,//no base classes
  &(vtc_S20806C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S20806C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20806C3_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  S20806C4  : virtual S20806C3_nt {
  __tsi64 s20806c4f0;
  char s20806c4f1;
  virtual void  v3(); // _ZN8S20806C42v3Ev
  virtual void  v4(); // _ZN8S20806C42v4Ev
  virtual void  v5(); // _ZN8S20806C42v5Ev
  ~S20806C4(); // tgen
  S20806C4(); // tgen
};
//SIG(-1 S20806C4) C1{ VBC2{ v4 Fp} v1 v2 v3 FL Fc}


void  S20806C4 ::v3(){vfunc_called(this, "_ZN8S20806C42v3Ev");}
void  S20806C4 ::v4(){vfunc_called(this, "_ZN8S20806C42v4Ev");}
void  S20806C4 ::v5(){vfunc_called(this, "_ZN8S20806C42v5Ev");}
S20806C4 ::~S20806C4(){ note_dtor("S20806C4", this);} // tgen
S20806C4 ::S20806C4(){ note_ctor("S20806C4", this);} // tgen

static void Test_S20806C4()
{
  extern Class_Descriptor cd_S20806C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20806C4, buf);
    S20806C4 *dp, &lv = *(dp=new (buf) S20806C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20806C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20806C4)");
    check_base_class_offset(lv, (S20806C3_nt*), ABISELECT(24,16), "S20806C4");
    check_field_offset(lv, s20806c4f0, ABISELECT(8,4), "S20806C4.s20806c4f0");
    check_field_offset(lv, s20806c4f1, ABISELECT(16,12), "S20806C4.s20806c4f1");
    test_class_info(&lv, &cd_S20806C4);
    dp->~S20806C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20806C4(Test_S20806C4, "S20806C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20806C4C1Ev();
extern void _ZN8S20806C4D1Ev();
Name_Map name_map_S20806C4[] = {
  NSPAIR(_ZN8S20806C4C1Ev),
  NSPAIR(_ZN8S20806C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20806C3_nt;
extern VTBL_ENTRY _ZTI11S20806C3_nt[];
extern  VTBL_ENTRY _ZTV11S20806C3_nt[];
static Base_Class bases_S20806C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20806C3_nt,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20806C4[];
extern void _ZN8S20806C42v3Ev();
extern void _ZN8S20806C42v4Ev();
extern void _ZN8S20806C42v5Ev();
extern void _ZN11S20806C3_nt2v2Ev();
static  VTBL_ENTRY vtc_S20806C4[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20806C4[0]),
  (VTBL_ENTRY)&_ZN8S20806C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v5Ev,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20806C4[0]),
  (VTBL_ENTRY)&_ZN11S20806C3_nt2v2Ev,
};
extern VTBL_ENTRY _ZTV8S20806C4[];
static  VTT_ENTRY vtt_S20806C4[] = {
  {&(_ZTV8S20806C4[3]),  3,10},
  {&(_ZTV8S20806C4[9]),  9,10},
};
extern VTBL_ENTRY _ZTI8S20806C4[];
extern  VTBL_ENTRY _ZTV8S20806C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20806C4[];
Class_Descriptor cd_S20806C4 = {  "S20806C4", // class name
  bases_S20806C4, 1,
  &(vtc_S20806C4[0]), // expected_vtbl_contents
  &(vtt_S20806C4[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20806C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20806C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20806C4),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  S20806C2  : virtual S20806C3_nt , virtual S20806C4 {
  long s20806c2f0;
  void *s20806c2f1;
  long s20806c2f2;
  void *s20806c2f3;
  virtual  ~S20806C2(); // _ZN8S20806C2D2Ev
  virtual void  v6(); // _ZN8S20806C22v6Ev
  virtual void  v7(); // _ZN8S20806C22v7Ev
  S20806C2(); // tgen
};
//SIG(-1 S20806C2) C1{ VBC2{ v3 Fp} VBC3{ VBC2 v4 v5 v6 FL Fc} vd v1 v2 Fl Fp Fl Fp}


 S20806C2 ::~S20806C2(){ note_dtor("S20806C2", this);}
void  S20806C2 ::v6(){vfunc_called(this, "_ZN8S20806C22v6Ev");}
void  S20806C2 ::v7(){vfunc_called(this, "_ZN8S20806C22v7Ev");}
S20806C2 ::S20806C2(){ note_ctor("S20806C2", this);} // tgen

static void Test_S20806C2()
{
  extern Class_Descriptor cd_S20806C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S20806C2, buf);
    S20806C2 *dp, &lv = *(dp=new (buf) S20806C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S20806C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20806C2)");
    check_base_class_offset(lv, (S20806C3_nt*), ABISELECT(40,20), "S20806C2");
    check_base_class_offset(lv, (S20806C3_nt*)(S20806C4*), ABISELECT(40,20), "S20806C2");
    check_base_class_offset(lv, (S20806C4*), ABISELECT(56,28), "S20806C2");
    check_field_offset(lv, s20806c2f0, ABISELECT(8,4), "S20806C2.s20806c2f0");
    check_field_offset(lv, s20806c2f1, ABISELECT(16,8), "S20806C2.s20806c2f1");
    check_field_offset(lv, s20806c2f2, ABISELECT(24,12), "S20806C2.s20806c2f2");
    check_field_offset(lv, s20806c2f3, ABISELECT(32,16), "S20806C2.s20806c2f3");
    test_class_info(&lv, &cd_S20806C2);
    dp->~S20806C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20806C2(Test_S20806C2, "S20806C2", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S20806C2C1Ev();
extern void _ZN8S20806C2D2Ev();
Name_Map name_map_S20806C2[] = {
  NSPAIR(_ZN8S20806C2C1Ev),
  NSPAIR(_ZN8S20806C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20806C3_nt;
extern VTBL_ENTRY _ZTI11S20806C3_nt[];
extern  VTBL_ENTRY _ZTV11S20806C3_nt[];
extern Class_Descriptor cd_S20806C4;
extern VTBL_ENTRY _ZTI8S20806C4[];
extern  VTBL_ENTRY _ZTV8S20806C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20806C4[];
static Base_Class bases_S20806C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20806C3_nt,    ABISELECT(40,20), //bcp->offset
    8, //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_S20806C4,    ABISELECT(56,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //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 _ZTI8S20806C2[];
extern void _ZN8S20806C2D1Ev();
extern void _ZN8S20806C2D0Ev();
extern void _ZN8S20806C22v6Ev();
extern void _ZN8S20806C22v7Ev();
extern void _ZN11S20806C3_nt2v2Ev();
extern void _ZN8S20806C42v3Ev();
extern void _ZN8S20806C42v4Ev();
extern void _ZN8S20806C42v5Ev();
static  VTBL_ENTRY vtc_S20806C2[] = {
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20806C2[0]),
  (VTBL_ENTRY)&_ZN8S20806C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20806C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20806C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20806C22v7Ev,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20806C2[0]),
  (VTBL_ENTRY)&_ZN11S20806C3_nt2v2Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20806C2[0]),
  (VTBL_ENTRY)&_ZN8S20806C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v5Ev,
};
extern VTBL_ENTRY _ZTV8S20806C2[];
extern void _ZN8S20806C42v3Ev();
extern void _ZN8S20806C42v4Ev();
extern void _ZN8S20806C42v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20806C4__8S20806C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20806C4[0]),
  (VTBL_ENTRY)&_ZN8S20806C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v5Ev,
};
extern void _ZN11S20806C3_nt2v2Ev();
static  VTBL_ENTRY _tg__ZTV11S20806C3_nt__8S20806C4__8S20806C2[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20806C4[0]),
  (VTBL_ENTRY)&_ZN11S20806C3_nt2v2Ev,
};
static  VTT_ENTRY vtt_S20806C2[] = {
  {&(_ZTV8S20806C2[4]),  4,21},
  {&(_ZTV8S20806C2[11]),  11,21},
  {&(_ZTV8S20806C2[18]),  18,21},
  {&(_tg__ZTV8S20806C4__8S20806C2[3]),  3,6},
  {&(_tg__ZTV11S20806C3_nt__8S20806C4__8S20806C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20806C2[];
extern  VTBL_ENTRY _ZTV8S20806C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20806C2[];
Class_Descriptor cd_S20806C2 = {  "S20806C2", // class name
  bases_S20806C2, 2,
  &(vtc_S20806C2[0]), // expected_vtbl_contents
  &(vtt_S20806C2[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S20806C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20806C2),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20806C2),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  S20806C1  : virtual S20806C2 , S20806C3_nt {
  long s20806c1f0[9];
  virtual void  v1(); // _ZN8S20806C12v1Ev
  ~S20806C1(); // tgen
  S20806C1(); // tgen
};
//SIG(1 S20806C1) C1{ VBC2{ VBC3{ v2 Fp} VBC4{ VBC3 v3 v4 v5 FL Fc} vd v6 v7 Fl Fp Fl Fp} BC3 v1 Fl[9]}


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

static void Test_S20806C1()
{
  extern Class_Descriptor cd_S20806C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,23)];
    init_test(&cd_S20806C1, buf);
    S20806C1 *dp, &lv = *(dp=new (buf) S20806C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,88), "sizeof(S20806C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20806C1)");
    check_base_class_offset(lv, (S20806C3_nt*)(S20806C2*), ABISELECT(128,64), "S20806C1");
    check_base_class_offset(lv, (S20806C3_nt*)(S20806C4*), ABISELECT(128,64), "S20806C1");
    check_base_class_offset(lv, (S20806C4*)(S20806C2*), ABISELECT(144,72), "S20806C1");
    check_base_class_offset(lv, (S20806C2*), ABISELECT(88,44), "S20806C1");
    /*is_ambiguous_... S20806C1::S20806C3_nt */ AMB_check_base_class_offset(lv, (S20806C3_nt*), 0, "S20806C1");
    check_field_offset(lv, s20806c1f0, ABISELECT(16,8), "S20806C1.s20806c1f0");
    test_class_info(&lv, &cd_S20806C1);
    dp->~S20806C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20806C1(Test_S20806C1, "S20806C1", ABISELECT(168,88));

#else // __cplusplus

extern void _ZN8S20806C1C1Ev();
extern void _ZN8S20806C1D1Ev();
Name_Map name_map_S20806C1[] = {
  NSPAIR(_ZN8S20806C1C1Ev),
  NSPAIR(_ZN8S20806C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20806C3_nt;
extern VTBL_ENTRY _ZTI11S20806C3_nt[];
extern  VTBL_ENTRY _ZTV11S20806C3_nt[];
extern Class_Descriptor cd_S20806C4;
extern VTBL_ENTRY _ZTI8S20806C4[];
extern  VTBL_ENTRY _ZTV8S20806C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20806C4[];
extern Class_Descriptor cd_S20806C2;
extern VTBL_ENTRY _ZTI8S20806C2[];
extern  VTBL_ENTRY _ZTV8S20806C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20806C2[];
extern Class_Descriptor cd_S20806C3_nt;
extern VTBL_ENTRY _ZTI11S20806C3_nt[];
extern  VTBL_ENTRY _ZTV11S20806C3_nt[];
static Base_Class bases_S20806C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20806C3_nt,    ABISELECT(128,64), //bcp->offset
    20, //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_S20806C4,    ABISELECT(144,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20806C2,    ABISELECT(88,44), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20806C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20806C1[];
extern void _ZN11S20806C3_nt2v2Ev();
extern void _ZN8S20806C12v1Ev();
extern void _ZN8S20806C1D1Ev();
extern void _ZN8S20806C1D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S20806C1D1Ev,_ZTv0_n20_N8S20806C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S20806C1D1Ev,_ZThn44_N8S20806C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20806C1D0Ev,_ZTv0_n20_N8S20806C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S20806C1D0Ev,_ZThn44_N8S20806C1D0Ev)() __attribute__((weak));
extern void _ZN8S20806C22v6Ev();
extern void _ZN8S20806C22v7Ev();
extern void _ZN11S20806C3_nt2v2Ev();
extern void _ZN8S20806C42v3Ev();
extern void _ZN8S20806C42v4Ev();
extern void _ZN8S20806C42v5Ev();
static  VTBL_ENTRY vtc_S20806C1[] = {
  ABISELECT(144,72),
  ABISELECT(128,64),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20806C1[0]),
  (VTBL_ENTRY)&_ZN11S20806C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN8S20806C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20806C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20806C1D0Ev,
  0,
  0,
  ABISELECT(-88,-44),
  ABISELECT(56,28),
  ABISELECT(40,20),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20806C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20806C1D1Ev,_ZTv0_n20_N8S20806C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20806C1D0Ev,_ZTv0_n20_N8S20806C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20806C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20806C22v7Ev,
  0,
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20806C1[0]),
  (VTBL_ENTRY)&_ZN11S20806C3_nt2v2Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S20806C1[0]),
  (VTBL_ENTRY)&_ZN8S20806C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v5Ev,
};
extern VTBL_ENTRY _ZTV8S20806C1[];
extern void _ZN8S20806C2D1Ev();
extern void _ZN8S20806C2D0Ev();
extern void _ZN8S20806C22v6Ev();
extern void _ZN8S20806C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20806C2__8S20806C1[] = {
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20806C2[0]),
  (VTBL_ENTRY)&_ZN8S20806C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20806C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20806C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20806C22v7Ev,
};
extern void _ZN11S20806C3_nt2v2Ev();
static  VTBL_ENTRY _tg__ZTV11S20806C3_nt__8S20806C2__8S20806C1[] = {
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20806C2[0]),
  (VTBL_ENTRY)&_ZN11S20806C3_nt2v2Ev,
};
extern void _ZN8S20806C42v3Ev();
extern void _ZN8S20806C42v4Ev();
extern void _ZN8S20806C42v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20806C4__8S20806C2__8S20806C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20806C2[0]),
  (VTBL_ENTRY)&_ZN8S20806C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v5Ev,
};
extern void _ZN8S20806C42v3Ev();
extern void _ZN8S20806C42v4Ev();
extern void _ZN8S20806C42v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20806C4__8S20806C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20806C4[0]),
  (VTBL_ENTRY)&_ZN8S20806C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20806C42v5Ev,
};
extern void _ZN11S20806C3_nt2v2Ev();
static  VTBL_ENTRY _tg__ZTV11S20806C3_nt__8S20806C4__8S20806C1[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20806C4[0]),
  (VTBL_ENTRY)&_ZN11S20806C3_nt2v2Ev,
};
static  VTT_ENTRY vtt_S20806C1[] = {
  {&(_ZTV8S20806C1[5]),  5,33},
  {&(_ZTV8S20806C1[16]),  16,33},
  {&(_ZTV8S20806C1[23]),  23,33},
  {&(_ZTV8S20806C1[30]),  30,33},
  {&(_tg__ZTV8S20806C2__8S20806C1[4]),  4,8},
  {&(_tg__ZTV11S20806C3_nt__8S20806C2__8S20806C1[3]),  3,4},
  {&(_tg__ZTV8S20806C4__8S20806C2__8S20806C1[6]),  6,9},
  {&(_tg__ZTV8S20806C4__8S20806C1[3]),  3,6},
  {&(_tg__ZTV11S20806C3_nt__8S20806C4__8S20806C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20806C1[];
extern  VTBL_ENTRY _ZTV8S20806C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20806C1[];
static VTBL_ENTRY alt_thunk_names204[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20806C1D0Ev,_ZTv0_n20_N8S20806C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20806C1D0Ev,_ZThn44_N8S20806C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20806C1D1Ev,_ZTv0_n20_N8S20806C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20806C1D1Ev,_ZThn44_N8S20806C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20806C1 = {  "S20806C1", // class name
  bases_S20806C1, 4,
  &(vtc_S20806C1[0]), // expected_vtbl_contents
  &(vtt_S20806C1[0]), // expected_vtt_contents
  ABISELECT(168,88), // object size
  NSPAIRA(_ZTI8S20806C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20806C1),33, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20806C1),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names204,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20807C3  {
  void *s20807c3f0;
  virtual void  v2(); // _ZN8S20807C32v2Ev
  ~S20807C3(); // tgen
  S20807C3(); // tgen
};
//SIG(-1 S20807C3) C1{ v1 Fp}


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

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

#else // __cplusplus

extern void _ZN8S20807C3C1Ev();
extern void _ZN8S20807C3D1Ev();
Name_Map name_map_S20807C3[] = {
  NSPAIR(_ZN8S20807C3C1Ev),
  NSPAIR(_ZN8S20807C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20807C3[];
extern void _ZN8S20807C32v2Ev();
static  VTBL_ENTRY vtc_S20807C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20807C3[0]),
  (VTBL_ENTRY)&_ZN8S20807C32v2Ev,
};
extern VTBL_ENTRY _ZTI8S20807C3[];
extern  VTBL_ENTRY _ZTV8S20807C3[];
Class_Descriptor cd_S20807C3 = {  "S20807C3", // class name
  0,0,//no base classes
  &(vtc_S20807C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20807C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20807C3),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  S20807C4  : virtual S20807C3 {
  __tsi64 s20807c4f0;
  char s20807c4f1;
  virtual void  v3(); // _ZN8S20807C42v3Ev
  virtual void  v4(); // _ZN8S20807C42v4Ev
  virtual void  v5(); // _ZN8S20807C42v5Ev
  ~S20807C4(); // tgen
  S20807C4(); // tgen
};
//SIG(-1 S20807C4) C1{ VBC2{ v4 Fp} v1 v2 v3 FL Fc}


void  S20807C4 ::v3(){vfunc_called(this, "_ZN8S20807C42v3Ev");}
void  S20807C4 ::v4(){vfunc_called(this, "_ZN8S20807C42v4Ev");}
void  S20807C4 ::v5(){vfunc_called(this, "_ZN8S20807C42v5Ev");}
S20807C4 ::~S20807C4(){ note_dtor("S20807C4", this);} // tgen
S20807C4 ::S20807C4(){ note_ctor("S20807C4", this);} // tgen

static void Test_S20807C4()
{
  extern Class_Descriptor cd_S20807C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20807C4, buf);
    S20807C4 *dp, &lv = *(dp=new (buf) S20807C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20807C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20807C4)");
    check_base_class_offset(lv, (S20807C3*), ABISELECT(24,16), "S20807C4");
    check_field_offset(lv, s20807c4f0, ABISELECT(8,4), "S20807C4.s20807c4f0");
    check_field_offset(lv, s20807c4f1, ABISELECT(16,12), "S20807C4.s20807c4f1");
    test_class_info(&lv, &cd_S20807C4);
    dp->~S20807C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20807C4(Test_S20807C4, "S20807C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20807C4C1Ev();
extern void _ZN8S20807C4D1Ev();
Name_Map name_map_S20807C4[] = {
  NSPAIR(_ZN8S20807C4C1Ev),
  NSPAIR(_ZN8S20807C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20807C3;
extern VTBL_ENTRY _ZTI8S20807C3[];
extern  VTBL_ENTRY _ZTV8S20807C3[];
static Base_Class bases_S20807C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20807C3,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20807C4[];
extern void _ZN8S20807C42v3Ev();
extern void _ZN8S20807C42v4Ev();
extern void _ZN8S20807C42v5Ev();
extern void _ZN8S20807C32v2Ev();
static  VTBL_ENTRY vtc_S20807C4[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20807C4[0]),
  (VTBL_ENTRY)&_ZN8S20807C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v5Ev,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20807C4[0]),
  (VTBL_ENTRY)&_ZN8S20807C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S20807C4[];
static  VTT_ENTRY vtt_S20807C4[] = {
  {&(_ZTV8S20807C4[3]),  3,10},
  {&(_ZTV8S20807C4[9]),  9,10},
};
extern VTBL_ENTRY _ZTI8S20807C4[];
extern  VTBL_ENTRY _ZTV8S20807C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20807C4[];
Class_Descriptor cd_S20807C4 = {  "S20807C4", // class name
  bases_S20807C4, 1,
  &(vtc_S20807C4[0]), // expected_vtbl_contents
  &(vtt_S20807C4[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20807C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20807C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20807C4),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  S20807C2  : virtual S20807C3 , virtual S20807C4 {
  __tsi64 s20807c2f0;
  void *s20807c2f1;
  __tsi64 s20807c2f2;
  void *s20807c2f3;
  virtual  ~S20807C2(); // _ZN8S20807C2D2Ev
  virtual void  v6(); // _ZN8S20807C22v6Ev
  virtual void  v7(); // _ZN8S20807C22v7Ev
  S20807C2(); // tgen
};
//SIG(-1 S20807C2) C1{ VBC2{ v3 Fp} VBC3{ VBC2 v4 v5 v6 FL Fc} vd v1 v2 FL Fp FL Fp}


 S20807C2 ::~S20807C2(){ note_dtor("S20807C2", this);}
void  S20807C2 ::v6(){vfunc_called(this, "_ZN8S20807C22v6Ev");}
void  S20807C2 ::v7(){vfunc_called(this, "_ZN8S20807C22v7Ev");}
S20807C2 ::S20807C2(){ note_ctor("S20807C2", this);} // tgen

static void Test_S20807C2()
{
  extern Class_Descriptor cd_S20807C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S20807C2, buf);
    S20807C2 *dp, &lv = *(dp=new (buf) S20807C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S20807C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20807C2)");
    check_base_class_offset(lv, (S20807C3*), ABISELECT(40,28), "S20807C2");
    check_base_class_offset(lv, (S20807C3*)(S20807C4*), ABISELECT(40,28), "S20807C2");
    check_base_class_offset(lv, (S20807C4*), ABISELECT(56,36), "S20807C2");
    check_field_offset(lv, s20807c2f0, ABISELECT(8,4), "S20807C2.s20807c2f0");
    check_field_offset(lv, s20807c2f1, ABISELECT(16,12), "S20807C2.s20807c2f1");
    check_field_offset(lv, s20807c2f2, ABISELECT(24,16), "S20807C2.s20807c2f2");
    check_field_offset(lv, s20807c2f3, ABISELECT(32,24), "S20807C2.s20807c2f3");
    test_class_info(&lv, &cd_S20807C2);
    dp->~S20807C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20807C2(Test_S20807C2, "S20807C2", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN8S20807C2C1Ev();
extern void _ZN8S20807C2D2Ev();
Name_Map name_map_S20807C2[] = {
  NSPAIR(_ZN8S20807C2C1Ev),
  NSPAIR(_ZN8S20807C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20807C3;
extern VTBL_ENTRY _ZTI8S20807C3[];
extern  VTBL_ENTRY _ZTV8S20807C3[];
extern Class_Descriptor cd_S20807C4;
extern VTBL_ENTRY _ZTI8S20807C4[];
extern  VTBL_ENTRY _ZTV8S20807C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20807C4[];
static Base_Class bases_S20807C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20807C3,    ABISELECT(40,28), //bcp->offset
    8, //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_S20807C4,    ABISELECT(56,36), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //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 _ZTI8S20807C2[];
extern void _ZN8S20807C2D1Ev();
extern void _ZN8S20807C2D0Ev();
extern void _ZN8S20807C22v6Ev();
extern void _ZN8S20807C22v7Ev();
extern void _ZN8S20807C32v2Ev();
extern void _ZN8S20807C42v3Ev();
extern void _ZN8S20807C42v4Ev();
extern void _ZN8S20807C42v5Ev();
static  VTBL_ENTRY vtc_S20807C2[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20807C2[0]),
  (VTBL_ENTRY)&_ZN8S20807C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20807C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20807C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20807C22v7Ev,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20807C2[0]),
  (VTBL_ENTRY)&_ZN8S20807C32v2Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20807C2[0]),
  (VTBL_ENTRY)&_ZN8S20807C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v5Ev,
};
extern VTBL_ENTRY _ZTV8S20807C2[];
extern void _ZN8S20807C42v3Ev();
extern void _ZN8S20807C42v4Ev();
extern void _ZN8S20807C42v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20807C4__8S20807C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20807C4[0]),
  (VTBL_ENTRY)&_ZN8S20807C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v5Ev,
};
extern void _ZN8S20807C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20807C3__8S20807C4__8S20807C2[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20807C4[0]),
  (VTBL_ENTRY)&_ZN8S20807C32v2Ev,
};
static  VTT_ENTRY vtt_S20807C2[] = {
  {&(_ZTV8S20807C2[4]),  4,21},
  {&(_ZTV8S20807C2[11]),  11,21},
  {&(_ZTV8S20807C2[18]),  18,21},
  {&(_tg__ZTV8S20807C4__8S20807C2[3]),  3,6},
  {&(_tg__ZTV8S20807C3__8S20807C4__8S20807C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20807C2[];
extern  VTBL_ENTRY _ZTV8S20807C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20807C2[];
Class_Descriptor cd_S20807C2 = {  "S20807C2", // class name
  bases_S20807C2, 2,
  &(vtc_S20807C2[0]), // expected_vtbl_contents
  &(vtt_S20807C2[0]), // expected_vtt_contents
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI8S20807C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20807C2),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20807C2),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  S20807C1  : virtual S20807C2 , S20807C3 {
  __tsi64 s20807c1f0[9];
  virtual void  v1(); // _ZN8S20807C12v1Ev
  ~S20807C1(); // tgen
  S20807C1(); // tgen
};
//SIG(1 S20807C1) C1{ VBC2{ VBC3{ v2 Fp} VBC4{ VBC3 v3 v4 v5 FL Fc} vd v6 v7 FL Fp FL Fp} BC3 v1 FL[9]}


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

static void Test_S20807C1()
{
  extern Class_Descriptor cd_S20807C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,34)];
    init_test(&cd_S20807C1, buf);
    S20807C1 *dp, &lv = *(dp=new (buf) S20807C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,132), "sizeof(S20807C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20807C1)");
    check_base_class_offset(lv, (S20807C3*)(S20807C2*), ABISELECT(128,108), "S20807C1");
    check_base_class_offset(lv, (S20807C3*)(S20807C4*), ABISELECT(128,108), "S20807C1");
    check_base_class_offset(lv, (S20807C4*)(S20807C2*), ABISELECT(144,116), "S20807C1");
    check_base_class_offset(lv, (S20807C2*), ABISELECT(88,80), "S20807C1");
    /*is_ambiguous_... S20807C1::S20807C3 */ AMB_check_base_class_offset(lv, (S20807C3*), 0, "S20807C1");
    check_field_offset(lv, s20807c1f0, ABISELECT(16,8), "S20807C1.s20807c1f0");
    test_class_info(&lv, &cd_S20807C1);
    dp->~S20807C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20807C1(Test_S20807C1, "S20807C1", ABISELECT(168,132));

#else // __cplusplus

extern void _ZN8S20807C1C1Ev();
extern void _ZN8S20807C1D1Ev();
Name_Map name_map_S20807C1[] = {
  NSPAIR(_ZN8S20807C1C1Ev),
  NSPAIR(_ZN8S20807C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20807C3;
extern VTBL_ENTRY _ZTI8S20807C3[];
extern  VTBL_ENTRY _ZTV8S20807C3[];
extern Class_Descriptor cd_S20807C4;
extern VTBL_ENTRY _ZTI8S20807C4[];
extern  VTBL_ENTRY _ZTV8S20807C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20807C4[];
extern Class_Descriptor cd_S20807C2;
extern VTBL_ENTRY _ZTI8S20807C2[];
extern  VTBL_ENTRY _ZTV8S20807C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20807C2[];
extern Class_Descriptor cd_S20807C3;
extern VTBL_ENTRY _ZTI8S20807C3[];
extern  VTBL_ENTRY _ZTV8S20807C3[];
static Base_Class bases_S20807C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20807C3,    ABISELECT(128,108), //bcp->offset
    20, //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_S20807C4,    ABISELECT(144,116), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20807C2,    ABISELECT(88,80), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20807C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20807C1[];
extern void _ZN8S20807C32v2Ev();
extern void _ZN8S20807C12v1Ev();
extern void _ZN8S20807C1D1Ev();
extern void _ZN8S20807C1D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S20807C1D1Ev,_ZTv0_n20_N8S20807C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S20807C1D1Ev,_ZThn80_N8S20807C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20807C1D0Ev,_ZTv0_n20_N8S20807C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S20807C1D0Ev,_ZThn80_N8S20807C1D0Ev)() __attribute__((weak));
extern void _ZN8S20807C22v6Ev();
extern void _ZN8S20807C22v7Ev();
extern void _ZN8S20807C32v2Ev();
extern void _ZN8S20807C42v3Ev();
extern void _ZN8S20807C42v4Ev();
extern void _ZN8S20807C42v5Ev();
static  VTBL_ENTRY vtc_S20807C1[] = {
  ABISELECT(144,116),
  ABISELECT(128,108),
  ABISELECT(88,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20807C1[0]),
  (VTBL_ENTRY)&_ZN8S20807C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20807C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20807C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20807C1D0Ev,
  0,
  0,
  ABISELECT(-88,-80),
  ABISELECT(56,36),
  ABISELECT(40,28),
  ABISELECT(-88,-80),
  (VTBL_ENTRY)&(_ZTI8S20807C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20807C1D1Ev,_ZTv0_n20_N8S20807C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20807C1D0Ev,_ZTv0_n20_N8S20807C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20807C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20807C22v7Ev,
  0,
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI8S20807C1[0]),
  (VTBL_ENTRY)&_ZN8S20807C32v2Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-144,-116),
  (VTBL_ENTRY)&(_ZTI8S20807C1[0]),
  (VTBL_ENTRY)&_ZN8S20807C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v5Ev,
};
extern VTBL_ENTRY _ZTV8S20807C1[];
extern void _ZN8S20807C2D1Ev();
extern void _ZN8S20807C2D0Ev();
extern void _ZN8S20807C22v6Ev();
extern void _ZN8S20807C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20807C2__8S20807C1[] = {
  ABISELECT(56,36),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20807C2[0]),
  (VTBL_ENTRY)&_ZN8S20807C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20807C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20807C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20807C22v7Ev,
};
extern void _ZN8S20807C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20807C3__8S20807C2__8S20807C1[] = {
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20807C2[0]),
  (VTBL_ENTRY)&_ZN8S20807C32v2Ev,
};
extern void _ZN8S20807C42v3Ev();
extern void _ZN8S20807C42v4Ev();
extern void _ZN8S20807C42v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20807C4__8S20807C2__8S20807C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20807C2[0]),
  (VTBL_ENTRY)&_ZN8S20807C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v5Ev,
};
extern void _ZN8S20807C42v3Ev();
extern void _ZN8S20807C42v4Ev();
extern void _ZN8S20807C42v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20807C4__8S20807C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20807C4[0]),
  (VTBL_ENTRY)&_ZN8S20807C42v3Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20807C42v5Ev,
};
extern void _ZN8S20807C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20807C3__8S20807C4__8S20807C1[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20807C4[0]),
  (VTBL_ENTRY)&_ZN8S20807C32v2Ev,
};
static  VTT_ENTRY vtt_S20807C1[] = {
  {&(_ZTV8S20807C1[5]),  5,33},
  {&(_ZTV8S20807C1[16]),  16,33},
  {&(_ZTV8S20807C1[23]),  23,33},
  {&(_ZTV8S20807C1[30]),  30,33},
  {&(_tg__ZTV8S20807C2__8S20807C1[4]),  4,8},
  {&(_tg__ZTV8S20807C3__8S20807C2__8S20807C1[3]),  3,4},
  {&(_tg__ZTV8S20807C4__8S20807C2__8S20807C1[6]),  6,9},
  {&(_tg__ZTV8S20807C4__8S20807C1[3]),  3,6},
  {&(_tg__ZTV8S20807C3__8S20807C4__8S20807C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20807C1[];
extern  VTBL_ENTRY _ZTV8S20807C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20807C1[];
static VTBL_ENTRY alt_thunk_names205[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20807C1D0Ev,_ZTv0_n20_N8S20807C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20807C1D0Ev,_ZThn80_N8S20807C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20807C1D1Ev,_ZTv0_n20_N8S20807C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20807C1D1Ev,_ZThn80_N8S20807C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20807C1 = {  "S20807C1", // class name
  bases_S20807C1, 4,
  &(vtc_S20807C1[0]), // expected_vtbl_contents
  &(vtt_S20807C1[0]), // expected_vtt_contents
  ABISELECT(168,132), // object size
  NSPAIRA(_ZTI8S20807C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20807C1),33, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20807C1),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names205,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10307C2_nt  {
  virtual  ~S10307C2_nt(); // _ZN11S10307C2_ntD1Ev
  virtual void  v9(); // _ZN11S10307C2_nt2v9Ev
  virtual void  v10(); // _ZN11S10307C2_nt3v10Ev
  virtual void  v11(); // _ZN11S10307C2_nt3v11Ev
  virtual void  v12(); // _ZN11S10307C2_nt3v12Ev
  virtual void  v13(); // _ZN11S10307C2_nt3v13Ev
  virtual void  v14(); // _ZN11S10307C2_nt3v14Ev
  virtual void  v15(); // _ZN11S10307C2_nt3v15Ev
  virtual void  v16(); // _ZN11S10307C2_nt3v16Ev
  virtual void  v17(); // _ZN11S10307C2_nt3v17Ev
  virtual void  v18(); // _ZN11S10307C2_nt3v18Ev
  S10307C2_nt(); // tgen
};
//SIG(-1 S10307C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


 S10307C2_nt ::~S10307C2_nt(){ note_dtor("S10307C2_nt", this);}
void  S10307C2_nt ::v9(){vfunc_called(this, "_ZN11S10307C2_nt2v9Ev");}
void  S10307C2_nt ::v10(){vfunc_called(this, "_ZN11S10307C2_nt3v10Ev");}
void  S10307C2_nt ::v11(){vfunc_called(this, "_ZN11S10307C2_nt3v11Ev");}
void  S10307C2_nt ::v12(){vfunc_called(this, "_ZN11S10307C2_nt3v12Ev");}
void  S10307C2_nt ::v13(){vfunc_called(this, "_ZN11S10307C2_nt3v13Ev");}
void  S10307C2_nt ::v14(){vfunc_called(this, "_ZN11S10307C2_nt3v14Ev");}
void  S10307C2_nt ::v15(){vfunc_called(this, "_ZN11S10307C2_nt3v15Ev");}
void  S10307C2_nt ::v16(){vfunc_called(this, "_ZN11S10307C2_nt3v16Ev");}
void  S10307C2_nt ::v17(){vfunc_called(this, "_ZN11S10307C2_nt3v17Ev");}
void  S10307C2_nt ::v18(){vfunc_called(this, "_ZN11S10307C2_nt3v18Ev");}
S10307C2_nt ::S10307C2_nt(){ note_ctor("S10307C2_nt", this);} // tgen

//skip512 S10307C2_nt

#else // __cplusplus

extern void _ZN11S10307C2_ntC1Ev();
extern void _ZN11S10307C2_ntD1Ev();
Name_Map name_map_S10307C2_nt[] = {
  NSPAIR(_ZN11S10307C2_ntC1Ev),
  NSPAIR(_ZN11S10307C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10307C2_nt[];
extern void _ZN11S10307C2_ntD1Ev();
extern void _ZN11S10307C2_ntD0Ev();
extern void _ZN11S10307C2_nt2v9Ev();
extern void _ZN11S10307C2_nt3v10Ev();
extern void _ZN11S10307C2_nt3v11Ev();
extern void _ZN11S10307C2_nt3v12Ev();
extern void _ZN11S10307C2_nt3v13Ev();
extern void _ZN11S10307C2_nt3v14Ev();
extern void _ZN11S10307C2_nt3v15Ev();
extern void _ZN11S10307C2_nt3v16Ev();
extern void _ZN11S10307C2_nt3v17Ev();
extern void _ZN11S10307C2_nt3v18Ev();
static  VTBL_ENTRY vtc_S10307C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10307C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10307C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI11S10307C2_nt[];
VTBL_ENTRY *P__ZTI11S10307C2_nt = _ZTI11S10307C2_nt; 
extern  VTBL_ENTRY _ZTV11S10307C2_nt[];
Class_Descriptor cd_S10307C2_nt = {  "S10307C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10307C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S10307C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10307C2_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10307C1  : S10307C2_nt {
  virtual  ~S10307C1(); // _ZN8S10307C1D1Ev
  virtual void  v1(); // _ZN8S10307C12v1Ev
  virtual void  v2(); // _ZN8S10307C12v2Ev
  virtual void  v3(); // _ZN8S10307C12v3Ev
  virtual void  v4(); // _ZN8S10307C12v4Ev
  virtual void  v5(); // _ZN8S10307C12v5Ev
  virtual void  v6(); // _ZN8S10307C12v6Ev
  virtual void  v7(); // _ZN8S10307C12v7Ev
  virtual void  v8(); // _ZN8S10307C12v8Ev
  S10307C1(); // tgen
};
//SIG(1 S10307C1) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S10307C1 ::~S10307C1(){ note_dtor("S10307C1", this);}
void  S10307C1 ::v1(){vfunc_called(this, "_ZN8S10307C12v1Ev");}
void  S10307C1 ::v2(){vfunc_called(this, "_ZN8S10307C12v2Ev");}
void  S10307C1 ::v3(){vfunc_called(this, "_ZN8S10307C12v3Ev");}
void  S10307C1 ::v4(){vfunc_called(this, "_ZN8S10307C12v4Ev");}
void  S10307C1 ::v5(){vfunc_called(this, "_ZN8S10307C12v5Ev");}
void  S10307C1 ::v6(){vfunc_called(this, "_ZN8S10307C12v6Ev");}
void  S10307C1 ::v7(){vfunc_called(this, "_ZN8S10307C12v7Ev");}
void  S10307C1 ::v8(){vfunc_called(this, "_ZN8S10307C12v8Ev");}
S10307C1 ::S10307C1(){ note_ctor("S10307C1", this);} // tgen

static void Test_S10307C1()
{
  extern Class_Descriptor cd_S10307C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S10307C1, buf);
    S10307C1 *dp, &lv = *(dp=new (buf) S10307C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S10307C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10307C1)");
    check_base_class_offset(lv, (S10307C2_nt*), 0, "S10307C1");
    test_class_info(&lv, &cd_S10307C1);
    dp->~S10307C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10307C1(Test_S10307C1, "S10307C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S10307C1C1Ev();
extern void _ZN8S10307C1D1Ev();
Name_Map name_map_S10307C1[] = {
  NSPAIR(_ZN8S10307C1C1Ev),
  NSPAIR(_ZN8S10307C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10307C2_nt;
extern VTBL_ENTRY _ZTI11S10307C2_nt[];
extern  VTBL_ENTRY _ZTV11S10307C2_nt[];
static Base_Class bases_S10307C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10307C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10307C1[];
extern void _ZN8S10307C1D1Ev();
extern void _ZN8S10307C1D0Ev();
extern void _ZN11S10307C2_nt2v9Ev();
extern void _ZN11S10307C2_nt3v10Ev();
extern void _ZN11S10307C2_nt3v11Ev();
extern void _ZN11S10307C2_nt3v12Ev();
extern void _ZN11S10307C2_nt3v13Ev();
extern void _ZN11S10307C2_nt3v14Ev();
extern void _ZN11S10307C2_nt3v15Ev();
extern void _ZN11S10307C2_nt3v16Ev();
extern void _ZN11S10307C2_nt3v17Ev();
extern void _ZN11S10307C2_nt3v18Ev();
extern void _ZN8S10307C12v1Ev();
extern void _ZN8S10307C12v2Ev();
extern void _ZN8S10307C12v3Ev();
extern void _ZN8S10307C12v4Ev();
extern void _ZN8S10307C12v5Ev();
extern void _ZN8S10307C12v6Ev();
extern void _ZN8S10307C12v7Ev();
extern void _ZN8S10307C12v8Ev();
static  VTBL_ENTRY vtc_S10307C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10307C1[0]),
  (VTBL_ENTRY)&_ZN8S10307C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10307C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S10307C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S10307C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10307C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10307C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10307C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10307C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10307C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10307C12v7Ev,
  (VTBL_ENTRY)&_ZN8S10307C12v8Ev,
};
extern VTBL_ENTRY _ZTI8S10307C1[];
extern  VTBL_ENTRY _ZTV8S10307C1[];
Class_Descriptor cd_S10307C1 = {  "S10307C1", // class name
  bases_S10307C1, 1,
  &(vtc_S10307C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10307C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10307C1),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3965C3_nt  {
  __tsi64 s3965c3f0;
  void  mf3965c3(); // _ZN10S3965C3_nt8mf3965c3Ev
  virtual  ~S3965C3_nt(); // _ZN10S3965C3_ntD1Ev
  S3965C3_nt(); // tgen
};
//SIG(-1 S3965C3_nt) C1{ vd m FL}


void  S3965C3_nt ::mf3965c3(){}
 S3965C3_nt ::~S3965C3_nt(){ note_dtor("S3965C3_nt", this);}
S3965C3_nt ::S3965C3_nt(){ note_ctor("S3965C3_nt", this);} // tgen

//skip512 S3965C3_nt

#else // __cplusplus

extern void _ZN10S3965C3_ntC1Ev();
extern void _ZN10S3965C3_ntD1Ev();
Name_Map name_map_S3965C3_nt[] = {
  NSPAIR(_ZN10S3965C3_ntC1Ev),
  NSPAIR(_ZN10S3965C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3965C3_nt[];
extern void _ZN10S3965C3_ntD1Ev();
extern void _ZN10S3965C3_ntD0Ev();
static  VTBL_ENTRY vtc_S3965C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3965C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3965C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3965C3_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3965C3_nt[];
VTBL_ENTRY *P__ZTI10S3965C3_nt = _ZTI10S3965C3_nt; 
extern  VTBL_ENTRY _ZTV10S3965C3_nt[];
Class_Descriptor cd_S3965C3_nt = {  "S3965C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3965C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S3965C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3965C3_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  S3965C2  : S3965C3_nt {
  virtual  ~S3965C2(); // _ZN7S3965C2D1Ev
  virtual void  v3(); // _ZN7S3965C22v3Ev
  virtual void  v4(); // _ZN7S3965C22v4Ev
  S3965C2(); // tgen
};
//SIG(-1 S3965C2) C1{ BC2{ vd m FL} vd v1 v2}


 S3965C2 ::~S3965C2(){ note_dtor("S3965C2", this);}
void  S3965C2 ::v3(){vfunc_called(this, "_ZN7S3965C22v3Ev");}
void  S3965C2 ::v4(){vfunc_called(this, "_ZN7S3965C22v4Ev");}
S3965C2 ::S3965C2(){ note_ctor("S3965C2", this);} // tgen

static void Test_S3965C2()
{
  extern Class_Descriptor cd_S3965C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3965C2, buf);
    S3965C2 *dp, &lv = *(dp=new (buf) S3965C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3965C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3965C2)");
    check_base_class_offset(lv, (S3965C3_nt*), 0, "S3965C2");
    test_class_info(&lv, &cd_S3965C2);
    dp->~S3965C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3965C2(Test_S3965C2, "S3965C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3965C2C1Ev();
extern void _ZN7S3965C2D1Ev();
Name_Map name_map_S3965C2[] = {
  NSPAIR(_ZN7S3965C2C1Ev),
  NSPAIR(_ZN7S3965C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3965C3_nt;
extern VTBL_ENTRY _ZTI10S3965C3_nt[];
extern  VTBL_ENTRY _ZTV10S3965C3_nt[];
static Base_Class bases_S3965C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3965C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3965C2[];
extern void _ZN7S3965C2D1Ev();
extern void _ZN7S3965C2D0Ev();
extern void _ZN7S3965C22v3Ev();
extern void _ZN7S3965C22v4Ev();
static  VTBL_ENTRY vtc_S3965C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3965C2[0]),
  (VTBL_ENTRY)&_ZN7S3965C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3965C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3965C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3965C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3965C2[];
extern  VTBL_ENTRY _ZTV7S3965C2[];
Class_Descriptor cd_S3965C2 = {  "S3965C2", // class name
  bases_S3965C2, 1,
  &(vtc_S3965C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3965C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3965C2),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  S3965C4  {
  char s3965c4f0[3];
  int s3965c4f1[2];
  void *s3965c4f2;
  int s3965c4f3;
  void *s3965c4f4;
  char s3965c4f5;
  void *s3965c4f6;
  short s3965c4f7;
};
//SIG(-1 S3965C4) C1{ Fc[3] Fi[2] Fp Fi Fp Fc Fp Fs}



static void Test_S3965C4()
{
  {
    init_simple_test("S3965C4");
    S3965C4 lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S3965C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3965C4)");
    check_field_offset(lv, s3965c4f0, 0, "S3965C4.s3965c4f0");
    check_field_offset(lv, s3965c4f1, 4, "S3965C4.s3965c4f1");
    check_field_offset(lv, s3965c4f2, ABISELECT(16,12), "S3965C4.s3965c4f2");
    check_field_offset(lv, s3965c4f3, ABISELECT(24,16), "S3965C4.s3965c4f3");
    check_field_offset(lv, s3965c4f4, ABISELECT(32,20), "S3965C4.s3965c4f4");
    check_field_offset(lv, s3965c4f5, ABISELECT(40,24), "S3965C4.s3965c4f5");
    check_field_offset(lv, s3965c4f6, ABISELECT(48,28), "S3965C4.s3965c4f6");
    check_field_offset(lv, s3965c4f7, ABISELECT(56,32), "S3965C4.s3965c4f7");
  }
}
static Arrange_To_Call_Me vS3965C4(Test_S3965C4, "S3965C4", ABISELECT(64,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3965C1  : S3965C2 {
  char s3965c1f0;
  ::S3965C4 s3965c1f1;
  virtual  ~S3965C1(); // _ZN7S3965C1D1Ev
  virtual void  v1(); // _ZN7S3965C12v1Ev
  virtual void  v2(); // _ZN7S3965C12v2Ev
  S3965C1(); // tgen
};
//SIG(1 S3965C1) C1{ BC2{ BC3{ vd m FL} vd v3 v4} vd v1 v2 Fc FC4{ Fc[3] Fi[2] Fp Fi Fp Fc Fp Fs}}


 S3965C1 ::~S3965C1(){ note_dtor("S3965C1", this);}
void  S3965C1 ::v1(){vfunc_called(this, "_ZN7S3965C12v1Ev");}
void  S3965C1 ::v2(){vfunc_called(this, "_ZN7S3965C12v2Ev");}
S3965C1 ::S3965C1(){ note_ctor("S3965C1", this);} // tgen

static void Test_S3965C1()
{
  extern Class_Descriptor cd_S3965C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,14)];
    init_test(&cd_S3965C1, buf);
    S3965C1 *dp, &lv = *(dp=new (buf) S3965C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,52), "sizeof(S3965C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3965C1)");
    check_base_class_offset(lv, (S3965C3_nt*)(S3965C2*), 0, "S3965C1");
    check_base_class_offset(lv, (S3965C2*), 0, "S3965C1");
    check_field_offset(lv, s3965c1f0, ABISELECT(16,12), "S3965C1.s3965c1f0");
    check_field_offset(lv, s3965c1f1, ABISELECT(24,16), "S3965C1.s3965c1f1");
    test_class_info(&lv, &cd_S3965C1);
    dp->~S3965C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3965C1(Test_S3965C1, "S3965C1", ABISELECT(88,52));

#else // __cplusplus

extern void _ZN7S3965C1C1Ev();
extern void _ZN7S3965C1D1Ev();
Name_Map name_map_S3965C1[] = {
  NSPAIR(_ZN7S3965C1C1Ev),
  NSPAIR(_ZN7S3965C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3965C3_nt;
extern VTBL_ENTRY _ZTI10S3965C3_nt[];
extern  VTBL_ENTRY _ZTV10S3965C3_nt[];
extern Class_Descriptor cd_S3965C2;
extern VTBL_ENTRY _ZTI7S3965C2[];
extern  VTBL_ENTRY _ZTV7S3965C2[];
static Base_Class bases_S3965C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3965C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3965C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3965C1[];
extern void _ZN7S3965C1D1Ev();
extern void _ZN7S3965C1D0Ev();
extern void _ZN7S3965C22v3Ev();
extern void _ZN7S3965C22v4Ev();
extern void _ZN7S3965C12v1Ev();
extern void _ZN7S3965C12v2Ev();
static  VTBL_ENTRY vtc_S3965C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3965C1[0]),
  (VTBL_ENTRY)&_ZN7S3965C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3965C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3965C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3965C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3965C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3965C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3965C1[];
extern  VTBL_ENTRY _ZTV7S3965C1[];
Class_Descriptor cd_S3965C1 = {  "S3965C1", // class name
  bases_S3965C1, 2,
  &(vtc_S3965C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,52), // object size
  NSPAIRA(_ZTI7S3965C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3965C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8134C1  : S3712C3_nt {
  void *s8134c1f0;
  ::S11969C23_nt s8134c1f1;
  int s8134c1f2[2];
  ::S3704C4_nt s8134c1f3;
  virtual  ~S8134C1(); // _ZN7S8134C1D1Ev
  S8134C1(); // tgen
};
//SIG(1 S8134C1) C1{ BC2{ vd m Fi} vd Fp FC3{ m Fp} Fi[2] FC4{ BC5{ vd v4 v5 v6} vd v1 v2 v3 FL[4]}}


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

static void Test_S8134C1()
{
  extern Class_Descriptor cd_S8134C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S8134C1, buf);
    S8134C1 *dp, &lv = *(dp=new (buf) S8134C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S8134C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8134C1)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S8134C1");
    check_field_offset(lv, s8134c1f0, ABISELECT(16,8), "S8134C1.s8134c1f0");
    check_field_offset(lv, s8134c1f1, ABISELECT(24,12), "S8134C1.s8134c1f1");
    check_field_offset(lv, s8134c1f2, ABISELECT(32,16), "S8134C1.s8134c1f2");
    check_field_offset(lv, s8134c1f3, ABISELECT(40,24), "S8134C1.s8134c1f3");
    test_class_info(&lv, &cd_S8134C1);
    dp->~S8134C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8134C1(Test_S8134C1, "S8134C1", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN7S8134C1C1Ev();
extern void _ZN7S8134C1D1Ev();
Name_Map name_map_S8134C1[] = {
  NSPAIR(_ZN7S8134C1C1Ev),
  NSPAIR(_ZN7S8134C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S8134C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8134C1[];
extern void _ZN7S8134C1D1Ev();
extern void _ZN7S8134C1D0Ev();
static  VTBL_ENTRY vtc_S8134C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8134C1[0]),
  (VTBL_ENTRY)&_ZN7S8134C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8134C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8134C1[];
extern  VTBL_ENTRY _ZTV7S8134C1[];
Class_Descriptor cd_S8134C1 = {  "S8134C1", // class name
  bases_S8134C1, 1,
  &(vtc_S8134C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI7S8134C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8134C1),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  S6752C2  {
  virtual  ~S6752C2(); // _ZN7S6752C2D1Ev
  virtual void  v3(); // _ZN7S6752C22v3Ev
  virtual void  v4(); // _ZN7S6752C22v4Ev
  S6752C2(); // tgen
};
//SIG(-1 S6752C2) C1{ vd v1 v2}


 S6752C2 ::~S6752C2(){ note_dtor("S6752C2", this);}
void  S6752C2 ::v3(){vfunc_called(this, "_ZN7S6752C22v3Ev");}
void  S6752C2 ::v4(){vfunc_called(this, "_ZN7S6752C22v4Ev");}
S6752C2 ::S6752C2(){ note_ctor("S6752C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6752C2C1Ev();
extern void _ZN7S6752C2D1Ev();
Name_Map name_map_S6752C2[] = {
  NSPAIR(_ZN7S6752C2C1Ev),
  NSPAIR(_ZN7S6752C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6752C2[];
extern void _ZN7S6752C2D1Ev();
extern void _ZN7S6752C2D0Ev();
extern void _ZN7S6752C22v3Ev();
extern void _ZN7S6752C22v4Ev();
static  VTBL_ENTRY vtc_S6752C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6752C2[0]),
  (VTBL_ENTRY)&_ZN7S6752C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6752C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6752C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6752C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6752C2[];
extern  VTBL_ENTRY _ZTV7S6752C2[];
Class_Descriptor cd_S6752C2 = {  "S6752C2", // class name
  0,0,//no base classes
  &(vtc_S6752C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6752C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6752C2),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  S6752C1  : S6752C2 {
  ::S7533C2 s6752c1f0[7];
  virtual void  v1(); // _ZN7S6752C12v1Ev
  virtual void  v2(); // _ZN7S6752C12v2Ev
  ~S6752C1(); // tgen
  S6752C1(); // tgen
};
//SIG(1 S6752C1) C1{ BC2{ vd v3 v4} v1 v2 FC3{ VBC4{ v12 v13 v14} v5 v6 v7 v8 v9 v10 v11 Fp}[7]}


void  S6752C1 ::v1(){vfunc_called(this, "_ZN7S6752C12v1Ev");}
void  S6752C1 ::v2(){vfunc_called(this, "_ZN7S6752C12v2Ev");}
S6752C1 ::~S6752C1(){ note_dtor("S6752C1", this);} // tgen
S6752C1 ::S6752C1(){ note_ctor("S6752C1", this);} // tgen

static void Test_S6752C1()
{
  extern Class_Descriptor cd_S6752C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[16];
    init_test(&cd_S6752C1, buf);
    S6752C1 *dp, &lv = *(dp=new (buf) S6752C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,60), "sizeof(S6752C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6752C1)");
    check_base_class_offset(lv, (S6752C2*), 0, "S6752C1");
    check_field_offset(lv, s6752c1f0, ABISELECT(8,4), "S6752C1.s6752c1f0");
    test_class_info(&lv, &cd_S6752C1);
    dp->~S6752C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6752C1(Test_S6752C1, "S6752C1", ABISELECT(120,60));

#else // __cplusplus

extern void _ZN7S6752C1C1Ev();
extern void _ZN7S6752C1D1Ev();
Name_Map name_map_S6752C1[] = {
  NSPAIR(_ZN7S6752C1C1Ev),
  NSPAIR(_ZN7S6752C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6752C2;
extern VTBL_ENTRY _ZTI7S6752C2[];
extern  VTBL_ENTRY _ZTV7S6752C2[];
static Base_Class bases_S6752C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6752C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6752C1[];
extern void _ZN7S6752C1D1Ev();
extern void _ZN7S6752C1D0Ev();
extern void _ZN7S6752C22v3Ev();
extern void _ZN7S6752C22v4Ev();
extern void _ZN7S6752C12v1Ev();
extern void _ZN7S6752C12v2Ev();
static  VTBL_ENTRY vtc_S6752C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6752C1[0]),
  (VTBL_ENTRY)&_ZN7S6752C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6752C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6752C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6752C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6752C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6752C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6752C1[];
extern  VTBL_ENTRY _ZTV7S6752C1[];
Class_Descriptor cd_S6752C1 = {  "S6752C1", // class name
  bases_S6752C1, 1,
  &(vtc_S6752C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,60), // object size
  NSPAIRA(_ZTI7S6752C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6752C1),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  S15652C3_nt  : S21499C7_nt {
};
//SIG(-1 S15652C3_nt) C1{ BC2{ m Fp[2]}}



//skip512 S15652C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S21499C7_nt;
static Base_Class bases_S15652C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21499C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15652C2  {
  ::S15652C3_nt s15652c2f0;
  ::S1604C5_nt s15652c2f1;
  int s15652c2f2;
  void  mf15652c2(); // _ZN8S15652C29mf15652c2Ev
};
//SIG(-1 S15652C2) C1{ m FC2{ BC3{ m Fp[2]}} FC4{ m Fi[2]} Fi}


void  S15652C2 ::mf15652c2(){}

static void Test_S15652C2()
{
  {
    init_simple_test("S15652C2");
    S15652C2 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S15652C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15652C2)");
    check_field_offset(lv, s15652c2f0, 0, "S15652C2.s15652c2f0");
    check_field_offset(lv, s15652c2f1, ABISELECT(16,8), "S15652C2.s15652c2f1");
    check_field_offset(lv, s15652c2f2, ABISELECT(24,16), "S15652C2.s15652c2f2");
  }
}
static Arrange_To_Call_Me vS15652C2(Test_S15652C2, "S15652C2", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15652C1  {
  ::S15652C2 s15652c1f0;
  ::S3243C6 s15652c1f1;
  char s15652c1f2;
  void  mf15652c1(); // _ZN8S15652C19mf15652c1Ev
};
//SIG(1 S15652C1) C1{ m FC2{ m FC3{ BC4{ m Fp[2]}} FC5{ m Fi[2]} Fi} FC6{ BC7{ BC8{ m Fp Fi[2]}}} Fc}


void  S15652C1 ::mf15652c1(){}

static void Test_S15652C1()
{
  {
    init_simple_test("S15652C1");
    S15652C1 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S15652C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15652C1)");
    check_field_offset(lv, s15652c1f0, 0, "S15652C1.s15652c1f0");
    check_field_offset(lv, s15652c1f1, ABISELECT(32,20), "S15652C1.s15652c1f1");
    check_field_offset(lv, s15652c1f2, ABISELECT(48,32), "S15652C1.s15652c1f2");
  }
}
static Arrange_To_Call_Me vS15652C1(Test_S15652C1, "S15652C1", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15984C1  {
  ::S1604C5_nt s15984c1f0;
  ::S3243C5_nt s15984c1f1;
  ::S3243C5_nt s15984c1f2;
  int s15984c1f3;
  ::S3243C6 s15984c1f4;
  void *s15984c1f5;
  void  mf15984c1(); // _ZN8S15984C19mf15984c1Ev
};
//SIG(1 S15984C1) C1{ m FC2{ m Fi[2]} FC3{ BC4{ BC5{ BC6{ m Fp Fi[2]}}}} FC3 Fi FC4 Fp}


void  S15984C1 ::mf15984c1(){}

static void Test_S15984C1()
{
  {
    init_simple_test("S15984C1");
    S15984C1 lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S15984C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15984C1)");
    check_field_offset(lv, s15984c1f0, 0, "S15984C1.s15984c1f0");
    check_field_offset(lv, s15984c1f1, 8, "S15984C1.s15984c1f1");
    check_field_offset(lv, s15984c1f2, ABISELECT(24,20), "S15984C1.s15984c1f2");
    check_field_offset(lv, s15984c1f3, ABISELECT(40,32), "S15984C1.s15984c1f3");
    check_field_offset(lv, s15984c1f4, ABISELECT(48,36), "S15984C1.s15984c1f4");
    check_field_offset(lv, s15984c1f5, ABISELECT(64,48), "S15984C1.s15984c1f5");
  }
}
static Arrange_To_Call_Me vS15984C1(Test_S15984C1, "S15984C1", ABISELECT(72,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4392C3  {
  ::S2405C20_nt s4392c3f0;
  int s4392c3f1[2];
  char s4392c3f2;
  virtual  ~S4392C3(); // _ZN7S4392C3D1Ev
  virtual void  v2(); // _ZN7S4392C32v2Ev
  virtual void  v3(); // _ZN7S4392C32v3Ev
  virtual void  v4(); // _ZN7S4392C32v4Ev
  S4392C3(); // tgen
};
//SIG(-1 S4392C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4392C3 ::~S4392C3(){ note_dtor("S4392C3", this);}
void  S4392C3 ::v2(){vfunc_called(this, "_ZN7S4392C32v2Ev");}
void  S4392C3 ::v3(){vfunc_called(this, "_ZN7S4392C32v3Ev");}
void  S4392C3 ::v4(){vfunc_called(this, "_ZN7S4392C32v4Ev");}
S4392C3 ::S4392C3(){ note_ctor("S4392C3", this);} // tgen

static void Test_S4392C3()
{
  extern Class_Descriptor cd_S4392C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4392C3, buf);
    S4392C3 *dp, &lv = *(dp=new (buf) S4392C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4392C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4392C3)");
    check_field_offset(lv, s4392c3f0, ABISELECT(8,4), "S4392C3.s4392c3f0");
    check_field_offset(lv, s4392c3f1, ABISELECT(24,16), "S4392C3.s4392c3f1");
    check_field_offset(lv, s4392c3f2, ABISELECT(32,24), "S4392C3.s4392c3f2");
    test_class_info(&lv, &cd_S4392C3);
    dp->~S4392C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4392C3(Test_S4392C3, "S4392C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4392C3C1Ev();
extern void _ZN7S4392C3D1Ev();
Name_Map name_map_S4392C3[] = {
  NSPAIR(_ZN7S4392C3C1Ev),
  NSPAIR(_ZN7S4392C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4392C3[];
extern void _ZN7S4392C3D1Ev();
extern void _ZN7S4392C3D0Ev();
extern void _ZN7S4392C32v2Ev();
extern void _ZN7S4392C32v3Ev();
extern void _ZN7S4392C32v4Ev();
static  VTBL_ENTRY vtc_S4392C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4392C3[0]),
  (VTBL_ENTRY)&_ZN7S4392C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4392C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4392C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4392C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4392C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S4392C3[];
extern  VTBL_ENTRY _ZTV7S4392C3[];
Class_Descriptor cd_S4392C3 = {  "S4392C3", // class name
  0,0,//no base classes
  &(vtc_S4392C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4392C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4392C3),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  S4392C2  : S4392C3 {
  void *s4392c2f0;
  virtual void  v5(); // _ZN7S4392C22v5Ev
  virtual void  v6(); // _ZN7S4392C22v6Ev
  ~S4392C2(); // tgen
  S4392C2(); // tgen
};
//SIG(-1 S4392C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4392C2 ::v5(){vfunc_called(this, "_ZN7S4392C22v5Ev");}
void  S4392C2 ::v6(){vfunc_called(this, "_ZN7S4392C22v6Ev");}
S4392C2 ::~S4392C2(){ note_dtor("S4392C2", this);} // tgen
S4392C2 ::S4392C2(){ note_ctor("S4392C2", this);} // tgen

static void Test_S4392C2()
{
  extern Class_Descriptor cd_S4392C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4392C2, buf);
    S4392C2 *dp, &lv = *(dp=new (buf) S4392C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4392C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4392C2)");
    check_base_class_offset(lv, (S4392C3*), 0, "S4392C2");
    check_field_offset(lv, s4392c2f0, ABISELECT(40,28), "S4392C2.s4392c2f0");
    test_class_info(&lv, &cd_S4392C2);
    dp->~S4392C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4392C2(Test_S4392C2, "S4392C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4392C2C1Ev();
extern void _ZN7S4392C2D1Ev();
Name_Map name_map_S4392C2[] = {
  NSPAIR(_ZN7S4392C2C1Ev),
  NSPAIR(_ZN7S4392C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4392C3;
extern VTBL_ENTRY _ZTI7S4392C3[];
extern  VTBL_ENTRY _ZTV7S4392C3[];
static Base_Class bases_S4392C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4392C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4392C2[];
extern void _ZN7S4392C2D1Ev();
extern void _ZN7S4392C2D0Ev();
extern void _ZN7S4392C32v2Ev();
extern void _ZN7S4392C32v3Ev();
extern void _ZN7S4392C32v4Ev();
extern void _ZN7S4392C22v5Ev();
extern void _ZN7S4392C22v6Ev();
static  VTBL_ENTRY vtc_S4392C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4392C2[0]),
  (VTBL_ENTRY)&_ZN7S4392C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4392C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4392C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4392C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4392C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4392C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4392C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S4392C2[];
extern  VTBL_ENTRY _ZTV7S4392C2[];
Class_Descriptor cd_S4392C2 = {  "S4392C2", // class name
  bases_S4392C2, 1,
  &(vtc_S4392C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4392C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4392C2),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  S4392C1  : S4392C2 {
  __tsi64 s4392c1f0;
  void *s4392c1f1;
  virtual void  v1(); // _ZN7S4392C12v1Ev
  ~S4392C1(); // tgen
  S4392C1(); // tgen
};
//SIG(1 S4392C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} v1 FL Fp}


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

static void Test_S4392C1()
{
  extern Class_Descriptor cd_S4392C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S4392C1, buf);
    S4392C1 *dp, &lv = *(dp=new (buf) S4392C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S4392C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4392C1)");
    check_base_class_offset(lv, (S4392C3*)(S4392C2*), 0, "S4392C1");
    check_base_class_offset(lv, (S4392C2*), 0, "S4392C1");
    check_field_offset(lv, s4392c1f0, ABISELECT(48,32), "S4392C1.s4392c1f0");
    check_field_offset(lv, s4392c1f1, ABISELECT(56,40), "S4392C1.s4392c1f1");
    test_class_info(&lv, &cd_S4392C1);
    dp->~S4392C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4392C1(Test_S4392C1, "S4392C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S4392C1C1Ev();
extern void _ZN7S4392C1D1Ev();
Name_Map name_map_S4392C1[] = {
  NSPAIR(_ZN7S4392C1C1Ev),
  NSPAIR(_ZN7S4392C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4392C3;
extern VTBL_ENTRY _ZTI7S4392C3[];
extern  VTBL_ENTRY _ZTV7S4392C3[];
extern Class_Descriptor cd_S4392C2;
extern VTBL_ENTRY _ZTI7S4392C2[];
extern  VTBL_ENTRY _ZTV7S4392C2[];
static Base_Class bases_S4392C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4392C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4392C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4392C1[];
extern void _ZN7S4392C1D1Ev();
extern void _ZN7S4392C1D0Ev();
extern void _ZN7S4392C32v2Ev();
extern void _ZN7S4392C32v3Ev();
extern void _ZN7S4392C32v4Ev();
extern void _ZN7S4392C22v5Ev();
extern void _ZN7S4392C22v6Ev();
extern void _ZN7S4392C12v1Ev();
static  VTBL_ENTRY vtc_S4392C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4392C1[0]),
  (VTBL_ENTRY)&_ZN7S4392C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4392C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4392C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4392C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4392C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4392C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4392C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4392C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4392C1[];
extern  VTBL_ENTRY _ZTV7S4392C1[];
Class_Descriptor cd_S4392C1 = {  "S4392C1", // class name
  bases_S4392C1, 2,
  &(vtc_S4392C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S4392C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4392C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17974C1  {
  void *s17974c1f0[2];
  ::S2405C19_nt s17974c1f1;
  char s17974c1f2;
  ::S2405C26 s17974c1f3;
  void  mf17974c1(); // _ZN8S17974C19mf17974c1Ev
};
//SIG(1 S17974C1) C1{ m Fp[2] FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} Fc FC5{ m Fp Fi FC6{ m} FC6}}


void  S17974C1 ::mf17974c1(){}

static void Test_S17974C1()
{
  {
    init_simple_test("S17974C1");
    S17974C1 lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S17974C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17974C1)");
    check_field_offset(lv, s17974c1f0, 0, "S17974C1.s17974c1f0");
    check_field_offset(lv, s17974c1f1, ABISELECT(16,8), "S17974C1.s17974c1f1");
    check_field_offset(lv, s17974c1f2, ABISELECT(40,24), "S17974C1.s17974c1f2");
    check_field_offset(lv, s17974c1f3, ABISELECT(48,28), "S17974C1.s17974c1f3");
  }
}
static Arrange_To_Call_Me vS17974C1(Test_S17974C1, "S17974C1", ABISELECT(64,40));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18224C3  {
  char s18224c3f0;
  ::S10225C15_nt s18224c3f1;
  void  mf18224c3(); // _ZN8S18224C39mf18224c3Ev
};
//SIG(-1 S18224C3) C1{ m Fc FC2{ BC3{ m Fp Fi FC4{ m} FC4}}}


void  S18224C3 ::mf18224c3(){}

static void Test_S18224C3()
{
  {
    init_simple_test("S18224C3");
    S18224C3 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18224C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18224C3)");
    check_field_offset(lv, s18224c3f0, 0, "S18224C3.s18224c3f0");
    check_field_offset(lv, s18224c3f1, ABISELECT(8,4), "S18224C3.s18224c3f1");
  }
}
static Arrange_To_Call_Me vS18224C3(Test_S18224C3, "S18224C3", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18224C2  {
  int s18224c2f0;
  ::S18224C3 s18224c2f1;
  void  mf18224c2(); // _ZN8S18224C29mf18224c2Ev
};
//SIG(-1 S18224C2) C1{ m Fi FC2{ m Fc FC3{ BC4{ m Fp Fi FC5{ m} FC5}}}}


void  S18224C2 ::mf18224c2(){}

static void Test_S18224C2()
{
  {
    init_simple_test("S18224C2");
    S18224C2 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18224C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18224C2)");
    check_field_offset(lv, s18224c2f0, 0, "S18224C2.s18224c2f0");
    check_field_offset(lv, s18224c2f1, ABISELECT(8,4), "S18224C2.s18224c2f1");
  }
}
static Arrange_To_Call_Me vS18224C2(Test_S18224C2, "S18224C2", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18224C1  {
  void *s18224c1f0[3];
  ::S18224C2 s18224c1f1;
  char s18224c1f2[2];
  void  mf18224c1(); // _ZN8S18224C19mf18224c1Ev
};
//SIG(1 S18224C1) C1{ m Fp[3] FC2{ m Fi FC3{ m Fc FC4{ BC5{ m Fp Fi FC6{ m} FC6}}}} Fc[2]}


void  S18224C1 ::mf18224c1(){}

static void Test_S18224C1()
{
  {
    init_simple_test("S18224C1");
    S18224C1 lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S18224C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18224C1)");
    check_field_offset(lv, s18224c1f0, 0, "S18224C1.s18224c1f0");
    check_field_offset(lv, s18224c1f1, ABISELECT(24,12), "S18224C1.s18224c1f1");
    check_field_offset(lv, s18224c1f2, ABISELECT(56,32), "S18224C1.s18224c1f2");
  }
}
static Arrange_To_Call_Me vS18224C1(Test_S18224C1, "S18224C1", ABISELECT(64,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13111C2  {
  __tsi64 s13111c2f0[3];
  char s13111c2f1[32];
};
//SIG(-1 S13111C2) C1{ FL[3] Fc[32]}



static void Test_S13111C2()
{
  {
    init_simple_test("S13111C2");
    S13111C2 lv;
    check2(sizeof(lv), 56, "sizeof(S13111C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13111C2)");
    check_field_offset(lv, s13111c2f0, 0, "S13111C2.s13111c2f0");
    check_field_offset(lv, s13111c2f1, 24, "S13111C2.s13111c2f1");
  }
}
static Arrange_To_Call_Me vS13111C2(Test_S13111C2, "S13111C2", 56);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13111C3  {
  char s13111c3f0[1280];
  int s13111c3f1;
  char s13111c3f2[268];
};
//SIG(-1 S13111C3) C1{ Fc[1280] Fi Fc[268]}



static void Test_S13111C3()
{
  {
    init_simple_test("S13111C3");
    S13111C3 lv;
    check2(sizeof(lv), 1552, "sizeof(S13111C3)");
    check2(__alignof__(lv), 4, "__alignof__(S13111C3)");
    check_field_offset(lv, s13111c3f0, 0, "S13111C3.s13111c3f0");
    check_field_offset(lv, s13111c3f1, 1280, "S13111C3.s13111c3f1");
    check_field_offset(lv, s13111c3f2, 1284, "S13111C3.s13111c3f2");
  }
}
static Arrange_To_Call_Me vS13111C3(Test_S13111C3, "S13111C3", 1552);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13111C1  {
  int s13111c1f0[2];
  ::S13111C2 s13111c1f1;
  ::S13111C3 s13111c1f2;
  int s13111c1f3[5];
  void *s13111c1f4;
  char s13111c1f5[64];
};
//SIG(1 S13111C1) C1{ Fi[2] FC2{ FL[3] Fc[32]} FC3{ Fc[1280] Fi Fc[268]} Fi[5] Fp Fc[64]}



static void Test_S13111C1()
{
  {
    init_simple_test("S13111C1");
    S13111C1 lv;
    check2(sizeof(lv), ABISELECT(1712,1704), "sizeof(S13111C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13111C1)");
    check_field_offset(lv, s13111c1f0, 0, "S13111C1.s13111c1f0");
    check_field_offset(lv, s13111c1f1, 8, "S13111C1.s13111c1f1");
    check_field_offset(lv, s13111c1f2, 64, "S13111C1.s13111c1f2");
    check_field_offset(lv, s13111c1f3, 1616, "S13111C1.s13111c1f3");
    check_field_offset(lv, s13111c1f4, ABISELECT(1640,1636), "S13111C1.s13111c1f4");
    check_field_offset(lv, s13111c1f5, ABISELECT(1648,1640), "S13111C1.s13111c1f5");
  }
}
static Arrange_To_Call_Me vS13111C1(Test_S13111C1, "S13111C1", ABISELECT(1712,1704));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8995C2  {
  virtual  ~S8995C2(); // _ZN7S8995C2D1Ev
  virtual void  v2(); // _ZN7S8995C22v2Ev
  virtual void  v3(); // _ZN7S8995C22v3Ev
  virtual void  v4(); // _ZN7S8995C22v4Ev
  virtual void  v5(); // _ZN7S8995C22v5Ev
  S8995C2(); // tgen
};
//SIG(-1 S8995C2) C1{ vd v1 v2 v3 v4}


 S8995C2 ::~S8995C2(){ note_dtor("S8995C2", this);}
void  S8995C2 ::v2(){vfunc_called(this, "_ZN7S8995C22v2Ev");}
void  S8995C2 ::v3(){vfunc_called(this, "_ZN7S8995C22v3Ev");}
void  S8995C2 ::v4(){vfunc_called(this, "_ZN7S8995C22v4Ev");}
void  S8995C2 ::v5(){vfunc_called(this, "_ZN7S8995C22v5Ev");}
S8995C2 ::S8995C2(){ note_ctor("S8995C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S8995C2C1Ev();
extern void _ZN7S8995C2D1Ev();
Name_Map name_map_S8995C2[] = {
  NSPAIR(_ZN7S8995C2C1Ev),
  NSPAIR(_ZN7S8995C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8995C2[];
extern void _ZN7S8995C2D1Ev();
extern void _ZN7S8995C2D0Ev();
extern void _ZN7S8995C22v2Ev();
extern void _ZN7S8995C22v3Ev();
extern void _ZN7S8995C22v4Ev();
extern void _ZN7S8995C22v5Ev();
static  VTBL_ENTRY vtc_S8995C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8995C2[0]),
  (VTBL_ENTRY)&_ZN7S8995C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8995C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8995C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8995C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8995C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8995C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S8995C2[];
extern  VTBL_ENTRY _ZTV7S8995C2[];
Class_Descriptor cd_S8995C2 = {  "S8995C2", // class name
  0,0,//no base classes
  &(vtc_S8995C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8995C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8995C2),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  S8995C1  : S8995C2 {
  void *s8995c1f0;
  int s8995c1f1;
  void *s8995c1f2[2];
  ::S2405C20_nt s8995c1f3;
  void *s8995c1f4[2];
  virtual  ~S8995C1(); // _ZN7S8995C1D1Ev
  virtual void  v1(); // _ZN7S8995C12v1Ev
  S8995C1(); // tgen
};
//SIG(1 S8995C1) C1{ BC2{ vd v2 v3 v4 v5} vd v1 Fp Fi Fp[2] FC3{ m Fp Fi FC4{ m}} Fp[2]}


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

static void Test_S8995C1()
{
  extern Class_Descriptor cd_S8995C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S8995C1, buf);
    S8995C1 *dp, &lv = *(dp=new (buf) S8995C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S8995C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8995C1)");
    check_base_class_offset(lv, (S8995C2*), 0, "S8995C1");
    check_field_offset(lv, s8995c1f0, ABISELECT(8,4), "S8995C1.s8995c1f0");
    check_field_offset(lv, s8995c1f1, ABISELECT(16,8), "S8995C1.s8995c1f1");
    check_field_offset(lv, s8995c1f2, ABISELECT(24,12), "S8995C1.s8995c1f2");
    check_field_offset(lv, s8995c1f3, ABISELECT(40,20), "S8995C1.s8995c1f3");
    check_field_offset(lv, s8995c1f4, ABISELECT(56,32), "S8995C1.s8995c1f4");
    test_class_info(&lv, &cd_S8995C1);
    dp->~S8995C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8995C1(Test_S8995C1, "S8995C1", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S8995C1C1Ev();
extern void _ZN7S8995C1D1Ev();
Name_Map name_map_S8995C1[] = {
  NSPAIR(_ZN7S8995C1C1Ev),
  NSPAIR(_ZN7S8995C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8995C2;
extern VTBL_ENTRY _ZTI7S8995C2[];
extern  VTBL_ENTRY _ZTV7S8995C2[];
static Base_Class bases_S8995C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8995C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8995C1[];
extern void _ZN7S8995C1D1Ev();
extern void _ZN7S8995C1D0Ev();
extern void _ZN7S8995C22v2Ev();
extern void _ZN7S8995C22v3Ev();
extern void _ZN7S8995C22v4Ev();
extern void _ZN7S8995C22v5Ev();
extern void _ZN7S8995C12v1Ev();
static  VTBL_ENTRY vtc_S8995C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8995C1[0]),
  (VTBL_ENTRY)&_ZN7S8995C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8995C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8995C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8995C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8995C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8995C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8995C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8995C1[];
extern  VTBL_ENTRY _ZTV7S8995C1[];
Class_Descriptor cd_S8995C1 = {  "S8995C1", // class name
  bases_S8995C1, 1,
  &(vtc_S8995C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S8995C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8995C1),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  S13554C1  {
  int s13554c1f0[5];
  void *s13554c1f1;
  int s13554c1f2[12];
  void *s13554c1f3[2];
  int s13554c1f4[4];
  void *s13554c1f5;
  int s13554c1f6[6];
  void *s13554c1f7;
  int s13554c1f8[4];
  void *s13554c1f9[2];
  int s13554c1f10;
  void *s13554c1f11[3];
};
//SIG(1 S13554C1) C1{ Fi[5] Fp Fi[12] Fp[2] Fi[4] Fp Fi[6] Fp Fi[4] Fp[2] Fi Fp[3]}



static void Test_S13554C1()
{
  {
    init_simple_test("S13554C1");
    S13554C1 lv;
    check2(sizeof(lv), ABISELECT(216,168), "sizeof(S13554C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13554C1)");
    check_field_offset(lv, s13554c1f0, 0, "S13554C1.s13554c1f0");
    check_field_offset(lv, s13554c1f1, ABISELECT(24,20), "S13554C1.s13554c1f1");
    check_field_offset(lv, s13554c1f2, ABISELECT(32,24), "S13554C1.s13554c1f2");
    check_field_offset(lv, s13554c1f3, ABISELECT(80,72), "S13554C1.s13554c1f3");
    check_field_offset(lv, s13554c1f4, ABISELECT(96,80), "S13554C1.s13554c1f4");
    check_field_offset(lv, s13554c1f5, ABISELECT(112,96), "S13554C1.s13554c1f5");
    check_field_offset(lv, s13554c1f6, ABISELECT(120,100), "S13554C1.s13554c1f6");
    check_field_offset(lv, s13554c1f7, ABISELECT(144,124), "S13554C1.s13554c1f7");
    check_field_offset(lv, s13554c1f8, ABISELECT(152,128), "S13554C1.s13554c1f8");
    check_field_offset(lv, s13554c1f9, ABISELECT(168,144), "S13554C1.s13554c1f9");
    check_field_offset(lv, s13554c1f10, ABISELECT(184,152), "S13554C1.s13554c1f10");
    check_field_offset(lv, s13554c1f11, ABISELECT(192,156), "S13554C1.s13554c1f11");
  }
}
static Arrange_To_Call_Me vS13554C1(Test_S13554C1, "S13554C1", ABISELECT(216,168));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15469C1  {
  ::S10225C3 s15469c1f0;
  int s15469c1f1[2];
  __tsi64 s15469c1f2;
  int s15469c1f3;
  __tsi64 s15469c1f4;
  void  mf15469c1(); // _ZN8S15469C19mf15469c1Ev
};
//SIG(1 S15469C1) C1{ m FC2{ BC3{ vd v4 v5 v6} vd v1 v2 v3 FC4{ FL[4]}} Fi[2] FL Fi FL}


void  S15469C1 ::mf15469c1(){}

static void Test_S15469C1()
{
  {
    init_simple_test("S15469C1");
    S15469C1 lv;
    check2(sizeof(lv), ABISELECT(72,64), "sizeof(S15469C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15469C1)");
    check_field_offset(lv, s15469c1f0, 0, "S15469C1.s15469c1f0");
    check_field_offset(lv, s15469c1f1, ABISELECT(40,36), "S15469C1.s15469c1f1");
    check_field_offset(lv, s15469c1f2, ABISELECT(48,44), "S15469C1.s15469c1f2");
    check_field_offset(lv, s15469c1f3, ABISELECT(56,52), "S15469C1.s15469c1f3");
    check_field_offset(lv, s15469c1f4, ABISELECT(64,56), "S15469C1.s15469c1f4");
  }
}
static Arrange_To_Call_Me vS15469C1(Test_S15469C1, "S15469C1", ABISELECT(72,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18230C3  {
  ::S11969C23_nt s18230c3f0;
  ::S2405C20_nt s18230c3f1;
  void  mf18230c3(); // _ZN8S18230C39mf18230c3Ev
};
//SIG(-1 S18230C3) C1{ m FC2{ m Fp} FC3{ m Fp Fi FC4{ m}}}


void  S18230C3 ::mf18230c3(){}

static void Test_S18230C3()
{
  {
    init_simple_test("S18230C3");
    S18230C3 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18230C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18230C3)");
    check_field_offset(lv, s18230c3f0, 0, "S18230C3.s18230c3f0");
    check_field_offset(lv, s18230c3f1, ABISELECT(8,4), "S18230C3.s18230c3f1");
  }
}
static Arrange_To_Call_Me vS18230C3(Test_S18230C3, "S18230C3", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18230C2  {
  int s18230c2f0;
  ::S18230C3 s18230c2f1;
  void  mf18230c2(); // _ZN8S18230C29mf18230c2Ev
};
//SIG(-1 S18230C2) C1{ m Fi FC2{ m FC3{ m Fp} FC4{ m Fp Fi FC5{ m}}}}


void  S18230C2 ::mf18230c2(){}

static void Test_S18230C2()
{
  {
    init_simple_test("S18230C2");
    S18230C2 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18230C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18230C2)");
    check_field_offset(lv, s18230c2f0, 0, "S18230C2.s18230c2f0");
    check_field_offset(lv, s18230c2f1, ABISELECT(8,4), "S18230C2.s18230c2f1");
  }
}
static Arrange_To_Call_Me vS18230C2(Test_S18230C2, "S18230C2", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18230C1  {
  void *s18230c1f0[3];
  ::S18230C2 s18230c1f1;
  char s18230c1f2[2];
  void  mf18230c1(); // _ZN8S18230C19mf18230c1Ev
};
//SIG(1 S18230C1) C1{ m Fp[3] FC2{ m Fi FC3{ m FC4{ m Fp} FC5{ m Fp Fi FC6{ m}}}} Fc[2]}


void  S18230C1 ::mf18230c1(){}

static void Test_S18230C1()
{
  {
    init_simple_test("S18230C1");
    S18230C1 lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S18230C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18230C1)");
    check_field_offset(lv, s18230c1f0, 0, "S18230C1.s18230c1f0");
    check_field_offset(lv, s18230c1f1, ABISELECT(24,12), "S18230C1.s18230c1f1");
    check_field_offset(lv, s18230c1f2, ABISELECT(56,32), "S18230C1.s18230c1f2");
  }
}
static Arrange_To_Call_Me vS18230C1(Test_S18230C1, "S18230C1", ABISELECT(64,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17638C1  {
  void *s17638c1f0;
  ::S11969C28_nt s17638c1f1;
  ::S11969C28_nt s17638c1f2;
  ::S11969C28_nt s17638c1f3;
  ::S2405C35_nt s17638c1f4;
  void  mf17638c1(); // _ZN8S17638C19mf17638c1Ev
};
//SIG(1 S17638C1) C1{ m Fp FC2{ m Fp Fi[2] FC3{ m}} FC2 FC2 FC4{ m Fp Fi[2] FC5{ m}}}


void  S17638C1 ::mf17638c1(){}

static void Test_S17638C1()
{
  {
    init_simple_test("S17638C1");
    S17638C1 lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S17638C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17638C1)");
    check_field_offset(lv, s17638c1f0, 0, "S17638C1.s17638c1f0");
    check_field_offset(lv, s17638c1f1, ABISELECT(8,4), "S17638C1.s17638c1f1");
    check_field_offset(lv, s17638c1f2, ABISELECT(32,20), "S17638C1.s17638c1f2");
    check_field_offset(lv, s17638c1f3, ABISELECT(56,36), "S17638C1.s17638c1f3");
    check_field_offset(lv, s17638c1f4, ABISELECT(80,52), "S17638C1.s17638c1f4");
  }
}
static Arrange_To_Call_Me vS17638C1(Test_S17638C1, "S17638C1", ABISELECT(104,68));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15471C1  {
  ::S10225C3 s15471c1f0;
  int s15471c1f1[2];
  __tsi64 s15471c1f2[2];
  void  mf15471c1(); // _ZN8S15471C19mf15471c1Ev
};
//SIG(1 S15471C1) C1{ m FC2{ BC3{ vd v4 v5 v6} vd v1 v2 v3 FC4{ FL[4]}} Fi[2] FL[2]}


void  S15471C1 ::mf15471c1(){}

static void Test_S15471C1()
{
  {
    init_simple_test("S15471C1");
    S15471C1 lv;
    check2(sizeof(lv), ABISELECT(64,60), "sizeof(S15471C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15471C1)");
    check_field_offset(lv, s15471c1f0, 0, "S15471C1.s15471c1f0");
    check_field_offset(lv, s15471c1f1, ABISELECT(40,36), "S15471C1.s15471c1f1");
    check_field_offset(lv, s15471c1f2, ABISELECT(48,44), "S15471C1.s15471c1f2");
  }
}
static Arrange_To_Call_Me vS15471C1(Test_S15471C1, "S15471C1", ABISELECT(64,60));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15931C4_nt  {
  void *s15931c4f0;
  int s15931c4f1;
  void  mf15931c4(); // _ZN11S15931C4_nt9mf15931c4Ev
};
//SIG(-1 S15931C4_nt) C1{ m Fp Fi}


void  S15931C4_nt ::mf15931c4(){}

//skip512 S15931C4_nt

#else // __cplusplus

Class_Descriptor cd_S15931C4_nt = {  "S15931C4_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  S15931C3_nt  : S15931C4_nt {
};
//SIG(-1 S15931C3_nt) C1{ BC2{ m Fp Fi}}



//skip512 S15931C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S15931C4_nt;
static Base_Class bases_S15931C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15931C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15931C2_nt  {
  int s15931c2f0;
  ::S15931C3_nt s15931c2f1;
  void  mf15931c2(); // _ZN11S15931C2_nt9mf15931c2Ev
};
//SIG(-1 S15931C2_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S15931C2_nt ::mf15931c2(){}

//skip512 S15931C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15931C1  {
  ::S15931C2_nt s15931c1f0;
  void *s15931c1f1;
  int s15931c1f2;
  unsigned char s15931c1f3:1;
  unsigned char s15931c1f4:1;
  unsigned char s15931c1f5:1;
  unsigned char s15931c1f6:1;
  void  mf15931c1(); // _ZN8S15931C19mf15931c1Ev
};
//SIG(1 S15931C1) C1{ m FC2{ m Fi FC3{ BC4{ m Fp Fi}}} Fp Fi Fc:1 Fc:1 Fc:1 Fc:1}


void  S15931C1 ::mf15931c1(){}

static void Test_S15931C1()
{
  {
    init_simple_test("S15931C1");
    static S15931C1 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S15931C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15931C1)");
    check_field_offset(lv, s15931c1f0, 0, "S15931C1.s15931c1f0");
    check_field_offset(lv, s15931c1f1, ABISELECT(24,12), "S15931C1.s15931c1f1");
    check_field_offset(lv, s15931c1f2, ABISELECT(32,16), "S15931C1.s15931c1f2");
    set_bf_and_test(lv, s15931c1f3, ABISELECT(36,20), 0, 1, 1, "S15931C1");
    set_bf_and_test(lv, s15931c1f4, ABISELECT(36,20), 1, 1, 1, "S15931C1");
    set_bf_and_test(lv, s15931c1f5, ABISELECT(36,20), 2, 1, 1, "S15931C1");
    set_bf_and_test(lv, s15931c1f6, ABISELECT(36,20), 3, 1, 1, "S15931C1");
  }
}
static Arrange_To_Call_Me vS15931C1(Test_S15931C1, "S15931C1", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15473C1  {
  ::S3704C4_nt s15473c1f0;
  int s15473c1f1[2];
  __tsi64 s15473c1f2;
  int s15473c1f3;
  __tsi64 s15473c1f4;
  void  mf15473c1(); // _ZN8S15473C19mf15473c1Ev
};
//SIG(1 S15473C1) C1{ m FC2{ BC3{ vd v4 v5 v6} vd v1 v2 v3 FL[4]} Fi[2] FL Fi FL}


void  S15473C1 ::mf15473c1(){}

static void Test_S15473C1()
{
  {
    init_simple_test("S15473C1");
    S15473C1 lv;
    check2(sizeof(lv), ABISELECT(72,64), "sizeof(S15473C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15473C1)");
    check_field_offset(lv, s15473c1f0, 0, "S15473C1.s15473c1f0");
    check_field_offset(lv, s15473c1f1, ABISELECT(40,36), "S15473C1.s15473c1f1");
    check_field_offset(lv, s15473c1f2, ABISELECT(48,44), "S15473C1.s15473c1f2");
    check_field_offset(lv, s15473c1f3, ABISELECT(56,52), "S15473C1.s15473c1f3");
    check_field_offset(lv, s15473c1f4, ABISELECT(64,56), "S15473C1.s15473c1f4");
  }
}
static Arrange_To_Call_Me vS15473C1(Test_S15473C1, "S15473C1", ABISELECT(72,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18562C1  {
  ::S7533C2 s18562c1f0;
  void *s18562c1f1;
  virtual void  v1(); // _ZN8S18562C12v1Ev
  virtual void  v2(); // _ZN8S18562C12v2Ev
  ~S18562C1(); // tgen
  S18562C1(); // tgen
};
//SIG(1 S18562C1) C1{ v1 v2 FC2{ VBC3{ v10 v11 v12} v3 v4 v5 v6 v7 v8 v9 Fp} Fp}


void  S18562C1 ::v1(){vfunc_called(this, "_ZN8S18562C12v1Ev");}
void  S18562C1 ::v2(){vfunc_called(this, "_ZN8S18562C12v2Ev");}
S18562C1 ::~S18562C1(){ note_dtor("S18562C1", this);} // tgen
S18562C1 ::S18562C1(){ note_ctor("S18562C1", this);} // tgen

static void Test_S18562C1()
{
  extern Class_Descriptor cd_S18562C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S18562C1, buf);
    S18562C1 *dp, &lv = *(dp=new (buf) S18562C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S18562C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18562C1)");
    check_field_offset(lv, s18562c1f0, ABISELECT(8,4), "S18562C1.s18562c1f0");
    check_field_offset(lv, s18562c1f1, ABISELECT(24,12), "S18562C1.s18562c1f1");
    test_class_info(&lv, &cd_S18562C1);
    dp->~S18562C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18562C1(Test_S18562C1, "S18562C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S18562C1C1Ev();
extern void _ZN8S18562C1D1Ev();
Name_Map name_map_S18562C1[] = {
  NSPAIR(_ZN8S18562C1C1Ev),
  NSPAIR(_ZN8S18562C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18562C1[];
extern void _ZN8S18562C12v1Ev();
extern void _ZN8S18562C12v2Ev();
static  VTBL_ENTRY vtc_S18562C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18562C1[0]),
  (VTBL_ENTRY)&_ZN8S18562C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18562C12v2Ev,
};
extern VTBL_ENTRY _ZTI8S18562C1[];
extern  VTBL_ENTRY _ZTV8S18562C1[];
Class_Descriptor cd_S18562C1 = {  "S18562C1", // class name
  0,0,//no base classes
  &(vtc_S18562C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S18562C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18562C1),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  S15465C1  {
  ::S10225C3 s15465c1f0;
  char s15465c1f1;
  int s15465c1f2[2];
  void  mf15465c1(); // _ZN8S15465C19mf15465c1Ev
};
//SIG(1 S15465C1) C1{ m FC2{ BC3{ vd v4 v5 v6} vd v1 v2 v3 FC4{ FL[4]}} Fc Fi[2]}


void  S15465C1 ::mf15465c1(){}

static void Test_S15465C1()
{
  {
    init_simple_test("S15465C1");
    S15465C1 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S15465C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15465C1)");
    check_field_offset(lv, s15465c1f0, 0, "S15465C1.s15465c1f0");
    check_field_offset(lv, s15465c1f1, ABISELECT(40,36), "S15465C1.s15465c1f1");
    check_field_offset(lv, s15465c1f2, ABISELECT(44,40), "S15465C1.s15465c1f2");
  }
}
static Arrange_To_Call_Me vS15465C1(Test_S15465C1, "S15465C1", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15474C1  {
  ::S3704C4_nt s15474c1f0;
  int s15474c1f1[2];
  __tsi64 s15474c1f2[2];
  void  mf15474c1(); // _ZN8S15474C19mf15474c1Ev
};
//SIG(1 S15474C1) C1{ m FC2{ BC3{ vd v4 v5 v6} vd v1 v2 v3 FL[4]} Fi[2] FL[2]}


void  S15474C1 ::mf15474c1(){}

static void Test_S15474C1()
{
  {
    init_simple_test("S15474C1");
    S15474C1 lv;
    check2(sizeof(lv), ABISELECT(64,60), "sizeof(S15474C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15474C1)");
    check_field_offset(lv, s15474c1f0, 0, "S15474C1.s15474c1f0");
    check_field_offset(lv, s15474c1f1, ABISELECT(40,36), "S15474C1.s15474c1f1");
    check_field_offset(lv, s15474c1f2, ABISELECT(48,44), "S15474C1.s15474c1f2");
  }
}
static Arrange_To_Call_Me vS15474C1(Test_S15474C1, "S15474C1", ABISELECT(64,60));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17000C1  {
  unsigned int s17000c1f0:1;
  unsigned int s17000c1f1:1;
  unsigned int s17000c1f2:1;
  unsigned int s17000c1f3:1;
  unsigned int s17000c1f4:1;
  unsigned int s17000c1f5:1;
  ::S6508C7_nt s17000c1f6;
  ::S6508C7_nt s17000c1f7;
  int s17000c1f8;
  void  mf17000c1(); // _ZN8S17000C19mf17000c1Ev
};
//SIG(1 S17000C1) C1{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC2{ m Fi[3]} FC2 Fi}


void  S17000C1 ::mf17000c1(){}

static void Test_S17000C1()
{
  {
    init_simple_test("S17000C1");
    static S17000C1 lv;
    check2(sizeof(lv), 32, "sizeof(S17000C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17000C1)");
    set_bf_and_test(lv, s17000c1f0, 0, 0, 1, 1, "S17000C1");
    set_bf_and_test(lv, s17000c1f1, 0, 1, 1, 1, "S17000C1");
    set_bf_and_test(lv, s17000c1f2, 0, 2, 1, 1, "S17000C1");
    set_bf_and_test(lv, s17000c1f3, 0, 3, 1, 1, "S17000C1");
    set_bf_and_test(lv, s17000c1f4, 0, 4, 1, 1, "S17000C1");
    set_bf_and_test(lv, s17000c1f5, 0, 5, 1, 1, "S17000C1");
    check_field_offset(lv, s17000c1f6, 4, "S17000C1.s17000c1f6");
    check_field_offset(lv, s17000c1f7, 16, "S17000C1.s17000c1f7");
    check_field_offset(lv, s17000c1f8, 28, "S17000C1.s17000c1f8");
  }
}
static Arrange_To_Call_Me vS17000C1(Test_S17000C1, "S17000C1", 32);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18187C2  {
  ::S2405C20_nt s18187c2f0;
  ::S11917C3_nt s18187c2f1;
  void  mf18187c2(); // _ZN8S18187C29mf18187c2Ev
};
//SIG(-1 S18187C2) C1{ m FC2{ m Fp Fi FC3{ m}} FC4{ Fp[3]}}


void  S18187C2 ::mf18187c2(){}

static void Test_S18187C2()
{
  {
    init_simple_test("S18187C2");
    S18187C2 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S18187C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18187C2)");
    check_field_offset(lv, s18187c2f0, 0, "S18187C2.s18187c2f0");
    check_field_offset(lv, s18187c2f1, ABISELECT(16,12), "S18187C2.s18187c2f1");
  }
}
static Arrange_To_Call_Me vS18187C2(Test_S18187C2, "S18187C2", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18187C1  {
  void *s18187c1f0[3];
  ::S18187C2 s18187c1f1;
  char s18187c1f2[2];
  void  mf18187c1(); // _ZN8S18187C19mf18187c1Ev
};
//SIG(1 S18187C1) C1{ m Fp[3] FC2{ m FC3{ m Fp Fi FC4{ m}} FC5{ Fp[3]}} Fc[2]}


void  S18187C1 ::mf18187c1(){}

static void Test_S18187C1()
{
  {
    init_simple_test("S18187C1");
    S18187C1 lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S18187C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18187C1)");
    check_field_offset(lv, s18187c1f0, 0, "S18187C1.s18187c1f0");
    check_field_offset(lv, s18187c1f1, ABISELECT(24,12), "S18187C1.s18187c1f1");
    check_field_offset(lv, s18187c1f2, ABISELECT(64,36), "S18187C1.s18187c1f2");
  }
}
static Arrange_To_Call_Me vS18187C1(Test_S18187C1, "S18187C1", ABISELECT(72,40));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15472C1  {
  ::S3704C4_nt s15472c1f0;
  char s15472c1f1;
  int s15472c1f2[2];
  void  mf15472c1(); // _ZN8S15472C19mf15472c1Ev
};
//SIG(1 S15472C1) C1{ m FC2{ BC3{ vd v4 v5 v6} vd v1 v2 v3 FL[4]} Fc Fi[2]}


void  S15472C1 ::mf15472c1(){}

static void Test_S15472C1()
{
  {
    init_simple_test("S15472C1");
    S15472C1 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S15472C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15472C1)");
    check_field_offset(lv, s15472c1f0, 0, "S15472C1.s15472c1f0");
    check_field_offset(lv, s15472c1f1, ABISELECT(40,36), "S15472C1.s15472c1f1");
    check_field_offset(lv, s15472c1f2, ABISELECT(44,40), "S15472C1.s15472c1f2");
  }
}
static Arrange_To_Call_Me vS15472C1(Test_S15472C1, "S15472C1", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16094C5_nt  {
  char s16094c5f0[20];
};
//SIG(-1 S16094C5_nt) C1{ Fc[20]}



//skip512 S16094C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16094C4_nt  {
  ::S16094C5_nt s16094c4f0;
  char s16094c4f1[16];
};
//SIG(1 S16094C4_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S16094C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16094C3  {
  ::S16094C4_nt s16094c3f0[8];
  char s16094c3f1[4];
};
//SIG(-1 S16094C3) C1{ FC2{ FC3{ Fc[20]} Fc[16]}[8] Fc[4]}



static void Test_S16094C3()
{
  {
    init_simple_test("S16094C3");
    S16094C3 lv;
    check2(sizeof(lv), 292, "sizeof(S16094C3)");
    check2(__alignof__(lv), 1, "__alignof__(S16094C3)");
    check_field_offset(lv, s16094c3f0, 0, "S16094C3.s16094c3f0");
    check_field_offset(lv, s16094c3f1, 288, "S16094C3.s16094c3f1");
  }
}
static Arrange_To_Call_Me vS16094C3(Test_S16094C3, "S16094C3", 292);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16094C1  {
  ::S6508C16_nt s16094c1f0;
  ::S16094C3 s16094c1f1;
  void  mf16094c1(); // _ZN8S16094C19mf16094c1Ev
};
//SIG(1 S16094C1) C1{ m FC2{ m Fi} FC3{ FC4{ FC5{ Fc[20]} Fc[16]}[8] Fc[4]}}


void  S16094C1 ::mf16094c1(){}

static void Test_S16094C1()
{
  {
    init_simple_test("S16094C1");
    S16094C1 lv;
    check2(sizeof(lv), 296, "sizeof(S16094C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16094C1)");
    check_field_offset(lv, s16094c1f0, 0, "S16094C1.s16094c1f0");
    check_field_offset(lv, s16094c1f1, 4, "S16094C1.s16094c1f1");
  }
}
static Arrange_To_Call_Me vS16094C1(Test_S16094C1, "S16094C1", 296);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16784C1  {
  int s16784c1f0;
  ::S2405C26 s16784c1f1;
  ::S7037C3_nt s16784c1f2;
  void  mf16784c1(); // _ZN8S16784C19mf16784c1Ev
};
//SIG(1 S16784C1) C1{ m Fi FC2{ m Fp Fi FC3{ m} FC3} FC4{ m FC5{ Fl[4]}}}


void  S16784C1 ::mf16784c1(){}

static void Test_S16784C1()
{
  {
    init_simple_test("S16784C1");
    S16784C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S16784C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16784C1)");
    check_field_offset(lv, s16784c1f0, 0, "S16784C1.s16784c1f0");
    check_field_offset(lv, s16784c1f1, ABISELECT(8,4), "S16784C1.s16784c1f1");
    check_field_offset(lv, s16784c1f2, ABISELECT(24,16), "S16784C1.s16784c1f2");
  }
}
static Arrange_To_Call_Me vS16784C1(Test_S16784C1, "S16784C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8084C1  : S3712C3_nt {
  void *s8084c1f0;
  ::S6508C14 s8084c1f1;
  int s8084c1f2;
  ::S6508C10 s8084c1f3;
  ~S8084C1(); // tgen
  S8084C1(); // tgen
};
//SIG(1 S8084C1) C1{ BC2{ vd m Fi} Fp FC3{ BC4{ m Fp Fi[2]}} Fi FC5{ BC4}}


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

static void Test_S8084C1()
{
  extern Class_Descriptor cd_S8084C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S8084C1, buf);
    S8084C1 *dp, &lv = *(dp=new (buf) S8084C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S8084C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8084C1)");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S8084C1");
    check_field_offset(lv, s8084c1f0, ABISELECT(16,8), "S8084C1.s8084c1f0");
    check_field_offset(lv, s8084c1f1, ABISELECT(24,12), "S8084C1.s8084c1f1");
    check_field_offset(lv, s8084c1f2, ABISELECT(40,24), "S8084C1.s8084c1f2");
    check_field_offset(lv, s8084c1f3, ABISELECT(48,28), "S8084C1.s8084c1f3");
    test_class_info(&lv, &cd_S8084C1);
    dp->~S8084C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8084C1(Test_S8084C1, "S8084C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S8084C1C1Ev();
extern void _ZN7S8084C1D1Ev();
Name_Map name_map_S8084C1[] = {
  NSPAIR(_ZN7S8084C1C1Ev),
  NSPAIR(_ZN7S8084C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S8084C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8084C1[];
extern void _ZN7S8084C1D1Ev();
extern void _ZN7S8084C1D0Ev();
static  VTBL_ENTRY vtc_S8084C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8084C1[0]),
  (VTBL_ENTRY)&_ZN7S8084C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8084C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8084C1[];
extern  VTBL_ENTRY _ZTV7S8084C1[];
Class_Descriptor cd_S8084C1 = {  "S8084C1", // class name
  bases_S8084C1, 1,
  &(vtc_S8084C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S8084C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8084C1),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  S6905C2  {
  void *s6905c2f0;
  ::S20903C14_nt s6905c2f1;
  virtual void  v5(); // _ZN7S6905C22v5Ev
  virtual void  v6(); // _ZN7S6905C22v6Ev
  virtual void  v7(); // _ZN7S6905C22v7Ev
  virtual void  v8(); // _ZN7S6905C22v8Ev
  virtual void  v9(); // _ZN7S6905C22v9Ev
  ~S6905C2(); // tgen
  S6905C2(); // tgen
};
//SIG(-1 S6905C2) C1{ v1 v2 v3 v4 v5 Fp FC2{ v6}}


void  S6905C2 ::v5(){vfunc_called(this, "_ZN7S6905C22v5Ev");}
void  S6905C2 ::v6(){vfunc_called(this, "_ZN7S6905C22v6Ev");}
void  S6905C2 ::v7(){vfunc_called(this, "_ZN7S6905C22v7Ev");}
void  S6905C2 ::v8(){vfunc_called(this, "_ZN7S6905C22v8Ev");}
void  S6905C2 ::v9(){vfunc_called(this, "_ZN7S6905C22v9Ev");}
S6905C2 ::~S6905C2(){ note_dtor("S6905C2", this);} // tgen
S6905C2 ::S6905C2(){ note_ctor("S6905C2", this);} // tgen

static void Test_S6905C2()
{
  extern Class_Descriptor cd_S6905C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6905C2, buf);
    S6905C2 *dp, &lv = *(dp=new (buf) S6905C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6905C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6905C2)");
    check_field_offset(lv, s6905c2f0, ABISELECT(8,4), "S6905C2.s6905c2f0");
    check_field_offset(lv, s6905c2f1, ABISELECT(16,8), "S6905C2.s6905c2f1");
    test_class_info(&lv, &cd_S6905C2);
    dp->~S6905C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6905C2(Test_S6905C2, "S6905C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6905C2C1Ev();
extern void _ZN7S6905C2D1Ev();
Name_Map name_map_S6905C2[] = {
  NSPAIR(_ZN7S6905C2C1Ev),
  NSPAIR(_ZN7S6905C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6905C2[];
extern void _ZN7S6905C22v5Ev();
extern void _ZN7S6905C22v6Ev();
extern void _ZN7S6905C22v7Ev();
extern void _ZN7S6905C22v8Ev();
extern void _ZN7S6905C22v9Ev();
static  VTBL_ENTRY vtc_S6905C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6905C2[0]),
  (VTBL_ENTRY)&_ZN7S6905C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6905C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6905C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6905C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6905C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S6905C2[];
extern  VTBL_ENTRY _ZTV7S6905C2[];
Class_Descriptor cd_S6905C2 = {  "S6905C2", // class name
  0,0,//no base classes
  &(vtc_S6905C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6905C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6905C2),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  S6905C1  : S6905C2 {
  long double s6905c1f0;
  virtual void  v1(); // _ZN7S6905C12v1Ev
  virtual void  v2(); // _ZN7S6905C12v2Ev
  virtual void  v3(); // _ZN7S6905C12v3Ev
  virtual void  v4(); // _ZN7S6905C12v4Ev
  ~S6905C1(); // tgen
  S6905C1(); // tgen
};
//SIG(1 S6905C1) C1{ BC2{ v5 v6 v7 v8 v9 Fp FC3{ v10}} v1 v2 v3 v4 FD}


void  S6905C1 ::v1(){vfunc_called(this, "_ZN7S6905C12v1Ev");}
void  S6905C1 ::v2(){vfunc_called(this, "_ZN7S6905C12v2Ev");}
void  S6905C1 ::v3(){vfunc_called(this, "_ZN7S6905C12v3Ev");}
void  S6905C1 ::v4(){vfunc_called(this, "_ZN7S6905C12v4Ev");}
S6905C1 ::~S6905C1(){ note_dtor("S6905C1", this);} // tgen
S6905C1 ::S6905C1(){ note_ctor("S6905C1", this);} // tgen

static void Test_S6905C1()
{
  extern Class_Descriptor cd_S6905C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S6905C1, buf);
    S6905C1 *dp, &lv = *(dp=new (buf) S6905C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S6905C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6905C1)");
    check_base_class_offset(lv, (S6905C2*), 0, "S6905C1");
    check_field_offset(lv, s6905c1f0, ABISELECT(32,12), "S6905C1.s6905c1f0");
    test_class_info(&lv, &cd_S6905C1);
    dp->~S6905C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6905C1(Test_S6905C1, "S6905C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S6905C1C1Ev();
extern void _ZN7S6905C1D1Ev();
Name_Map name_map_S6905C1[] = {
  NSPAIR(_ZN7S6905C1C1Ev),
  NSPAIR(_ZN7S6905C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6905C2;
extern VTBL_ENTRY _ZTI7S6905C2[];
extern  VTBL_ENTRY _ZTV7S6905C2[];
static Base_Class bases_S6905C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6905C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6905C1[];
extern void _ZN7S6905C22v5Ev();
extern void _ZN7S6905C22v6Ev();
extern void _ZN7S6905C22v7Ev();
extern void _ZN7S6905C22v8Ev();
extern void _ZN7S6905C22v9Ev();
extern void _ZN7S6905C12v1Ev();
extern void _ZN7S6905C12v2Ev();
extern void _ZN7S6905C12v3Ev();
extern void _ZN7S6905C12v4Ev();
static  VTBL_ENTRY vtc_S6905C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6905C1[0]),
  (VTBL_ENTRY)&_ZN7S6905C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6905C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6905C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6905C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6905C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6905C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6905C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6905C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6905C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S6905C1[];
extern  VTBL_ENTRY _ZTV7S6905C1[];
Class_Descriptor cd_S6905C1 = {  "S6905C1", // class name
  bases_S6905C1, 1,
  &(vtc_S6905C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S6905C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6905C1),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15650C1  {
  ::S6508C8 s15650c1f0;
  ::S6508C14 s15650c1f1;
  void  mf15650c1(); // _ZN8S15650C19mf15650c1Ev
};
//SIG(1 S15650C1) C1{ m FC2{ m FC3{ BC4{ m Fp Fi[2]}} FC5{ BC4}} FC6{ BC4}}


void  S15650C1 ::mf15650c1(){}

static void Test_S15650C1()
{
  {
    init_simple_test("S15650C1");
    S15650C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S15650C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15650C1)");
    check_field_offset(lv, s15650c1f0, 0, "S15650C1.s15650c1f0");
    check_field_offset(lv, s15650c1f1, ABISELECT(32,24), "S15650C1.s15650c1f1");
  }
}
static Arrange_To_Call_Me vS15650C1(Test_S15650C1, "S15650C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15088C1  {
  char s15088c1f0;
  int s15088c1f1;
  void *s15088c1f2;
  int s15088c1f3[7];
  ::S2405C20_nt s15088c1f4;
  void *s15088c1f5;
  char s15088c1f6[7];
  void  mf15088c1(); // _ZN8S15088C19mf15088c1Ev
};
//SIG(1 S15088C1) C1{ m Fc Fi Fp Fi[7] FC2{ m Fp Fi FC3{ m}} Fp Fc[7]}


void  S15088C1 ::mf15088c1(){}

static void Test_S15088C1()
{
  {
    init_simple_test("S15088C1");
    S15088C1 lv;
    check2(sizeof(lv), ABISELECT(80,64), "sizeof(S15088C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15088C1)");
    check_field_offset(lv, s15088c1f0, 0, "S15088C1.s15088c1f0");
    check_field_offset(lv, s15088c1f1, 4, "S15088C1.s15088c1f1");
    check_field_offset(lv, s15088c1f2, 8, "S15088C1.s15088c1f2");
    check_field_offset(lv, s15088c1f3, ABISELECT(16,12), "S15088C1.s15088c1f3");
    check_field_offset(lv, s15088c1f4, ABISELECT(48,40), "S15088C1.s15088c1f4");
    check_field_offset(lv, s15088c1f5, ABISELECT(64,52), "S15088C1.s15088c1f5");
    check_field_offset(lv, s15088c1f6, ABISELECT(72,56), "S15088C1.s15088c1f6");
  }
}
static Arrange_To_Call_Me vS15088C1(Test_S15088C1, "S15088C1", ABISELECT(80,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15888C2_nt  {
  ::S11969C23_nt s15888c2f0;
  void  mf15888c2(); // _ZN11S15888C2_nt9mf15888c2Ev
};
//SIG(-1 S15888C2_nt) C1{ m FC2{ m Fp}}


void  S15888C2_nt ::mf15888c2(){}

//skip512 S15888C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15888C5_nt  {
  void *s15888c5f0;
  int s15888c5f1[4];
  void  mf15888c5(); // _ZN11S15888C5_nt9mf15888c5Ev
};
//SIG(-1 S15888C5_nt) C1{ m Fp Fi[4]}


void  S15888C5_nt ::mf15888c5(){}

//skip512 S15888C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15888C4_nt  {
  ::S15888C5_nt s15888c4f0;
  void  mf15888c4(); // _ZN11S15888C4_nt9mf15888c4Ev
};
//SIG(-1 S15888C4_nt) C1{ m FC2{ m Fp Fi[4]}}


void  S15888C4_nt ::mf15888c4(){}

//skip512 S15888C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15888C1  {
  ::S15888C2_nt s15888c1f0;
  ::S15888C4_nt s15888c1f1;
  ::S15888C2_nt s15888c1f2;
  void  mf15888c1(); // _ZN8S15888C19mf15888c1Ev
};
//SIG(1 S15888C1) C1{ m FC2{ m FC3{ m Fp}} FC4{ m FC5{ m Fp Fi[4]}} FC2}


void  S15888C1 ::mf15888c1(){}

static void Test_S15888C1()
{
  {
    init_simple_test("S15888C1");
    S15888C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S15888C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15888C1)");
    check_field_offset(lv, s15888c1f0, 0, "S15888C1.s15888c1f0");
    check_field_offset(lv, s15888c1f1, ABISELECT(8,4), "S15888C1.s15888c1f1");
    check_field_offset(lv, s15888c1f2, ABISELECT(32,24), "S15888C1.s15888c1f2");
  }
}
static Arrange_To_Call_Me vS15888C1(Test_S15888C1, "S15888C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3521C4  {
  int s3521c4f0;
  virtual void  v3(); // _ZN7S3521C42v3Ev
  virtual void  v4(); // _ZN7S3521C42v4Ev
  ~S3521C4(); // tgen
  S3521C4(); // tgen
};
//SIG(-1 S3521C4) C1{ v1 v2 Fi}


void  S3521C4 ::v3(){vfunc_called(this, "_ZN7S3521C42v3Ev");}
void  S3521C4 ::v4(){vfunc_called(this, "_ZN7S3521C42v4Ev");}
S3521C4 ::~S3521C4(){ note_dtor("S3521C4", this);} // tgen
S3521C4 ::S3521C4(){ note_ctor("S3521C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3521C4C1Ev();
extern void _ZN7S3521C4D1Ev();
Name_Map name_map_S3521C4[] = {
  NSPAIR(_ZN7S3521C4C1Ev),
  NSPAIR(_ZN7S3521C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3521C4[];
extern void _ZN7S3521C42v3Ev();
extern void _ZN7S3521C42v4Ev();
static  VTBL_ENTRY vtc_S3521C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3521C4[0]),
  (VTBL_ENTRY)&_ZN7S3521C42v3Ev,
  (VTBL_ENTRY)&_ZN7S3521C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S3521C4[];
extern  VTBL_ENTRY _ZTV7S3521C4[];
Class_Descriptor cd_S3521C4 = {  "S3521C4", // class name
  0,0,//no base classes
  &(vtc_S3521C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3521C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3521C4),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  S3521C3  : virtual S3521C4 {
  ~S3521C3(); // tgen
  S3521C3(); // tgen
};
//SIG(-1 S3521C3) C1{ VBC2{ v1 v2 Fi}}


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

static void Test_S3521C3()
{
  extern Class_Descriptor cd_S3521C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3521C3, buf);
    S3521C3 *dp, &lv = *(dp=new (buf) S3521C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3521C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3521C3)");
    check_base_class_offset(lv, (S3521C4*), ABISELECT(8,4), "S3521C3");
    test_class_info(&lv, &cd_S3521C3);
    dp->~S3521C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3521C3(Test_S3521C3, "S3521C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3521C3C1Ev();
extern void _ZN7S3521C3D1Ev();
Name_Map name_map_S3521C3[] = {
  NSPAIR(_ZN7S3521C3C1Ev),
  NSPAIR(_ZN7S3521C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3521C4;
extern VTBL_ENTRY _ZTI7S3521C4[];
extern  VTBL_ENTRY _ZTV7S3521C4[];
static Base_Class bases_S3521C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3521C4,    ABISELECT(8,4), //bcp->offset
    3, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3521C3[];
extern void _ZN7S3521C42v3Ev();
extern void _ZN7S3521C42v4Ev();
static  VTBL_ENTRY vtc_S3521C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3521C3[0]),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3521C3[0]),
  (VTBL_ENTRY)&_ZN7S3521C42v3Ev,
  (VTBL_ENTRY)&_ZN7S3521C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S3521C3[];
static  VTT_ENTRY vtt_S3521C3[] = {
  {&(_ZTV7S3521C3[3]),  3,9},
  {&(_ZTV7S3521C3[7]),  7,9},
};
extern VTBL_ENTRY _ZTI7S3521C3[];
extern  VTBL_ENTRY _ZTV7S3521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3521C3[];
Class_Descriptor cd_S3521C3 = {  "S3521C3", // class name
  bases_S3521C3, 1,
  &(vtc_S3521C3[0]), // expected_vtbl_contents
  &(vtt_S3521C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3521C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3521C3),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3521C3),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  S3521C5  : virtual S3521C4 {
  ~S3521C5(); // tgen
  S3521C5(); // tgen
};
//SIG(-1 S3521C5) C1{ VBC2{ v1 v2 Fi}}


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

static void Test_S3521C5()
{
  extern Class_Descriptor cd_S3521C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3521C5, buf);
    S3521C5 *dp, &lv = *(dp=new (buf) S3521C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3521C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3521C5)");
    check_base_class_offset(lv, (S3521C4*), ABISELECT(8,4), "S3521C5");
    test_class_info(&lv, &cd_S3521C5);
    dp->~S3521C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3521C5(Test_S3521C5, "S3521C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3521C5C1Ev();
extern void _ZN7S3521C5D1Ev();
Name_Map name_map_S3521C5[] = {
  NSPAIR(_ZN7S3521C5C1Ev),
  NSPAIR(_ZN7S3521C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3521C4;
extern VTBL_ENTRY _ZTI7S3521C4[];
extern  VTBL_ENTRY _ZTV7S3521C4[];
static Base_Class bases_S3521C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3521C4,    ABISELECT(8,4), //bcp->offset
    3, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3521C5[];
extern void _ZN7S3521C42v3Ev();
extern void _ZN7S3521C42v4Ev();
static  VTBL_ENTRY vtc_S3521C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3521C5[0]),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3521C5[0]),
  (VTBL_ENTRY)&_ZN7S3521C42v3Ev,
  (VTBL_ENTRY)&_ZN7S3521C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S3521C5[];
static  VTT_ENTRY vtt_S3521C5[] = {
  {&(_ZTV7S3521C5[3]),  3,9},
  {&(_ZTV7S3521C5[7]),  7,9},
};
extern VTBL_ENTRY _ZTI7S3521C5[];
extern  VTBL_ENTRY _ZTV7S3521C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3521C5[];
Class_Descriptor cd_S3521C5 = {  "S3521C5", // class name
  bases_S3521C5, 1,
  &(vtc_S3521C5[0]), // expected_vtbl_contents
  &(vtt_S3521C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3521C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3521C5),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3521C5),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  S3521C2  : S3521C3 , S3521C5 {
  virtual void  v5(); // _ZN7S3521C22v5Ev
  virtual void  v6(); // _ZN7S3521C22v6Ev
  ~S3521C2(); // tgen
  S3521C2(); // tgen
};
//SIG(-1 S3521C2) C1{ BC2{ VBC3{ v3 v4 Fi}} BC4{ VBC3} v1 v2}


void  S3521C2 ::v5(){vfunc_called(this, "_ZN7S3521C22v5Ev");}
void  S3521C2 ::v6(){vfunc_called(this, "_ZN7S3521C22v6Ev");}
S3521C2 ::~S3521C2(){ note_dtor("S3521C2", this);} // tgen
S3521C2 ::S3521C2(){ note_ctor("S3521C2", this);} // tgen

static void Test_S3521C2()
{
  extern Class_Descriptor cd_S3521C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S3521C2, buf);
    S3521C2 *dp, &lv = *(dp=new (buf) S3521C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S3521C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3521C2)");
    check_base_class_offset(lv, (S3521C4*)(S3521C3*), ABISELECT(16,8), "S3521C2");
    check_base_class_offset(lv, (S3521C4*)(S3521C5*), ABISELECT(16,8), "S3521C2");
    check_base_class_offset(lv, (S3521C3*), 0, "S3521C2");
    check_base_class_offset(lv, (S3521C5*), ABISELECT(8,4), "S3521C2");
    test_class_info(&lv, &cd_S3521C2);
    dp->~S3521C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3521C2(Test_S3521C2, "S3521C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S3521C2C1Ev();
extern void _ZN7S3521C2D1Ev();
Name_Map name_map_S3521C2[] = {
  NSPAIR(_ZN7S3521C2C1Ev),
  NSPAIR(_ZN7S3521C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3521C4;
extern VTBL_ENTRY _ZTI7S3521C4[];
extern  VTBL_ENTRY _ZTV7S3521C4[];
extern Class_Descriptor cd_S3521C3;
extern VTBL_ENTRY _ZTI7S3521C3[];
extern  VTBL_ENTRY _ZTV7S3521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3521C3[];
extern Class_Descriptor cd_S3521C5;
extern VTBL_ENTRY _ZTI7S3521C5[];
extern  VTBL_ENTRY _ZTV7S3521C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3521C5[];
static Base_Class bases_S3521C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3521C4,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3521C3,    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_S3521C5,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3521C2[];
extern void _ZN7S3521C22v5Ev();
extern void _ZN7S3521C22v6Ev();
extern void _ZN7S3521C42v3Ev();
extern void _ZN7S3521C42v4Ev();
static  VTBL_ENTRY vtc_S3521C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3521C2[0]),
  (VTBL_ENTRY)&_ZN7S3521C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3521C22v6Ev,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3521C2[0]),
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3521C2[0]),
  (VTBL_ENTRY)&_ZN7S3521C42v3Ev,
  (VTBL_ENTRY)&_ZN7S3521C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S3521C2[];
static  VTBL_ENTRY _tg__ZTV7S3521C3__7S3521C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3521C3[0]),
};
extern void _ZN7S3521C42v3Ev();
extern void _ZN7S3521C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3521C4__7S3521C3__7S3521C2[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3521C3[0]),
  (VTBL_ENTRY)&_ZN7S3521C42v3Ev,
  (VTBL_ENTRY)&_ZN7S3521C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S3521C5__7S3521C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3521C5[0]),
};
extern void _ZN7S3521C42v3Ev();
extern void _ZN7S3521C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3521C4__7S3521C5__7S3521C2[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3521C5[0]),
  (VTBL_ENTRY)&_ZN7S3521C42v3Ev,
  (VTBL_ENTRY)&_ZN7S3521C42v4Ev,
};
static  VTT_ENTRY vtt_S3521C2[] = {
  {&(_ZTV7S3521C2[3]),  3,14},
  {&(_tg__ZTV7S3521C3__7S3521C2[3]),  3,3},
  {&(_tg__ZTV7S3521C4__7S3521C3__7S3521C2[4]),  4,6},
  {&(_tg__ZTV7S3521C5__7S3521C2[3]),  3,3},
  {&(_tg__ZTV7S3521C4__7S3521C5__7S3521C2[4]),  4,6},
  {&(_ZTV7S3521C2[12]),  12,14},
  {&(_ZTV7S3521C2[8]),  8,14},
};
extern VTBL_ENTRY _ZTI7S3521C2[];
extern  VTBL_ENTRY _ZTV7S3521C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3521C2[];
Class_Descriptor cd_S3521C2 = {  "S3521C2", // class name
  bases_S3521C2, 3,
  &(vtc_S3521C2[0]), // expected_vtbl_contents
  &(vtt_S3521C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S3521C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3521C2),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3521C2),7, //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  S3521C1  : S3521C2 {
  virtual void  v1(); // _ZN7S3521C12v1Ev
  virtual void  v2(); // _ZN7S3521C12v2Ev
  ~S3521C1(); // tgen
  S3521C1(); // tgen
};
//SIG(1 S3521C1) C1{ BC2{ BC3{ VBC4{ v3 v4 Fi}} BC5{ VBC4} v5 v6} v1 v2}


void  S3521C1 ::v1(){vfunc_called(this, "_ZN7S3521C12v1Ev");}
void  S3521C1 ::v2(){vfunc_called(this, "_ZN7S3521C12v2Ev");}
S3521C1 ::~S3521C1(){ note_dtor("S3521C1", this);} // tgen
S3521C1 ::S3521C1(){ note_ctor("S3521C1", this);} // tgen

static void Test_S3521C1()
{
  extern Class_Descriptor cd_S3521C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S3521C1, buf);
    S3521C1 *dp, &lv = *(dp=new (buf) S3521C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S3521C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3521C1)");
    check_base_class_offset(lv, (S3521C4*)(S3521C3*)(S3521C2*), ABISELECT(16,8), "S3521C1");
    check_base_class_offset(lv, (S3521C4*)(S3521C5*)(S3521C2*), ABISELECT(16,8), "S3521C1");
    check_base_class_offset(lv, (S3521C3*)(S3521C2*), 0, "S3521C1");
    check_base_class_offset(lv, (S3521C5*)(S3521C2*), ABISELECT(8,4), "S3521C1");
    check_base_class_offset(lv, (S3521C2*), 0, "S3521C1");
    test_class_info(&lv, &cd_S3521C1);
    dp->~S3521C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3521C1(Test_S3521C1, "S3521C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S3521C1C1Ev();
extern void _ZN7S3521C1D1Ev();
Name_Map name_map_S3521C1[] = {
  NSPAIR(_ZN7S3521C1C1Ev),
  NSPAIR(_ZN7S3521C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3521C4;
extern VTBL_ENTRY _ZTI7S3521C4[];
extern  VTBL_ENTRY _ZTV7S3521C4[];
extern Class_Descriptor cd_S3521C3;
extern VTBL_ENTRY _ZTI7S3521C3[];
extern  VTBL_ENTRY _ZTV7S3521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3521C3[];
extern Class_Descriptor cd_S3521C5;
extern VTBL_ENTRY _ZTI7S3521C5[];
extern  VTBL_ENTRY _ZTV7S3521C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3521C5[];
extern Class_Descriptor cd_S3521C2;
extern VTBL_ENTRY _ZTI7S3521C2[];
extern  VTBL_ENTRY _ZTV7S3521C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3521C2[];
static Base_Class bases_S3521C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3521C4,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3521C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S3521C5,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3521C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3521C1[];
extern void _ZN7S3521C22v5Ev();
extern void _ZN7S3521C22v6Ev();
extern void _ZN7S3521C12v1Ev();
extern void _ZN7S3521C12v2Ev();
extern void _ZN7S3521C42v3Ev();
extern void _ZN7S3521C42v4Ev();
static  VTBL_ENTRY vtc_S3521C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3521C1[0]),
  (VTBL_ENTRY)&_ZN7S3521C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3521C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3521C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3521C12v2Ev,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3521C1[0]),
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3521C1[0]),
  (VTBL_ENTRY)&_ZN7S3521C42v3Ev,
  (VTBL_ENTRY)&_ZN7S3521C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S3521C1[];
extern void _ZN7S3521C22v5Ev();
extern void _ZN7S3521C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3521C2__7S3521C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3521C2[0]),
  (VTBL_ENTRY)&_ZN7S3521C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3521C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV7S3521C37S3521C2__7S3521C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3521C3[0]),
};
extern void _ZN7S3521C42v3Ev();
extern void _ZN7S3521C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3521C4__7S3521C37S3521C2__7S3521C1[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3521C3[0]),
  (VTBL_ENTRY)&_ZN7S3521C42v3Ev,
  (VTBL_ENTRY)&_ZN7S3521C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S3521C57S3521C2__7S3521C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3521C5[0]),
};
extern void _ZN7S3521C42v3Ev();
extern void _ZN7S3521C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3521C4__7S3521C57S3521C2__7S3521C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3521C5[0]),
  (VTBL_ENTRY)&_ZN7S3521C42v3Ev,
  (VTBL_ENTRY)&_ZN7S3521C42v4Ev,
};
extern void _ZN7S3521C42v3Ev();
extern void _ZN7S3521C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3521C4__7S3521C2__7S3521C1[] = {
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3521C2[0]),
  (VTBL_ENTRY)&_ZN7S3521C42v3Ev,
  (VTBL_ENTRY)&_ZN7S3521C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S3521C5__7S3521C2__7S3521C1[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3521C2[0]),
};
static  VTT_ENTRY vtt_S3521C1[] = {
  {&(_ZTV7S3521C1[3]),  3,16},
  {&(_tg__ZTV7S3521C2__7S3521C1[3]),  3,5},
  {&(_tg__ZTV7S3521C37S3521C2__7S3521C1[3]),  3,3},
  {&(_tg__ZTV7S3521C4__7S3521C37S3521C2__7S3521C1[4]),  4,6},
  {&(_tg__ZTV7S3521C57S3521C2__7S3521C1[3]),  3,3},
  {&(_tg__ZTV7S3521C4__7S3521C57S3521C2__7S3521C1[4]),  4,6},
  {&(_tg__ZTV7S3521C4__7S3521C2__7S3521C1[4]),  4,6},
  {&(_tg__ZTV7S3521C5__7S3521C2__7S3521C1[3]),  3,3},
  {&(_ZTV7S3521C1[14]),  14,16},
  {&(_ZTV7S3521C1[10]),  10,16},
};
extern VTBL_ENTRY _ZTI7S3521C1[];
extern  VTBL_ENTRY _ZTV7S3521C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3521C1[];
Class_Descriptor cd_S3521C1 = {  "S3521C1", // class name
  bases_S3521C1, 4,
  &(vtc_S3521C1[0]), // expected_vtbl_contents
  &(vtt_S3521C1[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S3521C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3521C1),16, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3521C1),10, //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  S15991C1  {
  ::S1604C5_nt s15991c1f0;
  ::S3243C6 s15991c1f1;
  int s15991c1f2;
  void  mf15991c1(); // _ZN8S15991C19mf15991c1Ev
};
//SIG(1 S15991C1) C1{ m FC2{ m Fi[2]} FC3{ BC4{ BC5{ m Fp Fi[2]}}} Fi}


void  S15991C1 ::mf15991c1(){}

static void Test_S15991C1()
{
  {
    init_simple_test("S15991C1");
    S15991C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S15991C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15991C1)");
    check_field_offset(lv, s15991c1f0, 0, "S15991C1.s15991c1f0");
    check_field_offset(lv, s15991c1f1, 8, "S15991C1.s15991c1f1");
    check_field_offset(lv, s15991c1f2, ABISELECT(24,20), "S15991C1.s15991c1f2");
  }
}
static Arrange_To_Call_Me vS15991C1(Test_S15991C1, "S15991C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7550C3  {
  void *s7550c3f0;
  virtual void  v2(); // _ZN7S7550C32v2Ev
  ~S7550C3(); // tgen
  S7550C3(); // tgen
};
//SIG(-1 S7550C3) C1{ v1 Fp}


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

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

#else // __cplusplus

extern void _ZN7S7550C3C1Ev();
extern void _ZN7S7550C3D1Ev();
Name_Map name_map_S7550C3[] = {
  NSPAIR(_ZN7S7550C3C1Ev),
  NSPAIR(_ZN7S7550C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7550C3[];
extern void _ZN7S7550C32v2Ev();
static  VTBL_ENTRY vtc_S7550C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7550C3[0]),
  (VTBL_ENTRY)&_ZN7S7550C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S7550C3[];
extern  VTBL_ENTRY _ZTV7S7550C3[];
Class_Descriptor cd_S7550C3 = {  "S7550C3", // class name
  0,0,//no base classes
  &(vtc_S7550C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7550C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7550C3),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  S7550C2  : virtual S7550C3 {
  __tsi64 s7550c2f0;
  char s7550c2f1;
  virtual void  v3(); // _ZN7S7550C22v3Ev
  virtual void  v4(); // _ZN7S7550C22v4Ev
  virtual void  v5(); // _ZN7S7550C22v5Ev
  ~S7550C2(); // tgen
  S7550C2(); // tgen
};
//SIG(-1 S7550C2) C1{ VBC2{ v4 Fp} v1 v2 v3 FL Fc}


void  S7550C2 ::v3(){vfunc_called(this, "_ZN7S7550C22v3Ev");}
void  S7550C2 ::v4(){vfunc_called(this, "_ZN7S7550C22v4Ev");}
void  S7550C2 ::v5(){vfunc_called(this, "_ZN7S7550C22v5Ev");}
S7550C2 ::~S7550C2(){ note_dtor("S7550C2", this);} // tgen
S7550C2 ::S7550C2(){ note_ctor("S7550C2", this);} // tgen

static void Test_S7550C2()
{
  extern Class_Descriptor cd_S7550C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7550C2, buf);
    S7550C2 *dp, &lv = *(dp=new (buf) S7550C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7550C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7550C2)");
    check_base_class_offset(lv, (S7550C3*), ABISELECT(24,16), "S7550C2");
    check_field_offset(lv, s7550c2f0, ABISELECT(8,4), "S7550C2.s7550c2f0");
    check_field_offset(lv, s7550c2f1, ABISELECT(16,12), "S7550C2.s7550c2f1");
    test_class_info(&lv, &cd_S7550C2);
    dp->~S7550C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7550C2(Test_S7550C2, "S7550C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7550C2C1Ev();
extern void _ZN7S7550C2D1Ev();
Name_Map name_map_S7550C2[] = {
  NSPAIR(_ZN7S7550C2C1Ev),
  NSPAIR(_ZN7S7550C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7550C3;
extern VTBL_ENTRY _ZTI7S7550C3[];
extern  VTBL_ENTRY _ZTV7S7550C3[];
static Base_Class bases_S7550C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7550C3,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7550C2[];
extern void _ZN7S7550C22v3Ev();
extern void _ZN7S7550C22v4Ev();
extern void _ZN7S7550C22v5Ev();
extern void _ZN7S7550C32v2Ev();
static  VTBL_ENTRY vtc_S7550C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7550C2[0]),
  (VTBL_ENTRY)&_ZN7S7550C22v3Ev,
  (VTBL_ENTRY)&_ZN7S7550C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7550C22v5Ev,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7550C2[0]),
  (VTBL_ENTRY)&_ZN7S7550C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S7550C2[];
static  VTT_ENTRY vtt_S7550C2[] = {
  {&(_ZTV7S7550C2[3]),  3,10},
  {&(_ZTV7S7550C2[9]),  9,10},
};
extern VTBL_ENTRY _ZTI7S7550C2[];
extern  VTBL_ENTRY _ZTV7S7550C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7550C2[];
Class_Descriptor cd_S7550C2 = {  "S7550C2", // class name
  bases_S7550C2, 1,
  &(vtc_S7550C2[0]), // expected_vtbl_contents
  &(vtt_S7550C2[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7550C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7550C2),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7550C2),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  S7550C1  : S7550C2 {
  int s7550c1f0[2];
  __tsi64 s7550c1f1;
  virtual void  v1(); // _ZN7S7550C12v1Ev
  ~S7550C1(); // tgen
  S7550C1(); // tgen
};
//SIG(1 S7550C1) C1{ BC2{ VBC3{ v2 Fp} v3 v4 v5 FL Fc} v1 Fi[2] FL}


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

static void Test_S7550C1()
{
  extern Class_Descriptor cd_S7550C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S7550C1, buf);
    S7550C1 *dp, &lv = *(dp=new (buf) S7550C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S7550C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7550C1)");
    check_base_class_offset(lv, (S7550C3*)(S7550C2*), ABISELECT(40,32), "S7550C1");
    check_base_class_offset(lv, (S7550C2*), 0, "S7550C1");
    check_field_offset(lv, s7550c1f0, ABISELECT(20,16), "S7550C1.s7550c1f0");
    check_field_offset(lv, s7550c1f1, ABISELECT(32,24), "S7550C1.s7550c1f1");
    test_class_info(&lv, &cd_S7550C1);
    dp->~S7550C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7550C1(Test_S7550C1, "S7550C1", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN7S7550C1C1Ev();
extern void _ZN7S7550C1D1Ev();
Name_Map name_map_S7550C1[] = {
  NSPAIR(_ZN7S7550C1C1Ev),
  NSPAIR(_ZN7S7550C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7550C3;
extern VTBL_ENTRY _ZTI7S7550C3[];
extern  VTBL_ENTRY _ZTV7S7550C3[];
extern Class_Descriptor cd_S7550C2;
extern VTBL_ENTRY _ZTI7S7550C2[];
extern  VTBL_ENTRY _ZTV7S7550C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7550C2[];
static Base_Class bases_S7550C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7550C3,    ABISELECT(40,32), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7550C2,    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 _ZTI7S7550C1[];
extern void _ZN7S7550C22v3Ev();
extern void _ZN7S7550C22v4Ev();
extern void _ZN7S7550C22v5Ev();
extern void _ZN7S7550C12v1Ev();
extern void _ZN7S7550C32v2Ev();
static  VTBL_ENTRY vtc_S7550C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7550C1[0]),
  (VTBL_ENTRY)&_ZN7S7550C22v3Ev,
  (VTBL_ENTRY)&_ZN7S7550C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7550C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7550C12v1Ev,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7550C1[0]),
  (VTBL_ENTRY)&_ZN7S7550C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S7550C1[];
extern void _ZN7S7550C22v3Ev();
extern void _ZN7S7550C22v4Ev();
extern void _ZN7S7550C22v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7550C2__7S7550C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7550C2[0]),
  (VTBL_ENTRY)&_ZN7S7550C22v3Ev,
  (VTBL_ENTRY)&_ZN7S7550C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7550C22v5Ev,
};
extern void _ZN7S7550C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7550C3__7S7550C2__7S7550C1[] = {
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7550C2[0]),
  (VTBL_ENTRY)&_ZN7S7550C32v2Ev,
};
static  VTT_ENTRY vtt_S7550C1[] = {
  {&(_ZTV7S7550C1[3]),  3,11},
  {&(_tg__ZTV7S7550C2__7S7550C1[3]),  3,6},
  {&(_tg__ZTV7S7550C3__7S7550C2__7S7550C1[3]),  3,4},
  {&(_ZTV7S7550C1[10]),  10,11},
};
extern VTBL_ENTRY _ZTI7S7550C1[];
extern  VTBL_ENTRY _ZTV7S7550C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7550C1[];
Class_Descriptor cd_S7550C1 = {  "S7550C1", // class name
  bases_S7550C1, 2,
  &(vtc_S7550C1[0]), // expected_vtbl_contents
  &(vtt_S7550C1[0]), // expected_vtt_contents
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI7S7550C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7550C1),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7550C1),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  S18027C1  {
  void *s18027c1f0[2];
  ::S11969C28_nt s18027c1f1;
  ::S2333C27_nt s18027c1f2;
  void  mf18027c1(); // _ZN8S18027C19mf18027c1Ev
};
//SIG(1 S18027C1) C1{ m Fp[2] FC2{ m Fp Fi[2] FC3{ m}} FC4{ Fi[2]}}


void  S18027C1 ::mf18027c1(){}

static void Test_S18027C1()
{
  {
    init_simple_test("S18027C1");
    S18027C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S18027C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18027C1)");
    check_field_offset(lv, s18027c1f0, 0, "S18027C1.s18027c1f0");
    check_field_offset(lv, s18027c1f1, ABISELECT(16,8), "S18027C1.s18027c1f1");
    check_field_offset(lv, s18027c1f2, ABISELECT(40,24), "S18027C1.s18027c1f2");
  }
}
static Arrange_To_Call_Me vS18027C1(Test_S18027C1, "S18027C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7566C3  {
  virtual void  v2(); // _ZN7S7566C32v2Ev
  ~S7566C3(); // tgen
  S7566C3(); // tgen
};
//SIG(-1 S7566C3) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S7566C3C1Ev();
extern void _ZN7S7566C3D1Ev();
Name_Map name_map_S7566C3[] = {
  NSPAIR(_ZN7S7566C3C1Ev),
  NSPAIR(_ZN7S7566C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7566C3[];
extern void _ZN7S7566C32v2Ev();
static  VTBL_ENTRY vtc_S7566C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7566C3[0]),
  (VTBL_ENTRY)&_ZN7S7566C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S7566C3[];
extern  VTBL_ENTRY _ZTV7S7566C3[];
Class_Descriptor cd_S7566C3 = {  "S7566C3", // class name
  0,0,//no base classes
  &(vtc_S7566C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7566C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7566C3),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  S7566C2  : virtual S7566C3 {
  __tsi64 s7566c2f0;
  void *s7566c2f1;
  virtual void  v3(); // _ZN7S7566C22v3Ev
  virtual void  v4(); // _ZN7S7566C22v4Ev
  virtual void  v5(); // _ZN7S7566C22v5Ev
  ~S7566C2(); // tgen
  S7566C2(); // tgen
};
//SIG(-1 S7566C2) C1{ VBC2{ v4} v1 v2 v3 FL Fp}


void  S7566C2 ::v3(){vfunc_called(this, "_ZN7S7566C22v3Ev");}
void  S7566C2 ::v4(){vfunc_called(this, "_ZN7S7566C22v4Ev");}
void  S7566C2 ::v5(){vfunc_called(this, "_ZN7S7566C22v5Ev");}
S7566C2 ::~S7566C2(){ note_dtor("S7566C2", this);} // tgen
S7566C2 ::S7566C2(){ note_ctor("S7566C2", this);} // tgen

static void Test_S7566C2()
{
  extern Class_Descriptor cd_S7566C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7566C2, buf);
    S7566C2 *dp, &lv = *(dp=new (buf) S7566C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7566C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7566C2)");
    check_base_class_offset(lv, (S7566C3*), 0, "S7566C2");
    check_field_offset(lv, s7566c2f0, ABISELECT(8,4), "S7566C2.s7566c2f0");
    check_field_offset(lv, s7566c2f1, ABISELECT(16,12), "S7566C2.s7566c2f1");
    test_class_info(&lv, &cd_S7566C2);
    dp->~S7566C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7566C2(Test_S7566C2, "S7566C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7566C2C1Ev();
extern void _ZN7S7566C2D1Ev();
Name_Map name_map_S7566C2[] = {
  NSPAIR(_ZN7S7566C2C1Ev),
  NSPAIR(_ZN7S7566C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7566C3;
extern VTBL_ENTRY _ZTI7S7566C3[];
extern  VTBL_ENTRY _ZTV7S7566C3[];
static Base_Class bases_S7566C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7566C3,    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 _ZTI7S7566C2[];
extern void _ZN7S7566C32v2Ev();
extern void _ZN7S7566C22v3Ev();
extern void _ZN7S7566C22v4Ev();
extern void _ZN7S7566C22v5Ev();
static  VTBL_ENTRY vtc_S7566C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7566C2[0]),
  (VTBL_ENTRY)&_ZN7S7566C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7566C22v3Ev,
  (VTBL_ENTRY)&_ZN7S7566C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7566C22v5Ev,
};
extern VTBL_ENTRY _ZTV7S7566C2[];
static  VTT_ENTRY vtt_S7566C2[] = {
  {&(_ZTV7S7566C2[4]),  4,8},
  {&(_ZTV7S7566C2[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S7566C2[];
extern  VTBL_ENTRY _ZTV7S7566C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7566C2[];
Class_Descriptor cd_S7566C2 = {  "S7566C2", // class name
  bases_S7566C2, 1,
  &(vtc_S7566C2[0]), // expected_vtbl_contents
  &(vtt_S7566C2[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7566C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7566C2),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7566C2),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  S7566C4  {
  virtual void  v6(); // _ZN7S7566C42v6Ev
  ~S7566C4(); // tgen
  S7566C4(); // tgen
};
//SIG(-1 S7566C4) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S7566C4C1Ev();
extern void _ZN7S7566C4D1Ev();
Name_Map name_map_S7566C4[] = {
  NSPAIR(_ZN7S7566C4C1Ev),
  NSPAIR(_ZN7S7566C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7566C4[];
extern void _ZN7S7566C42v6Ev();
static  VTBL_ENTRY vtc_S7566C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7566C4[0]),
  (VTBL_ENTRY)&_ZN7S7566C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S7566C4[];
extern  VTBL_ENTRY _ZTV7S7566C4[];
Class_Descriptor cd_S7566C4 = {  "S7566C4", // class name
  0,0,//no base classes
  &(vtc_S7566C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7566C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7566C4),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  S7566C1  : S7566C2 , virtual S7566C4 {
  int s7566c1f0;
  virtual void  v1(); // _ZN7S7566C12v1Ev
  ~S7566C1(); // tgen
  S7566C1(); // tgen
};
//SIG(1 S7566C1) C1{ BC2{ VBC3{ v2} v3 v4 v5 FL Fp} VBC4{ v6} v1 Fi}


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

static void Test_S7566C1()
{
  extern Class_Descriptor cd_S7566C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7566C1, buf);
    S7566C1 *dp, &lv = *(dp=new (buf) S7566C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7566C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7566C1)");
    check_base_class_offset(lv, (S7566C3*)(S7566C2*), 0, "S7566C1");
    check_base_class_offset(lv, (S7566C2*), 0, "S7566C1");
    check_base_class_offset(lv, (S7566C4*), ABISELECT(32,20), "S7566C1");
    check_field_offset(lv, s7566c1f0, ABISELECT(24,16), "S7566C1.s7566c1f0");
    test_class_info(&lv, &cd_S7566C1);
    dp->~S7566C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7566C1(Test_S7566C1, "S7566C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7566C1C1Ev();
extern void _ZN7S7566C1D1Ev();
Name_Map name_map_S7566C1[] = {
  NSPAIR(_ZN7S7566C1C1Ev),
  NSPAIR(_ZN7S7566C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7566C3;
extern VTBL_ENTRY _ZTI7S7566C3[];
extern  VTBL_ENTRY _ZTV7S7566C3[];
extern Class_Descriptor cd_S7566C2;
extern VTBL_ENTRY _ZTI7S7566C2[];
extern  VTBL_ENTRY _ZTV7S7566C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7566C2[];
extern Class_Descriptor cd_S7566C4;
extern VTBL_ENTRY _ZTI7S7566C4[];
extern  VTBL_ENTRY _ZTV7S7566C4[];
static Base_Class bases_S7566C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7566C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7566C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7566C4,    ABISELECT(32,20), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7566C1[];
extern void _ZN7S7566C32v2Ev();
extern void _ZN7S7566C22v3Ev();
extern void _ZN7S7566C22v4Ev();
extern void _ZN7S7566C22v5Ev();
extern void _ZN7S7566C12v1Ev();
extern void _ZN7S7566C42v6Ev();
static  VTBL_ENTRY vtc_S7566C1[] = {
  ABISELECT(32,20),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7566C1[0]),
  (VTBL_ENTRY)&_ZN7S7566C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7566C22v3Ev,
  (VTBL_ENTRY)&_ZN7S7566C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7566C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7566C12v1Ev,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7566C1[0]),
  (VTBL_ENTRY)&_ZN7S7566C42v6Ev,
};
extern VTBL_ENTRY _ZTV7S7566C1[];
extern void _ZN7S7566C32v2Ev();
extern void _ZN7S7566C22v3Ev();
extern void _ZN7S7566C22v4Ev();
extern void _ZN7S7566C22v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7566C2__7S7566C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7566C2[0]),
  (VTBL_ENTRY)&_ZN7S7566C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7566C22v3Ev,
  (VTBL_ENTRY)&_ZN7S7566C22v4Ev,
  (VTBL_ENTRY)&_ZN7S7566C22v5Ev,
};
static  VTT_ENTRY vtt_S7566C1[] = {
  {&(_ZTV7S7566C1[5]),  5,14},
  {&(_tg__ZTV7S7566C2__7S7566C1[4]),  4,8},
  {&(_tg__ZTV7S7566C2__7S7566C1[4]),  4,8},
  {&(_ZTV7S7566C1[5]),  5,14},
  {&(_ZTV7S7566C1[13]),  13,14},
};
extern VTBL_ENTRY _ZTI7S7566C1[];
extern  VTBL_ENTRY _ZTV7S7566C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7566C1[];
Class_Descriptor cd_S7566C1 = {  "S7566C1", // class name
  bases_S7566C1, 3,
  &(vtc_S7566C1[0]), // expected_vtbl_contents
  &(vtt_S7566C1[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7566C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7566C1),14, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7566C1),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14308C1  {
  void *s14308c1f0;
  int s14308c1f1[2];
  void *s14308c1f2[5];
  int s14308c1f3[3];
  char s14308c1f4[61];
  int s14308c1f5[2];
  void *s14308c1f6[2];
};
//SIG(1 S14308C1) C1{ Fp Fi[2] Fp[5] Fi[3] Fc[61] Fi[2] Fp[2]}



static void Test_S14308C1()
{
  {
    init_simple_test("S14308C1");
    S14308C1 lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S14308C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14308C1)");
    check_field_offset(lv, s14308c1f0, 0, "S14308C1.s14308c1f0");
    check_field_offset(lv, s14308c1f1, ABISELECT(8,4), "S14308C1.s14308c1f1");
    check_field_offset(lv, s14308c1f2, ABISELECT(16,12), "S14308C1.s14308c1f2");
    check_field_offset(lv, s14308c1f3, ABISELECT(56,32), "S14308C1.s14308c1f3");
    check_field_offset(lv, s14308c1f4, ABISELECT(68,44), "S14308C1.s14308c1f4");
    check_field_offset(lv, s14308c1f5, ABISELECT(132,108), "S14308C1.s14308c1f5");
    check_field_offset(lv, s14308c1f6, ABISELECT(144,116), "S14308C1.s14308c1f6");
  }
}
static Arrange_To_Call_Me vS14308C1(Test_S14308C1, "S14308C1", ABISELECT(160,124));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S16610C4()
{
  extern Class_Descriptor cd_S16610C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S16610C4, buf);
    S16610C4 &lv = *(new (buf) S16610C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S16610C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16610C4)");
    check_base_class_offset(lv, (S1890C13*), 0, "S16610C4");
    test_class_info(&lv, &cd_S16610C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS16610C4(Test_S16610C4, "S16610C4", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S16610C3()
{
  extern Class_Descriptor cd_S16610C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S16610C3, buf);
    S16610C3 &lv = *(new (buf) S16610C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S16610C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16610C3)");
    check_base_class_offset(lv, (S1890C13*)(S16610C4*), 0, "S16610C3");
    check_base_class_offset(lv, (S16610C4*), 0, "S16610C3");
    test_class_info(&lv, &cd_S16610C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS16610C3(Test_S16610C3, "S16610C3", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1890C13;
extern Class_Descriptor cd_S16610C4;
static Base_Class bases_S16610C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1890C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S16610C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S16610C3 = {  "S16610C3", // class name
  bases_S16610C3, 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  S16610C1  {
  int s16610c1f0;
  ::S3243C5_nt s16610c1f1;
  ::S16610C3 s16610c1f2;
  void  mf16610c1(); // _ZN8S16610C19mf16610c1Ev
};
//SIG(1 S16610C1) C1{ m Fi FC2{ BC3{ BC4{ BC5{ m Fp Fi[2]}}}} FC6{ BC7{ BC8{ m Fp Fi[2]}}}}


void  S16610C1 ::mf16610c1(){}

static void Test_S16610C1()
{
  {
    init_simple_test("S16610C1");
    S16610C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S16610C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16610C1)");
    check_field_offset(lv, s16610c1f0, 0, "S16610C1.s16610c1f0");
    check_field_offset(lv, s16610c1f1, ABISELECT(8,4), "S16610C1.s16610c1f1");
    check_field_offset(lv, s16610c1f2, ABISELECT(24,16), "S16610C1.s16610c1f2");
  }
}
static Arrange_To_Call_Me vS16610C1(Test_S16610C1, "S16610C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21629C1  {
  int s21629c1f0;
  void *s21629c1f1[2];
  ::S21499C7_nt s21629c1f2;
  __tsi64 s21629c1f3;
  int s21629c1f4[3];
  char s21629c1f5;
  void  mf21629c1(); // _ZN8S21629C19mf21629c1Ev
  virtual  ~S21629C1(); // _ZN8S21629C1D1Ev
  S21629C1(); // tgen
};
//SIG(1 S21629C1) C1{ vd m Fi Fp[2] FC2{ m Fp[2]} FL Fi[3] Fc}


void  S21629C1 ::mf21629c1(){}
 S21629C1 ::~S21629C1(){ note_dtor("S21629C1", this);}
S21629C1 ::S21629C1(){ note_ctor("S21629C1", this);} // tgen

static void Test_S21629C1()
{
  extern Class_Descriptor cd_S21629C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S21629C1, buf);
    S21629C1 *dp, &lv = *(dp=new (buf) S21629C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S21629C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21629C1)");
    check_field_offset(lv, s21629c1f0, ABISELECT(8,4), "S21629C1.s21629c1f0");
    check_field_offset(lv, s21629c1f1, ABISELECT(16,8), "S21629C1.s21629c1f1");
    check_field_offset(lv, s21629c1f2, ABISELECT(32,16), "S21629C1.s21629c1f2");
    check_field_offset(lv, s21629c1f3, ABISELECT(48,24), "S21629C1.s21629c1f3");
    check_field_offset(lv, s21629c1f4, ABISELECT(56,32), "S21629C1.s21629c1f4");
    check_field_offset(lv, s21629c1f5, ABISELECT(68,44), "S21629C1.s21629c1f5");
    test_class_info(&lv, &cd_S21629C1);
    dp->~S21629C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21629C1(Test_S21629C1, "S21629C1", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN8S21629C1C1Ev();
extern void _ZN8S21629C1D1Ev();
Name_Map name_map_S21629C1[] = {
  NSPAIR(_ZN8S21629C1C1Ev),
  NSPAIR(_ZN8S21629C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21629C1[];
extern void _ZN8S21629C1D1Ev();
extern void _ZN8S21629C1D0Ev();
static  VTBL_ENTRY vtc_S21629C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21629C1[0]),
  (VTBL_ENTRY)&_ZN8S21629C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21629C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21629C1[];
extern  VTBL_ENTRY _ZTV8S21629C1[];
Class_Descriptor cd_S21629C1 = {  "S21629C1", // class name
  0,0,//no base classes
  &(vtc_S21629C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI8S21629C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21629C1),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  S17540C1  {
  void *s17540c1f0;
  ::S2333C13_nt s17540c1f1;
  ::S2333C13_nt s17540c1f2;
  char s17540c1f3;
  void *s17540c1f4[2];
  int s17540c1f5;
  void  mf17540c1(); // _ZN8S17540C19mf17540c1Ev
};
//SIG(1 S17540C1) C1{ m Fp FC2{ m FC3{ FL[4]}} FC2 Fc Fp[2] Fi}


void  S17540C1 ::mf17540c1(){}

static void Test_S17540C1()
{
  {
    init_simple_test("S17540C1");
    S17540C1 lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S17540C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17540C1)");
    check_field_offset(lv, s17540c1f0, 0, "S17540C1.s17540c1f0");
    check_field_offset(lv, s17540c1f1, ABISELECT(8,4), "S17540C1.s17540c1f1");
    check_field_offset(lv, s17540c1f2, ABISELECT(40,36), "S17540C1.s17540c1f2");
    check_field_offset(lv, s17540c1f3, ABISELECT(72,68), "S17540C1.s17540c1f3");
    check_field_offset(lv, s17540c1f4, ABISELECT(80,72), "S17540C1.s17540c1f4");
    check_field_offset(lv, s17540c1f5, ABISELECT(96,80), "S17540C1.s17540c1f5");
  }
}
static Arrange_To_Call_Me vS17540C1(Test_S17540C1, "S17540C1", ABISELECT(104,84));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3966C2  : S3965C3_nt {
  virtual  ~S3966C2(); // _ZN7S3966C2D1Ev
  virtual void  v3(); // _ZN7S3966C22v3Ev
  virtual void  v4(); // _ZN7S3966C22v4Ev
  S3966C2(); // tgen
};
//SIG(-1 S3966C2) C1{ BC2{ vd m FL} vd v1 v2}


 S3966C2 ::~S3966C2(){ note_dtor("S3966C2", this);}
void  S3966C2 ::v3(){vfunc_called(this, "_ZN7S3966C22v3Ev");}
void  S3966C2 ::v4(){vfunc_called(this, "_ZN7S3966C22v4Ev");}
S3966C2 ::S3966C2(){ note_ctor("S3966C2", this);} // tgen

static void Test_S3966C2()
{
  extern Class_Descriptor cd_S3966C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3966C2, buf);
    S3966C2 *dp, &lv = *(dp=new (buf) S3966C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3966C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3966C2)");
    check_base_class_offset(lv, (S3965C3_nt*), 0, "S3966C2");
    test_class_info(&lv, &cd_S3966C2);
    dp->~S3966C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3966C2(Test_S3966C2, "S3966C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3966C2C1Ev();
extern void _ZN7S3966C2D1Ev();
Name_Map name_map_S3966C2[] = {
  NSPAIR(_ZN7S3966C2C1Ev),
  NSPAIR(_ZN7S3966C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3965C3_nt;
extern VTBL_ENTRY _ZTI10S3965C3_nt[];
extern  VTBL_ENTRY _ZTV10S3965C3_nt[];
static Base_Class bases_S3966C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3965C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3966C2[];
extern void _ZN7S3966C2D1Ev();
extern void _ZN7S3966C2D0Ev();
extern void _ZN7S3966C22v3Ev();
extern void _ZN7S3966C22v4Ev();
static  VTBL_ENTRY vtc_S3966C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3966C2[0]),
  (VTBL_ENTRY)&_ZN7S3966C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3966C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3966C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3966C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3966C2[];
extern  VTBL_ENTRY _ZTV7S3966C2[];
Class_Descriptor cd_S3966C2 = {  "S3966C2", // class name
  bases_S3966C2, 1,
  &(vtc_S3966C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3966C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3966C2),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  S3966C1  : S3966C2 {
  char s3966c1f0;
  virtual  ~S3966C1(); // _ZN7S3966C1D1Ev
  virtual void  v1(); // _ZN7S3966C12v1Ev
  virtual void  v2(); // _ZN7S3966C12v2Ev
  S3966C1(); // tgen
};
//SIG(1 S3966C1) C1{ BC2{ BC3{ vd m FL} vd v3 v4} vd v1 v2 Fc}


 S3966C1 ::~S3966C1(){ note_dtor("S3966C1", this);}
void  S3966C1 ::v1(){vfunc_called(this, "_ZN7S3966C12v1Ev");}
void  S3966C1 ::v2(){vfunc_called(this, "_ZN7S3966C12v2Ev");}
S3966C1 ::S3966C1(){ note_ctor("S3966C1", this);} // tgen

static void Test_S3966C1()
{
  extern Class_Descriptor cd_S3966C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S3966C1, buf);
    S3966C1 *dp, &lv = *(dp=new (buf) S3966C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3966C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3966C1)");
    check_base_class_offset(lv, (S3965C3_nt*)(S3966C2*), 0, "S3966C1");
    check_base_class_offset(lv, (S3966C2*), 0, "S3966C1");
    check_field_offset(lv, s3966c1f0, ABISELECT(16,12), "S3966C1.s3966c1f0");
    test_class_info(&lv, &cd_S3966C1);
    dp->~S3966C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3966C1(Test_S3966C1, "S3966C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S3966C1C1Ev();
extern void _ZN7S3966C1D1Ev();
Name_Map name_map_S3966C1[] = {
  NSPAIR(_ZN7S3966C1C1Ev),
  NSPAIR(_ZN7S3966C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3965C3_nt;
extern VTBL_ENTRY _ZTI10S3965C3_nt[];
extern  VTBL_ENTRY _ZTV10S3965C3_nt[];
extern Class_Descriptor cd_S3966C2;
extern VTBL_ENTRY _ZTI7S3966C2[];
extern  VTBL_ENTRY _ZTV7S3966C2[];
static Base_Class bases_S3966C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3965C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3966C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3966C1[];
extern void _ZN7S3966C1D1Ev();
extern void _ZN7S3966C1D0Ev();
extern void _ZN7S3966C22v3Ev();
extern void _ZN7S3966C22v4Ev();
extern void _ZN7S3966C12v1Ev();
extern void _ZN7S3966C12v2Ev();
static  VTBL_ENTRY vtc_S3966C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3966C1[0]),
  (VTBL_ENTRY)&_ZN7S3966C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3966C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3966C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3966C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3966C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3966C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3966C1[];
extern  VTBL_ENTRY _ZTV7S3966C1[];
Class_Descriptor cd_S3966C1 = {  "S3966C1", // class name
  bases_S3966C1, 2,
  &(vtc_S3966C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S3966C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3966C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S13545C3_nt  {
  int s13545c3f0;
  void *s13545c3f1;
};
//SIG(1 S13545C3_nt) U1{ Fi Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S13545C2  {
  int s13545c2f0[2];
  ::S13545C3_nt s13545c2f1;
  char s13545c2f2;
  int s13545c2f3;
  char s13545c2f4;
};
//SIG(-1 S13545C2) C1{ Fi[2] FU2{ Fi Fp} Fc Fi Fc}



static void Test_S13545C2()
{
  {
    init_simple_test("S13545C2");
    S13545C2 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S13545C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13545C2)");
    check_field_offset(lv, s13545c2f0, 0, "S13545C2.s13545c2f0");
    check_field_offset(lv, s13545c2f1, 8, "S13545C2.s13545c2f1");
    check_field_offset(lv, s13545c2f2, ABISELECT(16,12), "S13545C2.s13545c2f2");
    check_field_offset(lv, s13545c2f3, ABISELECT(20,16), "S13545C2.s13545c2f3");
    check_field_offset(lv, s13545c2f4, ABISELECT(24,20), "S13545C2.s13545c2f4");
  }
}
static Arrange_To_Call_Me vS13545C2(Test_S13545C2, "S13545C2", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13545C1  {
  int s13545c1f0[5];
  ::S13545C2 s13545c1f1;
};
//SIG(1 S13545C1) C1{ Fi[5] FC2{ Fi[2] FU3{ Fi Fp} Fc Fi Fc}}



static void Test_S13545C1()
{
  {
    init_simple_test("S13545C1");
    S13545C1 lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S13545C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13545C1)");
    check_field_offset(lv, s13545c1f0, 0, "S13545C1.s13545c1f0");
    check_field_offset(lv, s13545c1f1, ABISELECT(24,20), "S13545C1.s13545c1f1");
  }
}
static Arrange_To_Call_Me vS13545C1(Test_S13545C1, "S13545C1", ABISELECT(56,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18264C2  {
  __tsi64 s18264c2f0;
  ::S1604C5_nt s18264c2f1;
  void  mf18264c2(); // _ZN8S18264C29mf18264c2Ev
};
//SIG(-1 S18264C2) C1{ m FL FC2{ m Fi[2]}}


void  S18264C2 ::mf18264c2(){}

static void Test_S18264C2()
{
  {
    init_simple_test("S18264C2");
    S18264C2 lv;
    check2(sizeof(lv), 16, "sizeof(S18264C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18264C2)");
    check_field_offset(lv, s18264c2f0, 0, "S18264C2.s18264c2f0");
    check_field_offset(lv, s18264c2f1, 8, "S18264C2.s18264c2f1");
  }
}
static Arrange_To_Call_Me vS18264C2(Test_S18264C2, "S18264C2", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18264C1  {
  void *s18264c1f0[3];
  ::S18264C2 s18264c1f1;
  char s18264c1f2[2];
  void  mf18264c1(); // _ZN8S18264C19mf18264c1Ev
};
//SIG(1 S18264C1) C1{ m Fp[3] FC2{ m FL FC3{ m Fi[2]}} Fc[2]}


void  S18264C1 ::mf18264c1(){}

static void Test_S18264C1()
{
  {
    init_simple_test("S18264C1");
    S18264C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S18264C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18264C1)");
    check_field_offset(lv, s18264c1f0, 0, "S18264C1.s18264c1f0");
    check_field_offset(lv, s18264c1f1, ABISELECT(24,12), "S18264C1.s18264c1f1");
    check_field_offset(lv, s18264c1f2, ABISELECT(40,28), "S18264C1.s18264c1f2");
  }
}
static Arrange_To_Call_Me vS18264C1(Test_S18264C1, "S18264C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18756C1  {
  ::S20980C11 s18756c1f0;
  char s18756c1f1:4;
  virtual void  v1(); // _ZN8S18756C12v1Ev
  virtual void  v2(); // _ZN8S18756C12v2Ev
  virtual void  v3(); // _ZN8S18756C12v3Ev
  virtual void  v4(); // _ZN8S18756C12v4Ev
  virtual void  v5(); // _ZN8S18756C12v5Ev
  virtual void  v6(); // _ZN8S18756C12v6Ev
  ~S18756C1(); // tgen
  S18756C1(); // tgen
};
//SIG(1 S18756C1) C1{ v1 v2 v3 v4 v5 v6 FC2{ v7 v8 Fi} Fc:4}


void  S18756C1 ::v1(){vfunc_called(this, "_ZN8S18756C12v1Ev");}
void  S18756C1 ::v2(){vfunc_called(this, "_ZN8S18756C12v2Ev");}
void  S18756C1 ::v3(){vfunc_called(this, "_ZN8S18756C12v3Ev");}
void  S18756C1 ::v4(){vfunc_called(this, "_ZN8S18756C12v4Ev");}
void  S18756C1 ::v5(){vfunc_called(this, "_ZN8S18756C12v5Ev");}
void  S18756C1 ::v6(){vfunc_called(this, "_ZN8S18756C12v6Ev");}
S18756C1 ::~S18756C1(){ note_dtor("S18756C1", this);} // tgen
S18756C1 ::S18756C1(){ note_ctor("S18756C1", this);} // tgen

static void Test_S18756C1()
{
  extern Class_Descriptor cd_S18756C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S18756C1, buf);
    S18756C1 *dp, &lv = *(dp=new (buf) S18756C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S18756C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18756C1)");
    check_field_offset(lv, s18756c1f0, ABISELECT(8,4), "S18756C1.s18756c1f0");
    set_bf_and_test(lv, s18756c1f1, ABISELECT(24,12), 0, 4, 1, "S18756C1");
    set_bf_and_test(lv, s18756c1f1, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S18756C1");
    test_class_info(&lv, &cd_S18756C1);
    dp->~S18756C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18756C1(Test_S18756C1, "S18756C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S18756C1C1Ev();
extern void _ZN8S18756C1D1Ev();
Name_Map name_map_S18756C1[] = {
  NSPAIR(_ZN8S18756C1C1Ev),
  NSPAIR(_ZN8S18756C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18756C1[];
extern void _ZN8S18756C12v1Ev();
extern void _ZN8S18756C12v2Ev();
extern void _ZN8S18756C12v3Ev();
extern void _ZN8S18756C12v4Ev();
extern void _ZN8S18756C12v5Ev();
extern void _ZN8S18756C12v6Ev();
static  VTBL_ENTRY vtc_S18756C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18756C1[0]),
  (VTBL_ENTRY)&_ZN8S18756C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18756C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18756C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18756C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18756C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18756C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S18756C1[];
extern  VTBL_ENTRY _ZTV8S18756C1[];
Class_Descriptor cd_S18756C1 = {  "S18756C1", // class name
  0,0,//no base classes
  &(vtc_S18756C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S18756C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18756C1),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  S11994C1  {
  ::S11969C10_nt s11994c1f0;
  ::S11969C10_nt s11994c1f1;
  ::S11969C10_nt s11994c1f2;
  ::S11969C10_nt s11994c1f3;
  char s11994c1f4;
};
//SIG(1 S11994C1) C1{ FC2{ m FC3{ m FL[2]}} FC2 FC2 FC2 Fc}



static void Test_S11994C1()
{
  {
    init_simple_test("S11994C1");
    S11994C1 lv;
    check2(sizeof(lv), ABISELECT(72,68), "sizeof(S11994C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11994C1)");
    check_field_offset(lv, s11994c1f0, 0, "S11994C1.s11994c1f0");
    check_field_offset(lv, s11994c1f1, 16, "S11994C1.s11994c1f1");
    check_field_offset(lv, s11994c1f2, 32, "S11994C1.s11994c1f2");
    check_field_offset(lv, s11994c1f3, 48, "S11994C1.s11994c1f3");
    check_field_offset(lv, s11994c1f4, 64, "S11994C1.s11994c1f4");
  }
}
static Arrange_To_Call_Me vS11994C1(Test_S11994C1, "S11994C1", ABISELECT(72,68));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3967C2  : S3965C3_nt {
  virtual  ~S3967C2(); // _ZN7S3967C2D1Ev
  virtual void  v3(); // _ZN7S3967C22v3Ev
  virtual void  v4(); // _ZN7S3967C22v4Ev
  S3967C2(); // tgen
};
//SIG(-1 S3967C2) C1{ BC2{ vd m FL} vd v1 v2}


 S3967C2 ::~S3967C2(){ note_dtor("S3967C2", this);}
void  S3967C2 ::v3(){vfunc_called(this, "_ZN7S3967C22v3Ev");}
void  S3967C2 ::v4(){vfunc_called(this, "_ZN7S3967C22v4Ev");}
S3967C2 ::S3967C2(){ note_ctor("S3967C2", this);} // tgen

static void Test_S3967C2()
{
  extern Class_Descriptor cd_S3967C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3967C2, buf);
    S3967C2 *dp, &lv = *(dp=new (buf) S3967C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3967C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3967C2)");
    check_base_class_offset(lv, (S3965C3_nt*), 0, "S3967C2");
    test_class_info(&lv, &cd_S3967C2);
    dp->~S3967C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3967C2(Test_S3967C2, "S3967C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3967C2C1Ev();
extern void _ZN7S3967C2D1Ev();
Name_Map name_map_S3967C2[] = {
  NSPAIR(_ZN7S3967C2C1Ev),
  NSPAIR(_ZN7S3967C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3965C3_nt;
extern VTBL_ENTRY _ZTI10S3965C3_nt[];
extern  VTBL_ENTRY _ZTV10S3965C3_nt[];
static Base_Class bases_S3967C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3965C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3967C2[];
extern void _ZN7S3967C2D1Ev();
extern void _ZN7S3967C2D0Ev();
extern void _ZN7S3967C22v3Ev();
extern void _ZN7S3967C22v4Ev();
static  VTBL_ENTRY vtc_S3967C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3967C2[0]),
  (VTBL_ENTRY)&_ZN7S3967C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3967C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3967C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3967C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S3967C2[];
extern  VTBL_ENTRY _ZTV7S3967C2[];
Class_Descriptor cd_S3967C2 = {  "S3967C2", // class name
  bases_S3967C2, 1,
  &(vtc_S3967C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3967C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3967C2),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  S3967C1  : S3967C2 {
  virtual  ~S3967C1(); // _ZN7S3967C1D1Ev
  virtual void  v1(); // _ZN7S3967C12v1Ev
  virtual void  v2(); // _ZN7S3967C12v2Ev
  S3967C1(); // tgen
};
//SIG(1 S3967C1) C1{ BC2{ BC3{ vd m FL} vd v3 v4} vd v1 v2}


 S3967C1 ::~S3967C1(){ note_dtor("S3967C1", this);}
void  S3967C1 ::v1(){vfunc_called(this, "_ZN7S3967C12v1Ev");}
void  S3967C1 ::v2(){vfunc_called(this, "_ZN7S3967C12v2Ev");}
S3967C1 ::S3967C1(){ note_ctor("S3967C1", this);} // tgen

static void Test_S3967C1()
{
  extern Class_Descriptor cd_S3967C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3967C1, buf);
    S3967C1 *dp, &lv = *(dp=new (buf) S3967C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3967C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3967C1)");
    check_base_class_offset(lv, (S3965C3_nt*)(S3967C2*), 0, "S3967C1");
    check_base_class_offset(lv, (S3967C2*), 0, "S3967C1");
    test_class_info(&lv, &cd_S3967C1);
    dp->~S3967C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3967C1(Test_S3967C1, "S3967C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3967C1C1Ev();
extern void _ZN7S3967C1D1Ev();
Name_Map name_map_S3967C1[] = {
  NSPAIR(_ZN7S3967C1C1Ev),
  NSPAIR(_ZN7S3967C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3965C3_nt;
extern VTBL_ENTRY _ZTI10S3965C3_nt[];
extern  VTBL_ENTRY _ZTV10S3965C3_nt[];
extern Class_Descriptor cd_S3967C2;
extern VTBL_ENTRY _ZTI7S3967C2[];
extern  VTBL_ENTRY _ZTV7S3967C2[];
static Base_Class bases_S3967C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3965C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3967C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3967C1[];
extern void _ZN7S3967C1D1Ev();
extern void _ZN7S3967C1D0Ev();
extern void _ZN7S3967C22v3Ev();
extern void _ZN7S3967C22v4Ev();
extern void _ZN7S3967C12v1Ev();
extern void _ZN7S3967C12v2Ev();
static  VTBL_ENTRY vtc_S3967C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3967C1[0]),
  (VTBL_ENTRY)&_ZN7S3967C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3967C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3967C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3967C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3967C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3967C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3967C1[];
extern  VTBL_ENTRY _ZTV7S3967C1[];
Class_Descriptor cd_S3967C1 = {  "S3967C1", // class name
  bases_S3967C1, 2,
  &(vtc_S3967C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3967C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3967C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18450C1  {
  short s18450c1f0[64];
  ::S16610C4 s18450c1f1;
  ::S16610C4 s18450c1f2;
  void  mf18450c1(); // _ZN8S18450C19mf18450c1Ev
};
//SIG(1 S18450C1) C1{ m Fs[64] FC2{ BC3{ m Fp Fi[2]}} FC2}


void  S18450C1 ::mf18450c1(){}

static void Test_S18450C1()
{
  {
    init_simple_test("S18450C1");
    S18450C1 lv;
    check2(sizeof(lv), ABISELECT(160,152), "sizeof(S18450C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18450C1)");
    check_field_offset(lv, s18450c1f0, 0, "S18450C1.s18450c1f0");
    check_field_offset(lv, s18450c1f1, 128, "S18450C1.s18450c1f1");
    check_field_offset(lv, s18450c1f2, ABISELECT(144,140), "S18450C1.s18450c1f2");
  }
}
static Arrange_To_Call_Me vS18450C1(Test_S18450C1, "S18450C1", ABISELECT(160,152));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2511C3  {
  long double s2511c3f0;
  __tsi64 s2511c3f1[9];
  void  mf2511c3(); // _ZN7S2511C38mf2511c3Ev
};
//SIG(-1 S2511C3) C1{ m FD FL[9]}


void  S2511C3 ::mf2511c3(){}

static void Test_S2511C3()
{
  {
    init_simple_test("S2511C3");
    S2511C3 lv;
    check2(sizeof(lv), ABISELECT(96,84), "sizeof(S2511C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2511C3)");
    check_field_offset(lv, s2511c3f0, 0, "S2511C3.s2511c3f0");
    check_field_offset(lv, s2511c3f1, ABISELECT(16,12), "S2511C3.s2511c3f1");
  }
}
static Arrange_To_Call_Me vS2511C3(Test_S2511C3, "S2511C3", ABISELECT(96,84));

#else // __cplusplus

Class_Descriptor cd_S2511C3 = {  "S2511C3", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(96,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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2511C2  : S2511C3 {
};
//SIG(-1 S2511C2) C1{ BC2{ m FD FL[9]}}



static void Test_S2511C2()
{
  extern Class_Descriptor cd_S2511C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,22)];
    init_test(&cd_S2511C2, buf);
    S2511C2 &lv = *(new (buf) S2511C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,84), "sizeof(S2511C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2511C2)");
    check_base_class_offset(lv, (S2511C3*), 0, "S2511C2");
    test_class_info(&lv, &cd_S2511C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2511C2(Test_S2511C2, "S2511C2", ABISELECT(96,84));

#else // __cplusplus

extern Class_Descriptor cd_S2511C3;
static Base_Class bases_S2511C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2511C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2511C2 = {  "S2511C2", // class name
  bases_S2511C2, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(96,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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2511C1  : S2511C2 {
  int s2511c1f0[8];
  ::S2511C2 s2511c1f1[2];
};
//SIG(1 S2511C1) C1{ BC2{ BC3{ m FD FL[9]}} Fi[8] FC2[2]}



static void Test_S2511C1()
{
  extern Class_Descriptor cd_S2511C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,72)];
    init_test(&cd_S2511C1, buf);
    S2511C1 &lv = *(new (buf) S2511C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,284), "sizeof(S2511C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2511C1)");
    check_base_class_offset(lv, (S2511C3*)(S2511C2*), 0, "S2511C1");
    check_base_class_offset(lv, (S2511C2*), 0, "S2511C1");
    check_field_offset(lv, s2511c1f0, ABISELECT(96,84), "S2511C1.s2511c1f0");
    check_field_offset(lv, s2511c1f1, ABISELECT(128,116), "S2511C1.s2511c1f1");
    test_class_info(&lv, &cd_S2511C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2511C1(Test_S2511C1, "S2511C1", ABISELECT(320,284));

#else // __cplusplus

extern Class_Descriptor cd_S2511C3;
extern Class_Descriptor cd_S2511C2;
static Base_Class bases_S2511C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2511C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2511C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2511C1 = {  "S2511C1", // class name
  bases_S2511C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(320,284), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3079C3  {
  virtual  ~S3079C3(); // _ZN7S3079C3D1Ev
  virtual void  v2(); // _ZN7S3079C32v2Ev
  virtual void  v3(); // _ZN7S3079C32v3Ev
  S3079C3(); // tgen
};
//SIG(-1 S3079C3) C1{ vd v1 v2}


 S3079C3 ::~S3079C3(){ note_dtor("S3079C3", this);}
void  S3079C3 ::v2(){vfunc_called(this, "_ZN7S3079C32v2Ev");}
void  S3079C3 ::v3(){vfunc_called(this, "_ZN7S3079C32v3Ev");}
S3079C3 ::S3079C3(){ note_ctor("S3079C3", this);} // tgen

static void Test_S3079C3()
{
  extern Class_Descriptor cd_S3079C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3079C3, buf);
    S3079C3 *dp, &lv = *(dp=new (buf) S3079C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3079C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3079C3)");
    test_class_info(&lv, &cd_S3079C3);
    dp->~S3079C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3079C3(Test_S3079C3, "S3079C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3079C3C1Ev();
extern void _ZN7S3079C3D1Ev();
Name_Map name_map_S3079C3[] = {
  NSPAIR(_ZN7S3079C3C1Ev),
  NSPAIR(_ZN7S3079C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3079C3[];
extern void _ZN7S3079C3D1Ev();
extern void _ZN7S3079C3D0Ev();
extern void _ZN7S3079C32v2Ev();
extern void _ZN7S3079C32v3Ev();
static  VTBL_ENTRY vtc_S3079C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3079C3[0]),
  (VTBL_ENTRY)&_ZN7S3079C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3079C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3079C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3079C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S3079C3[];
extern  VTBL_ENTRY _ZTV7S3079C3[];
Class_Descriptor cd_S3079C3 = {  "S3079C3", // class name
  0,0,//no base classes
  &(vtc_S3079C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3079C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3079C3),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  S3079C2  : S3079C3 {
  void *s3079c2f0;
  int s3079c2f1;
  virtual void  v4(); // _ZN7S3079C22v4Ev
  virtual void  v5(); // _ZN7S3079C22v5Ev
  ~S3079C2(); // tgen
  S3079C2(); // tgen
};
//SIG(-1 S3079C2) C1{ BC2{ vd v3 v4} v1 v2 Fp Fi}


void  S3079C2 ::v4(){vfunc_called(this, "_ZN7S3079C22v4Ev");}
void  S3079C2 ::v5(){vfunc_called(this, "_ZN7S3079C22v5Ev");}
S3079C2 ::~S3079C2(){ note_dtor("S3079C2", this);} // tgen
S3079C2 ::S3079C2(){ note_ctor("S3079C2", this);} // tgen

static void Test_S3079C2()
{
  extern Class_Descriptor cd_S3079C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3079C2, buf);
    S3079C2 *dp, &lv = *(dp=new (buf) S3079C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3079C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3079C2)");
    check_base_class_offset(lv, (S3079C3*), 0, "S3079C2");
    check_field_offset(lv, s3079c2f0, ABISELECT(8,4), "S3079C2.s3079c2f0");
    check_field_offset(lv, s3079c2f1, ABISELECT(16,8), "S3079C2.s3079c2f1");
    test_class_info(&lv, &cd_S3079C2);
    dp->~S3079C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3079C2(Test_S3079C2, "S3079C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3079C2C1Ev();
extern void _ZN7S3079C2D1Ev();
Name_Map name_map_S3079C2[] = {
  NSPAIR(_ZN7S3079C2C1Ev),
  NSPAIR(_ZN7S3079C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3079C3;
extern VTBL_ENTRY _ZTI7S3079C3[];
extern  VTBL_ENTRY _ZTV7S3079C3[];
static Base_Class bases_S3079C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3079C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3079C2[];
extern void _ZN7S3079C2D1Ev();
extern void _ZN7S3079C2D0Ev();
extern void _ZN7S3079C32v2Ev();
extern void _ZN7S3079C32v3Ev();
extern void _ZN7S3079C22v4Ev();
extern void _ZN7S3079C22v5Ev();
static  VTBL_ENTRY vtc_S3079C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3079C2[0]),
  (VTBL_ENTRY)&_ZN7S3079C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3079C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3079C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3079C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3079C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3079C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S3079C2[];
extern  VTBL_ENTRY _ZTV7S3079C2[];
Class_Descriptor cd_S3079C2 = {  "S3079C2", // class name
  bases_S3079C2, 1,
  &(vtc_S3079C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3079C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3079C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3079C1  : S3079C2 {
  virtual void  v1(); // _ZN7S3079C12v1Ev
  ~S3079C1(); // tgen
  S3079C1(); // tgen
};
//SIG(1 S3079C1) C1{ BC2{ BC3{ vd v2 v3} v4 v5 Fp Fi} v1}


void  S3079C1 ::v1(){vfunc_called(this, "_ZN7S3079C12v1Ev");}
S3079C1 ::~S3079C1(){ note_dtor("S3079C1", this);} // tgen
S3079C1 ::S3079C1(){ note_ctor("S3079C1", this);} // tgen

static void Test_S3079C1()
{
  extern Class_Descriptor cd_S3079C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3079C1, buf);
    S3079C1 *dp, &lv = *(dp=new (buf) S3079C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3079C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3079C1)");
    check_base_class_offset(lv, (S3079C3*)(S3079C2*), 0, "S3079C1");
    check_base_class_offset(lv, (S3079C2*), 0, "S3079C1");
    test_class_info(&lv, &cd_S3079C1);
    dp->~S3079C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3079C1(Test_S3079C1, "S3079C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3079C1C1Ev();
extern void _ZN7S3079C1D1Ev();
Name_Map name_map_S3079C1[] = {
  NSPAIR(_ZN7S3079C1C1Ev),
  NSPAIR(_ZN7S3079C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3079C3;
extern VTBL_ENTRY _ZTI7S3079C3[];
extern  VTBL_ENTRY _ZTV7S3079C3[];
extern Class_Descriptor cd_S3079C2;
extern VTBL_ENTRY _ZTI7S3079C2[];
extern  VTBL_ENTRY _ZTV7S3079C2[];
static Base_Class bases_S3079C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3079C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3079C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3079C1[];
extern void _ZN7S3079C1D1Ev();
extern void _ZN7S3079C1D0Ev();
extern void _ZN7S3079C32v2Ev();
extern void _ZN7S3079C32v3Ev();
extern void _ZN7S3079C22v4Ev();
extern void _ZN7S3079C22v5Ev();
extern void _ZN7S3079C12v1Ev();
static  VTBL_ENTRY vtc_S3079C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3079C1[0]),
  (VTBL_ENTRY)&_ZN7S3079C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3079C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3079C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3079C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3079C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3079C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3079C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3079C1[];
extern  VTBL_ENTRY _ZTV7S3079C1[];
Class_Descriptor cd_S3079C1 = {  "S3079C1", // class name
  bases_S3079C1, 2,
  &(vtc_S3079C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3079C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3079C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14503C1  {
  void *s14503c1f0[2];
  int s14503c1f1;
  char s14503c1f2[72];
  int s14503c1f3[2];
  char s14503c1f4[16];
  int s14503c1f5;
};
//SIG(1 S14503C1) C1{ Fp[2] Fi Fc[72] Fi[2] Fc[16] Fi}



static void Test_S14503C1()
{
  {
    init_simple_test("S14503C1");
    S14503C1 lv;
    check2(sizeof(lv), ABISELECT(120,112), "sizeof(S14503C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14503C1)");
    check_field_offset(lv, s14503c1f0, 0, "S14503C1.s14503c1f0");
    check_field_offset(lv, s14503c1f1, ABISELECT(16,8), "S14503C1.s14503c1f1");
    check_field_offset(lv, s14503c1f2, ABISELECT(20,12), "S14503C1.s14503c1f2");
    check_field_offset(lv, s14503c1f3, ABISELECT(92,84), "S14503C1.s14503c1f3");
    check_field_offset(lv, s14503c1f4, ABISELECT(100,92), "S14503C1.s14503c1f4");
    check_field_offset(lv, s14503c1f5, ABISELECT(116,108), "S14503C1.s14503c1f5");
  }
}
static Arrange_To_Call_Me vS14503C1(Test_S14503C1, "S14503C1", ABISELECT(120,112));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18922C1  {
  ::S19065C7 s18922c1f0[9];
  long double s18922c1f1;
  virtual  ~S18922C1(); // _ZN8S18922C1D1Ev
  virtual void  v1(); // _ZN8S18922C12v1Ev
  virtual void  v2(); // _ZN8S18922C12v2Ev
  S18922C1(); // tgen
};
//SIG(1 S18922C1) C1{ vd v1 v2 FC2{ v3 v4 FD Fi}[9] FD}


 S18922C1 ::~S18922C1(){ note_dtor("S18922C1", this);}
void  S18922C1 ::v1(){vfunc_called(this, "_ZN8S18922C12v1Ev");}
void  S18922C1 ::v2(){vfunc_called(this, "_ZN8S18922C12v2Ev");}
S18922C1 ::S18922C1(){ note_ctor("S18922C1", this);} // tgen

static void Test_S18922C1()
{
  extern Class_Descriptor cd_S18922C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,50)];
    init_test(&cd_S18922C1, buf);
    S18922C1 *dp, &lv = *(dp=new (buf) S18922C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,196), "sizeof(S18922C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18922C1)");
    check_field_offset(lv, s18922c1f0, ABISELECT(16,4), "S18922C1.s18922c1f0");
    check_field_offset(lv, s18922c1f1, ABISELECT(448,184), "S18922C1.s18922c1f1");
    test_class_info(&lv, &cd_S18922C1);
    dp->~S18922C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18922C1(Test_S18922C1, "S18922C1", ABISELECT(464,196));

#else // __cplusplus

extern void _ZN8S18922C1C1Ev();
extern void _ZN8S18922C1D1Ev();
Name_Map name_map_S18922C1[] = {
  NSPAIR(_ZN8S18922C1C1Ev),
  NSPAIR(_ZN8S18922C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18922C1[];
extern void _ZN8S18922C1D1Ev();
extern void _ZN8S18922C1D0Ev();
extern void _ZN8S18922C12v1Ev();
extern void _ZN8S18922C12v2Ev();
static  VTBL_ENTRY vtc_S18922C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18922C1[0]),
  (VTBL_ENTRY)&_ZN8S18922C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18922C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18922C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18922C12v2Ev,
};
extern VTBL_ENTRY _ZTI8S18922C1[];
extern  VTBL_ENTRY _ZTV8S18922C1[];
Class_Descriptor cd_S18922C1 = {  "S18922C1", // class name
  0,0,//no base classes
  &(vtc_S18922C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,196), // object size
  NSPAIRA(_ZTI8S18922C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18922C1),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  S6562C2  {
  void *s6562c2f0;
  short s6562c2f1;
  virtual void  v2(); // _ZN7S6562C22v2Ev
  virtual void  v3(); // _ZN7S6562C22v3Ev
  virtual void  v4(); // _ZN7S6562C22v4Ev
  virtual void  v5(); // _ZN7S6562C22v5Ev
  virtual void  v6(); // _ZN7S6562C22v6Ev
  virtual void  v7(); // _ZN7S6562C22v7Ev
  ~S6562C2(); // tgen
  S6562C2(); // tgen
};
//SIG(-1 S6562C2) C1{ v1 v2 v3 v4 v5 v6 Fp Fs}


void  S6562C2 ::v2(){vfunc_called(this, "_ZN7S6562C22v2Ev");}
void  S6562C2 ::v3(){vfunc_called(this, "_ZN7S6562C22v3Ev");}
void  S6562C2 ::v4(){vfunc_called(this, "_ZN7S6562C22v4Ev");}
void  S6562C2 ::v5(){vfunc_called(this, "_ZN7S6562C22v5Ev");}
void  S6562C2 ::v6(){vfunc_called(this, "_ZN7S6562C22v6Ev");}
void  S6562C2 ::v7(){vfunc_called(this, "_ZN7S6562C22v7Ev");}
S6562C2 ::~S6562C2(){ note_dtor("S6562C2", this);} // tgen
S6562C2 ::S6562C2(){ note_ctor("S6562C2", this);} // tgen

static void Test_S6562C2()
{
  extern Class_Descriptor cd_S6562C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6562C2, buf);
    S6562C2 *dp, &lv = *(dp=new (buf) S6562C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6562C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6562C2)");
    check_field_offset(lv, s6562c2f0, ABISELECT(8,4), "S6562C2.s6562c2f0");
    check_field_offset(lv, s6562c2f1, ABISELECT(16,8), "S6562C2.s6562c2f1");
    test_class_info(&lv, &cd_S6562C2);
    dp->~S6562C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6562C2(Test_S6562C2, "S6562C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6562C2C1Ev();
extern void _ZN7S6562C2D1Ev();
Name_Map name_map_S6562C2[] = {
  NSPAIR(_ZN7S6562C2C1Ev),
  NSPAIR(_ZN7S6562C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6562C2[];
extern void _ZN7S6562C22v2Ev();
extern void _ZN7S6562C22v3Ev();
extern void _ZN7S6562C22v4Ev();
extern void _ZN7S6562C22v5Ev();
extern void _ZN7S6562C22v6Ev();
extern void _ZN7S6562C22v7Ev();
static  VTBL_ENTRY vtc_S6562C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6562C2[0]),
  (VTBL_ENTRY)&_ZN7S6562C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6562C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6562C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6562C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6562C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6562C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S6562C2[];
extern  VTBL_ENTRY _ZTV7S6562C2[];
Class_Descriptor cd_S6562C2 = {  "S6562C2", // class name
  0,0,//no base classes
  &(vtc_S6562C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6562C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6562C2),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  S6562C1  : S6562C2 {
  virtual void  v1(); // _ZN7S6562C12v1Ev
  ~S6562C1(); // tgen
  S6562C1(); // tgen
};
//SIG(1 S6562C1) C1{ BC2{ v2 v3 v4 v5 v6 v7 Fp Fs} v1}


void  S6562C1 ::v1(){vfunc_called(this, "_ZN7S6562C12v1Ev");}
S6562C1 ::~S6562C1(){ note_dtor("S6562C1", this);} // tgen
S6562C1 ::S6562C1(){ note_ctor("S6562C1", this);} // tgen

static void Test_S6562C1()
{
  extern Class_Descriptor cd_S6562C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6562C1, buf);
    S6562C1 *dp, &lv = *(dp=new (buf) S6562C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6562C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6562C1)");
    check_base_class_offset(lv, (S6562C2*), 0, "S6562C1");
    test_class_info(&lv, &cd_S6562C1);
    dp->~S6562C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6562C1(Test_S6562C1, "S6562C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6562C1C1Ev();
extern void _ZN7S6562C1D1Ev();
Name_Map name_map_S6562C1[] = {
  NSPAIR(_ZN7S6562C1C1Ev),
  NSPAIR(_ZN7S6562C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6562C2;
extern VTBL_ENTRY _ZTI7S6562C2[];
extern  VTBL_ENTRY _ZTV7S6562C2[];
static Base_Class bases_S6562C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6562C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6562C1[];
extern void _ZN7S6562C22v2Ev();
extern void _ZN7S6562C22v3Ev();
extern void _ZN7S6562C22v4Ev();
extern void _ZN7S6562C22v5Ev();
extern void _ZN7S6562C22v6Ev();
extern void _ZN7S6562C22v7Ev();
extern void _ZN7S6562C12v1Ev();
static  VTBL_ENTRY vtc_S6562C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6562C1[0]),
  (VTBL_ENTRY)&_ZN7S6562C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6562C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6562C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6562C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6562C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6562C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6562C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S6562C1[];
extern  VTBL_ENTRY _ZTV7S6562C1[];
Class_Descriptor cd_S6562C1 = {  "S6562C1", // class name
  bases_S6562C1, 1,
  &(vtc_S6562C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6562C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6562C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16270C1  {
  ::S2405C20_nt s16270c1f0;
  int s16270c1f1;
  __tsi64 s16270c1f2[2];
  void  mf16270c1(); // _ZN8S16270C19mf16270c1Ev
};
//SIG(1 S16270C1) C1{ m FC2{ m Fp Fi FC3{ m}} Fi FL[2]}


void  S16270C1 ::mf16270c1(){}

static void Test_S16270C1()
{
  {
    init_simple_test("S16270C1");
    S16270C1 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S16270C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16270C1)");
    check_field_offset(lv, s16270c1f0, 0, "S16270C1.s16270c1f0");
    check_field_offset(lv, s16270c1f1, ABISELECT(16,12), "S16270C1.s16270c1f1");
    check_field_offset(lv, s16270c1f2, ABISELECT(24,16), "S16270C1.s16270c1f2");
  }
}
static Arrange_To_Call_Me vS16270C1(Test_S16270C1, "S16270C1", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21494C1  {
  ::S2405C20_nt s21494c1f0;
  int s21494c1f1[4];
  void  mf21494c1(); // _ZN8S21494C19mf21494c1Ev
  virtual  ~S21494C1(); // _ZN8S21494C1D1Ev
  S21494C1(); // tgen
};
//SIG(1 S21494C1) C1{ vd m FC2{ m Fp Fi FC3{ m}} Fi[4]}


void  S21494C1 ::mf21494c1(){}
 S21494C1 ::~S21494C1(){ note_dtor("S21494C1", this);}
S21494C1 ::S21494C1(){ note_ctor("S21494C1", this);} // tgen

static void Test_S21494C1()
{
  extern Class_Descriptor cd_S21494C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S21494C1, buf);
    S21494C1 *dp, &lv = *(dp=new (buf) S21494C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S21494C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21494C1)");
    check_field_offset(lv, s21494c1f0, ABISELECT(8,4), "S21494C1.s21494c1f0");
    check_field_offset(lv, s21494c1f1, ABISELECT(24,16), "S21494C1.s21494c1f1");
    test_class_info(&lv, &cd_S21494C1);
    dp->~S21494C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21494C1(Test_S21494C1, "S21494C1", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN8S21494C1C1Ev();
extern void _ZN8S21494C1D1Ev();
Name_Map name_map_S21494C1[] = {
  NSPAIR(_ZN8S21494C1C1Ev),
  NSPAIR(_ZN8S21494C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21494C1[];
extern void _ZN8S21494C1D1Ev();
extern void _ZN8S21494C1D0Ev();
static  VTBL_ENTRY vtc_S21494C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21494C1[0]),
  (VTBL_ENTRY)&_ZN8S21494C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21494C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21494C1[];
extern  VTBL_ENTRY _ZTV8S21494C1[];
Class_Descriptor cd_S21494C1 = {  "S21494C1", // class name
  0,0,//no base classes
  &(vtc_S21494C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI8S21494C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21494C1),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  S13682C1  {
  __tsi64 s13682c1f0;
  ::S16610C3 s13682c1f1;
};
//SIG(1 S13682C1) C1{ FL FC2{ BC3{ BC4{ m Fp Fi[2]}}}}



static void Test_S13682C1()
{
  {
    init_simple_test("S13682C1");
    S13682C1 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S13682C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13682C1)");
    check_field_offset(lv, s13682c1f0, 0, "S13682C1.s13682c1f0");
    check_field_offset(lv, s13682c1f1, 8, "S13682C1.s13682c1f1");
  }
}
static Arrange_To_Call_Me vS13682C1(Test_S13682C1, "S13682C1", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10771C1  {
  char s10771c1f0[21];
  int s10771c1f1[7];
  char s10771c1f2[320];
  int s10771c1f3[11];
};
//SIG(1 S10771C1) C1{ Fc[21] Fi[7] Fc[320] Fi[11]}



static void Test_S10771C1()
{
  {
    init_simple_test("S10771C1");
    S10771C1 lv;
    check2(sizeof(lv), 416, "sizeof(S10771C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10771C1)");
    check_field_offset(lv, s10771c1f0, 0, "S10771C1.s10771c1f0");
    check_field_offset(lv, s10771c1f1, 24, "S10771C1.s10771c1f1");
    check_field_offset(lv, s10771c1f2, 52, "S10771C1.s10771c1f2");
    check_field_offset(lv, s10771c1f3, 372, "S10771C1.s10771c1f3");
  }
}
static Arrange_To_Call_Me vS10771C1(Test_S10771C1, "S10771C1", 416);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13020C1  {
  int s13020c1f0[2];
  char s13020c1f1[32];
  int s13020c1f2[2];
  long s13020c1f3;
  int s13020c1f4[2];
};
//SIG(1 S13020C1) C1{ Fi[2] Fc[32] Fi[2] Fl Fi[2]}



static void Test_S13020C1()
{
  {
    init_simple_test("S13020C1");
    S13020C1 lv;
    check2(sizeof(lv), ABISELECT(64,60), "sizeof(S13020C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13020C1)");
    check_field_offset(lv, s13020c1f0, 0, "S13020C1.s13020c1f0");
    check_field_offset(lv, s13020c1f1, 8, "S13020C1.s13020c1f1");
    check_field_offset(lv, s13020c1f2, 40, "S13020C1.s13020c1f2");
    check_field_offset(lv, s13020c1f3, 48, "S13020C1.s13020c1f3");
    check_field_offset(lv, s13020c1f4, ABISELECT(56,52), "S13020C1.s13020c1f4");
  }
}
static Arrange_To_Call_Me vS13020C1(Test_S13020C1, "S13020C1", ABISELECT(64,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13441C1  {
  int s13441c1f0[4];
  char s13441c1f1[32];
  long s13441c1f2[32];
  char s13441c1f3[208];
};
//SIG(1 S13441C1) C1{ Fi[4] Fc[32] Fl[32] Fc[208]}



static void Test_S13441C1()
{
  {
    init_simple_test("S13441C1");
    S13441C1 lv;
    check2(sizeof(lv), ABISELECT(512,384), "sizeof(S13441C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13441C1)");
    check_field_offset(lv, s13441c1f0, 0, "S13441C1.s13441c1f0");
    check_field_offset(lv, s13441c1f1, 16, "S13441C1.s13441c1f1");
    check_field_offset(lv, s13441c1f2, 48, "S13441C1.s13441c1f2");
    check_field_offset(lv, s13441c1f3, ABISELECT(304,176), "S13441C1.s13441c1f3");
  }
}
static Arrange_To_Call_Me vS13441C1(Test_S13441C1, "S13441C1", ABISELECT(512,384));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18812C1  {
  short s18812c1f0;
  int s18812c1f1;
  virtual void  v1(); // _ZN8S18812C12v1Ev
  virtual void  v2(); // _ZN8S18812C12v2Ev
  virtual void  v3(); // _ZN8S18812C12v3Ev
  virtual void  v4(); // _ZN8S18812C12v4Ev
  virtual void  v5(); // _ZN8S18812C12v5Ev
  virtual void  v6(); // _ZN8S18812C12v6Ev
  virtual void  v7(); // _ZN8S18812C12v7Ev
  ~S18812C1(); // tgen
  S18812C1(); // tgen
};
//SIG(1 S18812C1) C1{ v1 v2 v3 v4 v5 v6 v7 Fs Fi}


void  S18812C1 ::v1(){vfunc_called(this, "_ZN8S18812C12v1Ev");}
void  S18812C1 ::v2(){vfunc_called(this, "_ZN8S18812C12v2Ev");}
void  S18812C1 ::v3(){vfunc_called(this, "_ZN8S18812C12v3Ev");}
void  S18812C1 ::v4(){vfunc_called(this, "_ZN8S18812C12v4Ev");}
void  S18812C1 ::v5(){vfunc_called(this, "_ZN8S18812C12v5Ev");}
void  S18812C1 ::v6(){vfunc_called(this, "_ZN8S18812C12v6Ev");}
void  S18812C1 ::v7(){vfunc_called(this, "_ZN8S18812C12v7Ev");}
S18812C1 ::~S18812C1(){ note_dtor("S18812C1", this);} // tgen
S18812C1 ::S18812C1(){ note_ctor("S18812C1", this);} // tgen

static void Test_S18812C1()
{
  extern Class_Descriptor cd_S18812C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S18812C1, buf);
    S18812C1 *dp, &lv = *(dp=new (buf) S18812C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S18812C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18812C1)");
    check_field_offset(lv, s18812c1f0, ABISELECT(8,4), "S18812C1.s18812c1f0");
    check_field_offset(lv, s18812c1f1, ABISELECT(12,8), "S18812C1.s18812c1f1");
    test_class_info(&lv, &cd_S18812C1);
    dp->~S18812C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18812C1(Test_S18812C1, "S18812C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S18812C1C1Ev();
extern void _ZN8S18812C1D1Ev();
Name_Map name_map_S18812C1[] = {
  NSPAIR(_ZN8S18812C1C1Ev),
  NSPAIR(_ZN8S18812C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18812C1[];
extern void _ZN8S18812C12v1Ev();
extern void _ZN8S18812C12v2Ev();
extern void _ZN8S18812C12v3Ev();
extern void _ZN8S18812C12v4Ev();
extern void _ZN8S18812C12v5Ev();
extern void _ZN8S18812C12v6Ev();
extern void _ZN8S18812C12v7Ev();
static  VTBL_ENTRY vtc_S18812C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18812C1[0]),
  (VTBL_ENTRY)&_ZN8S18812C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18812C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18812C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18812C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18812C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18812C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18812C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S18812C1[];
extern  VTBL_ENTRY _ZTV8S18812C1[];
Class_Descriptor cd_S18812C1 = {  "S18812C1", // class name
  0,0,//no base classes
  &(vtc_S18812C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S18812C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18812C1),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  S10887C1  {
  char s10887c1f0[4];
  int s10887c1f1;
  char s10887c1f2[2];
  short s10887c1f3;
  int s10887c1f4;
  long s10887c1f5[4];
};
//SIG(1 S10887C1) C1{ Fc[4] Fi Fc[2] Fs Fi Fl[4]}



static void Test_S10887C1()
{
  {
    init_simple_test("S10887C1");
    S10887C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S10887C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10887C1)");
    check_field_offset(lv, s10887c1f0, 0, "S10887C1.s10887c1f0");
    check_field_offset(lv, s10887c1f1, 4, "S10887C1.s10887c1f1");
    check_field_offset(lv, s10887c1f2, 8, "S10887C1.s10887c1f2");
    check_field_offset(lv, s10887c1f3, 10, "S10887C1.s10887c1f3");
    check_field_offset(lv, s10887c1f4, 12, "S10887C1.s10887c1f4");
    check_field_offset(lv, s10887c1f5, 16, "S10887C1.s10887c1f5");
  }
}
static Arrange_To_Call_Me vS10887C1(Test_S10887C1, "S10887C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18482C2  {
  ::S20980C11 s18482c2f0;
  virtual void  v2(); // _ZN8S18482C22v2Ev
  ~S18482C2(); // tgen
  S18482C2(); // tgen
};
//SIG(-1 S18482C2) C1{ v1 FC2{ v2 v3 Fi}}


void  S18482C2 ::v2(){vfunc_called(this, "_ZN8S18482C22v2Ev");}
S18482C2 ::~S18482C2(){ note_dtor("S18482C2", this);} // tgen
S18482C2 ::S18482C2(){ note_ctor("S18482C2", this);} // tgen

static void Test_S18482C2()
{
  extern Class_Descriptor cd_S18482C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S18482C2, buf);
    S18482C2 *dp, &lv = *(dp=new (buf) S18482C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S18482C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18482C2)");
    check_field_offset(lv, s18482c2f0, ABISELECT(8,4), "S18482C2.s18482c2f0");
    test_class_info(&lv, &cd_S18482C2);
    dp->~S18482C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18482C2(Test_S18482C2, "S18482C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S18482C2C1Ev();
extern void _ZN8S18482C2D1Ev();
Name_Map name_map_S18482C2[] = {
  NSPAIR(_ZN8S18482C2C1Ev),
  NSPAIR(_ZN8S18482C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18482C2[];
extern void _ZN8S18482C22v2Ev();
static  VTBL_ENTRY vtc_S18482C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18482C2[0]),
  (VTBL_ENTRY)&_ZN8S18482C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S18482C2[];
extern  VTBL_ENTRY _ZTV8S18482C2[];
Class_Descriptor cd_S18482C2 = {  "S18482C2", // class name
  0,0,//no base classes
  &(vtc_S18482C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S18482C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18482C2),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  S18482C1  {
  ::S18482C2 s18482c1f0;
  void *s18482c1f1;
  virtual void  v1(); // _ZN8S18482C12v1Ev
  ~S18482C1(); // tgen
  S18482C1(); // tgen
};
//SIG(1 S18482C1) C1{ v1 FC2{ v2 FC3{ v3 v4 Fi}} Fp}


void  S18482C1 ::v1(){vfunc_called(this, "_ZN8S18482C12v1Ev");}
S18482C1 ::~S18482C1(){ note_dtor("S18482C1", this);} // tgen
S18482C1 ::S18482C1(){ note_ctor("S18482C1", this);} // tgen

static void Test_S18482C1()
{
  extern Class_Descriptor cd_S18482C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S18482C1, buf);
    S18482C1 *dp, &lv = *(dp=new (buf) S18482C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S18482C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18482C1)");
    check_field_offset(lv, s18482c1f0, ABISELECT(8,4), "S18482C1.s18482c1f0");
    check_field_offset(lv, s18482c1f1, ABISELECT(32,16), "S18482C1.s18482c1f1");
    test_class_info(&lv, &cd_S18482C1);
    dp->~S18482C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18482C1(Test_S18482C1, "S18482C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S18482C1C1Ev();
extern void _ZN8S18482C1D1Ev();
Name_Map name_map_S18482C1[] = {
  NSPAIR(_ZN8S18482C1C1Ev),
  NSPAIR(_ZN8S18482C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18482C1[];
extern void _ZN8S18482C12v1Ev();
static  VTBL_ENTRY vtc_S18482C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18482C1[0]),
  (VTBL_ENTRY)&_ZN8S18482C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18482C1[];
extern  VTBL_ENTRY _ZTV8S18482C1[];
Class_Descriptor cd_S18482C1 = {  "S18482C1", // class name
  0,0,//no base classes
  &(vtc_S18482C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S18482C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18482C1),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  S19944C2  {
  int s19944c2f0;
  virtual void  v1(); // _ZN8S19944C22v1Ev
  virtual void  v2(); // _ZN8S19944C22v2Ev
  ~S19944C2(); // tgen
  S19944C2(); // tgen
};
//SIG(-1 S19944C2) C1{ v1 v2 Fi}


void  S19944C2 ::v1(){vfunc_called(this, "_ZN8S19944C22v1Ev");}
void  S19944C2 ::v2(){vfunc_called(this, "_ZN8S19944C22v2Ev");}
S19944C2 ::~S19944C2(){ note_dtor("S19944C2", this);} // tgen
S19944C2 ::S19944C2(){ note_ctor("S19944C2", this);} // tgen

static void Test_S19944C2()
{
  extern Class_Descriptor cd_S19944C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19944C2, buf);
    S19944C2 *dp, &lv = *(dp=new (buf) S19944C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19944C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19944C2)");
    check_field_offset(lv, s19944c2f0, ABISELECT(8,4), "S19944C2.s19944c2f0");
    test_class_info(&lv, &cd_S19944C2);
    dp->~S19944C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19944C2(Test_S19944C2, "S19944C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19944C2C1Ev();
extern void _ZN8S19944C2D1Ev();
Name_Map name_map_S19944C2[] = {
  NSPAIR(_ZN8S19944C2C1Ev),
  NSPAIR(_ZN8S19944C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19944C2[];
extern void _ZN8S19944C22v1Ev();
extern void _ZN8S19944C22v2Ev();
static  VTBL_ENTRY vtc_S19944C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19944C2[0]),
  (VTBL_ENTRY)&_ZN8S19944C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19944C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S19944C2[];
extern  VTBL_ENTRY _ZTV8S19944C2[];
Class_Descriptor cd_S19944C2 = {  "S19944C2", // class name
  0,0,//no base classes
  &(vtc_S19944C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19944C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19944C2),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  S19944C1  : virtual S19944C2 {
  __tsi64 s19944c1f0;
  void *s19944c1f1;
  __tsi64 s19944c1f2;
  virtual  ~S19944C1(); // _ZN8S19944C1D2Ev
  S19944C1(); // tgen
};
//SIG(1 S19944C1) C1{ VBC2{ v1 v2 Fi} vd FL Fp FL}


 S19944C1 ::~S19944C1(){ note_dtor("S19944C1", this);}
S19944C1 ::S19944C1(){ note_ctor("S19944C1", this);} // tgen

static void Test_S19944C1()
{
  extern Class_Descriptor cd_S19944C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19944C1, buf);
    S19944C1 *dp, &lv = *(dp=new (buf) S19944C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19944C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19944C1)");
    check_base_class_offset(lv, (S19944C2*), ABISELECT(32,24), "S19944C1");
    check_field_offset(lv, s19944c1f0, ABISELECT(8,4), "S19944C1.s19944c1f0");
    check_field_offset(lv, s19944c1f1, ABISELECT(16,12), "S19944C1.s19944c1f1");
    check_field_offset(lv, s19944c1f2, ABISELECT(24,16), "S19944C1.s19944c1f2");
    test_class_info(&lv, &cd_S19944C1);
    dp->~S19944C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19944C1(Test_S19944C1, "S19944C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S19944C1C1Ev();
extern void _ZN8S19944C1D2Ev();
Name_Map name_map_S19944C1[] = {
  NSPAIR(_ZN8S19944C1C1Ev),
  NSPAIR(_ZN8S19944C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19944C2;
extern VTBL_ENTRY _ZTI8S19944C2[];
extern  VTBL_ENTRY _ZTV8S19944C2[];
static Base_Class bases_S19944C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19944C2,    ABISELECT(32,24), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19944C1[];
extern void _ZN8S19944C1D1Ev();
extern void _ZN8S19944C1D0Ev();
extern void _ZN8S19944C22v1Ev();
extern void _ZN8S19944C22v2Ev();
static  VTBL_ENTRY vtc_S19944C1[] = {
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19944C1[0]),
  (VTBL_ENTRY)&_ZN8S19944C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19944C1D0Ev,
  0,
  0,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19944C1[0]),
  (VTBL_ENTRY)&_ZN8S19944C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19944C22v2Ev,
};
extern VTBL_ENTRY _ZTV8S19944C1[];
static  VTT_ENTRY vtt_S19944C1[] = {
  {&(_ZTV8S19944C1[3]),  3,11},
  {&(_ZTV8S19944C1[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19944C1[];
extern  VTBL_ENTRY _ZTV8S19944C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19944C1[];
Class_Descriptor cd_S19944C1 = {  "S19944C1", // class name
  bases_S19944C1, 1,
  &(vtc_S19944C1[0]), // expected_vtbl_contents
  &(vtt_S19944C1[0]), // expected_vtt_contents
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S19944C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19944C1),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19944C1),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  S19943C2  {
  int s19943c2f0;
  virtual void  v1(); // _ZN8S19943C22v1Ev
  virtual void  v2(); // _ZN8S19943C22v2Ev
  ~S19943C2(); // tgen
  S19943C2(); // tgen
};
//SIG(-1 S19943C2) C1{ v1 v2 Fi}


void  S19943C2 ::v1(){vfunc_called(this, "_ZN8S19943C22v1Ev");}
void  S19943C2 ::v2(){vfunc_called(this, "_ZN8S19943C22v2Ev");}
S19943C2 ::~S19943C2(){ note_dtor("S19943C2", this);} // tgen
S19943C2 ::S19943C2(){ note_ctor("S19943C2", this);} // tgen

static void Test_S19943C2()
{
  extern Class_Descriptor cd_S19943C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19943C2, buf);
    S19943C2 *dp, &lv = *(dp=new (buf) S19943C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19943C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19943C2)");
    check_field_offset(lv, s19943c2f0, ABISELECT(8,4), "S19943C2.s19943c2f0");
    test_class_info(&lv, &cd_S19943C2);
    dp->~S19943C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19943C2(Test_S19943C2, "S19943C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19943C2C1Ev();
extern void _ZN8S19943C2D1Ev();
Name_Map name_map_S19943C2[] = {
  NSPAIR(_ZN8S19943C2C1Ev),
  NSPAIR(_ZN8S19943C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19943C2[];
extern void _ZN8S19943C22v1Ev();
extern void _ZN8S19943C22v2Ev();
static  VTBL_ENTRY vtc_S19943C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19943C2[0]),
  (VTBL_ENTRY)&_ZN8S19943C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19943C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S19943C2[];
extern  VTBL_ENTRY _ZTV8S19943C2[];
Class_Descriptor cd_S19943C2 = {  "S19943C2", // class name
  0,0,//no base classes
  &(vtc_S19943C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19943C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19943C2),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  S19943C1  : virtual S19943C2 {
  long s19943c1f0;
  void *s19943c1f1;
  __tsi64 s19943c1f2;
  virtual  ~S19943C1(); // _ZN8S19943C1D2Ev
  S19943C1(); // tgen
};
//SIG(1 S19943C1) C1{ VBC2{ v1 v2 Fi} vd Fl Fp FL}


 S19943C1 ::~S19943C1(){ note_dtor("S19943C1", this);}
S19943C1 ::S19943C1(){ note_ctor("S19943C1", this);} // tgen

static void Test_S19943C1()
{
  extern Class_Descriptor cd_S19943C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S19943C1, buf);
    S19943C1 *dp, &lv = *(dp=new (buf) S19943C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S19943C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19943C1)");
    check_base_class_offset(lv, (S19943C2*), ABISELECT(32,20), "S19943C1");
    check_field_offset(lv, s19943c1f0, ABISELECT(8,4), "S19943C1.s19943c1f0");
    check_field_offset(lv, s19943c1f1, ABISELECT(16,8), "S19943C1.s19943c1f1");
    check_field_offset(lv, s19943c1f2, ABISELECT(24,12), "S19943C1.s19943c1f2");
    test_class_info(&lv, &cd_S19943C1);
    dp->~S19943C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19943C1(Test_S19943C1, "S19943C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S19943C1C1Ev();
extern void _ZN8S19943C1D2Ev();
Name_Map name_map_S19943C1[] = {
  NSPAIR(_ZN8S19943C1C1Ev),
  NSPAIR(_ZN8S19943C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19943C2;
extern VTBL_ENTRY _ZTI8S19943C2[];
extern  VTBL_ENTRY _ZTV8S19943C2[];
static Base_Class bases_S19943C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19943C2,    ABISELECT(32,20), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19943C1[];
extern void _ZN8S19943C1D1Ev();
extern void _ZN8S19943C1D0Ev();
extern void _ZN8S19943C22v1Ev();
extern void _ZN8S19943C22v2Ev();
static  VTBL_ENTRY vtc_S19943C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19943C1[0]),
  (VTBL_ENTRY)&_ZN8S19943C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19943C1D0Ev,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19943C1[0]),
  (VTBL_ENTRY)&_ZN8S19943C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19943C22v2Ev,
};
extern VTBL_ENTRY _ZTV8S19943C1[];
static  VTT_ENTRY vtt_S19943C1[] = {
  {&(_ZTV8S19943C1[3]),  3,11},
  {&(_ZTV8S19943C1[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19943C1[];
extern  VTBL_ENTRY _ZTV8S19943C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19943C1[];
Class_Descriptor cd_S19943C1 = {  "S19943C1", // class name
  bases_S19943C1, 1,
  &(vtc_S19943C1[0]), // expected_vtbl_contents
  &(vtt_S19943C1[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S19943C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19943C1),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19943C1),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  S2997C3  {
  virtual void  v1(); // _ZN7S2997C32v1Ev
  ~S2997C3(); // tgen
  S2997C3(); // tgen
};
//SIG(-1 S2997C3) C1{ v1}


void  S2997C3 ::v1(){vfunc_called(this, "_ZN7S2997C32v1Ev");}
S2997C3 ::~S2997C3(){ note_dtor("S2997C3", this);} // tgen
S2997C3 ::S2997C3(){ note_ctor("S2997C3", this);} // tgen

static void Test_S2997C3()
{
  extern Class_Descriptor cd_S2997C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2997C3, buf);
    S2997C3 *dp, &lv = *(dp=new (buf) S2997C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2997C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2997C3)");
    test_class_info(&lv, &cd_S2997C3);
    dp->~S2997C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2997C3(Test_S2997C3, "S2997C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2997C3C1Ev();
extern void _ZN7S2997C3D1Ev();
Name_Map name_map_S2997C3[] = {
  NSPAIR(_ZN7S2997C3C1Ev),
  NSPAIR(_ZN7S2997C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2997C3[];
extern void _ZN7S2997C32v1Ev();
static  VTBL_ENTRY vtc_S2997C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2997C3[0]),
  (VTBL_ENTRY)&_ZN7S2997C32v1Ev,
};
extern VTBL_ENTRY _ZTI7S2997C3[];
extern  VTBL_ENTRY _ZTV7S2997C3[];
Class_Descriptor cd_S2997C3 = {  "S2997C3", // class name
  0,0,//no base classes
  &(vtc_S2997C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2997C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2997C3),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  S2997C2  : S2997C3 {
  virtual void  v2(); // _ZN7S2997C22v2Ev
  ~S2997C2(); // tgen
  S2997C2(); // tgen
};
//SIG(-1 S2997C2) C1{ BC2{ v2} v1}


void  S2997C2 ::v2(){vfunc_called(this, "_ZN7S2997C22v2Ev");}
S2997C2 ::~S2997C2(){ note_dtor("S2997C2", this);} // tgen
S2997C2 ::S2997C2(){ note_ctor("S2997C2", this);} // tgen

static void Test_S2997C2()
{
  extern Class_Descriptor cd_S2997C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2997C2, buf);
    S2997C2 *dp, &lv = *(dp=new (buf) S2997C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2997C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2997C2)");
    check_base_class_offset(lv, (S2997C3*), 0, "S2997C2");
    test_class_info(&lv, &cd_S2997C2);
    dp->~S2997C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2997C2(Test_S2997C2, "S2997C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2997C2C1Ev();
extern void _ZN7S2997C2D1Ev();
Name_Map name_map_S2997C2[] = {
  NSPAIR(_ZN7S2997C2C1Ev),
  NSPAIR(_ZN7S2997C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2997C3;
extern VTBL_ENTRY _ZTI7S2997C3[];
extern  VTBL_ENTRY _ZTV7S2997C3[];
static Base_Class bases_S2997C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2997C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2997C2[];
extern void _ZN7S2997C32v1Ev();
extern void _ZN7S2997C22v2Ev();
static  VTBL_ENTRY vtc_S2997C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2997C2[0]),
  (VTBL_ENTRY)&_ZN7S2997C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2997C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S2997C2[];
extern  VTBL_ENTRY _ZTV7S2997C2[];
Class_Descriptor cd_S2997C2 = {  "S2997C2", // class name
  bases_S2997C2, 1,
  &(vtc_S2997C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2997C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2997C2),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2997C4  : S2997C3 {
  virtual void  v3(); // _ZN7S2997C42v3Ev
  ~S2997C4(); // tgen
  S2997C4(); // tgen
};
//SIG(-1 S2997C4) C1{ BC2{ v2} v1}


void  S2997C4 ::v3(){vfunc_called(this, "_ZN7S2997C42v3Ev");}
S2997C4 ::~S2997C4(){ note_dtor("S2997C4", this);} // tgen
S2997C4 ::S2997C4(){ note_ctor("S2997C4", this);} // tgen

static void Test_S2997C4()
{
  extern Class_Descriptor cd_S2997C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2997C4, buf);
    S2997C4 *dp, &lv = *(dp=new (buf) S2997C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2997C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2997C4)");
    check_base_class_offset(lv, (S2997C3*), 0, "S2997C4");
    test_class_info(&lv, &cd_S2997C4);
    dp->~S2997C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2997C4(Test_S2997C4, "S2997C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2997C4C1Ev();
extern void _ZN7S2997C4D1Ev();
Name_Map name_map_S2997C4[] = {
  NSPAIR(_ZN7S2997C4C1Ev),
  NSPAIR(_ZN7S2997C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2997C3;
extern VTBL_ENTRY _ZTI7S2997C3[];
extern  VTBL_ENTRY _ZTV7S2997C3[];
static Base_Class bases_S2997C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2997C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2997C4[];
extern void _ZN7S2997C32v1Ev();
extern void _ZN7S2997C42v3Ev();
static  VTBL_ENTRY vtc_S2997C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2997C4[0]),
  (VTBL_ENTRY)&_ZN7S2997C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2997C42v3Ev,
};
extern VTBL_ENTRY _ZTI7S2997C4[];
extern  VTBL_ENTRY _ZTV7S2997C4[];
Class_Descriptor cd_S2997C4 = {  "S2997C4", // class name
  bases_S2997C4, 1,
  &(vtc_S2997C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2997C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2997C4),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2997C1  : S2997C2 , S2997C4 {
  ~S2997C1(); // tgen
  S2997C1(); // tgen
};
//SIG(1 S2997C1) C1{ BC2{ BC3{ v1} v2} BC4{ BC3 v3}}


S2997C1 ::~S2997C1(){ note_dtor("S2997C1", this);} // tgen
S2997C1 ::S2997C1(){ note_ctor("S2997C1", this);} // tgen

static void Test_S2997C1()
{
  extern Class_Descriptor cd_S2997C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2997C1, buf);
    S2997C1 *dp, &lv = *(dp=new (buf) S2997C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2997C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2997C1)");
    check_base_class_offset(lv, (S2997C3*)(S2997C2*), 0, "S2997C1");
    check_base_class_offset(lv, (S2997C2*), 0, "S2997C1");
    check_base_class_offset(lv, (S2997C3*)(S2997C4*), ABISELECT(8,4), "S2997C1");
    check_base_class_offset(lv, (S2997C4*), ABISELECT(8,4), "S2997C1");
    test_class_info(&lv, &cd_S2997C1);
    dp->~S2997C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2997C1(Test_S2997C1, "S2997C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2997C1C1Ev();
extern void _ZN7S2997C1D1Ev();
Name_Map name_map_S2997C1[] = {
  NSPAIR(_ZN7S2997C1C1Ev),
  NSPAIR(_ZN7S2997C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2997C3;
extern VTBL_ENTRY _ZTI7S2997C3[];
extern  VTBL_ENTRY _ZTV7S2997C3[];
extern Class_Descriptor cd_S2997C2;
extern VTBL_ENTRY _ZTI7S2997C2[];
extern  VTBL_ENTRY _ZTV7S2997C2[];
extern Class_Descriptor cd_S2997C3;
extern VTBL_ENTRY _ZTI7S2997C3[];
extern  VTBL_ENTRY _ZTV7S2997C3[];
extern Class_Descriptor cd_S2997C4;
extern VTBL_ENTRY _ZTI7S2997C4[];
extern  VTBL_ENTRY _ZTV7S2997C4[];
static Base_Class bases_S2997C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2997C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2997C2,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2997C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2997C4,    ABISELECT(8,4), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2997C1[];
extern void _ZN7S2997C32v1Ev();
extern void _ZN7S2997C22v2Ev();
extern void _ZN7S2997C32v1Ev();
extern void _ZN7S2997C42v3Ev();
static  VTBL_ENTRY vtc_S2997C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2997C1[0]),
  (VTBL_ENTRY)&_ZN7S2997C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2997C22v2Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2997C1[0]),
  (VTBL_ENTRY)&_ZN7S2997C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2997C42v3Ev,
};
extern VTBL_ENTRY _ZTI7S2997C1[];
extern  VTBL_ENTRY _ZTV7S2997C1[];
Class_Descriptor cd_S2997C1 = {  "S2997C1", // class name
  bases_S2997C1, 4,
  &(vtc_S2997C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2997C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2997C1),8, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6394C2  {
  int s6394c2f0;
  virtual void  v1(); // _ZN7S6394C22v1Ev
  virtual void  v2(); // _ZN7S6394C22v2Ev
  ~S6394C2(); // tgen
  S6394C2(); // tgen
};
//SIG(-1 S6394C2) C1{ v1 v2 Fi}


void  S6394C2 ::v1(){vfunc_called(this, "_ZN7S6394C22v1Ev");}
void  S6394C2 ::v2(){vfunc_called(this, "_ZN7S6394C22v2Ev");}
S6394C2 ::~S6394C2(){ note_dtor("S6394C2", this);} // tgen
S6394C2 ::S6394C2(){ note_ctor("S6394C2", this);} // tgen

static void Test_S6394C2()
{
  extern Class_Descriptor cd_S6394C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6394C2, buf);
    S6394C2 *dp, &lv = *(dp=new (buf) S6394C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6394C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6394C2)");
    check_field_offset(lv, s6394c2f0, ABISELECT(8,4), "S6394C2.s6394c2f0");
    test_class_info(&lv, &cd_S6394C2);
    dp->~S6394C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6394C2(Test_S6394C2, "S6394C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6394C2C1Ev();
extern void _ZN7S6394C2D1Ev();
Name_Map name_map_S6394C2[] = {
  NSPAIR(_ZN7S6394C2C1Ev),
  NSPAIR(_ZN7S6394C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6394C2[];
extern void _ZN7S6394C22v1Ev();
extern void _ZN7S6394C22v2Ev();
static  VTBL_ENTRY vtc_S6394C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6394C2[0]),
  (VTBL_ENTRY)&_ZN7S6394C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6394C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6394C2[];
extern  VTBL_ENTRY _ZTV7S6394C2[];
Class_Descriptor cd_S6394C2 = {  "S6394C2", // class name
  0,0,//no base classes
  &(vtc_S6394C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6394C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6394C2),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  S6394C1  : S6394C2 {
  __tsi64 s6394c1f0;
  int s6394c1f1;
  void *s6394c1f2;
  virtual  ~S6394C1(); // _ZN7S6394C1D1Ev
  S6394C1(); // tgen
};
//SIG(1 S6394C1) C1{ BC2{ v1 v2 Fi} vd FL Fi Fp}


 S6394C1 ::~S6394C1(){ note_dtor("S6394C1", this);}
S6394C1 ::S6394C1(){ note_ctor("S6394C1", this);} // tgen

static void Test_S6394C1()
{
  extern Class_Descriptor cd_S6394C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S6394C1, buf);
    S6394C1 *dp, &lv = *(dp=new (buf) S6394C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S6394C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6394C1)");
    check_base_class_offset(lv, (S6394C2*), 0, "S6394C1");
    check_field_offset(lv, s6394c1f0, ABISELECT(16,8), "S6394C1.s6394c1f0");
    check_field_offset(lv, s6394c1f1, ABISELECT(24,16), "S6394C1.s6394c1f1");
    check_field_offset(lv, s6394c1f2, ABISELECT(32,20), "S6394C1.s6394c1f2");
    test_class_info(&lv, &cd_S6394C1);
    dp->~S6394C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6394C1(Test_S6394C1, "S6394C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S6394C1C1Ev();
extern void _ZN7S6394C1D1Ev();
Name_Map name_map_S6394C1[] = {
  NSPAIR(_ZN7S6394C1C1Ev),
  NSPAIR(_ZN7S6394C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6394C2;
extern VTBL_ENTRY _ZTI7S6394C2[];
extern  VTBL_ENTRY _ZTV7S6394C2[];
static Base_Class bases_S6394C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6394C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6394C1[];
extern void _ZN7S6394C22v1Ev();
extern void _ZN7S6394C22v2Ev();
extern void _ZN7S6394C1D1Ev();
extern void _ZN7S6394C1D0Ev();
static  VTBL_ENTRY vtc_S6394C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6394C1[0]),
  (VTBL_ENTRY)&_ZN7S6394C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6394C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6394C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6394C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6394C1[];
extern  VTBL_ENTRY _ZTV7S6394C1[];
Class_Descriptor cd_S6394C1 = {  "S6394C1", // class name
  bases_S6394C1, 1,
  &(vtc_S6394C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S6394C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6394C1),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  S11594C1  {
  ::S2333C27_nt s11594c1f0;
  short s11594c1f1;
  int s11594c1f2;
  char s11594c1f3[12];
};
//SIG(1 S11594C1) C1{ FC2{ Fi[2]} Fs Fi Fc[12]}



static void Test_S11594C1()
{
  {
    init_simple_test("S11594C1");
    S11594C1 lv;
    check2(sizeof(lv), 28, "sizeof(S11594C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11594C1)");
    check_field_offset(lv, s11594c1f0, 0, "S11594C1.s11594c1f0");
    check_field_offset(lv, s11594c1f1, 8, "S11594C1.s11594c1f1");
    check_field_offset(lv, s11594c1f2, 12, "S11594C1.s11594c1f2");
    check_field_offset(lv, s11594c1f3, 16, "S11594C1.s11594c1f3");
  }
}
static Arrange_To_Call_Me vS11594C1(Test_S11594C1, "S11594C1", 28);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3004C3  {
  virtual void  v1(); // _ZN7S3004C32v1Ev
  ~S3004C3(); // tgen
  S3004C3(); // tgen
};
//SIG(-1 S3004C3) C1{ v1}


void  S3004C3 ::v1(){vfunc_called(this, "_ZN7S3004C32v1Ev");}
S3004C3 ::~S3004C3(){ note_dtor("S3004C3", this);} // tgen
S3004C3 ::S3004C3(){ note_ctor("S3004C3", this);} // tgen

static void Test_S3004C3()
{
  extern Class_Descriptor cd_S3004C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3004C3, buf);
    S3004C3 *dp, &lv = *(dp=new (buf) S3004C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3004C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3004C3)");
    test_class_info(&lv, &cd_S3004C3);
    dp->~S3004C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3004C3(Test_S3004C3, "S3004C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3004C3C1Ev();
extern void _ZN7S3004C3D1Ev();
Name_Map name_map_S3004C3[] = {
  NSPAIR(_ZN7S3004C3C1Ev),
  NSPAIR(_ZN7S3004C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3004C3[];
extern void _ZN7S3004C32v1Ev();
static  VTBL_ENTRY vtc_S3004C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3004C3[0]),
  (VTBL_ENTRY)&_ZN7S3004C32v1Ev,
};
extern VTBL_ENTRY _ZTI7S3004C3[];
extern  VTBL_ENTRY _ZTV7S3004C3[];
Class_Descriptor cd_S3004C3 = {  "S3004C3", // class name
  0,0,//no base classes
  &(vtc_S3004C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3004C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3004C3),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  S3004C2_nt  : S3004C3 {
  ~S3004C2_nt(); // tgen
  S3004C2_nt(); // tgen
};
//SIG(-1 S3004C2_nt) C1{ BC2{ v1}}


S3004C2_nt ::~S3004C2_nt(){ note_dtor("S3004C2_nt", this);} // tgen
S3004C2_nt ::S3004C2_nt(){ note_ctor("S3004C2_nt", this);} // tgen

//skip512 S3004C2_nt

#else // __cplusplus

extern void _ZN10S3004C2_ntC1Ev();
extern void _ZN10S3004C2_ntD1Ev();
Name_Map name_map_S3004C2_nt[] = {
  NSPAIR(_ZN10S3004C2_ntC1Ev),
  NSPAIR(_ZN10S3004C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3004C3;
extern VTBL_ENTRY _ZTI7S3004C3[];
extern  VTBL_ENTRY _ZTV7S3004C3[];
static Base_Class bases_S3004C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3004C3,    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 _ZTI10S3004C2_nt[];
extern void _ZN7S3004C32v1Ev();
static  VTBL_ENTRY vtc_S3004C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3004C2_nt[0]),
  (VTBL_ENTRY)&_ZN7S3004C32v1Ev,
};
extern VTBL_ENTRY _ZTI10S3004C2_nt[];
VTBL_ENTRY *P__ZTI10S3004C2_nt = _ZTI10S3004C2_nt; 
extern  VTBL_ENTRY _ZTV10S3004C2_nt[];
Class_Descriptor cd_S3004C2_nt = {  "S3004C2_nt", // class name
  bases_S3004C2_nt, 1,
  &(vtc_S3004C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S3004C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3004C2_nt),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  S3004C4  : S3004C3 {
  virtual void  v2(); // _ZN7S3004C42v2Ev
  ~S3004C4(); // tgen
  S3004C4(); // tgen
};
//SIG(-1 S3004C4) C1{ BC2{ v2} v1}


void  S3004C4 ::v2(){vfunc_called(this, "_ZN7S3004C42v2Ev");}
S3004C4 ::~S3004C4(){ note_dtor("S3004C4", this);} // tgen
S3004C4 ::S3004C4(){ note_ctor("S3004C4", this);} // tgen

static void Test_S3004C4()
{
  extern Class_Descriptor cd_S3004C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3004C4, buf);
    S3004C4 *dp, &lv = *(dp=new (buf) S3004C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3004C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3004C4)");
    check_base_class_offset(lv, (S3004C3*), 0, "S3004C4");
    test_class_info(&lv, &cd_S3004C4);
    dp->~S3004C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3004C4(Test_S3004C4, "S3004C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3004C4C1Ev();
extern void _ZN7S3004C4D1Ev();
Name_Map name_map_S3004C4[] = {
  NSPAIR(_ZN7S3004C4C1Ev),
  NSPAIR(_ZN7S3004C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3004C3;
extern VTBL_ENTRY _ZTI7S3004C3[];
extern  VTBL_ENTRY _ZTV7S3004C3[];
static Base_Class bases_S3004C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3004C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3004C4[];
extern void _ZN7S3004C32v1Ev();
extern void _ZN7S3004C42v2Ev();
static  VTBL_ENTRY vtc_S3004C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3004C4[0]),
  (VTBL_ENTRY)&_ZN7S3004C32v1Ev,
  (VTBL_ENTRY)&_ZN7S3004C42v2Ev,
};
extern VTBL_ENTRY _ZTI7S3004C4[];
extern  VTBL_ENTRY _ZTV7S3004C4[];
Class_Descriptor cd_S3004C4 = {  "S3004C4", // class name
  bases_S3004C4, 1,
  &(vtc_S3004C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3004C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3004C4),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3004C1  : S3004C2_nt , S3004C4 {
  ~S3004C1(); // tgen
  S3004C1(); // tgen
};
//SIG(1 S3004C1) C1{ BC2{ BC3{ v1}} BC4{ BC3 v2}}


S3004C1 ::~S3004C1(){ note_dtor("S3004C1", this);} // tgen
S3004C1 ::S3004C1(){ note_ctor("S3004C1", this);} // tgen

static void Test_S3004C1()
{
  extern Class_Descriptor cd_S3004C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3004C1, buf);
    S3004C1 *dp, &lv = *(dp=new (buf) S3004C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3004C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3004C1)");
    check_base_class_offset(lv, (S3004C3*)(S3004C2_nt*), 0, "S3004C1");
    check_base_class_offset(lv, (S3004C2_nt*), 0, "S3004C1");
    check_base_class_offset(lv, (S3004C3*)(S3004C4*), ABISELECT(8,4), "S3004C1");
    check_base_class_offset(lv, (S3004C4*), ABISELECT(8,4), "S3004C1");
    test_class_info(&lv, &cd_S3004C1);
    dp->~S3004C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3004C1(Test_S3004C1, "S3004C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3004C1C1Ev();
extern void _ZN7S3004C1D1Ev();
Name_Map name_map_S3004C1[] = {
  NSPAIR(_ZN7S3004C1C1Ev),
  NSPAIR(_ZN7S3004C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3004C3;
extern VTBL_ENTRY _ZTI7S3004C3[];
extern  VTBL_ENTRY _ZTV7S3004C3[];
extern Class_Descriptor cd_S3004C2_nt;
extern VTBL_ENTRY _ZTI10S3004C2_nt[];
extern  VTBL_ENTRY _ZTV10S3004C2_nt[];
extern Class_Descriptor cd_S3004C3;
extern VTBL_ENTRY _ZTI7S3004C3[];
extern  VTBL_ENTRY _ZTV7S3004C3[];
extern Class_Descriptor cd_S3004C4;
extern VTBL_ENTRY _ZTI7S3004C4[];
extern  VTBL_ENTRY _ZTV7S3004C4[];
static Base_Class bases_S3004C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3004C3,    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
  0, 0},
  {&cd_S3004C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3004C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3004C4,    ABISELECT(8,4), //bcp->offset
    3, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3004C1[];
extern void _ZN7S3004C32v1Ev();
extern void _ZN7S3004C32v1Ev();
extern void _ZN7S3004C42v2Ev();
static  VTBL_ENTRY vtc_S3004C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3004C1[0]),
  (VTBL_ENTRY)&_ZN7S3004C32v1Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3004C1[0]),
  (VTBL_ENTRY)&_ZN7S3004C32v1Ev,
  (VTBL_ENTRY)&_ZN7S3004C42v2Ev,
};
extern VTBL_ENTRY _ZTI7S3004C1[];
extern  VTBL_ENTRY _ZTV7S3004C1[];
Class_Descriptor cd_S3004C1 = {  "S3004C1", // class name
  bases_S3004C1, 4,
  &(vtc_S3004C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3004C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3004C1),7, //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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10723C1  {
  char s10723c1f0[21];
  int s10723c1f1;
  char s10723c1f2[17];
  int s10723c1f3[2];
};
//SIG(1 S10723C1) C1{ Fc[21] Fi Fc[17] Fi[2]}



static void Test_S10723C1()
{
  {
    init_simple_test("S10723C1");
    S10723C1 lv;
    check2(sizeof(lv), 56, "sizeof(S10723C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10723C1)");
    check_field_offset(lv, s10723c1f0, 0, "S10723C1.s10723c1f0");
    check_field_offset(lv, s10723c1f1, 24, "S10723C1.s10723c1f1");
    check_field_offset(lv, s10723c1f2, 28, "S10723C1.s10723c1f2");
    check_field_offset(lv, s10723c1f3, 48, "S10723C1.s10723c1f3");
  }
}
static Arrange_To_Call_Me vS10723C1(Test_S10723C1, "S10723C1", 56);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6800C2  {
  int s6800c2f0;
  virtual void  v4(); // _ZN7S6800C22v4Ev
  virtual void  v5(); // _ZN7S6800C22v5Ev
  ~S6800C2(); // tgen
  S6800C2(); // tgen
};
//SIG(-1 S6800C2) C1{ v1 v2 Fi}


void  S6800C2 ::v4(){vfunc_called(this, "_ZN7S6800C22v4Ev");}
void  S6800C2 ::v5(){vfunc_called(this, "_ZN7S6800C22v5Ev");}
S6800C2 ::~S6800C2(){ note_dtor("S6800C2", this);} // tgen
S6800C2 ::S6800C2(){ note_ctor("S6800C2", this);} // tgen

static void Test_S6800C2()
{
  extern Class_Descriptor cd_S6800C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6800C2, buf);
    S6800C2 *dp, &lv = *(dp=new (buf) S6800C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6800C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6800C2)");
    check_field_offset(lv, s6800c2f0, ABISELECT(8,4), "S6800C2.s6800c2f0");
    test_class_info(&lv, &cd_S6800C2);
    dp->~S6800C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6800C2(Test_S6800C2, "S6800C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6800C2C1Ev();
extern void _ZN7S6800C2D1Ev();
Name_Map name_map_S6800C2[] = {
  NSPAIR(_ZN7S6800C2C1Ev),
  NSPAIR(_ZN7S6800C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6800C2[];
extern void _ZN7S6800C22v4Ev();
extern void _ZN7S6800C22v5Ev();
static  VTBL_ENTRY vtc_S6800C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6800C2[0]),
  (VTBL_ENTRY)&_ZN7S6800C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6800C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S6800C2[];
extern  VTBL_ENTRY _ZTV7S6800C2[];
Class_Descriptor cd_S6800C2 = {  "S6800C2", // class name
  0,0,//no base classes
  &(vtc_S6800C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6800C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6800C2),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  S6800C1  : S6800C2 {
  virtual void  v1(); // _ZN7S6800C12v1Ev
  virtual void  v2(); // _ZN7S6800C12v2Ev
  virtual void  v3(); // _ZN7S6800C12v3Ev
  ~S6800C1(); // tgen
  S6800C1(); // tgen
};
//SIG(1 S6800C1) C1{ BC2{ v4 v5 Fi} v1 v2 v3}


void  S6800C1 ::v1(){vfunc_called(this, "_ZN7S6800C12v1Ev");}
void  S6800C1 ::v2(){vfunc_called(this, "_ZN7S6800C12v2Ev");}
void  S6800C1 ::v3(){vfunc_called(this, "_ZN7S6800C12v3Ev");}
S6800C1 ::~S6800C1(){ note_dtor("S6800C1", this);} // tgen
S6800C1 ::S6800C1(){ note_ctor("S6800C1", this);} // tgen

static void Test_S6800C1()
{
  extern Class_Descriptor cd_S6800C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6800C1, buf);
    S6800C1 *dp, &lv = *(dp=new (buf) S6800C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6800C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6800C1)");
    check_base_class_offset(lv, (S6800C2*), 0, "S6800C1");
    test_class_info(&lv, &cd_S6800C1);
    dp->~S6800C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6800C1(Test_S6800C1, "S6800C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6800C1C1Ev();
extern void _ZN7S6800C1D1Ev();
Name_Map name_map_S6800C1[] = {
  NSPAIR(_ZN7S6800C1C1Ev),
  NSPAIR(_ZN7S6800C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6800C2;
extern VTBL_ENTRY _ZTI7S6800C2[];
extern  VTBL_ENTRY _ZTV7S6800C2[];
static Base_Class bases_S6800C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6800C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6800C1[];
extern void _ZN7S6800C22v4Ev();
extern void _ZN7S6800C22v5Ev();
extern void _ZN7S6800C12v1Ev();
extern void _ZN7S6800C12v2Ev();
extern void _ZN7S6800C12v3Ev();
static  VTBL_ENTRY vtc_S6800C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6800C1[0]),
  (VTBL_ENTRY)&_ZN7S6800C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6800C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6800C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6800C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6800C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S6800C1[];
extern  VTBL_ENTRY _ZTV7S6800C1[];
Class_Descriptor cd_S6800C1 = {  "S6800C1", // class name
  bases_S6800C1, 1,
  &(vtc_S6800C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6800C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6800C1),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6670C2  {
  int s6670c2f0;
  virtual void  v3(); // _ZN7S6670C22v3Ev
  virtual void  v4(); // _ZN7S6670C22v4Ev
  ~S6670C2(); // tgen
  S6670C2(); // tgen
};
//SIG(-1 S6670C2) C1{ v1 v2 Fi}


void  S6670C2 ::v3(){vfunc_called(this, "_ZN7S6670C22v3Ev");}
void  S6670C2 ::v4(){vfunc_called(this, "_ZN7S6670C22v4Ev");}
S6670C2 ::~S6670C2(){ note_dtor("S6670C2", this);} // tgen
S6670C2 ::S6670C2(){ note_ctor("S6670C2", this);} // tgen

static void Test_S6670C2()
{
  extern Class_Descriptor cd_S6670C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6670C2, buf);
    S6670C2 *dp, &lv = *(dp=new (buf) S6670C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6670C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6670C2)");
    check_field_offset(lv, s6670c2f0, ABISELECT(8,4), "S6670C2.s6670c2f0");
    test_class_info(&lv, &cd_S6670C2);
    dp->~S6670C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6670C2(Test_S6670C2, "S6670C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6670C2C1Ev();
extern void _ZN7S6670C2D1Ev();
Name_Map name_map_S6670C2[] = {
  NSPAIR(_ZN7S6670C2C1Ev),
  NSPAIR(_ZN7S6670C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6670C2[];
extern void _ZN7S6670C22v3Ev();
extern void _ZN7S6670C22v4Ev();
static  VTBL_ENTRY vtc_S6670C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6670C2[0]),
  (VTBL_ENTRY)&_ZN7S6670C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6670C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6670C2[];
extern  VTBL_ENTRY _ZTV7S6670C2[];
Class_Descriptor cd_S6670C2 = {  "S6670C2", // class name
  0,0,//no base classes
  &(vtc_S6670C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6670C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6670C2),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  S6670C1  : S6670C2 {
  int s6670c1f0;
  virtual void  v1(); // _ZN7S6670C12v1Ev
  virtual void  v2(); // _ZN7S6670C12v2Ev
  ~S6670C1(); // tgen
  S6670C1(); // tgen
};
//SIG(1 S6670C1) C1{ BC2{ v3 v4 Fi} v1 v2 Fi}


void  S6670C1 ::v1(){vfunc_called(this, "_ZN7S6670C12v1Ev");}
void  S6670C1 ::v2(){vfunc_called(this, "_ZN7S6670C12v2Ev");}
S6670C1 ::~S6670C1(){ note_dtor("S6670C1", this);} // tgen
S6670C1 ::S6670C1(){ note_ctor("S6670C1", this);} // tgen

static void Test_S6670C1()
{
  extern Class_Descriptor cd_S6670C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6670C1, buf);
    S6670C1 *dp, &lv = *(dp=new (buf) S6670C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6670C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6670C1)");
    check_base_class_offset(lv, (S6670C2*), 0, "S6670C1");
    check_field_offset(lv, s6670c1f0, ABISELECT(12,8), "S6670C1.s6670c1f0");
    test_class_info(&lv, &cd_S6670C1);
    dp->~S6670C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6670C1(Test_S6670C1, "S6670C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S6670C1C1Ev();
extern void _ZN7S6670C1D1Ev();
Name_Map name_map_S6670C1[] = {
  NSPAIR(_ZN7S6670C1C1Ev),
  NSPAIR(_ZN7S6670C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6670C2;
extern VTBL_ENTRY _ZTI7S6670C2[];
extern  VTBL_ENTRY _ZTV7S6670C2[];
static Base_Class bases_S6670C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6670C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6670C1[];
extern void _ZN7S6670C22v3Ev();
extern void _ZN7S6670C22v4Ev();
extern void _ZN7S6670C12v1Ev();
extern void _ZN7S6670C12v2Ev();
static  VTBL_ENTRY vtc_S6670C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6670C1[0]),
  (VTBL_ENTRY)&_ZN7S6670C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6670C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6670C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6670C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6670C1[];
extern  VTBL_ENTRY _ZTV7S6670C1[];
Class_Descriptor cd_S6670C1 = {  "S6670C1", // class name
  bases_S6670C1, 1,
  &(vtc_S6670C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6670C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6670C1),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  S6130C1  : S11969C29_nt , S3712C3_nt {
  virtual  ~S6130C1(); // _ZN7S6130C1D1Ev
  S6130C1(); // tgen
};
//SIG(1 S6130C1) C1{ BC2{ m} BC3{ vd m Fi} vd}


 S6130C1 ::~S6130C1(){ note_dtor("S6130C1", this);}
S6130C1 ::S6130C1(){ note_ctor("S6130C1", this);} // tgen

static void Test_S6130C1()
{
  extern Class_Descriptor cd_S6130C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6130C1, buf);
    S6130C1 *dp, &lv = *(dp=new (buf) S6130C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6130C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6130C1)");
    check_base_class_offset(lv, (S11969C29_nt*), 0, "S6130C1");
    check_base_class_offset(lv, (S3712C3_nt*), 0, "S6130C1");
    test_class_info(&lv, &cd_S6130C1);
    dp->~S6130C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6130C1(Test_S6130C1, "S6130C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6130C1C1Ev();
extern void _ZN7S6130C1D1Ev();
Name_Map name_map_S6130C1[] = {
  NSPAIR(_ZN7S6130C1C1Ev),
  NSPAIR(_ZN7S6130C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S11969C29_nt;
extern VTBL_ENTRY _ZTI12S11969C29_nt[];
extern Class_Descriptor cd_S3712C3_nt;
extern VTBL_ENTRY _ZTI10S3712C3_nt[];
extern  VTBL_ENTRY _ZTV10S3712C3_nt[];
static Base_Class bases_S6130C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S11969C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3712C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6130C1[];
extern void _ZN7S6130C1D1Ev();
extern void _ZN7S6130C1D0Ev();
static  VTBL_ENTRY vtc_S6130C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6130C1[0]),
  (VTBL_ENTRY)&_ZN7S6130C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6130C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6130C1[];
extern  VTBL_ENTRY _ZTV7S6130C1[];
Class_Descriptor cd_S6130C1 = {  "S6130C1", // class name
  bases_S6130C1, 2,
  &(vtc_S6130C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6130C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6130C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16984C1  {
  int s16984c1f0;
  short s16984c1f1;
  ::S1604C5_nt s16984c1f2;
  void  mf16984c1(); // _ZN8S16984C19mf16984c1Ev
};
//SIG(1 S16984C1) C1{ m Fi Fs FC2{ m Fi[2]}}


void  S16984C1 ::mf16984c1(){}

static void Test_S16984C1()
{
  {
    init_simple_test("S16984C1");
    S16984C1 lv;
    check2(sizeof(lv), 16, "sizeof(S16984C1)");
    check2(__alignof__(lv), 4, "__alignof__(S16984C1)");
    check_field_offset(lv, s16984c1f0, 0, "S16984C1.s16984c1f0");
    check_field_offset(lv, s16984c1f1, 4, "S16984C1.s16984c1f1");
    check_field_offset(lv, s16984c1f2, 8, "S16984C1.s16984c1f2");
  }
}
static Arrange_To_Call_Me vS16984C1(Test_S16984C1, "S16984C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18251C1  {
  void *s18251c1f0[3];
  ::S1604C5_nt s18251c1f1;
  void  mf18251c1(); // _ZN8S18251C19mf18251c1Ev
};
//SIG(1 S18251C1) C1{ m Fp[3] FC2{ m Fi[2]}}


void  S18251C1 ::mf18251c1(){}

static void Test_S18251C1()
{
  {
    init_simple_test("S18251C1");
    S18251C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18251C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18251C1)");
    check_field_offset(lv, s18251c1f0, 0, "S18251C1.s18251c1f0");
    check_field_offset(lv, s18251c1f1, ABISELECT(24,12), "S18251C1.s18251c1f1");
  }
}
static Arrange_To_Call_Me vS18251C1(Test_S18251C1, "S18251C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10686C1  {
  char s10686c1f0[2];
  short s10686c1f1;
  int s10686c1f2;
  char s10686c1f3[512];
};
//SIG(1 S10686C1) C1{ Fc[2] Fs Fi Fc[512]}



static void Test_S10686C1()
{
  {
    init_simple_test("S10686C1");
    S10686C1 lv;
    check2(sizeof(lv), 520, "sizeof(S10686C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10686C1)");
    check_field_offset(lv, s10686c1f0, 0, "S10686C1.s10686c1f0");
    check_field_offset(lv, s10686c1f1, 2, "S10686C1.s10686c1f1");
    check_field_offset(lv, s10686c1f2, 4, "S10686C1.s10686c1f2");
    check_field_offset(lv, s10686c1f3, 8, "S10686C1.s10686c1f3");
  }
}
static Arrange_To_Call_Me vS10686C1(Test_S10686C1, "S10686C1", 520);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17304C1  {
  int s17304c1f0[9];
  __tsi64 s17304c1f1[2];
  int s17304c1f2[2];
  void  mf17304c1(); // _ZN8S17304C19mf17304c1Ev
};
//SIG(1 S17304C1) C1{ m Fi[9] FL[2] Fi[2]}


void  S17304C1 ::mf17304c1(){}

static void Test_S17304C1()
{
  {
    init_simple_test("S17304C1");
    S17304C1 lv;
    check2(sizeof(lv), ABISELECT(64,60), "sizeof(S17304C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17304C1)");
    check_field_offset(lv, s17304c1f0, 0, "S17304C1.s17304c1f0");
    check_field_offset(lv, s17304c1f1, ABISELECT(40,36), "S17304C1.s17304c1f1");
    check_field_offset(lv, s17304c1f2, ABISELECT(56,52), "S17304C1.s17304c1f2");
  }
}
static Arrange_To_Call_Me vS17304C1(Test_S17304C1, "S17304C1", ABISELECT(64,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6392C2  {
  int s6392c2f0;
  virtual void  v1(); // _ZN7S6392C22v1Ev
  virtual void  v2(); // _ZN7S6392C22v2Ev
  ~S6392C2(); // tgen
  S6392C2(); // tgen
};
//SIG(-1 S6392C2) C1{ v1 v2 Fi}


void  S6392C2 ::v1(){vfunc_called(this, "_ZN7S6392C22v1Ev");}
void  S6392C2 ::v2(){vfunc_called(this, "_ZN7S6392C22v2Ev");}
S6392C2 ::~S6392C2(){ note_dtor("S6392C2", this);} // tgen
S6392C2 ::S6392C2(){ note_ctor("S6392C2", this);} // tgen

static void Test_S6392C2()
{
  extern Class_Descriptor cd_S6392C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6392C2, buf);
    S6392C2 *dp, &lv = *(dp=new (buf) S6392C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6392C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6392C2)");
    check_field_offset(lv, s6392c2f0, ABISELECT(8,4), "S6392C2.s6392c2f0");
    test_class_info(&lv, &cd_S6392C2);
    dp->~S6392C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6392C2(Test_S6392C2, "S6392C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6392C2C1Ev();
extern void _ZN7S6392C2D1Ev();
Name_Map name_map_S6392C2[] = {
  NSPAIR(_ZN7S6392C2C1Ev),
  NSPAIR(_ZN7S6392C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6392C2[];
extern void _ZN7S6392C22v1Ev();
extern void _ZN7S6392C22v2Ev();
static  VTBL_ENTRY vtc_S6392C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6392C2[0]),
  (VTBL_ENTRY)&_ZN7S6392C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6392C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6392C2[];
extern  VTBL_ENTRY _ZTV7S6392C2[];
Class_Descriptor cd_S6392C2 = {  "S6392C2", // class name
  0,0,//no base classes
  &(vtc_S6392C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6392C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6392C2),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  S6392C1  : S6392C2 {
  int s6392c1f0;
  void *s6392c1f1;
  ~S6392C1(); // tgen
  S6392C1(); // tgen
};
//SIG(1 S6392C1) C1{ BC2{ v1 v2 Fi} Fi Fp}


S6392C1 ::~S6392C1(){ note_dtor("S6392C1", this);} // tgen
S6392C1 ::S6392C1(){ note_ctor("S6392C1", this);} // tgen

static void Test_S6392C1()
{
  extern Class_Descriptor cd_S6392C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6392C1, buf);
    S6392C1 *dp, &lv = *(dp=new (buf) S6392C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6392C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6392C1)");
    check_base_class_offset(lv, (S6392C2*), 0, "S6392C1");
    check_field_offset(lv, s6392c1f0, ABISELECT(12,8), "S6392C1.s6392c1f0");
    check_field_offset(lv, s6392c1f1, ABISELECT(16,12), "S6392C1.s6392c1f1");
    test_class_info(&lv, &cd_S6392C1);
    dp->~S6392C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6392C1(Test_S6392C1, "S6392C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S6392C1C1Ev();
extern void _ZN7S6392C1D1Ev();
Name_Map name_map_S6392C1[] = {
  NSPAIR(_ZN7S6392C1C1Ev),
  NSPAIR(_ZN7S6392C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6392C2;
extern VTBL_ENTRY _ZTI7S6392C2[];
extern  VTBL_ENTRY _ZTV7S6392C2[];
static Base_Class bases_S6392C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6392C2,    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 _ZTI7S6392C1[];
extern void _ZN7S6392C22v1Ev();
extern void _ZN7S6392C22v2Ev();
static  VTBL_ENTRY vtc_S6392C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6392C1[0]),
  (VTBL_ENTRY)&_ZN7S6392C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6392C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6392C1[];
extern  VTBL_ENTRY _ZTV7S6392C1[];
Class_Descriptor cd_S6392C1 = {  "S6392C1", // class name
  bases_S6392C1, 1,
  &(vtc_S6392C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S6392C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6392C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6547C2  {
  int s6547c2f0;
  virtual void  v2(); // _ZN7S6547C22v2Ev
  virtual void  v3(); // _ZN7S6547C22v3Ev
  ~S6547C2(); // tgen
  S6547C2(); // tgen
};
//SIG(-1 S6547C2) C1{ v1 v2 Fi}


void  S6547C2 ::v2(){vfunc_called(this, "_ZN7S6547C22v2Ev");}
void  S6547C2 ::v3(){vfunc_called(this, "_ZN7S6547C22v3Ev");}
S6547C2 ::~S6547C2(){ note_dtor("S6547C2", this);} // tgen
S6547C2 ::S6547C2(){ note_ctor("S6547C2", this);} // tgen

static void Test_S6547C2()
{
  extern Class_Descriptor cd_S6547C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6547C2, buf);
    S6547C2 *dp, &lv = *(dp=new (buf) S6547C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6547C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6547C2)");
    check_field_offset(lv, s6547c2f0, ABISELECT(8,4), "S6547C2.s6547c2f0");
    test_class_info(&lv, &cd_S6547C2);
    dp->~S6547C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6547C2(Test_S6547C2, "S6547C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6547C2C1Ev();
extern void _ZN7S6547C2D1Ev();
Name_Map name_map_S6547C2[] = {
  NSPAIR(_ZN7S6547C2C1Ev),
  NSPAIR(_ZN7S6547C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6547C2[];
extern void _ZN7S6547C22v2Ev();
extern void _ZN7S6547C22v3Ev();
static  VTBL_ENTRY vtc_S6547C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6547C2[0]),
  (VTBL_ENTRY)&_ZN7S6547C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6547C22v3Ev,
};
extern VTBL_ENTRY _ZTI7S6547C2[];
extern  VTBL_ENTRY _ZTV7S6547C2[];
Class_Descriptor cd_S6547C2 = {  "S6547C2", // class name
  0,0,//no base classes
  &(vtc_S6547C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6547C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6547C2),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  S6547C1  : S6547C2 {
  int s6547c1f0;
  virtual void  v1(); // _ZN7S6547C12v1Ev
  ~S6547C1(); // tgen
  S6547C1(); // tgen
};
//SIG(1 S6547C1) C1{ BC2{ v2 v3 Fi} v1 Fi}


void  S6547C1 ::v1(){vfunc_called(this, "_ZN7S6547C12v1Ev");}
S6547C1 ::~S6547C1(){ note_dtor("S6547C1", this);} // tgen
S6547C1 ::S6547C1(){ note_ctor("S6547C1", this);} // tgen

static void Test_S6547C1()
{
  extern Class_Descriptor cd_S6547C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6547C1, buf);
    S6547C1 *dp, &lv = *(dp=new (buf) S6547C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6547C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6547C1)");
    check_base_class_offset(lv, (S6547C2*), 0, "S6547C1");
    check_field_offset(lv, s6547c1f0, ABISELECT(12,8), "S6547C1.s6547c1f0");
    test_class_info(&lv, &cd_S6547C1);
    dp->~S6547C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6547C1(Test_S6547C1, "S6547C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S6547C1C1Ev();
extern void _ZN7S6547C1D1Ev();
Name_Map name_map_S6547C1[] = {
  NSPAIR(_ZN7S6547C1C1Ev),
  NSPAIR(_ZN7S6547C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6547C2;
extern VTBL_ENTRY _ZTI7S6547C2[];
extern  VTBL_ENTRY _ZTV7S6547C2[];
static Base_Class bases_S6547C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6547C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6547C1[];
extern void _ZN7S6547C22v2Ev();
extern void _ZN7S6547C22v3Ev();
extern void _ZN7S6547C12v1Ev();
static  VTBL_ENTRY vtc_S6547C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6547C1[0]),
  (VTBL_ENTRY)&_ZN7S6547C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6547C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6547C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S6547C1[];
extern  VTBL_ENTRY _ZTV7S6547C1[];
Class_Descriptor cd_S6547C1 = {  "S6547C1", // class name
  bases_S6547C1, 1,
  &(vtc_S6547C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6547C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6547C1),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  S6671C2  {
  int s6671c2f0;
  virtual void  v3(); // _ZN7S6671C22v3Ev
  virtual void  v4(); // _ZN7S6671C22v4Ev
  ~S6671C2(); // tgen
  S6671C2(); // tgen
};
//SIG(-1 S6671C2) C1{ v1 v2 Fi}


void  S6671C2 ::v3(){vfunc_called(this, "_ZN7S6671C22v3Ev");}
void  S6671C2 ::v4(){vfunc_called(this, "_ZN7S6671C22v4Ev");}
S6671C2 ::~S6671C2(){ note_dtor("S6671C2", this);} // tgen
S6671C2 ::S6671C2(){ note_ctor("S6671C2", this);} // tgen

static void Test_S6671C2()
{
  extern Class_Descriptor cd_S6671C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6671C2, buf);
    S6671C2 *dp, &lv = *(dp=new (buf) S6671C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6671C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6671C2)");
    check_field_offset(lv, s6671c2f0, ABISELECT(8,4), "S6671C2.s6671c2f0");
    test_class_info(&lv, &cd_S6671C2);
    dp->~S6671C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6671C2(Test_S6671C2, "S6671C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6671C2C1Ev();
extern void _ZN7S6671C2D1Ev();
Name_Map name_map_S6671C2[] = {
  NSPAIR(_ZN7S6671C2C1Ev),
  NSPAIR(_ZN7S6671C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6671C2[];
extern void _ZN7S6671C22v3Ev();
extern void _ZN7S6671C22v4Ev();
static  VTBL_ENTRY vtc_S6671C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6671C2[0]),
  (VTBL_ENTRY)&_ZN7S6671C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6671C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6671C2[];
extern  VTBL_ENTRY _ZTV7S6671C2[];
Class_Descriptor cd_S6671C2 = {  "S6671C2", // class name
  0,0,//no base classes
  &(vtc_S6671C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6671C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6671C2),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  S6671C1  : S6671C2 {
  virtual void  v1(); // _ZN7S6671C12v1Ev
  virtual void  v2(); // _ZN7S6671C12v2Ev
  ~S6671C1(); // tgen
  S6671C1(); // tgen
};
//SIG(1 S6671C1) C1{ BC2{ v3 v4 Fi} v1 v2}


void  S6671C1 ::v1(){vfunc_called(this, "_ZN7S6671C12v1Ev");}
void  S6671C1 ::v2(){vfunc_called(this, "_ZN7S6671C12v2Ev");}
S6671C1 ::~S6671C1(){ note_dtor("S6671C1", this);} // tgen
S6671C1 ::S6671C1(){ note_ctor("S6671C1", this);} // tgen

static void Test_S6671C1()
{
  extern Class_Descriptor cd_S6671C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6671C1, buf);
    S6671C1 *dp, &lv = *(dp=new (buf) S6671C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6671C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6671C1)");
    check_base_class_offset(lv, (S6671C2*), 0, "S6671C1");
    test_class_info(&lv, &cd_S6671C1);
    dp->~S6671C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6671C1(Test_S6671C1, "S6671C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6671C1C1Ev();
extern void _ZN7S6671C1D1Ev();
Name_Map name_map_S6671C1[] = {
  NSPAIR(_ZN7S6671C1C1Ev),
  NSPAIR(_ZN7S6671C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6671C2;
extern VTBL_ENTRY _ZTI7S6671C2[];
extern  VTBL_ENTRY _ZTV7S6671C2[];
static Base_Class bases_S6671C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6671C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6671C1[];
extern void _ZN7S6671C22v3Ev();
extern void _ZN7S6671C22v4Ev();
extern void _ZN7S6671C12v1Ev();
extern void _ZN7S6671C12v2Ev();
static  VTBL_ENTRY vtc_S6671C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6671C1[0]),
  (VTBL_ENTRY)&_ZN7S6671C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6671C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6671C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6671C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6671C1[];
extern  VTBL_ENTRY _ZTV7S6671C1[];
Class_Descriptor cd_S6671C1 = {  "S6671C1", // class name
  bases_S6671C1, 1,
  &(vtc_S6671C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6671C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6671C1),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  S13811C1  {
  long s13811c1f0;
  __tsi64 s13811c1f1;
  long s13811c1f2;
  int s13811c1f3;
  long s13811c1f4[2];
};
//SIG(1 S13811C1) C1{ Fl FL Fl Fi Fl[2]}



static void Test_S13811C1()
{
  {
    init_simple_test("S13811C1");
    S13811C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S13811C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13811C1)");
    check_field_offset(lv, s13811c1f0, 0, "S13811C1.s13811c1f0");
    check_field_offset(lv, s13811c1f1, ABISELECT(8,4), "S13811C1.s13811c1f1");
    check_field_offset(lv, s13811c1f2, ABISELECT(16,12), "S13811C1.s13811c1f2");
    check_field_offset(lv, s13811c1f3, ABISELECT(24,16), "S13811C1.s13811c1f3");
    check_field_offset(lv, s13811c1f4, ABISELECT(32,20), "S13811C1.s13811c1f4");
  }
}
static Arrange_To_Call_Me vS13811C1(Test_S13811C1, "S13811C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18378C1  {
  void *s18378c1f0[5];
  int s18378c1f1[3];
  void *s18378c1f2;
  void  mf18378c1(); // _ZN8S18378C19mf18378c1Ev
};
//SIG(1 S18378C1) C1{ m Fp[5] Fi[3] Fp}


void  S18378C1 ::mf18378c1(){}

static void Test_S18378C1()
{
  {
    init_simple_test("S18378C1");
    S18378C1 lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S18378C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18378C1)");
    check_field_offset(lv, s18378c1f0, 0, "S18378C1.s18378c1f0");
    check_field_offset(lv, s18378c1f1, ABISELECT(40,20), "S18378C1.s18378c1f1");
    check_field_offset(lv, s18378c1f2, ABISELECT(56,32), "S18378C1.s18378c1f2");
  }
}
static Arrange_To_Call_Me vS18378C1(Test_S18378C1, "S18378C1", ABISELECT(64,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15136C1  {
  char s15136c1f0;
  void *s15136c1f1[2];
  int s15136c1f2[2];
  void  mf15136c1(); // _ZN8S15136C19mf15136c1Ev
};
//SIG(1 S15136C1) C1{ m Fc Fp[2] Fi[2]}


void  S15136C1 ::mf15136c1(){}

static void Test_S15136C1()
{
  {
    init_simple_test("S15136C1");
    S15136C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S15136C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15136C1)");
    check_field_offset(lv, s15136c1f0, 0, "S15136C1.s15136c1f0");
    check_field_offset(lv, s15136c1f1, ABISELECT(8,4), "S15136C1.s15136c1f1");
    check_field_offset(lv, s15136c1f2, ABISELECT(24,12), "S15136C1.s15136c1f2");
  }
}
static Arrange_To_Call_Me vS15136C1(Test_S15136C1, "S15136C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10732C1  {
  char s10732c1f0[21];
  int s10732c1f1;
  char s10732c1f2[69];
};
//SIG(1 S10732C1) C1{ Fc[21] Fi Fc[69]}



static void Test_S10732C1()
{
  {
    init_simple_test("S10732C1");
    S10732C1 lv;
    check2(sizeof(lv), 100, "sizeof(S10732C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10732C1)");
    check_field_offset(lv, s10732c1f0, 0, "S10732C1.s10732c1f0");
    check_field_offset(lv, s10732c1f1, 24, "S10732C1.s10732c1f1");
    check_field_offset(lv, s10732c1f2, 28, "S10732C1.s10732c1f2");
  }
}
static Arrange_To_Call_Me vS10732C1(Test_S10732C1, "S10732C1", 100);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3106C3  {
  virtual void  v2(); // _ZN7S3106C32v2Ev
  ~S3106C3(); // tgen
  S3106C3(); // tgen
};
//SIG(-1 S3106C3) C1{ v1}


void  S3106C3 ::v2(){vfunc_called(this, "_ZN7S3106C32v2Ev");}
S3106C3 ::~S3106C3(){ note_dtor("S3106C3", this);} // tgen
S3106C3 ::S3106C3(){ note_ctor("S3106C3", this);} // tgen

static void Test_S3106C3()
{
  extern Class_Descriptor cd_S3106C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3106C3, buf);
    S3106C3 *dp, &lv = *(dp=new (buf) S3106C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3106C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3106C3)");
    test_class_info(&lv, &cd_S3106C3);
    dp->~S3106C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3106C3(Test_S3106C3, "S3106C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3106C3C1Ev();
extern void _ZN7S3106C3D1Ev();
Name_Map name_map_S3106C3[] = {
  NSPAIR(_ZN7S3106C3C1Ev),
  NSPAIR(_ZN7S3106C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3106C3[];
extern void _ZN7S3106C32v2Ev();
static  VTBL_ENTRY vtc_S3106C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3106C3[0]),
  (VTBL_ENTRY)&_ZN7S3106C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S3106C3[];
extern  VTBL_ENTRY _ZTV7S3106C3[];
Class_Descriptor cd_S3106C3 = {  "S3106C3", // class name
  0,0,//no base classes
  &(vtc_S3106C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3106C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3106C3),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  S3106C2  : S3106C3 {
  virtual void  v3(); // _ZN7S3106C22v3Ev
  ~S3106C2(); // tgen
  S3106C2(); // tgen
};
//SIG(-1 S3106C2) C1{ BC2{ v2} v1}


void  S3106C2 ::v3(){vfunc_called(this, "_ZN7S3106C22v3Ev");}
S3106C2 ::~S3106C2(){ note_dtor("S3106C2", this);} // tgen
S3106C2 ::S3106C2(){ note_ctor("S3106C2", this);} // tgen

static void Test_S3106C2()
{
  extern Class_Descriptor cd_S3106C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3106C2, buf);
    S3106C2 *dp, &lv = *(dp=new (buf) S3106C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3106C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3106C2)");
    check_base_class_offset(lv, (S3106C3*), 0, "S3106C2");
    test_class_info(&lv, &cd_S3106C2);
    dp->~S3106C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3106C2(Test_S3106C2, "S3106C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3106C2C1Ev();
extern void _ZN7S3106C2D1Ev();
Name_Map name_map_S3106C2[] = {
  NSPAIR(_ZN7S3106C2C1Ev),
  NSPAIR(_ZN7S3106C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3106C3;
extern VTBL_ENTRY _ZTI7S3106C3[];
extern  VTBL_ENTRY _ZTV7S3106C3[];
static Base_Class bases_S3106C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3106C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3106C2[];
extern void _ZN7S3106C32v2Ev();
extern void _ZN7S3106C22v3Ev();
static  VTBL_ENTRY vtc_S3106C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3106C2[0]),
  (VTBL_ENTRY)&_ZN7S3106C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3106C22v3Ev,
};
extern VTBL_ENTRY _ZTI7S3106C2[];
extern  VTBL_ENTRY _ZTV7S3106C2[];
Class_Descriptor cd_S3106C2 = {  "S3106C2", // class name
  bases_S3106C2, 1,
  &(vtc_S3106C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3106C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3106C2),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3106C1  : S3106C2 {
  virtual void  v1(); // _ZN7S3106C12v1Ev
  ~S3106C1(); // tgen
  S3106C1(); // tgen
};
//SIG(1 S3106C1) C1{ BC2{ BC3{ v2} v3} v1}


void  S3106C1 ::v1(){vfunc_called(this, "_ZN7S3106C12v1Ev");}
S3106C1 ::~S3106C1(){ note_dtor("S3106C1", this);} // tgen
S3106C1 ::S3106C1(){ note_ctor("S3106C1", this);} // tgen

static void Test_S3106C1()
{
  extern Class_Descriptor cd_S3106C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3106C1, buf);
    S3106C1 *dp, &lv = *(dp=new (buf) S3106C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3106C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3106C1)");
    check_base_class_offset(lv, (S3106C3*)(S3106C2*), 0, "S3106C1");
    check_base_class_offset(lv, (S3106C2*), 0, "S3106C1");
    test_class_info(&lv, &cd_S3106C1);
    dp->~S3106C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3106C1(Test_S3106C1, "S3106C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3106C1C1Ev();
extern void _ZN7S3106C1D1Ev();
Name_Map name_map_S3106C1[] = {
  NSPAIR(_ZN7S3106C1C1Ev),
  NSPAIR(_ZN7S3106C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3106C3;
extern VTBL_ENTRY _ZTI7S3106C3[];
extern  VTBL_ENTRY _ZTV7S3106C3[];
extern Class_Descriptor cd_S3106C2;
extern VTBL_ENTRY _ZTI7S3106C2[];
extern  VTBL_ENTRY _ZTV7S3106C2[];
static Base_Class bases_S3106C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3106C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3106C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3106C1[];
extern void _ZN7S3106C32v2Ev();
extern void _ZN7S3106C22v3Ev();
extern void _ZN7S3106C12v1Ev();
static  VTBL_ENTRY vtc_S3106C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3106C1[0]),
  (VTBL_ENTRY)&_ZN7S3106C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3106C22v3Ev,
  (VTBL_ENTRY)&_ZN7S3106C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S3106C1[];
extern  VTBL_ENTRY _ZTV7S3106C1[];
Class_Descriptor cd_S3106C1 = {  "S3106C1", // class name
  bases_S3106C1, 2,
  &(vtc_S3106C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3106C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3106C1),5, //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  S10736C1  {
  char s10736c1f0[21];
  int s10736c1f1[101];
};
//SIG(1 S10736C1) C1{ Fc[21] Fi[101]}



static void Test_S10736C1()
{
  {
    init_simple_test("S10736C1");
    S10736C1 lv;
    check2(sizeof(lv), 428, "sizeof(S10736C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10736C1)");
    check_field_offset(lv, s10736c1f0, 0, "S10736C1.s10736c1f0");
    check_field_offset(lv, s10736c1f1, 24, "S10736C1.s10736c1f1");
  }
}
static Arrange_To_Call_Me vS10736C1(Test_S10736C1, "S10736C1", 428);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14742C1  {
  void *s14742c1f0[9];
  int s14742c1f1;
  void *s14742c1f2[4];
};
//SIG(1 S14742C1) C1{ Fp[9] Fi Fp[4]}



static void Test_S14742C1()
{
  {
    init_simple_test("S14742C1");
    S14742C1 lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S14742C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14742C1)");
    check_field_offset(lv, s14742c1f0, 0, "S14742C1.s14742c1f0");
    check_field_offset(lv, s14742c1f1, ABISELECT(72,36), "S14742C1.s14742c1f1");
    check_field_offset(lv, s14742c1f2, ABISELECT(80,40), "S14742C1.s14742c1f2");
  }
}
static Arrange_To_Call_Me vS14742C1(Test_S14742C1, "S14742C1", ABISELECT(112,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2998C3  {
  virtual void  v1(); // _ZN7S2998C32v1Ev
  ~S2998C3(); // tgen
  S2998C3(); // tgen
};
//SIG(-1 S2998C3) C1{ v1}


void  S2998C3 ::v1(){vfunc_called(this, "_ZN7S2998C32v1Ev");}
S2998C3 ::~S2998C3(){ note_dtor("S2998C3", this);} // tgen
S2998C3 ::S2998C3(){ note_ctor("S2998C3", this);} // tgen

static void Test_S2998C3()
{
  extern Class_Descriptor cd_S2998C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2998C3, buf);
    S2998C3 *dp, &lv = *(dp=new (buf) S2998C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2998C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2998C3)");
    test_class_info(&lv, &cd_S2998C3);
    dp->~S2998C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2998C3(Test_S2998C3, "S2998C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2998C3C1Ev();
extern void _ZN7S2998C3D1Ev();
Name_Map name_map_S2998C3[] = {
  NSPAIR(_ZN7S2998C3C1Ev),
  NSPAIR(_ZN7S2998C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2998C3[];
extern void _ZN7S2998C32v1Ev();
static  VTBL_ENTRY vtc_S2998C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2998C3[0]),
  (VTBL_ENTRY)&_ZN7S2998C32v1Ev,
};
extern VTBL_ENTRY _ZTI7S2998C3[];
extern  VTBL_ENTRY _ZTV7S2998C3[];
Class_Descriptor cd_S2998C3 = {  "S2998C3", // class name
  0,0,//no base classes
  &(vtc_S2998C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2998C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2998C3),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  S2998C2  : S2998C3 {
  virtual void  v2(); // _ZN7S2998C22v2Ev
  ~S2998C2(); // tgen
  S2998C2(); // tgen
};
//SIG(-1 S2998C2) C1{ BC2{ v2} v1}


void  S2998C2 ::v2(){vfunc_called(this, "_ZN7S2998C22v2Ev");}
S2998C2 ::~S2998C2(){ note_dtor("S2998C2", this);} // tgen
S2998C2 ::S2998C2(){ note_ctor("S2998C2", this);} // tgen

static void Test_S2998C2()
{
  extern Class_Descriptor cd_S2998C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2998C2, buf);
    S2998C2 *dp, &lv = *(dp=new (buf) S2998C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2998C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2998C2)");
    check_base_class_offset(lv, (S2998C3*), 0, "S2998C2");
    test_class_info(&lv, &cd_S2998C2);
    dp->~S2998C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2998C2(Test_S2998C2, "S2998C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2998C2C1Ev();
extern void _ZN7S2998C2D1Ev();
Name_Map name_map_S2998C2[] = {
  NSPAIR(_ZN7S2998C2C1Ev),
  NSPAIR(_ZN7S2998C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2998C3;
extern VTBL_ENTRY _ZTI7S2998C3[];
extern  VTBL_ENTRY _ZTV7S2998C3[];
static Base_Class bases_S2998C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2998C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2998C2[];
extern void _ZN7S2998C32v1Ev();
extern void _ZN7S2998C22v2Ev();
static  VTBL_ENTRY vtc_S2998C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2998C2[0]),
  (VTBL_ENTRY)&_ZN7S2998C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2998C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S2998C2[];
extern  VTBL_ENTRY _ZTV7S2998C2[];
Class_Descriptor cd_S2998C2 = {  "S2998C2", // class name
  bases_S2998C2, 1,
  &(vtc_S2998C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2998C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2998C2),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2998C1  : S2998C2 {
  ~S2998C1(); // tgen
  S2998C1(); // tgen
};
//SIG(1 S2998C1) C1{ BC2{ BC3{ v1} v2}}


S2998C1 ::~S2998C1(){ note_dtor("S2998C1", this);} // tgen
S2998C1 ::S2998C1(){ note_ctor("S2998C1", this);} // tgen

static void Test_S2998C1()
{
  extern Class_Descriptor cd_S2998C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2998C1, buf);
    S2998C1 *dp, &lv = *(dp=new (buf) S2998C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2998C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2998C1)");
    check_base_class_offset(lv, (S2998C3*)(S2998C2*), 0, "S2998C1");
    check_base_class_offset(lv, (S2998C2*), 0, "S2998C1");
    test_class_info(&lv, &cd_S2998C1);
    dp->~S2998C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2998C1(Test_S2998C1, "S2998C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2998C1C1Ev();
extern void _ZN7S2998C1D1Ev();
Name_Map name_map_S2998C1[] = {
  NSPAIR(_ZN7S2998C1C1Ev),
  NSPAIR(_ZN7S2998C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2998C3;
extern VTBL_ENTRY _ZTI7S2998C3[];
extern  VTBL_ENTRY _ZTV7S2998C3[];
extern Class_Descriptor cd_S2998C2;
extern VTBL_ENTRY _ZTI7S2998C2[];
extern  VTBL_ENTRY _ZTV7S2998C2[];
static Base_Class bases_S2998C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2998C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2998C2,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2998C1[];
extern void _ZN7S2998C32v1Ev();
extern void _ZN7S2998C22v2Ev();
static  VTBL_ENTRY vtc_S2998C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2998C1[0]),
  (VTBL_ENTRY)&_ZN7S2998C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2998C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S2998C1[];
extern  VTBL_ENTRY _ZTV7S2998C1[];
Class_Descriptor cd_S2998C1 = {  "S2998C1", // class name
  bases_S2998C1, 2,
  &(vtc_S2998C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2998C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2998C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21275C1  {
  char s21275c1f0[2];
  int s21275c1f1;
  void  mf21275c1(); // _ZN8S21275C19mf21275c1Ev
  virtual  ~S21275C1(); // _ZN8S21275C1D1Ev
  S21275C1(); // tgen
};
//SIG(1 S21275C1) C1{ vd m Fc[2] Fi}


void  S21275C1 ::mf21275c1(){}
 S21275C1 ::~S21275C1(){ note_dtor("S21275C1", this);}
S21275C1 ::S21275C1(){ note_ctor("S21275C1", this);} // tgen

static void Test_S21275C1()
{
  extern Class_Descriptor cd_S21275C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S21275C1, buf);
    S21275C1 *dp, &lv = *(dp=new (buf) S21275C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S21275C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21275C1)");
    check_field_offset(lv, s21275c1f0, ABISELECT(8,4), "S21275C1.s21275c1f0");
    check_field_offset(lv, s21275c1f1, ABISELECT(12,8), "S21275C1.s21275c1f1");
    test_class_info(&lv, &cd_S21275C1);
    dp->~S21275C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21275C1(Test_S21275C1, "S21275C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S21275C1C1Ev();
extern void _ZN8S21275C1D1Ev();
Name_Map name_map_S21275C1[] = {
  NSPAIR(_ZN8S21275C1C1Ev),
  NSPAIR(_ZN8S21275C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21275C1[];
extern void _ZN8S21275C1D1Ev();
extern void _ZN8S21275C1D0Ev();
static  VTBL_ENTRY vtc_S21275C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21275C1[0]),
  (VTBL_ENTRY)&_ZN8S21275C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21275C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21275C1[];
extern  VTBL_ENTRY _ZTV8S21275C1[];
Class_Descriptor cd_S21275C1 = {  "S21275C1", // class name
  0,0,//no base classes
  &(vtc_S21275C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S21275C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21275C1),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  S10365C1  : S3572C6_nt {
  int s10365c1f0[2];
  void *s10365c1f1;
};
//SIG(1 S10365C1) C1{ BC2{} Fi[2] Fp}



static void Test_S10365C1()
{
  extern Class_Descriptor cd_S10365C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S10365C1, buf);
    S10365C1 &lv = *(new (buf) S10365C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S10365C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10365C1)");
    check_base_class_offset(lv, (S3572C6_nt*), 0, "S10365C1");
    check_field_offset(lv, s10365c1f0, 0, "S10365C1.s10365c1f0");
    check_field_offset(lv, s10365c1f1, 8, "S10365C1.s10365c1f1");
    test_class_info(&lv, &cd_S10365C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10365C1(Test_S10365C1, "S10365C1", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3572C6_nt;
static Base_Class bases_S10365C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3572C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S10365C1 = {  "S10365C1", // class name
  bases_S10365C1, 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  S18409C1  {
  void *s18409c1f0[8];
  int s18409c1f1[3];
  void  mf18409c1(); // _ZN8S18409C19mf18409c1Ev
};
//SIG(1 S18409C1) C1{ m Fp[8] Fi[3]}


void  S18409C1 ::mf18409c1(){}

static void Test_S18409C1()
{
  {
    init_simple_test("S18409C1");
    S18409C1 lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S18409C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18409C1)");
    check_field_offset(lv, s18409c1f0, 0, "S18409C1.s18409c1f0");
    check_field_offset(lv, s18409c1f1, ABISELECT(64,32), "S18409C1.s18409c1f1");
  }
}
static Arrange_To_Call_Me vS18409C1(Test_S18409C1, "S18409C1", ABISELECT(80,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6395C2  {
  int s6395c2f0;
  virtual void  v1(); // _ZN7S6395C22v1Ev
  virtual void  v2(); // _ZN7S6395C22v2Ev
  ~S6395C2(); // tgen
  S6395C2(); // tgen
};
//SIG(-1 S6395C2) C1{ v1 v2 Fi}


void  S6395C2 ::v1(){vfunc_called(this, "_ZN7S6395C22v1Ev");}
void  S6395C2 ::v2(){vfunc_called(this, "_ZN7S6395C22v2Ev");}
S6395C2 ::~S6395C2(){ note_dtor("S6395C2", this);} // tgen
S6395C2 ::S6395C2(){ note_ctor("S6395C2", this);} // tgen

static void Test_S6395C2()
{
  extern Class_Descriptor cd_S6395C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6395C2, buf);
    S6395C2 *dp, &lv = *(dp=new (buf) S6395C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6395C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6395C2)");
    check_field_offset(lv, s6395c2f0, ABISELECT(8,4), "S6395C2.s6395c2f0");
    test_class_info(&lv, &cd_S6395C2);
    dp->~S6395C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6395C2(Test_S6395C2, "S6395C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6395C2C1Ev();
extern void _ZN7S6395C2D1Ev();
Name_Map name_map_S6395C2[] = {
  NSPAIR(_ZN7S6395C2C1Ev),
  NSPAIR(_ZN7S6395C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6395C2[];
extern void _ZN7S6395C22v1Ev();
extern void _ZN7S6395C22v2Ev();
static  VTBL_ENTRY vtc_S6395C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6395C2[0]),
  (VTBL_ENTRY)&_ZN7S6395C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6395C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6395C2[];
extern  VTBL_ENTRY _ZTV7S6395C2[];
Class_Descriptor cd_S6395C2 = {  "S6395C2", // class name
  0,0,//no base classes
  &(vtc_S6395C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6395C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6395C2),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  S6395C1  : S6395C2 {
  ~S6395C1(); // tgen
  S6395C1(); // tgen
};
//SIG(1 S6395C1) C1{ BC2{ v1 v2 Fi}}


S6395C1 ::~S6395C1(){ note_dtor("S6395C1", this);} // tgen
S6395C1 ::S6395C1(){ note_ctor("S6395C1", this);} // tgen

static void Test_S6395C1()
{
  extern Class_Descriptor cd_S6395C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6395C1, buf);
    S6395C1 *dp, &lv = *(dp=new (buf) S6395C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6395C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6395C1)");
    check_base_class_offset(lv, (S6395C2*), 0, "S6395C1");
    test_class_info(&lv, &cd_S6395C1);
    dp->~S6395C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6395C1(Test_S6395C1, "S6395C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6395C1C1Ev();
extern void _ZN7S6395C1D1Ev();
Name_Map name_map_S6395C1[] = {
  NSPAIR(_ZN7S6395C1C1Ev),
  NSPAIR(_ZN7S6395C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6395C2;
extern VTBL_ENTRY _ZTI7S6395C2[];
extern  VTBL_ENTRY _ZTV7S6395C2[];
static Base_Class bases_S6395C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6395C2,    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 _ZTI7S6395C1[];
extern void _ZN7S6395C22v1Ev();
extern void _ZN7S6395C22v2Ev();
static  VTBL_ENTRY vtc_S6395C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6395C1[0]),
  (VTBL_ENTRY)&_ZN7S6395C22v1Ev,
  (VTBL_ENTRY)&_ZN7S6395C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6395C1[];
extern  VTBL_ENTRY _ZTV7S6395C1[];
Class_Descriptor cd_S6395C1 = {  "S6395C1", // class name
  bases_S6395C1, 1,
  &(vtc_S6395C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6395C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6395C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13826C1  {
  long s13826c1f0;
  __tsi64 s13826c1f1[2];
  void *s13826c1f2;
};
//SIG(1 S13826C1) C1{ Fl FL[2] Fp}



static void Test_S13826C1()
{
  {
    init_simple_test("S13826C1");
    S13826C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S13826C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13826C1)");
    check_field_offset(lv, s13826c1f0, 0, "S13826C1.s13826c1f0");
    check_field_offset(lv, s13826c1f1, ABISELECT(8,4), "S13826C1.s13826c1f1");
    check_field_offset(lv, s13826c1f2, ABISELECT(24,20), "S13826C1.s13826c1f2");
  }
}
static Arrange_To_Call_Me vS13826C1(Test_S13826C1, "S13826C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13510C1  {
  int s13510c1f0[4];
  void *s13510c1f1[6];
};
//SIG(1 S13510C1) C1{ Fi[4] Fp[6]}



static void Test_S13510C1()
{
  {
    init_simple_test("S13510C1");
    S13510C1 lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S13510C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13510C1)");
    check_field_offset(lv, s13510c1f0, 0, "S13510C1.s13510c1f0");
    check_field_offset(lv, s13510c1f1, 16, "S13510C1.s13510c1f1");
  }
}
static Arrange_To_Call_Me vS13510C1(Test_S13510C1, "S13510C1", ABISELECT(64,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14703C1  {
  void *s14703c1f0[5];
  int s14703c1f1[4];
};
//SIG(1 S14703C1) C1{ Fp[5] Fi[4]}



static void Test_S14703C1()
{
  {
    init_simple_test("S14703C1");
    S14703C1 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S14703C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14703C1)");
    check_field_offset(lv, s14703c1f0, 0, "S14703C1.s14703c1f0");
    check_field_offset(lv, s14703c1f1, ABISELECT(40,20), "S14703C1.s14703c1f1");
  }
}
static Arrange_To_Call_Me vS14703C1(Test_S14703C1, "S14703C1", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14661C1  {
  void *s14661c1f0[4];
  char s14661c1f1;
  void *s14661c1f2;
};
//SIG(1 S14661C1) C1{ Fp[4] Fc Fp}



static void Test_S14661C1()
{
  {
    init_simple_test("S14661C1");
    S14661C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S14661C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14661C1)");
    check_field_offset(lv, s14661c1f0, 0, "S14661C1.s14661c1f0");
    check_field_offset(lv, s14661c1f1, ABISELECT(32,16), "S14661C1.s14661c1f1");
    check_field_offset(lv, s14661c1f2, ABISELECT(40,20), "S14661C1.s14661c1f2");
  }
}
static Arrange_To_Call_Me vS14661C1(Test_S14661C1, "S14661C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18342C1  {
  void *s18342c1f0[4];
  char s18342c1f1;
  void  mf18342c1(); // _ZN8S18342C19mf18342c1Ev
};
//SIG(1 S18342C1) C1{ m Fp[4] Fc}


void  S18342C1 ::mf18342c1(){}

static void Test_S18342C1()
{
  {
    init_simple_test("S18342C1");
    S18342C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S18342C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18342C1)");
    check_field_offset(lv, s18342c1f0, 0, "S18342C1.s18342c1f0");
    check_field_offset(lv, s18342c1f1, ABISELECT(32,16), "S18342C1.s18342c1f1");
  }
}
static Arrange_To_Call_Me vS18342C1(Test_S18342C1, "S18342C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13592C1  {
  int s13592c1f0[6];
  short s13592c1f1;
};
//SIG(1 S13592C1) C1{ Fi[6] Fs}



static void Test_S13592C1()
{
  {
    init_simple_test("S13592C1");
    S13592C1 lv;
    check2(sizeof(lv), 28, "sizeof(S13592C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13592C1)");
    check_field_offset(lv, s13592c1f0, 0, "S13592C1.s13592c1f0");
    check_field_offset(lv, s13592c1f1, 24, "S13592C1.s13592c1f1");
  }
}
static Arrange_To_Call_Me vS13592C1(Test_S13592C1, "S13592C1", 28);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10574C1  {
  char s10574c1f0[1051];
};
//SIG(1 S10574C1) C1{ Fc[1051]}



static void Test_S10574C1()
{
  {
    init_simple_test("S10574C1");
    S10574C1 lv;
    check2(sizeof(lv), 1051, "sizeof(S10574C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10574C1)");
    check_field_offset(lv, s10574c1f0, 0, "S10574C1.s10574c1f0");
  }
}
static Arrange_To_Call_Me vS10574C1(Test_S10574C1, "S10574C1", 1051);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16528C1  {
  long double s16528c1f0[8];
  void  mf16528c1(); // _ZN8S16528C19mf16528c1Ev
};
//SIG(1 S16528C1) C1{ m FD[8]}


void  S16528C1 ::mf16528c1(){}

static void Test_S16528C1()
{
  {
    init_simple_test("S16528C1");
    S16528C1 lv;
    check2(sizeof(lv), ABISELECT(128,96), "sizeof(S16528C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S16528C1)");
    check_field_offset(lv, s16528c1f0, 0, "S16528C1.s16528c1f0");
  }
}
static Arrange_To_Call_Me vS16528C1(Test_S16528C1, "S16528C1", ABISELECT(128,96));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10495C1  {
  char s10495c1f0;
  long s10495c1f1;
};
//SIG(1 S10495C1) C1{ Fc Fl}



static void Test_S10495C1()
{
  {
    init_simple_test("S10495C1");
    S10495C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S10495C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10495C1)");
    check_field_offset(lv, s10495c1f0, 0, "S10495C1.s10495c1f0");
    check_field_offset(lv, s10495c1f1, ABISELECT(8,4), "S10495C1.s10495c1f1");
  }
}
static Arrange_To_Call_Me vS10495C1(Test_S10495C1, "S10495C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

