[test-suite] r214126 - ABI-Testsuite: Bulk of the testsuite

Sunil Srivastava sunil_srivastava at playstation.sony.com
Mon Jul 28 14:20:39 PDT 2014


Added: test-suite/trunk/ABI-Testsuite/test/s2_6/T_vf2.x
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/ABI-Testsuite/test/s2_6/T_vf2.x?rev=214126&view=auto
==============================================================================
--- test-suite/trunk/ABI-Testsuite/test/s2_6/T_vf2.x (added)
+++ test-suite/trunk/ABI-Testsuite/test/s2_6/T_vf2.x Mon Jul 28 16:20:34 2014
@@ -0,0 +1,36856 @@
+// This file is distributed under the University of Illinois Open Source License.
+// See LICENSE.TXT for details.
+// 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
+namespace bbb { 
+struct  AA0  {
+  int pa;
+  virtual void  foo(); // _ZN3bbb3AA03fooEv
+  virtual void  bar(); // _ZN3bbb3AA03barEv
+  ~AA0(); // tgen
+  AA0(); // tgen
+};
+//SIG(-1 _ZN3bbb3AA0E) C1{ v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::AA0 ::foo(){vfunc_called(this, "_ZN3bbb3AA03fooEv");}
+void  bbb::AA0 ::bar(){vfunc_called(this, "_ZN3bbb3AA03barEv");}
+bbb::AA0 ::~AA0(){ note_dtor("_ZN3bbb3AA0E", this);} // tgen
+bbb::AA0 ::AA0(){ note_ctor("_ZN3bbb3AA0E", this);} // tgen
+}
+static void Test__ZN3bbb3AA0E()
+{
+  extern Class_Descriptor cd__ZN3bbb3AA0E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd__ZN3bbb3AA0E, buf);
+    ::bbb::AA0 *dp, &lv = *(dp=new (buf) ::bbb::AA0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(_ZN3bbb3AA0E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb3AA0E)");
+    check_field_offset(lv, pa, ABISELECT(8,4), "_ZN3bbb3AA0E.pa");
+    test_class_info(&lv, &cd__ZN3bbb3AA0E);
+    dp->::bbb::AA0::~AA0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb3AA0E(Test__ZN3bbb3AA0E, "_ZN3bbb3AA0E", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3bbb3AA0C1Ev();
+extern void _ZN3bbb3AA0D1Ev();
+Name_Map name_map__ZN3bbb3AA0E[] = {
+  NSPAIR(_ZN3bbb3AA0C1Ev),
+  NSPAIR(_ZN3bbb3AA0D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern void _ZN3bbb3AA03fooEv();
+extern void _ZN3bbb3AA03barEv();
+static  VTBL_ENTRY vtc__ZN3bbb3AA0E[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb3AA0E[0]),
+  (VTBL_ENTRY)&_ZN3bbb3AA03fooEv,
+  (VTBL_ENTRY)&_ZN3bbb3AA03barEv,
+};
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+Class_Descriptor cd__ZN3bbb3AA0E = {  "_ZN3bbb3AA0E", // class name
+  0,0,//no base classes
+  &(vtc__ZN3bbb3AA0E[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTIN3bbb3AA0E),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb3AA0E),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
+namespace bbb { 
+struct  BB0  {
+  int pa;
+  virtual void  foo(); // _ZN3bbb3BB03fooEv
+  virtual void  bar(); // _ZN3bbb3BB03barEv
+  ~BB0(); // tgen
+  BB0(); // tgen
+};
+//SIG(-1 _ZN3bbb3BB0E) C1{ v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::BB0 ::foo(){vfunc_called(this, "_ZN3bbb3BB03fooEv");}
+void  bbb::BB0 ::bar(){vfunc_called(this, "_ZN3bbb3BB03barEv");}
+bbb::BB0 ::~BB0(){ note_dtor("_ZN3bbb3BB0E", this);} // tgen
+bbb::BB0 ::BB0(){ note_ctor("_ZN3bbb3BB0E", this);} // tgen
+}
+static void Test__ZN3bbb3BB0E()
+{
+  extern Class_Descriptor cd__ZN3bbb3BB0E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd__ZN3bbb3BB0E, buf);
+    ::bbb::BB0 *dp, &lv = *(dp=new (buf) ::bbb::BB0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(_ZN3bbb3BB0E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb3BB0E)");
+    check_field_offset(lv, pa, ABISELECT(8,4), "_ZN3bbb3BB0E.pa");
+    test_class_info(&lv, &cd__ZN3bbb3BB0E);
+    dp->::bbb::BB0::~BB0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb3BB0E(Test__ZN3bbb3BB0E, "_ZN3bbb3BB0E", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3bbb3BB0C1Ev();
+extern void _ZN3bbb3BB0D1Ev();
+Name_Map name_map__ZN3bbb3BB0E[] = {
+  NSPAIR(_ZN3bbb3BB0C1Ev),
+  NSPAIR(_ZN3bbb3BB0D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern void _ZN3bbb3BB03fooEv();
+extern void _ZN3bbb3BB03barEv();
+static  VTBL_ENTRY vtc__ZN3bbb3BB0E[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb3BB0E[0]),
+  (VTBL_ENTRY)&_ZN3bbb3BB03fooEv,
+  (VTBL_ENTRY)&_ZN3bbb3BB03barEv,
+};
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+Class_Descriptor cd__ZN3bbb3BB0E = {  "_ZN3bbb3BB0E", // class name
+  0,0,//no base classes
+  &(vtc__ZN3bbb3BB0E[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTIN3bbb3BB0E),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb3BB0E),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
+namespace bbb { 
+struct  CC0  {
+  int pa;
+  virtual void  foo(); // _ZN3bbb3CC03fooEv
+  virtual void  bar(); // _ZN3bbb3CC03barEv
+  ~CC0(); // tgen
+  CC0(); // tgen
+};
+//SIG(1 _ZN3bbb3CC0E) C1{ v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::CC0 ::foo(){vfunc_called(this, "_ZN3bbb3CC03fooEv");}
+void  bbb::CC0 ::bar(){vfunc_called(this, "_ZN3bbb3CC03barEv");}
+bbb::CC0 ::~CC0(){ note_dtor("_ZN3bbb3CC0E", this);} // tgen
+bbb::CC0 ::CC0(){ note_ctor("_ZN3bbb3CC0E", this);} // tgen
+}
+static void Test__ZN3bbb3CC0E()
+{
+  extern Class_Descriptor cd__ZN3bbb3CC0E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd__ZN3bbb3CC0E, buf);
+    ::bbb::CC0 *dp, &lv = *(dp=new (buf) ::bbb::CC0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(_ZN3bbb3CC0E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb3CC0E)");
+    check_field_offset(lv, pa, ABISELECT(8,4), "_ZN3bbb3CC0E.pa");
+    test_class_info(&lv, &cd__ZN3bbb3CC0E);
+    dp->::bbb::CC0::~CC0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb3CC0E(Test__ZN3bbb3CC0E, "_ZN3bbb3CC0E", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3bbb3CC0C1Ev();
+extern void _ZN3bbb3CC0D1Ev();
+Name_Map name_map__ZN3bbb3CC0E[] = {
+  NSPAIR(_ZN3bbb3CC0C1Ev),
+  NSPAIR(_ZN3bbb3CC0D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTIN3bbb3CC0E[];
+extern void _ZN3bbb3CC03fooEv();
+extern void _ZN3bbb3CC03barEv();
+static  VTBL_ENTRY vtc__ZN3bbb3CC0E[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb3CC0E[0]),
+  (VTBL_ENTRY)&_ZN3bbb3CC03fooEv,
+  (VTBL_ENTRY)&_ZN3bbb3CC03barEv,
+};
+extern VTBL_ENTRY _ZTIN3bbb3CC0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3CC0E[];
+Class_Descriptor cd__ZN3bbb3CC0E = {  "_ZN3bbb3CC0E", // class name
+  0,0,//no base classes
+  &(vtc__ZN3bbb3CC0E[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTIN3bbb3CC0E),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb3CC0E),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
+namespace bbb { 
+struct  DD0  {
+  int pa;
+  virtual void  foo(); // _ZN3bbb3DD03fooEv
+  virtual void  bar(); // _ZN3bbb3DD03barEv
+  ~DD0(); // tgen
+  DD0(); // tgen
+};
+//SIG(1 _ZN3bbb3DD0E) C1{ v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::DD0 ::foo(){vfunc_called(this, "_ZN3bbb3DD03fooEv");}
+void  bbb::DD0 ::bar(){vfunc_called(this, "_ZN3bbb3DD03barEv");}
+bbb::DD0 ::~DD0(){ note_dtor("_ZN3bbb3DD0E", this);} // tgen
+bbb::DD0 ::DD0(){ note_ctor("_ZN3bbb3DD0E", this);} // tgen
+}
+static void Test__ZN3bbb3DD0E()
+{
+  extern Class_Descriptor cd__ZN3bbb3DD0E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd__ZN3bbb3DD0E, buf);
+    ::bbb::DD0 *dp, &lv = *(dp=new (buf) ::bbb::DD0());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(_ZN3bbb3DD0E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb3DD0E)");
+    check_field_offset(lv, pa, ABISELECT(8,4), "_ZN3bbb3DD0E.pa");
+    test_class_info(&lv, &cd__ZN3bbb3DD0E);
+    dp->::bbb::DD0::~DD0();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb3DD0E(Test__ZN3bbb3DD0E, "_ZN3bbb3DD0E", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3bbb3DD0C1Ev();
+extern void _ZN3bbb3DD0D1Ev();
+Name_Map name_map__ZN3bbb3DD0E[] = {
+  NSPAIR(_ZN3bbb3DD0C1Ev),
+  NSPAIR(_ZN3bbb3DD0D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTIN3bbb3DD0E[];
+extern void _ZN3bbb3DD03fooEv();
+extern void _ZN3bbb3DD03barEv();
+static  VTBL_ENTRY vtc__ZN3bbb3DD0E[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb3DD0E[0]),
+  (VTBL_ENTRY)&_ZN3bbb3DD03fooEv,
+  (VTBL_ENTRY)&_ZN3bbb3DD03barEv,
+};
+extern VTBL_ENTRY _ZTIN3bbb3DD0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3DD0E[];
+Class_Descriptor cd__ZN3bbb3DD0E = {  "_ZN3bbb3DD0E", // class name
+  0,0,//no base classes
+  &(vtc__ZN3bbb3DD0E[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTIN3bbb3DD0E),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb3DD0E),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
+namespace bbb { 
+struct  AA1  {
+  int pa;
+  virtual void  bar(); // _ZN3bbb3AA13barEv
+  virtual void  foo(); // _ZN3bbb3AA13fooEv
+  ~AA1(); // tgen
+  AA1(); // tgen
+};
+//SIG(-1 _ZN3bbb3AA1E) C1{ v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::AA1 ::bar(){vfunc_called(this, "_ZN3bbb3AA13barEv");}
+void  bbb::AA1 ::foo(){vfunc_called(this, "_ZN3bbb3AA13fooEv");}
+bbb::AA1 ::~AA1(){ note_dtor("_ZN3bbb3AA1E", this);} // tgen
+bbb::AA1 ::AA1(){ note_ctor("_ZN3bbb3AA1E", this);} // tgen
+}
+static void Test__ZN3bbb3AA1E()
+{
+  extern Class_Descriptor cd__ZN3bbb3AA1E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd__ZN3bbb3AA1E, buf);
+    ::bbb::AA1 *dp, &lv = *(dp=new (buf) ::bbb::AA1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(_ZN3bbb3AA1E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb3AA1E)");
+    check_field_offset(lv, pa, ABISELECT(8,4), "_ZN3bbb3AA1E.pa");
+    test_class_info(&lv, &cd__ZN3bbb3AA1E);
+    dp->::bbb::AA1::~AA1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb3AA1E(Test__ZN3bbb3AA1E, "_ZN3bbb3AA1E", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3bbb3AA1C1Ev();
+extern void _ZN3bbb3AA1D1Ev();
+Name_Map name_map__ZN3bbb3AA1E[] = {
+  NSPAIR(_ZN3bbb3AA1C1Ev),
+  NSPAIR(_ZN3bbb3AA1D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern void _ZN3bbb3AA13barEv();
+extern void _ZN3bbb3AA13fooEv();
+static  VTBL_ENTRY vtc__ZN3bbb3AA1E[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb3AA1E[0]),
+  (VTBL_ENTRY)&_ZN3bbb3AA13barEv,
+  (VTBL_ENTRY)&_ZN3bbb3AA13fooEv,
+};
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+Class_Descriptor cd__ZN3bbb3AA1E = {  "_ZN3bbb3AA1E", // class name
+  0,0,//no base classes
+  &(vtc__ZN3bbb3AA1E[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTIN3bbb3AA1E),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb3AA1E),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
+namespace bbb { 
+struct  BB1  {
+  int pa;
+  virtual void  bar(); // _ZN3bbb3BB13barEv
+  virtual void  foo(); // _ZN3bbb3BB13fooEv
+  ~BB1(); // tgen
+  BB1(); // tgen
+};
+//SIG(-1 _ZN3bbb3BB1E) C1{ v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::BB1 ::bar(){vfunc_called(this, "_ZN3bbb3BB13barEv");}
+void  bbb::BB1 ::foo(){vfunc_called(this, "_ZN3bbb3BB13fooEv");}
+bbb::BB1 ::~BB1(){ note_dtor("_ZN3bbb3BB1E", this);} // tgen
+bbb::BB1 ::BB1(){ note_ctor("_ZN3bbb3BB1E", this);} // tgen
+}
+static void Test__ZN3bbb3BB1E()
+{
+  extern Class_Descriptor cd__ZN3bbb3BB1E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd__ZN3bbb3BB1E, buf);
+    ::bbb::BB1 *dp, &lv = *(dp=new (buf) ::bbb::BB1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(_ZN3bbb3BB1E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb3BB1E)");
+    check_field_offset(lv, pa, ABISELECT(8,4), "_ZN3bbb3BB1E.pa");
+    test_class_info(&lv, &cd__ZN3bbb3BB1E);
+    dp->::bbb::BB1::~BB1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb3BB1E(Test__ZN3bbb3BB1E, "_ZN3bbb3BB1E", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3bbb3BB1C1Ev();
+extern void _ZN3bbb3BB1D1Ev();
+Name_Map name_map__ZN3bbb3BB1E[] = {
+  NSPAIR(_ZN3bbb3BB1C1Ev),
+  NSPAIR(_ZN3bbb3BB1D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern void _ZN3bbb3BB13barEv();
+extern void _ZN3bbb3BB13fooEv();
+static  VTBL_ENTRY vtc__ZN3bbb3BB1E[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb3BB1E[0]),
+  (VTBL_ENTRY)&_ZN3bbb3BB13barEv,
+  (VTBL_ENTRY)&_ZN3bbb3BB13fooEv,
+};
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+Class_Descriptor cd__ZN3bbb3BB1E = {  "_ZN3bbb3BB1E", // class name
+  0,0,//no base classes
+  &(vtc__ZN3bbb3BB1E[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTIN3bbb3BB1E),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb3BB1E),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
+namespace bbb { 
+struct  CC1  {
+  int pa;
+  virtual void  bar(); // _ZN3bbb3CC13barEv
+  virtual void  foo(); // _ZN3bbb3CC13fooEv
+  ~CC1(); // tgen
+  CC1(); // tgen
+};
+//SIG(1 _ZN3bbb3CC1E) C1{ v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::CC1 ::bar(){vfunc_called(this, "_ZN3bbb3CC13barEv");}
+void  bbb::CC1 ::foo(){vfunc_called(this, "_ZN3bbb3CC13fooEv");}
+bbb::CC1 ::~CC1(){ note_dtor("_ZN3bbb3CC1E", this);} // tgen
+bbb::CC1 ::CC1(){ note_ctor("_ZN3bbb3CC1E", this);} // tgen
+}
+static void Test__ZN3bbb3CC1E()
+{
+  extern Class_Descriptor cd__ZN3bbb3CC1E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd__ZN3bbb3CC1E, buf);
+    ::bbb::CC1 *dp, &lv = *(dp=new (buf) ::bbb::CC1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(_ZN3bbb3CC1E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb3CC1E)");
+    check_field_offset(lv, pa, ABISELECT(8,4), "_ZN3bbb3CC1E.pa");
+    test_class_info(&lv, &cd__ZN3bbb3CC1E);
+    dp->::bbb::CC1::~CC1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb3CC1E(Test__ZN3bbb3CC1E, "_ZN3bbb3CC1E", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3bbb3CC1C1Ev();
+extern void _ZN3bbb3CC1D1Ev();
+Name_Map name_map__ZN3bbb3CC1E[] = {
+  NSPAIR(_ZN3bbb3CC1C1Ev),
+  NSPAIR(_ZN3bbb3CC1D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTIN3bbb3CC1E[];
+extern void _ZN3bbb3CC13barEv();
+extern void _ZN3bbb3CC13fooEv();
+static  VTBL_ENTRY vtc__ZN3bbb3CC1E[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb3CC1E[0]),
+  (VTBL_ENTRY)&_ZN3bbb3CC13barEv,
+  (VTBL_ENTRY)&_ZN3bbb3CC13fooEv,
+};
+extern VTBL_ENTRY _ZTIN3bbb3CC1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3CC1E[];
+Class_Descriptor cd__ZN3bbb3CC1E = {  "_ZN3bbb3CC1E", // class name
+  0,0,//no base classes
+  &(vtc__ZN3bbb3CC1E[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTIN3bbb3CC1E),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb3CC1E),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
+namespace bbb { 
+struct  DD1  {
+  int pa;
+  virtual void  bar(); // _ZN3bbb3DD13barEv
+  virtual void  foo(); // _ZN3bbb3DD13fooEv
+  ~DD1(); // tgen
+  DD1(); // tgen
+};
+//SIG(1 _ZN3bbb3DD1E) C1{ v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::DD1 ::bar(){vfunc_called(this, "_ZN3bbb3DD13barEv");}
+void  bbb::DD1 ::foo(){vfunc_called(this, "_ZN3bbb3DD13fooEv");}
+bbb::DD1 ::~DD1(){ note_dtor("_ZN3bbb3DD1E", this);} // tgen
+bbb::DD1 ::DD1(){ note_ctor("_ZN3bbb3DD1E", this);} // tgen
+}
+static void Test__ZN3bbb3DD1E()
+{
+  extern Class_Descriptor cd__ZN3bbb3DD1E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[3];
+    init_test(&cd__ZN3bbb3DD1E, buf);
+    ::bbb::DD1 *dp, &lv = *(dp=new (buf) ::bbb::DD1());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(16,8), "sizeof(_ZN3bbb3DD1E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb3DD1E)");
+    check_field_offset(lv, pa, ABISELECT(8,4), "_ZN3bbb3DD1E.pa");
+    test_class_info(&lv, &cd__ZN3bbb3DD1E);
+    dp->::bbb::DD1::~DD1();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb3DD1E(Test__ZN3bbb3DD1E, "_ZN3bbb3DD1E", ABISELECT(16,8));
+
+#else // __cplusplus
+
+extern void _ZN3bbb3DD1C1Ev();
+extern void _ZN3bbb3DD1D1Ev();
+Name_Map name_map__ZN3bbb3DD1E[] = {
+  NSPAIR(_ZN3bbb3DD1C1Ev),
+  NSPAIR(_ZN3bbb3DD1D1Ev),
+  {0,0}
+};
+extern VTBL_ENTRY _ZTIN3bbb3DD1E[];
+extern void _ZN3bbb3DD13barEv();
+extern void _ZN3bbb3DD13fooEv();
+static  VTBL_ENTRY vtc__ZN3bbb3DD1E[] = {
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb3DD1E[0]),
+  (VTBL_ENTRY)&_ZN3bbb3DD13barEv,
+  (VTBL_ENTRY)&_ZN3bbb3DD13fooEv,
+};
+extern VTBL_ENTRY _ZTIN3bbb3DD1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3DD1E[];
+Class_Descriptor cd__ZN3bbb3DD1E = {  "_ZN3bbb3DD1E", // class name
+  0,0,//no base classes
+  &(vtc__ZN3bbb3DD1E[0]), // expected_vtbl_contents
+  0, //no vtt
+  ABISELECT(16,8), // object size
+  NSPAIRA(_ZTIN3bbb3DD1E),ABISELECT(16,8), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb3DD1E),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
+namespace bbb { 
+struct  EE000  : virtual ::bbb::AA0 , ::bbb::BB0 {
+  int pe;
+  virtual void  foo(); // _ZN3bbb5EE0003fooEv
+  virtual void  bar(); // _ZN3bbb5EE0003barEv
+  ~EE000(); // tgen
+  EE000(); // tgen
+};
+//SIG(-1 _ZN3bbb5EE000E) C1{ VBC2{ v1 v2 Fi} BC3{ v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::EE000 ::foo(){vfunc_called(this, "_ZN3bbb5EE0003fooEv");}
+void  bbb::EE000 ::bar(){vfunc_called(this, "_ZN3bbb5EE0003barEv");}
+bbb::EE000 ::~EE000(){ note_dtor("_ZN3bbb5EE000E", this);} // tgen
+bbb::EE000 ::EE000(){ note_ctor("_ZN3bbb5EE000E", this);} // tgen
+}
+static void Test__ZN3bbb5EE000E()
+{
+  extern Class_Descriptor cd__ZN3bbb5EE000E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5EE000E, buf);
+    ::bbb::EE000 *dp, &lv = *(dp=new (buf) ::bbb::EE000());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5EE000E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5EE000E)");
+    check_base_class_offset(lv, (::bbb::AA0*), ABISELECT(16,12), "_ZN3bbb5EE000E");
+    check_base_class_offset(lv, (::bbb::BB0*), 0, "_ZN3bbb5EE000E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5EE000E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5EE000E);
+    dp->::bbb::EE000::~EE000();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5EE000E(Test__ZN3bbb5EE000E, "_ZN3bbb5EE000E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5EE000C1Ev();
+extern void _ZN3bbb5EE000D1Ev();
+Name_Map name_map__ZN3bbb5EE000E[] = {
+  NSPAIR(_ZN3bbb5EE000C1Ev),
+  NSPAIR(_ZN3bbb5EE000D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+static Base_Class bases__ZN3bbb5EE000E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(16,12), //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__ZN3bbb3BB0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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 _ZTIN3bbb5EE000E[];
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5EE000E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5EE000E[];
+static  VTT_ENTRY vtt__ZN3bbb5EE000E[] = {
+  {&(_ZTVN3bbb5EE000E[3]),  3,11},
+  {&(_ZTVN3bbb5EE000E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+static VTBL_ENTRY alt_thunk_names1[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5EE000E = {  "_ZN3bbb5EE000E", // class name
+  bases__ZN3bbb5EE000E, 2,
+  &(vtc__ZN3bbb5EE000E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5EE000E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5EE000E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5EE000E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5EE000E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names1,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  FF000  : ::bbb::AA0 , virtual ::bbb::BB0 {
+  int pe;
+  virtual void  foo(); // _ZN3bbb5FF0003fooEv
+  virtual void  bar(); // _ZN3bbb5FF0003barEv
+  ~FF000(); // tgen
+  FF000(); // tgen
+};
+//SIG(-1 _ZN3bbb5FF000E) C1{ BC2{ v1 v2 Fi} VBC3{ v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::FF000 ::foo(){vfunc_called(this, "_ZN3bbb5FF0003fooEv");}
+void  bbb::FF000 ::bar(){vfunc_called(this, "_ZN3bbb5FF0003barEv");}
+bbb::FF000 ::~FF000(){ note_dtor("_ZN3bbb5FF000E", this);} // tgen
+bbb::FF000 ::FF000(){ note_ctor("_ZN3bbb5FF000E", this);} // tgen
+}
+static void Test__ZN3bbb5FF000E()
+{
+  extern Class_Descriptor cd__ZN3bbb5FF000E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5FF000E, buf);
+    ::bbb::FF000 *dp, &lv = *(dp=new (buf) ::bbb::FF000());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5FF000E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5FF000E)");
+    check_base_class_offset(lv, (::bbb::AA0*), 0, "_ZN3bbb5FF000E");
+    check_base_class_offset(lv, (::bbb::BB0*), ABISELECT(16,12), "_ZN3bbb5FF000E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5FF000E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5FF000E);
+    dp->::bbb::FF000::~FF000();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5FF000E(Test__ZN3bbb5FF000E, "_ZN3bbb5FF000E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5FF000C1Ev();
+extern void _ZN3bbb5FF000D1Ev();
+Name_Map name_map__ZN3bbb5FF000E[] = {
+  NSPAIR(_ZN3bbb5FF000C1Ev),
+  NSPAIR(_ZN3bbb5FF000D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+static Base_Class bases__ZN3bbb5FF000E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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__ZN3bbb3BB0E,    ABISELECT(16,12), //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 _ZTIN3bbb5FF000E[];
+extern void _ZN3bbb5FF0003fooEv();
+extern void _ZN3bbb5FF0003barEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF0003fooEv,_ZThn12_N3bbb5FF0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF0003barEv,_ZThn12_N3bbb5FF0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5FF000E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0003barEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5FF000E[];
+static  VTT_ENTRY vtt__ZN3bbb5FF000E[] = {
+  {&(_ZTVN3bbb5FF000E[3]),  3,11},
+  {&(_ZTVN3bbb5FF000E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5FF000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF000E[];
+static VTBL_ENTRY alt_thunk_names2[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF0003barEv,_ZThn12_N3bbb5FF0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF0003fooEv,_ZThn12_N3bbb5FF0003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5FF000E = {  "_ZN3bbb5FF000E", // class name
+  bases__ZN3bbb5FF000E, 2,
+  &(vtc__ZN3bbb5FF000E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5FF000E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5FF000E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5FF000E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5FF000E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names2,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  EE001  : virtual ::bbb::AA0 , ::bbb::BB0 {
+  int pe;
+  virtual void  bar(); // _ZN3bbb5EE0013barEv
+  virtual void  foo(); // _ZN3bbb5EE0013fooEv
+  ~EE001(); // tgen
+  EE001(); // tgen
+};
+//SIG(-1 _ZN3bbb5EE001E) C1{ VBC2{ v2 v1 Fi} BC3{ v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::EE001 ::bar(){vfunc_called(this, "_ZN3bbb5EE0013barEv");}
+void  bbb::EE001 ::foo(){vfunc_called(this, "_ZN3bbb5EE0013fooEv");}
+bbb::EE001 ::~EE001(){ note_dtor("_ZN3bbb5EE001E", this);} // tgen
+bbb::EE001 ::EE001(){ note_ctor("_ZN3bbb5EE001E", this);} // tgen
+}
+static void Test__ZN3bbb5EE001E()
+{
+  extern Class_Descriptor cd__ZN3bbb5EE001E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5EE001E, buf);
+    ::bbb::EE001 *dp, &lv = *(dp=new (buf) ::bbb::EE001());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5EE001E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5EE001E)");
+    check_base_class_offset(lv, (::bbb::AA0*), ABISELECT(16,12), "_ZN3bbb5EE001E");
+    check_base_class_offset(lv, (::bbb::BB0*), 0, "_ZN3bbb5EE001E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5EE001E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5EE001E);
+    dp->::bbb::EE001::~EE001();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5EE001E(Test__ZN3bbb5EE001E, "_ZN3bbb5EE001E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5EE001C1Ev();
+extern void _ZN3bbb5EE001D1Ev();
+Name_Map name_map__ZN3bbb5EE001E[] = {
+  NSPAIR(_ZN3bbb5EE001C1Ev),
+  NSPAIR(_ZN3bbb5EE001D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+static Base_Class bases__ZN3bbb5EE001E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(16,12), //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__ZN3bbb3BB0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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 _ZTIN3bbb5EE001E[];
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5EE001E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5EE001E[];
+static  VTT_ENTRY vtt__ZN3bbb5EE001E[] = {
+  {&(_ZTVN3bbb5EE001E[3]),  3,11},
+  {&(_ZTVN3bbb5EE001E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+static VTBL_ENTRY alt_thunk_names3[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5EE001E = {  "_ZN3bbb5EE001E", // class name
+  bases__ZN3bbb5EE001E, 2,
+  &(vtc__ZN3bbb5EE001E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5EE001E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5EE001E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5EE001E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5EE001E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names3,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  FF001  : ::bbb::AA0 , virtual ::bbb::BB0 {
+  int pe;
+  virtual void  bar(); // _ZN3bbb5FF0013barEv
+  virtual void  foo(); // _ZN3bbb5FF0013fooEv
+  ~FF001(); // tgen
+  FF001(); // tgen
+};
+//SIG(-1 _ZN3bbb5FF001E) C1{ BC2{ v2 v1 Fi} VBC3{ v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::FF001 ::bar(){vfunc_called(this, "_ZN3bbb5FF0013barEv");}
+void  bbb::FF001 ::foo(){vfunc_called(this, "_ZN3bbb5FF0013fooEv");}
+bbb::FF001 ::~FF001(){ note_dtor("_ZN3bbb5FF001E", this);} // tgen
+bbb::FF001 ::FF001(){ note_ctor("_ZN3bbb5FF001E", this);} // tgen
+}
+static void Test__ZN3bbb5FF001E()
+{
+  extern Class_Descriptor cd__ZN3bbb5FF001E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5FF001E, buf);
+    ::bbb::FF001 *dp, &lv = *(dp=new (buf) ::bbb::FF001());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5FF001E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5FF001E)");
+    check_base_class_offset(lv, (::bbb::AA0*), 0, "_ZN3bbb5FF001E");
+    check_base_class_offset(lv, (::bbb::BB0*), ABISELECT(16,12), "_ZN3bbb5FF001E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5FF001E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5FF001E);
+    dp->::bbb::FF001::~FF001();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5FF001E(Test__ZN3bbb5FF001E, "_ZN3bbb5FF001E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5FF001C1Ev();
+extern void _ZN3bbb5FF001D1Ev();
+Name_Map name_map__ZN3bbb5FF001E[] = {
+  NSPAIR(_ZN3bbb5FF001C1Ev),
+  NSPAIR(_ZN3bbb5FF001D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+static Base_Class bases__ZN3bbb5FF001E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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__ZN3bbb3BB0E,    ABISELECT(16,12), //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 _ZTIN3bbb5FF001E[];
+extern void _ZN3bbb5FF0013fooEv();
+extern void _ZN3bbb5FF0013barEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF0013fooEv,_ZThn12_N3bbb5FF0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF0013barEv,_ZThn12_N3bbb5FF0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5FF001E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0013barEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5FF001E[];
+static  VTT_ENTRY vtt__ZN3bbb5FF001E[] = {
+  {&(_ZTVN3bbb5FF001E[3]),  3,11},
+  {&(_ZTVN3bbb5FF001E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5FF001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF001E[];
+static VTBL_ENTRY alt_thunk_names4[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF0013barEv,_ZThn12_N3bbb5FF0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF0013fooEv,_ZThn12_N3bbb5FF0013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5FF001E = {  "_ZN3bbb5FF001E", // class name
+  bases__ZN3bbb5FF001E, 2,
+  &(vtc__ZN3bbb5FF001E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5FF001E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5FF001E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5FF001E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5FF001E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names4,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  EE010  : virtual ::bbb::AA0 , ::bbb::BB1 {
+  int pe;
+  virtual void  foo(); // _ZN3bbb5EE0103fooEv
+  virtual void  bar(); // _ZN3bbb5EE0103barEv
+  ~EE010(); // tgen
+  EE010(); // tgen
+};
+//SIG(-1 _ZN3bbb5EE010E) C1{ VBC2{ v1 v2 Fi} BC3{ v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::EE010 ::foo(){vfunc_called(this, "_ZN3bbb5EE0103fooEv");}
+void  bbb::EE010 ::bar(){vfunc_called(this, "_ZN3bbb5EE0103barEv");}
+bbb::EE010 ::~EE010(){ note_dtor("_ZN3bbb5EE010E", this);} // tgen
+bbb::EE010 ::EE010(){ note_ctor("_ZN3bbb5EE010E", this);} // tgen
+}
+static void Test__ZN3bbb5EE010E()
+{
+  extern Class_Descriptor cd__ZN3bbb5EE010E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5EE010E, buf);
+    ::bbb::EE010 *dp, &lv = *(dp=new (buf) ::bbb::EE010());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5EE010E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5EE010E)");
+    check_base_class_offset(lv, (::bbb::AA0*), ABISELECT(16,12), "_ZN3bbb5EE010E");
+    check_base_class_offset(lv, (::bbb::BB1*), 0, "_ZN3bbb5EE010E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5EE010E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5EE010E);
+    dp->::bbb::EE010::~EE010();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5EE010E(Test__ZN3bbb5EE010E, "_ZN3bbb5EE010E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5EE010C1Ev();
+extern void _ZN3bbb5EE010D1Ev();
+Name_Map name_map__ZN3bbb5EE010E[] = {
+  NSPAIR(_ZN3bbb5EE010C1Ev),
+  NSPAIR(_ZN3bbb5EE010D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+static Base_Class bases__ZN3bbb5EE010E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(16,12), //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__ZN3bbb3BB1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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 _ZTIN3bbb5EE010E[];
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5EE010E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5EE010E[];
+static  VTT_ENTRY vtt__ZN3bbb5EE010E[] = {
+  {&(_ZTVN3bbb5EE010E[3]),  3,11},
+  {&(_ZTVN3bbb5EE010E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+static VTBL_ENTRY alt_thunk_names5[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5EE010E = {  "_ZN3bbb5EE010E", // class name
+  bases__ZN3bbb5EE010E, 2,
+  &(vtc__ZN3bbb5EE010E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5EE010E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5EE010E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5EE010E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5EE010E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names5,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  FF010  : ::bbb::AA0 , virtual ::bbb::BB1 {
+  int pe;
+  virtual void  foo(); // _ZN3bbb5FF0103fooEv
+  virtual void  bar(); // _ZN3bbb5FF0103barEv
+  ~FF010(); // tgen
+  FF010(); // tgen
+};
+//SIG(-1 _ZN3bbb5FF010E) C1{ BC2{ v1 v2 Fi} VBC3{ v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::FF010 ::foo(){vfunc_called(this, "_ZN3bbb5FF0103fooEv");}
+void  bbb::FF010 ::bar(){vfunc_called(this, "_ZN3bbb5FF0103barEv");}
+bbb::FF010 ::~FF010(){ note_dtor("_ZN3bbb5FF010E", this);} // tgen
+bbb::FF010 ::FF010(){ note_ctor("_ZN3bbb5FF010E", this);} // tgen
+}
+static void Test__ZN3bbb5FF010E()
+{
+  extern Class_Descriptor cd__ZN3bbb5FF010E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5FF010E, buf);
+    ::bbb::FF010 *dp, &lv = *(dp=new (buf) ::bbb::FF010());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5FF010E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5FF010E)");
+    check_base_class_offset(lv, (::bbb::AA0*), 0, "_ZN3bbb5FF010E");
+    check_base_class_offset(lv, (::bbb::BB1*), ABISELECT(16,12), "_ZN3bbb5FF010E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5FF010E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5FF010E);
+    dp->::bbb::FF010::~FF010();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5FF010E(Test__ZN3bbb5FF010E, "_ZN3bbb5FF010E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5FF010C1Ev();
+extern void _ZN3bbb5FF010D1Ev();
+Name_Map name_map__ZN3bbb5FF010E[] = {
+  NSPAIR(_ZN3bbb5FF010C1Ev),
+  NSPAIR(_ZN3bbb5FF010D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+static Base_Class bases__ZN3bbb5FF010E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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__ZN3bbb3BB1E,    ABISELECT(16,12), //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 _ZTIN3bbb5FF010E[];
+extern void _ZN3bbb5FF0103fooEv();
+extern void _ZN3bbb5FF0103barEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF0103barEv,_ZThn12_N3bbb5FF0103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF0103fooEv,_ZThn12_N3bbb5FF0103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5FF010E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0103barEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5FF010E[];
+static  VTT_ENTRY vtt__ZN3bbb5FF010E[] = {
+  {&(_ZTVN3bbb5FF010E[3]),  3,11},
+  {&(_ZTVN3bbb5FF010E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5FF010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF010E[];
+static VTBL_ENTRY alt_thunk_names6[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF0103fooEv,_ZThn12_N3bbb5FF0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF0103barEv,_ZThn12_N3bbb5FF0103barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5FF010E = {  "_ZN3bbb5FF010E", // class name
+  bases__ZN3bbb5FF010E, 2,
+  &(vtc__ZN3bbb5FF010E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5FF010E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5FF010E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5FF010E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5FF010E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names6,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  EE011  : virtual ::bbb::AA0 , ::bbb::BB1 {
+  int pe;
+  virtual void  bar(); // _ZN3bbb5EE0113barEv
+  virtual void  foo(); // _ZN3bbb5EE0113fooEv
+  ~EE011(); // tgen
+  EE011(); // tgen
+};
+//SIG(-1 _ZN3bbb5EE011E) C1{ VBC2{ v2 v1 Fi} BC3{ v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::EE011 ::bar(){vfunc_called(this, "_ZN3bbb5EE0113barEv");}
+void  bbb::EE011 ::foo(){vfunc_called(this, "_ZN3bbb5EE0113fooEv");}
+bbb::EE011 ::~EE011(){ note_dtor("_ZN3bbb5EE011E", this);} // tgen
+bbb::EE011 ::EE011(){ note_ctor("_ZN3bbb5EE011E", this);} // tgen
+}
+static void Test__ZN3bbb5EE011E()
+{
+  extern Class_Descriptor cd__ZN3bbb5EE011E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5EE011E, buf);
+    ::bbb::EE011 *dp, &lv = *(dp=new (buf) ::bbb::EE011());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5EE011E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5EE011E)");
+    check_base_class_offset(lv, (::bbb::AA0*), ABISELECT(16,12), "_ZN3bbb5EE011E");
+    check_base_class_offset(lv, (::bbb::BB1*), 0, "_ZN3bbb5EE011E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5EE011E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5EE011E);
+    dp->::bbb::EE011::~EE011();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5EE011E(Test__ZN3bbb5EE011E, "_ZN3bbb5EE011E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5EE011C1Ev();
+extern void _ZN3bbb5EE011D1Ev();
+Name_Map name_map__ZN3bbb5EE011E[] = {
+  NSPAIR(_ZN3bbb5EE011C1Ev),
+  NSPAIR(_ZN3bbb5EE011D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+static Base_Class bases__ZN3bbb5EE011E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(16,12), //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__ZN3bbb3BB1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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 _ZTIN3bbb5EE011E[];
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5EE011E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5EE011E[];
+static  VTT_ENTRY vtt__ZN3bbb5EE011E[] = {
+  {&(_ZTVN3bbb5EE011E[3]),  3,11},
+  {&(_ZTVN3bbb5EE011E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+static VTBL_ENTRY alt_thunk_names7[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5EE011E = {  "_ZN3bbb5EE011E", // class name
+  bases__ZN3bbb5EE011E, 2,
+  &(vtc__ZN3bbb5EE011E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5EE011E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5EE011E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5EE011E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5EE011E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names7,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  FF011  : ::bbb::AA0 , virtual ::bbb::BB1 {
+  int pe;
+  virtual void  bar(); // _ZN3bbb5FF0113barEv
+  virtual void  foo(); // _ZN3bbb5FF0113fooEv
+  ~FF011(); // tgen
+  FF011(); // tgen
+};
+//SIG(-1 _ZN3bbb5FF011E) C1{ BC2{ v2 v1 Fi} VBC3{ v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::FF011 ::bar(){vfunc_called(this, "_ZN3bbb5FF0113barEv");}
+void  bbb::FF011 ::foo(){vfunc_called(this, "_ZN3bbb5FF0113fooEv");}
+bbb::FF011 ::~FF011(){ note_dtor("_ZN3bbb5FF011E", this);} // tgen
+bbb::FF011 ::FF011(){ note_ctor("_ZN3bbb5FF011E", this);} // tgen
+}
+static void Test__ZN3bbb5FF011E()
+{
+  extern Class_Descriptor cd__ZN3bbb5FF011E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5FF011E, buf);
+    ::bbb::FF011 *dp, &lv = *(dp=new (buf) ::bbb::FF011());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5FF011E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5FF011E)");
+    check_base_class_offset(lv, (::bbb::AA0*), 0, "_ZN3bbb5FF011E");
+    check_base_class_offset(lv, (::bbb::BB1*), ABISELECT(16,12), "_ZN3bbb5FF011E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5FF011E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5FF011E);
+    dp->::bbb::FF011::~FF011();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5FF011E(Test__ZN3bbb5FF011E, "_ZN3bbb5FF011E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5FF011C1Ev();
+extern void _ZN3bbb5FF011D1Ev();
+Name_Map name_map__ZN3bbb5FF011E[] = {
+  NSPAIR(_ZN3bbb5FF011C1Ev),
+  NSPAIR(_ZN3bbb5FF011D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+static Base_Class bases__ZN3bbb5FF011E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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__ZN3bbb3BB1E,    ABISELECT(16,12), //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 _ZTIN3bbb5FF011E[];
+extern void _ZN3bbb5FF0113fooEv();
+extern void _ZN3bbb5FF0113barEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF0113barEv,_ZThn12_N3bbb5FF0113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF0113fooEv,_ZThn12_N3bbb5FF0113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5FF011E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0113barEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5FF011E[];
+static  VTT_ENTRY vtt__ZN3bbb5FF011E[] = {
+  {&(_ZTVN3bbb5FF011E[3]),  3,11},
+  {&(_ZTVN3bbb5FF011E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5FF011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF011E[];
+static VTBL_ENTRY alt_thunk_names8[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF0113fooEv,_ZThn12_N3bbb5FF0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF0113barEv,_ZThn12_N3bbb5FF0113barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5FF011E = {  "_ZN3bbb5FF011E", // class name
+  bases__ZN3bbb5FF011E, 2,
+  &(vtc__ZN3bbb5FF011E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5FF011E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5FF011E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5FF011E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5FF011E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names8,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  EE100  : virtual ::bbb::AA1 , ::bbb::BB0 {
+  int pe;
+  virtual void  foo(); // _ZN3bbb5EE1003fooEv
+  virtual void  bar(); // _ZN3bbb5EE1003barEv
+  ~EE100(); // tgen
+  EE100(); // tgen
+};
+//SIG(-1 _ZN3bbb5EE100E) C1{ VBC2{ v2 v1 Fi} BC3{ v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::EE100 ::foo(){vfunc_called(this, "_ZN3bbb5EE1003fooEv");}
+void  bbb::EE100 ::bar(){vfunc_called(this, "_ZN3bbb5EE1003barEv");}
+bbb::EE100 ::~EE100(){ note_dtor("_ZN3bbb5EE100E", this);} // tgen
+bbb::EE100 ::EE100(){ note_ctor("_ZN3bbb5EE100E", this);} // tgen
+}
+static void Test__ZN3bbb5EE100E()
+{
+  extern Class_Descriptor cd__ZN3bbb5EE100E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5EE100E, buf);
+    ::bbb::EE100 *dp, &lv = *(dp=new (buf) ::bbb::EE100());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5EE100E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5EE100E)");
+    check_base_class_offset(lv, (::bbb::AA1*), ABISELECT(16,12), "_ZN3bbb5EE100E");
+    check_base_class_offset(lv, (::bbb::BB0*), 0, "_ZN3bbb5EE100E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5EE100E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5EE100E);
+    dp->::bbb::EE100::~EE100();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5EE100E(Test__ZN3bbb5EE100E, "_ZN3bbb5EE100E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5EE100C1Ev();
+extern void _ZN3bbb5EE100D1Ev();
+Name_Map name_map__ZN3bbb5EE100E[] = {
+  NSPAIR(_ZN3bbb5EE100C1Ev),
+  NSPAIR(_ZN3bbb5EE100D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+static Base_Class bases__ZN3bbb5EE100E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    ABISELECT(16,12), //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__ZN3bbb3BB0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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 _ZTIN3bbb5EE100E[];
+extern void _ZN3bbb5EE1003fooEv();
+extern void _ZN3bbb5EE1003barEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1003barEv,_ZThn12_N3bbb5EE1003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1003fooEv,_ZThn12_N3bbb5EE1003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5EE100E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE1003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE1003barEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5EE100E[];
+static  VTT_ENTRY vtt__ZN3bbb5EE100E[] = {
+  {&(_ZTVN3bbb5EE100E[3]),  3,11},
+  {&(_ZTVN3bbb5EE100E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5EE100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE100E[];
+static VTBL_ENTRY alt_thunk_names9[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1003fooEv,_ZThn12_N3bbb5EE1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1003barEv,_ZThn12_N3bbb5EE1003barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5EE100E = {  "_ZN3bbb5EE100E", // class name
+  bases__ZN3bbb5EE100E, 2,
+  &(vtc__ZN3bbb5EE100E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5EE100E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5EE100E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5EE100E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5EE100E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names9,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  FF100  : ::bbb::AA1 , virtual ::bbb::BB0 {
+  int pe;
+  virtual void  foo(); // _ZN3bbb5FF1003fooEv
+  virtual void  bar(); // _ZN3bbb5FF1003barEv
+  ~FF100(); // tgen
+  FF100(); // tgen
+};
+//SIG(-1 _ZN3bbb5FF100E) C1{ BC2{ v2 v1 Fi} VBC3{ v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::FF100 ::foo(){vfunc_called(this, "_ZN3bbb5FF1003fooEv");}
+void  bbb::FF100 ::bar(){vfunc_called(this, "_ZN3bbb5FF1003barEv");}
+bbb::FF100 ::~FF100(){ note_dtor("_ZN3bbb5FF100E", this);} // tgen
+bbb::FF100 ::FF100(){ note_ctor("_ZN3bbb5FF100E", this);} // tgen
+}
+static void Test__ZN3bbb5FF100E()
+{
+  extern Class_Descriptor cd__ZN3bbb5FF100E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5FF100E, buf);
+    ::bbb::FF100 *dp, &lv = *(dp=new (buf) ::bbb::FF100());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5FF100E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5FF100E)");
+    check_base_class_offset(lv, (::bbb::AA1*), 0, "_ZN3bbb5FF100E");
+    check_base_class_offset(lv, (::bbb::BB0*), ABISELECT(16,12), "_ZN3bbb5FF100E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5FF100E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5FF100E);
+    dp->::bbb::FF100::~FF100();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5FF100E(Test__ZN3bbb5FF100E, "_ZN3bbb5FF100E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5FF100C1Ev();
+extern void _ZN3bbb5FF100D1Ev();
+Name_Map name_map__ZN3bbb5FF100E[] = {
+  NSPAIR(_ZN3bbb5FF100C1Ev),
+  NSPAIR(_ZN3bbb5FF100D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+static Base_Class bases__ZN3bbb5FF100E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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__ZN3bbb3BB0E,    ABISELECT(16,12), //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 _ZTIN3bbb5FF100E[];
+extern void _ZN3bbb5FF1003barEv();
+extern void _ZN3bbb5FF1003fooEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF1003fooEv,_ZThn12_N3bbb5FF1003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF1003barEv,_ZThn12_N3bbb5FF1003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5FF100E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1003barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1003fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5FF100E[];
+static  VTT_ENTRY vtt__ZN3bbb5FF100E[] = {
+  {&(_ZTVN3bbb5FF100E[3]),  3,11},
+  {&(_ZTVN3bbb5FF100E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5FF100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF100E[];
+static VTBL_ENTRY alt_thunk_names10[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF1003barEv,_ZThn12_N3bbb5FF1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF1003fooEv,_ZThn12_N3bbb5FF1003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5FF100E = {  "_ZN3bbb5FF100E", // class name
+  bases__ZN3bbb5FF100E, 2,
+  &(vtc__ZN3bbb5FF100E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5FF100E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5FF100E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5FF100E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5FF100E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names10,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  EE101  : virtual ::bbb::AA1 , ::bbb::BB0 {
+  int pe;
+  virtual void  bar(); // _ZN3bbb5EE1013barEv
+  virtual void  foo(); // _ZN3bbb5EE1013fooEv
+  ~EE101(); // tgen
+  EE101(); // tgen
+};
+//SIG(-1 _ZN3bbb5EE101E) C1{ VBC2{ v1 v2 Fi} BC3{ v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::EE101 ::bar(){vfunc_called(this, "_ZN3bbb5EE1013barEv");}
+void  bbb::EE101 ::foo(){vfunc_called(this, "_ZN3bbb5EE1013fooEv");}
+bbb::EE101 ::~EE101(){ note_dtor("_ZN3bbb5EE101E", this);} // tgen
+bbb::EE101 ::EE101(){ note_ctor("_ZN3bbb5EE101E", this);} // tgen
+}
+static void Test__ZN3bbb5EE101E()
+{
+  extern Class_Descriptor cd__ZN3bbb5EE101E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5EE101E, buf);
+    ::bbb::EE101 *dp, &lv = *(dp=new (buf) ::bbb::EE101());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5EE101E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5EE101E)");
+    check_base_class_offset(lv, (::bbb::AA1*), ABISELECT(16,12), "_ZN3bbb5EE101E");
+    check_base_class_offset(lv, (::bbb::BB0*), 0, "_ZN3bbb5EE101E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5EE101E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5EE101E);
+    dp->::bbb::EE101::~EE101();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5EE101E(Test__ZN3bbb5EE101E, "_ZN3bbb5EE101E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5EE101C1Ev();
+extern void _ZN3bbb5EE101D1Ev();
+Name_Map name_map__ZN3bbb5EE101E[] = {
+  NSPAIR(_ZN3bbb5EE101C1Ev),
+  NSPAIR(_ZN3bbb5EE101D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+static Base_Class bases__ZN3bbb5EE101E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    ABISELECT(16,12), //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__ZN3bbb3BB0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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 _ZTIN3bbb5EE101E[];
+extern void _ZN3bbb5EE1013fooEv();
+extern void _ZN3bbb5EE1013barEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE1013barEv,_ZTv0_n12_N3bbb5EE1013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1013barEv,_ZThn12_N3bbb5EE1013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE1013fooEv,_ZTv0_n16_N3bbb5EE1013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1013fooEv,_ZThn12_N3bbb5EE1013fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5EE101E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE1013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE1013barEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE1013barEv,_ZTv0_n12_N3bbb5EE1013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE1013fooEv,_ZTv0_n16_N3bbb5EE1013fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5EE101E[];
+static  VTT_ENTRY vtt__ZN3bbb5EE101E[] = {
+  {&(_ZTVN3bbb5EE101E[3]),  3,11},
+  {&(_ZTVN3bbb5EE101E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5EE101E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE101E[];
+static VTBL_ENTRY alt_thunk_names11[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE1013fooEv,_ZTv0_n16_N3bbb5EE1013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1013fooEv,_ZThn12_N3bbb5EE1013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE1013barEv,_ZTv0_n12_N3bbb5EE1013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1013barEv,_ZThn12_N3bbb5EE1013barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5EE101E = {  "_ZN3bbb5EE101E", // class name
+  bases__ZN3bbb5EE101E, 2,
+  &(vtc__ZN3bbb5EE101E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5EE101E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5EE101E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5EE101E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5EE101E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names11,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  FF101  : ::bbb::AA1 , virtual ::bbb::BB0 {
+  int pe;
+  virtual void  bar(); // _ZN3bbb5FF1013barEv
+  virtual void  foo(); // _ZN3bbb5FF1013fooEv
+  ~FF101(); // tgen
+  FF101(); // tgen
+};
+//SIG(-1 _ZN3bbb5FF101E) C1{ BC2{ v1 v2 Fi} VBC3{ v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::FF101 ::bar(){vfunc_called(this, "_ZN3bbb5FF1013barEv");}
+void  bbb::FF101 ::foo(){vfunc_called(this, "_ZN3bbb5FF1013fooEv");}
+bbb::FF101 ::~FF101(){ note_dtor("_ZN3bbb5FF101E", this);} // tgen
+bbb::FF101 ::FF101(){ note_ctor("_ZN3bbb5FF101E", this);} // tgen
+}
+static void Test__ZN3bbb5FF101E()
+{
+  extern Class_Descriptor cd__ZN3bbb5FF101E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5FF101E, buf);
+    ::bbb::FF101 *dp, &lv = *(dp=new (buf) ::bbb::FF101());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5FF101E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5FF101E)");
+    check_base_class_offset(lv, (::bbb::AA1*), 0, "_ZN3bbb5FF101E");
+    check_base_class_offset(lv, (::bbb::BB0*), ABISELECT(16,12), "_ZN3bbb5FF101E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5FF101E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5FF101E);
+    dp->::bbb::FF101::~FF101();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5FF101E(Test__ZN3bbb5FF101E, "_ZN3bbb5FF101E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5FF101C1Ev();
+extern void _ZN3bbb5FF101D1Ev();
+Name_Map name_map__ZN3bbb5FF101E[] = {
+  NSPAIR(_ZN3bbb5FF101C1Ev),
+  NSPAIR(_ZN3bbb5FF101D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+static Base_Class bases__ZN3bbb5FF101E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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__ZN3bbb3BB0E,    ABISELECT(16,12), //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 _ZTIN3bbb5FF101E[];
+extern void _ZN3bbb5FF1013barEv();
+extern void _ZN3bbb5FF1013fooEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF1013fooEv,_ZThn12_N3bbb5FF1013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF1013barEv,_ZThn12_N3bbb5FF1013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5FF101E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1013barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1013fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5FF101E[];
+static  VTT_ENTRY vtt__ZN3bbb5FF101E[] = {
+  {&(_ZTVN3bbb5FF101E[3]),  3,11},
+  {&(_ZTVN3bbb5FF101E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5FF101E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF101E[];
+static VTBL_ENTRY alt_thunk_names12[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF1013barEv,_ZThn12_N3bbb5FF1013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF1013fooEv,_ZThn12_N3bbb5FF1013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5FF101E = {  "_ZN3bbb5FF101E", // class name
+  bases__ZN3bbb5FF101E, 2,
+  &(vtc__ZN3bbb5FF101E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5FF101E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5FF101E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5FF101E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5FF101E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names12,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  EE110  : virtual ::bbb::AA1 , ::bbb::BB1 {
+  int pe;
+  virtual void  foo(); // _ZN3bbb5EE1103fooEv
+  virtual void  bar(); // _ZN3bbb5EE1103barEv
+  ~EE110(); // tgen
+  EE110(); // tgen
+};
+//SIG(-1 _ZN3bbb5EE110E) C1{ VBC2{ v2 v1 Fi} BC3{ v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::EE110 ::foo(){vfunc_called(this, "_ZN3bbb5EE1103fooEv");}
+void  bbb::EE110 ::bar(){vfunc_called(this, "_ZN3bbb5EE1103barEv");}
+bbb::EE110 ::~EE110(){ note_dtor("_ZN3bbb5EE110E", this);} // tgen
+bbb::EE110 ::EE110(){ note_ctor("_ZN3bbb5EE110E", this);} // tgen
+}
+static void Test__ZN3bbb5EE110E()
+{
+  extern Class_Descriptor cd__ZN3bbb5EE110E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5EE110E, buf);
+    ::bbb::EE110 *dp, &lv = *(dp=new (buf) ::bbb::EE110());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5EE110E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5EE110E)");
+    check_base_class_offset(lv, (::bbb::AA1*), ABISELECT(16,12), "_ZN3bbb5EE110E");
+    check_base_class_offset(lv, (::bbb::BB1*), 0, "_ZN3bbb5EE110E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5EE110E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5EE110E);
+    dp->::bbb::EE110::~EE110();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5EE110E(Test__ZN3bbb5EE110E, "_ZN3bbb5EE110E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5EE110C1Ev();
+extern void _ZN3bbb5EE110D1Ev();
+Name_Map name_map__ZN3bbb5EE110E[] = {
+  NSPAIR(_ZN3bbb5EE110C1Ev),
+  NSPAIR(_ZN3bbb5EE110D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+static Base_Class bases__ZN3bbb5EE110E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    ABISELECT(16,12), //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__ZN3bbb3BB1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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 _ZTIN3bbb5EE110E[];
+extern void _ZN3bbb5EE1103barEv();
+extern void _ZN3bbb5EE1103fooEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE1103barEv,_ZTv0_n12_N3bbb5EE1103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1103barEv,_ZThn12_N3bbb5EE1103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE1103fooEv,_ZTv0_n16_N3bbb5EE1103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1103fooEv,_ZThn12_N3bbb5EE1103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5EE110E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE1103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE1103fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE1103barEv,_ZTv0_n12_N3bbb5EE1103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE1103fooEv,_ZTv0_n16_N3bbb5EE1103fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5EE110E[];
+static  VTT_ENTRY vtt__ZN3bbb5EE110E[] = {
+  {&(_ZTVN3bbb5EE110E[3]),  3,11},
+  {&(_ZTVN3bbb5EE110E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5EE110E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE110E[];
+static VTBL_ENTRY alt_thunk_names13[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE1103fooEv,_ZTv0_n16_N3bbb5EE1103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1103fooEv,_ZThn12_N3bbb5EE1103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE1103barEv,_ZTv0_n12_N3bbb5EE1103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1103barEv,_ZThn12_N3bbb5EE1103barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5EE110E = {  "_ZN3bbb5EE110E", // class name
+  bases__ZN3bbb5EE110E, 2,
+  &(vtc__ZN3bbb5EE110E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5EE110E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5EE110E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5EE110E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5EE110E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names13,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  FF110  : ::bbb::AA1 , virtual ::bbb::BB1 {
+  int pe;
+  virtual void  foo(); // _ZN3bbb5FF1103fooEv
+  virtual void  bar(); // _ZN3bbb5FF1103barEv
+  ~FF110(); // tgen
+  FF110(); // tgen
+};
+//SIG(-1 _ZN3bbb5FF110E) C1{ BC2{ v2 v1 Fi} VBC3{ v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::FF110 ::foo(){vfunc_called(this, "_ZN3bbb5FF1103fooEv");}
+void  bbb::FF110 ::bar(){vfunc_called(this, "_ZN3bbb5FF1103barEv");}
+bbb::FF110 ::~FF110(){ note_dtor("_ZN3bbb5FF110E", this);} // tgen
+bbb::FF110 ::FF110(){ note_ctor("_ZN3bbb5FF110E", this);} // tgen
+}
+static void Test__ZN3bbb5FF110E()
+{
+  extern Class_Descriptor cd__ZN3bbb5FF110E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5FF110E, buf);
+    ::bbb::FF110 *dp, &lv = *(dp=new (buf) ::bbb::FF110());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5FF110E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5FF110E)");
+    check_base_class_offset(lv, (::bbb::AA1*), 0, "_ZN3bbb5FF110E");
+    check_base_class_offset(lv, (::bbb::BB1*), ABISELECT(16,12), "_ZN3bbb5FF110E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5FF110E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5FF110E);
+    dp->::bbb::FF110::~FF110();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5FF110E(Test__ZN3bbb5FF110E, "_ZN3bbb5FF110E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5FF110C1Ev();
+extern void _ZN3bbb5FF110D1Ev();
+Name_Map name_map__ZN3bbb5FF110E[] = {
+  NSPAIR(_ZN3bbb5FF110C1Ev),
+  NSPAIR(_ZN3bbb5FF110D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+static Base_Class bases__ZN3bbb5FF110E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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__ZN3bbb3BB1E,    ABISELECT(16,12), //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 _ZTIN3bbb5FF110E[];
+extern void _ZN3bbb5FF1103barEv();
+extern void _ZN3bbb5FF1103fooEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF1103barEv,_ZThn12_N3bbb5FF1103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF1103fooEv,_ZThn12_N3bbb5FF1103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5FF110E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1103fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5FF110E[];
+static  VTT_ENTRY vtt__ZN3bbb5FF110E[] = {
+  {&(_ZTVN3bbb5FF110E[3]),  3,11},
+  {&(_ZTVN3bbb5FF110E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5FF110E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF110E[];
+static VTBL_ENTRY alt_thunk_names14[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF1103fooEv,_ZThn12_N3bbb5FF1103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF1103barEv,_ZThn12_N3bbb5FF1103barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5FF110E = {  "_ZN3bbb5FF110E", // class name
+  bases__ZN3bbb5FF110E, 2,
+  &(vtc__ZN3bbb5FF110E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5FF110E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5FF110E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5FF110E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5FF110E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names14,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  EE111  : virtual ::bbb::AA1 , ::bbb::BB1 {
+  int pe;
+  virtual void  bar(); // _ZN3bbb5EE1113barEv
+  virtual void  foo(); // _ZN3bbb5EE1113fooEv
+  ~EE111(); // tgen
+  EE111(); // tgen
+};
+//SIG(-1 _ZN3bbb5EE111E) C1{ VBC2{ v1 v2 Fi} BC3{ v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::EE111 ::bar(){vfunc_called(this, "_ZN3bbb5EE1113barEv");}
+void  bbb::EE111 ::foo(){vfunc_called(this, "_ZN3bbb5EE1113fooEv");}
+bbb::EE111 ::~EE111(){ note_dtor("_ZN3bbb5EE111E", this);} // tgen
+bbb::EE111 ::EE111(){ note_ctor("_ZN3bbb5EE111E", this);} // tgen
+}
+static void Test__ZN3bbb5EE111E()
+{
+  extern Class_Descriptor cd__ZN3bbb5EE111E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5EE111E, buf);
+    ::bbb::EE111 *dp, &lv = *(dp=new (buf) ::bbb::EE111());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5EE111E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5EE111E)");
+    check_base_class_offset(lv, (::bbb::AA1*), ABISELECT(16,12), "_ZN3bbb5EE111E");
+    check_base_class_offset(lv, (::bbb::BB1*), 0, "_ZN3bbb5EE111E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5EE111E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5EE111E);
+    dp->::bbb::EE111::~EE111();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5EE111E(Test__ZN3bbb5EE111E, "_ZN3bbb5EE111E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5EE111C1Ev();
+extern void _ZN3bbb5EE111D1Ev();
+Name_Map name_map__ZN3bbb5EE111E[] = {
+  NSPAIR(_ZN3bbb5EE111C1Ev),
+  NSPAIR(_ZN3bbb5EE111D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+static Base_Class bases__ZN3bbb5EE111E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    ABISELECT(16,12), //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__ZN3bbb3BB1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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 _ZTIN3bbb5EE111E[];
+extern void _ZN3bbb5EE1113barEv();
+extern void _ZN3bbb5EE1113fooEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE1113barEv,_ZTv0_n12_N3bbb5EE1113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1113barEv,_ZThn12_N3bbb5EE1113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE1113fooEv,_ZTv0_n16_N3bbb5EE1113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1113fooEv,_ZThn12_N3bbb5EE1113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5EE111E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE1113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE1113fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE1113barEv,_ZTv0_n12_N3bbb5EE1113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE1113fooEv,_ZTv0_n16_N3bbb5EE1113fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5EE111E[];
+static  VTT_ENTRY vtt__ZN3bbb5EE111E[] = {
+  {&(_ZTVN3bbb5EE111E[3]),  3,11},
+  {&(_ZTVN3bbb5EE111E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5EE111E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE111E[];
+static VTBL_ENTRY alt_thunk_names15[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE1113fooEv,_ZTv0_n16_N3bbb5EE1113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1113fooEv,_ZThn12_N3bbb5EE1113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE1113barEv,_ZTv0_n12_N3bbb5EE1113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1113barEv,_ZThn12_N3bbb5EE1113barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5EE111E = {  "_ZN3bbb5EE111E", // class name
+  bases__ZN3bbb5EE111E, 2,
+  &(vtc__ZN3bbb5EE111E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5EE111E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5EE111E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5EE111E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5EE111E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names15,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  FF111  : ::bbb::AA1 , virtual ::bbb::BB1 {
+  int pe;
+  virtual void  bar(); // _ZN3bbb5FF1113barEv
+  virtual void  foo(); // _ZN3bbb5FF1113fooEv
+  ~FF111(); // tgen
+  FF111(); // tgen
+};
+//SIG(-1 _ZN3bbb5FF111E) C1{ BC2{ v1 v2 Fi} VBC3{ v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::FF111 ::bar(){vfunc_called(this, "_ZN3bbb5FF1113barEv");}
+void  bbb::FF111 ::foo(){vfunc_called(this, "_ZN3bbb5FF1113fooEv");}
+bbb::FF111 ::~FF111(){ note_dtor("_ZN3bbb5FF111E", this);} // tgen
+bbb::FF111 ::FF111(){ note_ctor("_ZN3bbb5FF111E", this);} // tgen
+}
+static void Test__ZN3bbb5FF111E()
+{
+  extern Class_Descriptor cd__ZN3bbb5FF111E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(5,6)];
+    init_test(&cd__ZN3bbb5FF111E, buf);
+    ::bbb::FF111 *dp, &lv = *(dp=new (buf) ::bbb::FF111());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(32,20), "sizeof(_ZN3bbb5FF111E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb5FF111E)");
+    check_base_class_offset(lv, (::bbb::AA1*), 0, "_ZN3bbb5FF111E");
+    check_base_class_offset(lv, (::bbb::BB1*), ABISELECT(16,12), "_ZN3bbb5FF111E");
+    check_field_offset(lv, pe, ABISELECT(12,8), "_ZN3bbb5FF111E.pe");
+    test_class_info(&lv, &cd__ZN3bbb5FF111E);
+    dp->::bbb::FF111::~FF111();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb5FF111E(Test__ZN3bbb5FF111E, "_ZN3bbb5FF111E", ABISELECT(32,20));
+
+#else // __cplusplus
+
+extern void _ZN3bbb5FF111C1Ev();
+extern void _ZN3bbb5FF111D1Ev();
+Name_Map name_map__ZN3bbb5FF111E[] = {
+  NSPAIR(_ZN3bbb5FF111C1Ev),
+  NSPAIR(_ZN3bbb5FF111D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+static Base_Class bases__ZN3bbb5FF111E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    2, //num_negative_vtable_entries(t, bcp)
+    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__ZN3bbb3BB1E,    ABISELECT(16,12), //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 _ZTIN3bbb5FF111E[];
+extern void _ZN3bbb5FF1113barEv();
+extern void _ZN3bbb5FF1113fooEv();
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF1113barEv,_ZThn12_N3bbb5FF1113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5FF1113fooEv,_ZThn12_N3bbb5FF1113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb5FF111E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1113fooEv,
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb5FF111E[];
+static  VTT_ENTRY vtt__ZN3bbb5FF111E[] = {
+  {&(_ZTVN3bbb5FF111E[3]),  3,11},
+  {&(_ZTVN3bbb5FF111E[9]),  9,11},
+};
+extern VTBL_ENTRY _ZTIN3bbb5FF111E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF111E[];
+static VTBL_ENTRY alt_thunk_names16[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF1113fooEv,_ZThn12_N3bbb5FF1113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5FF1113barEv,_ZThn12_N3bbb5FF1113barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb5FF111E = {  "_ZN3bbb5FF111E", // class name
+  bases__ZN3bbb5FF111E, 2,
+  &(vtc__ZN3bbb5FF111E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb5FF111E[0]), // expected_vtt_contents
+  ABISELECT(32,20), // object size
+  NSPAIRA(_ZTIN3bbb5FF111E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb5FF111E),11, //virtual function table var
+  3, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb5FF111E),2, //virtual table table var
+  2, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names16,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0000000  : virtual ::bbb::EE000 , ::bbb::FF000 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00000003fooEv
+  virtual void  bar(); // _ZN3bbb9GG00000003barEv
+  ~GG0000000(); // tgen
+  GG0000000(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0000000E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC3 VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0000000 ::foo(){vfunc_called(this, "_ZN3bbb9GG00000003fooEv");}
+void  bbb::GG0000000 ::bar(){vfunc_called(this, "_ZN3bbb9GG00000003barEv");}
+bbb::GG0000000 ::~GG0000000(){ note_dtor("_ZN3bbb9GG0000000E", this);} // tgen
+bbb::GG0000000 ::GG0000000(){ note_ctor("_ZN3bbb9GG0000000E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0000000E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0000000E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0000000E, buf);
+    ::bbb::GG0000000 *dp, &lv = *(dp=new (buf) ::bbb::GG0000000());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0000000E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0000000E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0000000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000000E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000000E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF000*), 0, "_ZN3bbb9GG0000000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF000*), ABISELECT(56,36), "_ZN3bbb9GG0000000E");
+    check_base_class_offset(lv, (::bbb::FF000*), 0, "_ZN3bbb9GG0000000E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0000000E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0000000E);
+    dp->::bbb::GG0000000::~GG0000000();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0000000E(Test__ZN3bbb9GG0000000E, "_ZN3bbb9GG0000000E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0000000C1Ev();
+extern void _ZN3bbb9GG0000000D1Ev();
+Name_Map name_map__ZN3bbb9GG0000000E[] = {
+  NSPAIR(_ZN3bbb9GG0000000C1Ev),
+  NSPAIR(_ZN3bbb9GG0000000D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF000E;
+extern VTBL_ENTRY _ZTIN3bbb5FF000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF000E[];
+static Base_Class bases__ZN3bbb9GG0000000E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF000E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000000E[];
+extern void _ZN3bbb9GG00000003fooEv();
+extern void _ZN3bbb9GG00000003barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000003fooEv,_ZTv0_n16_N3bbb9GG00000003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00000003fooEv,_ZThn16_N3bbb9GG00000003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00000003barEv,_ZTv0_n20_N3bbb9GG00000003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00000003barEv,_ZThn16_N3bbb9GG00000003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00000003fooEv,_ZTv0_n12_N3bbb9GG00000003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00000003fooEv,_ZThn28_N3bbb9GG00000003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000003barEv,_ZTv0_n16_N3bbb9GG00000003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00000003barEv,_ZThn28_N3bbb9GG00000003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00000003fooEv,_ZTv0_n12_N3bbb9GG00000003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00000003fooEv,_ZThn36_N3bbb9GG00000003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000003barEv,_ZTv0_n16_N3bbb9GG00000003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00000003barEv,_ZThn36_N3bbb9GG00000003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0000000E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00000003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00000003barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000003fooEv,_ZTv0_n16_N3bbb9GG00000003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00000003barEv,_ZTv0_n20_N3bbb9GG00000003barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00000003fooEv,_ZTv0_n12_N3bbb9GG00000003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000003barEv,_ZTv0_n16_N3bbb9GG00000003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00000003fooEv,_ZTv0_n12_N3bbb9GG00000003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000003barEv,_ZTv0_n16_N3bbb9GG00000003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0000000E[];
+extern void _ZN3bbb5FF0003fooEv();
+extern void _ZN3bbb5FF0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF000E__NS_9GG0000000E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0000000E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0000000E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000000E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0000000E[] = {
+  {&(_ZTVN3bbb9GG0000000E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF000E__NS_9GG0000000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0000000E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0000000E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0000000E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0000000E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0000000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000000E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000000E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0000000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0000000E[];
+static VTBL_ENTRY alt_thunk_names17[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00000003barEv,_ZTv0_n16_N3bbb9GG00000003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00000003barEv,_ZThn36_N3bbb9GG00000003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00000003barEv,_ZThn28_N3bbb9GG00000003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00000003fooEv,_ZTv0_n12_N3bbb9GG00000003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00000003fooEv,_ZThn36_N3bbb9GG00000003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00000003fooEv,_ZThn28_N3bbb9GG00000003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00000003barEv,_ZTv0_n20_N3bbb9GG00000003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00000003barEv,_ZThn16_N3bbb9GG00000003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00000003fooEv,_ZTv0_n16_N3bbb9GG00000003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00000003fooEv,_ZThn16_N3bbb9GG00000003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0000000E = {  "_ZN3bbb9GG0000000E", // class name
+  bases__ZN3bbb9GG0000000E, 6,
+  &(vtc__ZN3bbb9GG0000000E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0000000E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0000000E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0000000E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0000000E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names17,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0000001  : virtual ::bbb::EE000 , ::bbb::FF000 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00000013barEv
+  virtual void  foo(); // _ZN3bbb9GG00000013fooEv
+  ~GG0000001(); // tgen
+  GG0000001(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0000001E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC3 VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0000001 ::bar(){vfunc_called(this, "_ZN3bbb9GG00000013barEv");}
+void  bbb::GG0000001 ::foo(){vfunc_called(this, "_ZN3bbb9GG00000013fooEv");}
+bbb::GG0000001 ::~GG0000001(){ note_dtor("_ZN3bbb9GG0000001E", this);} // tgen
+bbb::GG0000001 ::GG0000001(){ note_ctor("_ZN3bbb9GG0000001E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0000001E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0000001E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0000001E, buf);
+    ::bbb::GG0000001 *dp, &lv = *(dp=new (buf) ::bbb::GG0000001());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0000001E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0000001E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0000001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000001E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000001E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF000*), 0, "_ZN3bbb9GG0000001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF000*), ABISELECT(56,36), "_ZN3bbb9GG0000001E");
+    check_base_class_offset(lv, (::bbb::FF000*), 0, "_ZN3bbb9GG0000001E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0000001E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0000001E);
+    dp->::bbb::GG0000001::~GG0000001();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0000001E(Test__ZN3bbb9GG0000001E, "_ZN3bbb9GG0000001E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0000001C1Ev();
+extern void _ZN3bbb9GG0000001D1Ev();
+Name_Map name_map__ZN3bbb9GG0000001E[] = {
+  NSPAIR(_ZN3bbb9GG0000001C1Ev),
+  NSPAIR(_ZN3bbb9GG0000001D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF000E;
+extern VTBL_ENTRY _ZTIN3bbb5FF000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF000E[];
+static Base_Class bases__ZN3bbb9GG0000001E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF000E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000001E[];
+extern void _ZN3bbb9GG00000013fooEv();
+extern void _ZN3bbb9GG00000013barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000013fooEv,_ZTv0_n16_N3bbb9GG00000013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00000013fooEv,_ZThn16_N3bbb9GG00000013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00000013barEv,_ZTv0_n20_N3bbb9GG00000013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00000013barEv,_ZThn16_N3bbb9GG00000013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00000013fooEv,_ZTv0_n12_N3bbb9GG00000013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00000013fooEv,_ZThn28_N3bbb9GG00000013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000013barEv,_ZTv0_n16_N3bbb9GG00000013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00000013barEv,_ZThn28_N3bbb9GG00000013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00000013fooEv,_ZTv0_n12_N3bbb9GG00000013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00000013fooEv,_ZThn36_N3bbb9GG00000013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000013barEv,_ZTv0_n16_N3bbb9GG00000013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00000013barEv,_ZThn36_N3bbb9GG00000013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0000001E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00000013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00000013barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000013fooEv,_ZTv0_n16_N3bbb9GG00000013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00000013barEv,_ZTv0_n20_N3bbb9GG00000013barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00000013fooEv,_ZTv0_n12_N3bbb9GG00000013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000013barEv,_ZTv0_n16_N3bbb9GG00000013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00000013fooEv,_ZTv0_n12_N3bbb9GG00000013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000013barEv,_ZTv0_n16_N3bbb9GG00000013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0000001E[];
+extern void _ZN3bbb5FF0003fooEv();
+extern void _ZN3bbb5FF0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF000E__NS_9GG0000001E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0000001E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0000001E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000001E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0000001E[] = {
+  {&(_ZTVN3bbb9GG0000001E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF000E__NS_9GG0000001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0000001E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0000001E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0000001E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0000001E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0000001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000001E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000001E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0000001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0000001E[];
+static VTBL_ENTRY alt_thunk_names18[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00000013barEv,_ZTv0_n16_N3bbb9GG00000013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00000013barEv,_ZThn36_N3bbb9GG00000013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00000013barEv,_ZThn28_N3bbb9GG00000013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00000013fooEv,_ZTv0_n12_N3bbb9GG00000013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00000013fooEv,_ZThn36_N3bbb9GG00000013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00000013fooEv,_ZThn28_N3bbb9GG00000013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00000013barEv,_ZTv0_n20_N3bbb9GG00000013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00000013barEv,_ZThn16_N3bbb9GG00000013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00000013fooEv,_ZTv0_n16_N3bbb9GG00000013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00000013fooEv,_ZThn16_N3bbb9GG00000013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0000001E = {  "_ZN3bbb9GG0000001E", // class name
+  bases__ZN3bbb9GG0000001E, 6,
+  &(vtc__ZN3bbb9GG0000001E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0000001E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0000001E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0000001E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0000001E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names18,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0000010  : virtual ::bbb::EE000 , ::bbb::FF001 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00000103fooEv
+  virtual void  bar(); // _ZN3bbb9GG00000103barEv
+  ~GG0000010(); // tgen
+  GG0000010(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0000010E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC3 VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0000010 ::foo(){vfunc_called(this, "_ZN3bbb9GG00000103fooEv");}
+void  bbb::GG0000010 ::bar(){vfunc_called(this, "_ZN3bbb9GG00000103barEv");}
+bbb::GG0000010 ::~GG0000010(){ note_dtor("_ZN3bbb9GG0000010E", this);} // tgen
+bbb::GG0000010 ::GG0000010(){ note_ctor("_ZN3bbb9GG0000010E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0000010E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0000010E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0000010E, buf);
+    ::bbb::GG0000010 *dp, &lv = *(dp=new (buf) ::bbb::GG0000010());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0000010E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0000010E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0000010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000010E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000010E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF001*), 0, "_ZN3bbb9GG0000010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF001*), ABISELECT(56,36), "_ZN3bbb9GG0000010E");
+    check_base_class_offset(lv, (::bbb::FF001*), 0, "_ZN3bbb9GG0000010E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0000010E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0000010E);
+    dp->::bbb::GG0000010::~GG0000010();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0000010E(Test__ZN3bbb9GG0000010E, "_ZN3bbb9GG0000010E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0000010C1Ev();
+extern void _ZN3bbb9GG0000010D1Ev();
+Name_Map name_map__ZN3bbb9GG0000010E[] = {
+  NSPAIR(_ZN3bbb9GG0000010C1Ev),
+  NSPAIR(_ZN3bbb9GG0000010D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF001E;
+extern VTBL_ENTRY _ZTIN3bbb5FF001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF001E[];
+static Base_Class bases__ZN3bbb9GG0000010E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF001E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000010E[];
+extern void _ZN3bbb9GG00000103fooEv();
+extern void _ZN3bbb9GG00000103barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000103fooEv,_ZTv0_n16_N3bbb9GG00000103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00000103fooEv,_ZThn16_N3bbb9GG00000103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00000103barEv,_ZTv0_n20_N3bbb9GG00000103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00000103barEv,_ZThn16_N3bbb9GG00000103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00000103fooEv,_ZTv0_n12_N3bbb9GG00000103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00000103fooEv,_ZThn28_N3bbb9GG00000103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000103barEv,_ZTv0_n16_N3bbb9GG00000103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00000103barEv,_ZThn28_N3bbb9GG00000103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00000103fooEv,_ZTv0_n12_N3bbb9GG00000103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00000103fooEv,_ZThn36_N3bbb9GG00000103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000103barEv,_ZTv0_n16_N3bbb9GG00000103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00000103barEv,_ZThn36_N3bbb9GG00000103barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0000010E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00000103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00000103barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000103fooEv,_ZTv0_n16_N3bbb9GG00000103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00000103barEv,_ZTv0_n20_N3bbb9GG00000103barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00000103fooEv,_ZTv0_n12_N3bbb9GG00000103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000103barEv,_ZTv0_n16_N3bbb9GG00000103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00000103fooEv,_ZTv0_n12_N3bbb9GG00000103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000103barEv,_ZTv0_n16_N3bbb9GG00000103barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0000010E[];
+extern void _ZN3bbb5FF0013fooEv();
+extern void _ZN3bbb5FF0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF001E__NS_9GG0000010E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0000010E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0000010E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000010E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0000010E[] = {
+  {&(_ZTVN3bbb9GG0000010E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF001E__NS_9GG0000010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0000010E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0000010E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0000010E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0000010E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0000010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000010E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000010E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0000010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0000010E[];
+static VTBL_ENTRY alt_thunk_names19[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00000103barEv,_ZTv0_n16_N3bbb9GG00000103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00000103barEv,_ZThn36_N3bbb9GG00000103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00000103barEv,_ZThn28_N3bbb9GG00000103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00000103fooEv,_ZTv0_n12_N3bbb9GG00000103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00000103fooEv,_ZThn36_N3bbb9GG00000103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00000103fooEv,_ZThn28_N3bbb9GG00000103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00000103barEv,_ZTv0_n20_N3bbb9GG00000103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00000103barEv,_ZThn16_N3bbb9GG00000103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00000103fooEv,_ZTv0_n16_N3bbb9GG00000103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00000103fooEv,_ZThn16_N3bbb9GG00000103fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0000010E = {  "_ZN3bbb9GG0000010E", // class name
+  bases__ZN3bbb9GG0000010E, 6,
+  &(vtc__ZN3bbb9GG0000010E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0000010E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0000010E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0000010E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0000010E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names19,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0000011  : virtual ::bbb::EE000 , ::bbb::FF001 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00000113barEv
+  virtual void  foo(); // _ZN3bbb9GG00000113fooEv
+  ~GG0000011(); // tgen
+  GG0000011(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0000011E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC3 VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0000011 ::bar(){vfunc_called(this, "_ZN3bbb9GG00000113barEv");}
+void  bbb::GG0000011 ::foo(){vfunc_called(this, "_ZN3bbb9GG00000113fooEv");}
+bbb::GG0000011 ::~GG0000011(){ note_dtor("_ZN3bbb9GG0000011E", this);} // tgen
+bbb::GG0000011 ::GG0000011(){ note_ctor("_ZN3bbb9GG0000011E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0000011E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0000011E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0000011E, buf);
+    ::bbb::GG0000011 *dp, &lv = *(dp=new (buf) ::bbb::GG0000011());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0000011E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0000011E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0000011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000011E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000011E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF001*), 0, "_ZN3bbb9GG0000011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF001*), ABISELECT(56,36), "_ZN3bbb9GG0000011E");
+    check_base_class_offset(lv, (::bbb::FF001*), 0, "_ZN3bbb9GG0000011E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0000011E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0000011E);
+    dp->::bbb::GG0000011::~GG0000011();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0000011E(Test__ZN3bbb9GG0000011E, "_ZN3bbb9GG0000011E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0000011C1Ev();
+extern void _ZN3bbb9GG0000011D1Ev();
+Name_Map name_map__ZN3bbb9GG0000011E[] = {
+  NSPAIR(_ZN3bbb9GG0000011C1Ev),
+  NSPAIR(_ZN3bbb9GG0000011D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF001E;
+extern VTBL_ENTRY _ZTIN3bbb5FF001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF001E[];
+static Base_Class bases__ZN3bbb9GG0000011E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF001E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000011E[];
+extern void _ZN3bbb9GG00000113fooEv();
+extern void _ZN3bbb9GG00000113barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000113fooEv,_ZTv0_n16_N3bbb9GG00000113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00000113fooEv,_ZThn16_N3bbb9GG00000113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00000113barEv,_ZTv0_n20_N3bbb9GG00000113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00000113barEv,_ZThn16_N3bbb9GG00000113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00000113fooEv,_ZTv0_n12_N3bbb9GG00000113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00000113fooEv,_ZThn28_N3bbb9GG00000113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000113barEv,_ZTv0_n16_N3bbb9GG00000113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00000113barEv,_ZThn28_N3bbb9GG00000113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00000113fooEv,_ZTv0_n12_N3bbb9GG00000113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00000113fooEv,_ZThn36_N3bbb9GG00000113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00000113barEv,_ZTv0_n16_N3bbb9GG00000113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00000113barEv,_ZThn36_N3bbb9GG00000113barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0000011E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00000113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00000113barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000113fooEv,_ZTv0_n16_N3bbb9GG00000113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00000113barEv,_ZTv0_n20_N3bbb9GG00000113barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00000113fooEv,_ZTv0_n12_N3bbb9GG00000113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000113barEv,_ZTv0_n16_N3bbb9GG00000113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00000113fooEv,_ZTv0_n12_N3bbb9GG00000113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00000113barEv,_ZTv0_n16_N3bbb9GG00000113barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0000011E[];
+extern void _ZN3bbb5FF0013fooEv();
+extern void _ZN3bbb5FF0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF001E__NS_9GG0000011E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0000011E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0000011E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000011E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0000011E[] = {
+  {&(_ZTVN3bbb9GG0000011E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF001E__NS_9GG0000011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0000011E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0000011E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0000011E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0000011E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0000011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000011E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000011E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0000011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0000011E[];
+static VTBL_ENTRY alt_thunk_names20[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00000113barEv,_ZTv0_n16_N3bbb9GG00000113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00000113barEv,_ZThn36_N3bbb9GG00000113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00000113barEv,_ZThn28_N3bbb9GG00000113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00000113fooEv,_ZTv0_n12_N3bbb9GG00000113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00000113fooEv,_ZThn36_N3bbb9GG00000113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00000113fooEv,_ZThn28_N3bbb9GG00000113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00000113barEv,_ZTv0_n20_N3bbb9GG00000113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00000113barEv,_ZThn16_N3bbb9GG00000113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00000113fooEv,_ZTv0_n16_N3bbb9GG00000113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00000113fooEv,_ZThn16_N3bbb9GG00000113fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0000011E = {  "_ZN3bbb9GG0000011E", // class name
+  bases__ZN3bbb9GG0000011E, 6,
+  &(vtc__ZN3bbb9GG0000011E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0000011E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0000011E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0000011E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0000011E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names20,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0000100  : virtual ::bbb::EE000 , ::bbb::FF010 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00001003fooEv
+  virtual void  bar(); // _ZN3bbb9GG00001003barEv
+  ~GG0000100(); // tgen
+  GG0000100(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0000100E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC3 VBC6{ v2 v1 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0000100 ::foo(){vfunc_called(this, "_ZN3bbb9GG00001003fooEv");}
+void  bbb::GG0000100 ::bar(){vfunc_called(this, "_ZN3bbb9GG00001003barEv");}
+bbb::GG0000100 ::~GG0000100(){ note_dtor("_ZN3bbb9GG0000100E", this);} // tgen
+bbb::GG0000100 ::GG0000100(){ note_ctor("_ZN3bbb9GG0000100E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0000100E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0000100E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0000100E, buf);
+    ::bbb::GG0000100 *dp, &lv = *(dp=new (buf) ::bbb::GG0000100());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0000100E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0000100E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0000100E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000100E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000100E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF010*), 0, "_ZN3bbb9GG0000100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF010*), ABISELECT(56,36), "_ZN3bbb9GG0000100E");
+    check_base_class_offset(lv, (::bbb::FF010*), 0, "_ZN3bbb9GG0000100E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0000100E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0000100E);
+    dp->::bbb::GG0000100::~GG0000100();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0000100E(Test__ZN3bbb9GG0000100E, "_ZN3bbb9GG0000100E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0000100C1Ev();
+extern void _ZN3bbb9GG0000100D1Ev();
+Name_Map name_map__ZN3bbb9GG0000100E[] = {
+  NSPAIR(_ZN3bbb9GG0000100C1Ev),
+  NSPAIR(_ZN3bbb9GG0000100D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF010E;
+extern VTBL_ENTRY _ZTIN3bbb5FF010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF010E[];
+static Base_Class bases__ZN3bbb9GG0000100E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF010E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000100E[];
+extern void _ZN3bbb9GG00001003fooEv();
+extern void _ZN3bbb9GG00001003barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001003fooEv,_ZTv0_n16_N3bbb9GG00001003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00001003fooEv,_ZThn16_N3bbb9GG00001003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00001003barEv,_ZTv0_n20_N3bbb9GG00001003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00001003barEv,_ZThn16_N3bbb9GG00001003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00001003fooEv,_ZTv0_n12_N3bbb9GG00001003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00001003fooEv,_ZThn28_N3bbb9GG00001003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001003barEv,_ZTv0_n16_N3bbb9GG00001003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00001003barEv,_ZThn28_N3bbb9GG00001003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00001003barEv,_ZTv0_n12_N3bbb9GG00001003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00001003barEv,_ZThn36_N3bbb9GG00001003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001003fooEv,_ZTv0_n16_N3bbb9GG00001003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00001003fooEv,_ZThn36_N3bbb9GG00001003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0000100E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00001003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00001003barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001003fooEv,_ZTv0_n16_N3bbb9GG00001003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00001003barEv,_ZTv0_n20_N3bbb9GG00001003barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00001003fooEv,_ZTv0_n12_N3bbb9GG00001003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001003barEv,_ZTv0_n16_N3bbb9GG00001003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00001003barEv,_ZTv0_n12_N3bbb9GG00001003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001003fooEv,_ZTv0_n16_N3bbb9GG00001003fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0000100E[];
+extern void _ZN3bbb5FF0103fooEv();
+extern void _ZN3bbb5FF0103barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF010E__NS_9GG0000100E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0103barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0000100E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0000100E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000100E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0000100E[] = {
+  {&(_ZTVN3bbb9GG0000100E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF010E__NS_9GG0000100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0000100E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0000100E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0000100E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0000100E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0000100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000100E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000100E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0000100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0000100E[];
+static VTBL_ENTRY alt_thunk_names21[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00001003barEv,_ZTv0_n12_N3bbb9GG00001003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00001003barEv,_ZThn36_N3bbb9GG00001003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00001003barEv,_ZTv0_n16_N3bbb9GG00001003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00001003barEv,_ZThn28_N3bbb9GG00001003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00001003fooEv,_ZTv0_n12_N3bbb9GG00001003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00001003fooEv,_ZThn28_N3bbb9GG00001003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00001003barEv,_ZTv0_n20_N3bbb9GG00001003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00001003barEv,_ZThn16_N3bbb9GG00001003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00001003fooEv,_ZTv0_n16_N3bbb9GG00001003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00001003fooEv,_ZThn36_N3bbb9GG00001003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00001003fooEv,_ZThn16_N3bbb9GG00001003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0000100E = {  "_ZN3bbb9GG0000100E", // class name
+  bases__ZN3bbb9GG0000100E, 6,
+  &(vtc__ZN3bbb9GG0000100E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0000100E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0000100E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0000100E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0000100E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names21,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0000101  : virtual ::bbb::EE000 , ::bbb::FF010 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00001013barEv
+  virtual void  foo(); // _ZN3bbb9GG00001013fooEv
+  ~GG0000101(); // tgen
+  GG0000101(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0000101E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC3 VBC6{ v1 v2 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0000101 ::bar(){vfunc_called(this, "_ZN3bbb9GG00001013barEv");}
+void  bbb::GG0000101 ::foo(){vfunc_called(this, "_ZN3bbb9GG00001013fooEv");}
+bbb::GG0000101 ::~GG0000101(){ note_dtor("_ZN3bbb9GG0000101E", this);} // tgen
+bbb::GG0000101 ::GG0000101(){ note_ctor("_ZN3bbb9GG0000101E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0000101E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0000101E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0000101E, buf);
+    ::bbb::GG0000101 *dp, &lv = *(dp=new (buf) ::bbb::GG0000101());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0000101E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0000101E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0000101E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000101E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000101E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF010*), 0, "_ZN3bbb9GG0000101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF010*), ABISELECT(56,36), "_ZN3bbb9GG0000101E");
+    check_base_class_offset(lv, (::bbb::FF010*), 0, "_ZN3bbb9GG0000101E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0000101E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0000101E);
+    dp->::bbb::GG0000101::~GG0000101();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0000101E(Test__ZN3bbb9GG0000101E, "_ZN3bbb9GG0000101E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0000101C1Ev();
+extern void _ZN3bbb9GG0000101D1Ev();
+Name_Map name_map__ZN3bbb9GG0000101E[] = {
+  NSPAIR(_ZN3bbb9GG0000101C1Ev),
+  NSPAIR(_ZN3bbb9GG0000101D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF010E;
+extern VTBL_ENTRY _ZTIN3bbb5FF010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF010E[];
+static Base_Class bases__ZN3bbb9GG0000101E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF010E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000101E[];
+extern void _ZN3bbb9GG00001013fooEv();
+extern void _ZN3bbb9GG00001013barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001013fooEv,_ZTv0_n16_N3bbb9GG00001013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00001013fooEv,_ZThn16_N3bbb9GG00001013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00001013barEv,_ZTv0_n20_N3bbb9GG00001013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00001013barEv,_ZThn16_N3bbb9GG00001013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00001013fooEv,_ZTv0_n12_N3bbb9GG00001013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00001013fooEv,_ZThn28_N3bbb9GG00001013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001013barEv,_ZTv0_n16_N3bbb9GG00001013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00001013barEv,_ZThn28_N3bbb9GG00001013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00001013barEv,_ZTv0_n12_N3bbb9GG00001013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00001013barEv,_ZThn36_N3bbb9GG00001013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001013fooEv,_ZTv0_n16_N3bbb9GG00001013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00001013fooEv,_ZThn36_N3bbb9GG00001013fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0000101E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00001013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00001013barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001013fooEv,_ZTv0_n16_N3bbb9GG00001013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00001013barEv,_ZTv0_n20_N3bbb9GG00001013barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00001013fooEv,_ZTv0_n12_N3bbb9GG00001013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001013barEv,_ZTv0_n16_N3bbb9GG00001013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00001013barEv,_ZTv0_n12_N3bbb9GG00001013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001013fooEv,_ZTv0_n16_N3bbb9GG00001013fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0000101E[];
+extern void _ZN3bbb5FF0103fooEv();
+extern void _ZN3bbb5FF0103barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF010E__NS_9GG0000101E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0103barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0000101E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0000101E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000101E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0000101E[] = {
+  {&(_ZTVN3bbb9GG0000101E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF010E__NS_9GG0000101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0000101E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0000101E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0000101E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0000101E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0000101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000101E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000101E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0000101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0000101E[];
+static VTBL_ENTRY alt_thunk_names22[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00001013barEv,_ZTv0_n12_N3bbb9GG00001013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00001013barEv,_ZThn36_N3bbb9GG00001013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00001013barEv,_ZTv0_n16_N3bbb9GG00001013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00001013barEv,_ZThn28_N3bbb9GG00001013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00001013fooEv,_ZTv0_n12_N3bbb9GG00001013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00001013fooEv,_ZThn28_N3bbb9GG00001013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00001013barEv,_ZTv0_n20_N3bbb9GG00001013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00001013barEv,_ZThn16_N3bbb9GG00001013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00001013fooEv,_ZTv0_n16_N3bbb9GG00001013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00001013fooEv,_ZThn36_N3bbb9GG00001013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00001013fooEv,_ZThn16_N3bbb9GG00001013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0000101E = {  "_ZN3bbb9GG0000101E", // class name
+  bases__ZN3bbb9GG0000101E, 6,
+  &(vtc__ZN3bbb9GG0000101E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0000101E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0000101E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0000101E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0000101E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names22,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0000110  : virtual ::bbb::EE000 , ::bbb::FF011 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00001103fooEv
+  virtual void  bar(); // _ZN3bbb9GG00001103barEv
+  ~GG0000110(); // tgen
+  GG0000110(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0000110E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC3 VBC6{ v2 v1 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0000110 ::foo(){vfunc_called(this, "_ZN3bbb9GG00001103fooEv");}
+void  bbb::GG0000110 ::bar(){vfunc_called(this, "_ZN3bbb9GG00001103barEv");}
+bbb::GG0000110 ::~GG0000110(){ note_dtor("_ZN3bbb9GG0000110E", this);} // tgen
+bbb::GG0000110 ::GG0000110(){ note_ctor("_ZN3bbb9GG0000110E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0000110E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0000110E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0000110E, buf);
+    ::bbb::GG0000110 *dp, &lv = *(dp=new (buf) ::bbb::GG0000110());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0000110E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0000110E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0000110E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000110E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000110E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF011*), 0, "_ZN3bbb9GG0000110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF011*), ABISELECT(56,36), "_ZN3bbb9GG0000110E");
+    check_base_class_offset(lv, (::bbb::FF011*), 0, "_ZN3bbb9GG0000110E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0000110E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0000110E);
+    dp->::bbb::GG0000110::~GG0000110();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0000110E(Test__ZN3bbb9GG0000110E, "_ZN3bbb9GG0000110E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0000110C1Ev();
+extern void _ZN3bbb9GG0000110D1Ev();
+Name_Map name_map__ZN3bbb9GG0000110E[] = {
+  NSPAIR(_ZN3bbb9GG0000110C1Ev),
+  NSPAIR(_ZN3bbb9GG0000110D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF011E;
+extern VTBL_ENTRY _ZTIN3bbb5FF011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF011E[];
+static Base_Class bases__ZN3bbb9GG0000110E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF011E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000110E[];
+extern void _ZN3bbb9GG00001103fooEv();
+extern void _ZN3bbb9GG00001103barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001103fooEv,_ZTv0_n16_N3bbb9GG00001103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00001103fooEv,_ZThn16_N3bbb9GG00001103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00001103barEv,_ZTv0_n20_N3bbb9GG00001103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00001103barEv,_ZThn16_N3bbb9GG00001103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00001103fooEv,_ZTv0_n12_N3bbb9GG00001103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00001103fooEv,_ZThn28_N3bbb9GG00001103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001103barEv,_ZTv0_n16_N3bbb9GG00001103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00001103barEv,_ZThn28_N3bbb9GG00001103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00001103barEv,_ZTv0_n12_N3bbb9GG00001103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00001103barEv,_ZThn36_N3bbb9GG00001103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001103fooEv,_ZTv0_n16_N3bbb9GG00001103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00001103fooEv,_ZThn36_N3bbb9GG00001103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0000110E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00001103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00001103barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001103fooEv,_ZTv0_n16_N3bbb9GG00001103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00001103barEv,_ZTv0_n20_N3bbb9GG00001103barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00001103fooEv,_ZTv0_n12_N3bbb9GG00001103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001103barEv,_ZTv0_n16_N3bbb9GG00001103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00001103barEv,_ZTv0_n12_N3bbb9GG00001103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001103fooEv,_ZTv0_n16_N3bbb9GG00001103fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0000110E[];
+extern void _ZN3bbb5FF0113fooEv();
+extern void _ZN3bbb5FF0113barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF011E__NS_9GG0000110E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0113barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0000110E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0000110E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000110E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0000110E[] = {
+  {&(_ZTVN3bbb9GG0000110E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF011E__NS_9GG0000110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0000110E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0000110E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0000110E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0000110E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0000110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000110E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000110E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0000110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0000110E[];
+static VTBL_ENTRY alt_thunk_names23[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00001103barEv,_ZTv0_n12_N3bbb9GG00001103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00001103barEv,_ZThn36_N3bbb9GG00001103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00001103barEv,_ZTv0_n16_N3bbb9GG00001103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00001103barEv,_ZThn28_N3bbb9GG00001103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00001103fooEv,_ZTv0_n12_N3bbb9GG00001103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00001103fooEv,_ZThn28_N3bbb9GG00001103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00001103barEv,_ZTv0_n20_N3bbb9GG00001103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00001103barEv,_ZThn16_N3bbb9GG00001103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00001103fooEv,_ZTv0_n16_N3bbb9GG00001103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00001103fooEv,_ZThn36_N3bbb9GG00001103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00001103fooEv,_ZThn16_N3bbb9GG00001103fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0000110E = {  "_ZN3bbb9GG0000110E", // class name
+  bases__ZN3bbb9GG0000110E, 6,
+  &(vtc__ZN3bbb9GG0000110E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0000110E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0000110E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0000110E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0000110E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names23,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0000111  : virtual ::bbb::EE000 , ::bbb::FF011 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00001113barEv
+  virtual void  foo(); // _ZN3bbb9GG00001113fooEv
+  ~GG0000111(); // tgen
+  GG0000111(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0000111E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC3 VBC6{ v1 v2 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0000111 ::bar(){vfunc_called(this, "_ZN3bbb9GG00001113barEv");}
+void  bbb::GG0000111 ::foo(){vfunc_called(this, "_ZN3bbb9GG00001113fooEv");}
+bbb::GG0000111 ::~GG0000111(){ note_dtor("_ZN3bbb9GG0000111E", this);} // tgen
+bbb::GG0000111 ::GG0000111(){ note_ctor("_ZN3bbb9GG0000111E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0000111E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0000111E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0000111E, buf);
+    ::bbb::GG0000111 *dp, &lv = *(dp=new (buf) ::bbb::GG0000111());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0000111E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0000111E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0000111E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000111E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0000111E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF011*), 0, "_ZN3bbb9GG0000111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF011*), ABISELECT(56,36), "_ZN3bbb9GG0000111E");
+    check_base_class_offset(lv, (::bbb::FF011*), 0, "_ZN3bbb9GG0000111E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0000111E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0000111E);
+    dp->::bbb::GG0000111::~GG0000111();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0000111E(Test__ZN3bbb9GG0000111E, "_ZN3bbb9GG0000111E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0000111C1Ev();
+extern void _ZN3bbb9GG0000111D1Ev();
+Name_Map name_map__ZN3bbb9GG0000111E[] = {
+  NSPAIR(_ZN3bbb9GG0000111C1Ev),
+  NSPAIR(_ZN3bbb9GG0000111D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF011E;
+extern VTBL_ENTRY _ZTIN3bbb5FF011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF011E[];
+static Base_Class bases__ZN3bbb9GG0000111E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF011E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000111E[];
+extern void _ZN3bbb9GG00001113fooEv();
+extern void _ZN3bbb9GG00001113barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001113fooEv,_ZTv0_n16_N3bbb9GG00001113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00001113fooEv,_ZThn16_N3bbb9GG00001113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00001113barEv,_ZTv0_n20_N3bbb9GG00001113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00001113barEv,_ZThn16_N3bbb9GG00001113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00001113fooEv,_ZTv0_n12_N3bbb9GG00001113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00001113fooEv,_ZThn28_N3bbb9GG00001113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001113barEv,_ZTv0_n16_N3bbb9GG00001113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00001113barEv,_ZThn28_N3bbb9GG00001113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00001113barEv,_ZTv0_n12_N3bbb9GG00001113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00001113barEv,_ZThn36_N3bbb9GG00001113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00001113fooEv,_ZTv0_n16_N3bbb9GG00001113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00001113fooEv,_ZThn36_N3bbb9GG00001113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0000111E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00001113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00001113barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001113fooEv,_ZTv0_n16_N3bbb9GG00001113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00001113barEv,_ZTv0_n20_N3bbb9GG00001113barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00001113fooEv,_ZTv0_n12_N3bbb9GG00001113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001113barEv,_ZTv0_n16_N3bbb9GG00001113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0000111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00001113barEv,_ZTv0_n12_N3bbb9GG00001113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00001113fooEv,_ZTv0_n16_N3bbb9GG00001113fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0000111E[];
+extern void _ZN3bbb5FF0113fooEv();
+extern void _ZN3bbb5FF0113barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF011E__NS_9GG0000111E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0113barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0000111E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0000111E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000111E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0000111E[] = {
+  {&(_ZTVN3bbb9GG0000111E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF011E__NS_9GG0000111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0000111E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0000111E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0000111E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0000111E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0000111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0000111E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0000111E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0000111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0000111E[];
+static VTBL_ENTRY alt_thunk_names24[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00001113barEv,_ZTv0_n12_N3bbb9GG00001113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00001113barEv,_ZThn36_N3bbb9GG00001113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00001113barEv,_ZTv0_n16_N3bbb9GG00001113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00001113barEv,_ZThn28_N3bbb9GG00001113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00001113fooEv,_ZTv0_n12_N3bbb9GG00001113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00001113fooEv,_ZThn28_N3bbb9GG00001113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00001113barEv,_ZTv0_n20_N3bbb9GG00001113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00001113barEv,_ZThn16_N3bbb9GG00001113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00001113fooEv,_ZTv0_n16_N3bbb9GG00001113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00001113fooEv,_ZThn36_N3bbb9GG00001113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00001113fooEv,_ZThn16_N3bbb9GG00001113fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0000111E = {  "_ZN3bbb9GG0000111E", // class name
+  bases__ZN3bbb9GG0000111E, 6,
+  &(vtc__ZN3bbb9GG0000111E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0000111E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0000111E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0000111E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0000111E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names24,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0001000  : virtual ::bbb::EE000 , ::bbb::FF100 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00010003fooEv
+  virtual void  bar(); // _ZN3bbb9GG00010003barEv
+  ~GG0001000(); // tgen
+  GG0001000(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0001000E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC6{ v2 v1 Fi} VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0001000 ::foo(){vfunc_called(this, "_ZN3bbb9GG00010003fooEv");}
+void  bbb::GG0001000 ::bar(){vfunc_called(this, "_ZN3bbb9GG00010003barEv");}
+bbb::GG0001000 ::~GG0001000(){ note_dtor("_ZN3bbb9GG0001000E", this);} // tgen
+bbb::GG0001000 ::GG0001000(){ note_ctor("_ZN3bbb9GG0001000E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0001000E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0001000E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0001000E, buf);
+    ::bbb::GG0001000 *dp, &lv = *(dp=new (buf) ::bbb::GG0001000());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0001000E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0001000E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0001000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001000E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001000E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF100*), 0, "_ZN3bbb9GG0001000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF100*), ABISELECT(56,36), "_ZN3bbb9GG0001000E");
+    check_base_class_offset(lv, (::bbb::FF100*), 0, "_ZN3bbb9GG0001000E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0001000E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0001000E);
+    dp->::bbb::GG0001000::~GG0001000();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0001000E(Test__ZN3bbb9GG0001000E, "_ZN3bbb9GG0001000E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0001000C1Ev();
+extern void _ZN3bbb9GG0001000D1Ev();
+Name_Map name_map__ZN3bbb9GG0001000E[] = {
+  NSPAIR(_ZN3bbb9GG0001000C1Ev),
+  NSPAIR(_ZN3bbb9GG0001000D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF100E;
+extern VTBL_ENTRY _ZTIN3bbb5FF100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF100E[];
+static Base_Class bases__ZN3bbb9GG0001000E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF100E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001000E[];
+extern void _ZN3bbb9GG00010003barEv();
+extern void _ZN3bbb9GG00010003fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010003fooEv,_ZTv0_n16_N3bbb9GG00010003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00010003fooEv,_ZThn16_N3bbb9GG00010003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00010003barEv,_ZTv0_n20_N3bbb9GG00010003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00010003barEv,_ZThn16_N3bbb9GG00010003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00010003fooEv,_ZTv0_n12_N3bbb9GG00010003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00010003fooEv,_ZThn28_N3bbb9GG00010003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010003barEv,_ZTv0_n16_N3bbb9GG00010003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00010003barEv,_ZThn28_N3bbb9GG00010003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00010003fooEv,_ZTv0_n12_N3bbb9GG00010003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00010003fooEv,_ZThn36_N3bbb9GG00010003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010003barEv,_ZTv0_n16_N3bbb9GG00010003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00010003barEv,_ZThn36_N3bbb9GG00010003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0001000E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00010003barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00010003fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010003fooEv,_ZTv0_n16_N3bbb9GG00010003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00010003barEv,_ZTv0_n20_N3bbb9GG00010003barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00010003fooEv,_ZTv0_n12_N3bbb9GG00010003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010003barEv,_ZTv0_n16_N3bbb9GG00010003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00010003fooEv,_ZTv0_n12_N3bbb9GG00010003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010003barEv,_ZTv0_n16_N3bbb9GG00010003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0001000E[];
+extern void _ZN3bbb5FF1003barEv();
+extern void _ZN3bbb5FF1003fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF100E__NS_9GG0001000E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1003barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1003fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0001000E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0001000E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001000E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0001000E[] = {
+  {&(_ZTVN3bbb9GG0001000E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF100E__NS_9GG0001000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0001000E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0001000E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0001000E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0001000E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0001000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001000E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001000E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0001000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0001000E[];
+static VTBL_ENTRY alt_thunk_names25[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00010003barEv,_ZTv0_n16_N3bbb9GG00010003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00010003barEv,_ZThn36_N3bbb9GG00010003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00010003barEv,_ZThn28_N3bbb9GG00010003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00010003fooEv,_ZTv0_n12_N3bbb9GG00010003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00010003fooEv,_ZThn36_N3bbb9GG00010003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00010003fooEv,_ZThn28_N3bbb9GG00010003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00010003barEv,_ZTv0_n20_N3bbb9GG00010003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00010003barEv,_ZThn16_N3bbb9GG00010003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00010003fooEv,_ZTv0_n16_N3bbb9GG00010003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00010003fooEv,_ZThn16_N3bbb9GG00010003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0001000E = {  "_ZN3bbb9GG0001000E", // class name
+  bases__ZN3bbb9GG0001000E, 6,
+  &(vtc__ZN3bbb9GG0001000E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0001000E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0001000E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0001000E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0001000E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names25,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0001001  : virtual ::bbb::EE000 , ::bbb::FF100 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00010013barEv
+  virtual void  foo(); // _ZN3bbb9GG00010013fooEv
+  ~GG0001001(); // tgen
+  GG0001001(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0001001E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC6{ v1 v2 Fi} VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0001001 ::bar(){vfunc_called(this, "_ZN3bbb9GG00010013barEv");}
+void  bbb::GG0001001 ::foo(){vfunc_called(this, "_ZN3bbb9GG00010013fooEv");}
+bbb::GG0001001 ::~GG0001001(){ note_dtor("_ZN3bbb9GG0001001E", this);} // tgen
+bbb::GG0001001 ::GG0001001(){ note_ctor("_ZN3bbb9GG0001001E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0001001E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0001001E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0001001E, buf);
+    ::bbb::GG0001001 *dp, &lv = *(dp=new (buf) ::bbb::GG0001001());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0001001E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0001001E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0001001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001001E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001001E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF100*), 0, "_ZN3bbb9GG0001001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF100*), ABISELECT(56,36), "_ZN3bbb9GG0001001E");
+    check_base_class_offset(lv, (::bbb::FF100*), 0, "_ZN3bbb9GG0001001E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0001001E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0001001E);
+    dp->::bbb::GG0001001::~GG0001001();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0001001E(Test__ZN3bbb9GG0001001E, "_ZN3bbb9GG0001001E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0001001C1Ev();
+extern void _ZN3bbb9GG0001001D1Ev();
+Name_Map name_map__ZN3bbb9GG0001001E[] = {
+  NSPAIR(_ZN3bbb9GG0001001C1Ev),
+  NSPAIR(_ZN3bbb9GG0001001D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF100E;
+extern VTBL_ENTRY _ZTIN3bbb5FF100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF100E[];
+static Base_Class bases__ZN3bbb9GG0001001E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF100E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001001E[];
+extern void _ZN3bbb9GG00010013barEv();
+extern void _ZN3bbb9GG00010013fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010013fooEv,_ZTv0_n16_N3bbb9GG00010013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00010013fooEv,_ZThn16_N3bbb9GG00010013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00010013barEv,_ZTv0_n20_N3bbb9GG00010013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00010013barEv,_ZThn16_N3bbb9GG00010013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00010013fooEv,_ZTv0_n12_N3bbb9GG00010013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00010013fooEv,_ZThn28_N3bbb9GG00010013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010013barEv,_ZTv0_n16_N3bbb9GG00010013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00010013barEv,_ZThn28_N3bbb9GG00010013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00010013fooEv,_ZTv0_n12_N3bbb9GG00010013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00010013fooEv,_ZThn36_N3bbb9GG00010013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010013barEv,_ZTv0_n16_N3bbb9GG00010013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00010013barEv,_ZThn36_N3bbb9GG00010013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0001001E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00010013barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00010013fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010013fooEv,_ZTv0_n16_N3bbb9GG00010013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00010013barEv,_ZTv0_n20_N3bbb9GG00010013barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00010013fooEv,_ZTv0_n12_N3bbb9GG00010013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010013barEv,_ZTv0_n16_N3bbb9GG00010013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00010013fooEv,_ZTv0_n12_N3bbb9GG00010013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010013barEv,_ZTv0_n16_N3bbb9GG00010013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0001001E[];
+extern void _ZN3bbb5FF1003barEv();
+extern void _ZN3bbb5FF1003fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF100E__NS_9GG0001001E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1003barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1003fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0001001E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0001001E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001001E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0001001E[] = {
+  {&(_ZTVN3bbb9GG0001001E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF100E__NS_9GG0001001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0001001E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0001001E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0001001E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0001001E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0001001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001001E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001001E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0001001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0001001E[];
+static VTBL_ENTRY alt_thunk_names26[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00010013barEv,_ZTv0_n16_N3bbb9GG00010013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00010013barEv,_ZThn36_N3bbb9GG00010013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00010013barEv,_ZThn28_N3bbb9GG00010013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00010013fooEv,_ZTv0_n12_N3bbb9GG00010013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00010013fooEv,_ZThn36_N3bbb9GG00010013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00010013fooEv,_ZThn28_N3bbb9GG00010013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00010013barEv,_ZTv0_n20_N3bbb9GG00010013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00010013barEv,_ZThn16_N3bbb9GG00010013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00010013fooEv,_ZTv0_n16_N3bbb9GG00010013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00010013fooEv,_ZThn16_N3bbb9GG00010013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0001001E = {  "_ZN3bbb9GG0001001E", // class name
+  bases__ZN3bbb9GG0001001E, 6,
+  &(vtc__ZN3bbb9GG0001001E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0001001E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0001001E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0001001E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0001001E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names26,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0001010  : virtual ::bbb::EE000 , ::bbb::FF101 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00010103fooEv
+  virtual void  bar(); // _ZN3bbb9GG00010103barEv
+  ~GG0001010(); // tgen
+  GG0001010(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0001010E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC6{ v2 v1 Fi} VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0001010 ::foo(){vfunc_called(this, "_ZN3bbb9GG00010103fooEv");}
+void  bbb::GG0001010 ::bar(){vfunc_called(this, "_ZN3bbb9GG00010103barEv");}
+bbb::GG0001010 ::~GG0001010(){ note_dtor("_ZN3bbb9GG0001010E", this);} // tgen
+bbb::GG0001010 ::GG0001010(){ note_ctor("_ZN3bbb9GG0001010E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0001010E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0001010E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0001010E, buf);
+    ::bbb::GG0001010 *dp, &lv = *(dp=new (buf) ::bbb::GG0001010());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0001010E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0001010E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0001010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001010E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001010E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF101*), 0, "_ZN3bbb9GG0001010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF101*), ABISELECT(56,36), "_ZN3bbb9GG0001010E");
+    check_base_class_offset(lv, (::bbb::FF101*), 0, "_ZN3bbb9GG0001010E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0001010E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0001010E);
+    dp->::bbb::GG0001010::~GG0001010();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0001010E(Test__ZN3bbb9GG0001010E, "_ZN3bbb9GG0001010E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0001010C1Ev();
+extern void _ZN3bbb9GG0001010D1Ev();
+Name_Map name_map__ZN3bbb9GG0001010E[] = {
+  NSPAIR(_ZN3bbb9GG0001010C1Ev),
+  NSPAIR(_ZN3bbb9GG0001010D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF101E;
+extern VTBL_ENTRY _ZTIN3bbb5FF101E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF101E[];
+static Base_Class bases__ZN3bbb9GG0001010E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF101E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001010E[];
+extern void _ZN3bbb9GG00010103barEv();
+extern void _ZN3bbb9GG00010103fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010103fooEv,_ZTv0_n16_N3bbb9GG00010103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00010103fooEv,_ZThn16_N3bbb9GG00010103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00010103barEv,_ZTv0_n20_N3bbb9GG00010103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00010103barEv,_ZThn16_N3bbb9GG00010103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00010103fooEv,_ZTv0_n12_N3bbb9GG00010103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00010103fooEv,_ZThn28_N3bbb9GG00010103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010103barEv,_ZTv0_n16_N3bbb9GG00010103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00010103barEv,_ZThn28_N3bbb9GG00010103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00010103fooEv,_ZTv0_n12_N3bbb9GG00010103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00010103fooEv,_ZThn36_N3bbb9GG00010103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010103barEv,_ZTv0_n16_N3bbb9GG00010103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00010103barEv,_ZThn36_N3bbb9GG00010103barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0001010E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00010103barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00010103fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010103fooEv,_ZTv0_n16_N3bbb9GG00010103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00010103barEv,_ZTv0_n20_N3bbb9GG00010103barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00010103fooEv,_ZTv0_n12_N3bbb9GG00010103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010103barEv,_ZTv0_n16_N3bbb9GG00010103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00010103fooEv,_ZTv0_n12_N3bbb9GG00010103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010103barEv,_ZTv0_n16_N3bbb9GG00010103barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0001010E[];
+extern void _ZN3bbb5FF1013barEv();
+extern void _ZN3bbb5FF1013fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF101E__NS_9GG0001010E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1013barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1013fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0001010E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0001010E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001010E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0001010E[] = {
+  {&(_ZTVN3bbb9GG0001010E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF101E__NS_9GG0001010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0001010E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0001010E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0001010E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0001010E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0001010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001010E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001010E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0001010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0001010E[];
+static VTBL_ENTRY alt_thunk_names27[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00010103barEv,_ZTv0_n16_N3bbb9GG00010103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00010103barEv,_ZThn36_N3bbb9GG00010103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00010103barEv,_ZThn28_N3bbb9GG00010103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00010103fooEv,_ZTv0_n12_N3bbb9GG00010103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00010103fooEv,_ZThn36_N3bbb9GG00010103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00010103fooEv,_ZThn28_N3bbb9GG00010103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00010103barEv,_ZTv0_n20_N3bbb9GG00010103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00010103barEv,_ZThn16_N3bbb9GG00010103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00010103fooEv,_ZTv0_n16_N3bbb9GG00010103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00010103fooEv,_ZThn16_N3bbb9GG00010103fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0001010E = {  "_ZN3bbb9GG0001010E", // class name
+  bases__ZN3bbb9GG0001010E, 6,
+  &(vtc__ZN3bbb9GG0001010E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0001010E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0001010E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0001010E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0001010E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names27,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0001011  : virtual ::bbb::EE000 , ::bbb::FF101 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00010113barEv
+  virtual void  foo(); // _ZN3bbb9GG00010113fooEv
+  ~GG0001011(); // tgen
+  GG0001011(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0001011E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC6{ v1 v2 Fi} VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0001011 ::bar(){vfunc_called(this, "_ZN3bbb9GG00010113barEv");}
+void  bbb::GG0001011 ::foo(){vfunc_called(this, "_ZN3bbb9GG00010113fooEv");}
+bbb::GG0001011 ::~GG0001011(){ note_dtor("_ZN3bbb9GG0001011E", this);} // tgen
+bbb::GG0001011 ::GG0001011(){ note_ctor("_ZN3bbb9GG0001011E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0001011E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0001011E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0001011E, buf);
+    ::bbb::GG0001011 *dp, &lv = *(dp=new (buf) ::bbb::GG0001011());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0001011E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0001011E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0001011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001011E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001011E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF101*), 0, "_ZN3bbb9GG0001011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF101*), ABISELECT(56,36), "_ZN3bbb9GG0001011E");
+    check_base_class_offset(lv, (::bbb::FF101*), 0, "_ZN3bbb9GG0001011E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0001011E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0001011E);
+    dp->::bbb::GG0001011::~GG0001011();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0001011E(Test__ZN3bbb9GG0001011E, "_ZN3bbb9GG0001011E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0001011C1Ev();
+extern void _ZN3bbb9GG0001011D1Ev();
+Name_Map name_map__ZN3bbb9GG0001011E[] = {
+  NSPAIR(_ZN3bbb9GG0001011C1Ev),
+  NSPAIR(_ZN3bbb9GG0001011D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF101E;
+extern VTBL_ENTRY _ZTIN3bbb5FF101E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF101E[];
+static Base_Class bases__ZN3bbb9GG0001011E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF101E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001011E[];
+extern void _ZN3bbb9GG00010113barEv();
+extern void _ZN3bbb9GG00010113fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010113fooEv,_ZTv0_n16_N3bbb9GG00010113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00010113fooEv,_ZThn16_N3bbb9GG00010113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00010113barEv,_ZTv0_n20_N3bbb9GG00010113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00010113barEv,_ZThn16_N3bbb9GG00010113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00010113fooEv,_ZTv0_n12_N3bbb9GG00010113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00010113fooEv,_ZThn28_N3bbb9GG00010113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010113barEv,_ZTv0_n16_N3bbb9GG00010113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00010113barEv,_ZThn28_N3bbb9GG00010113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00010113fooEv,_ZTv0_n12_N3bbb9GG00010113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00010113fooEv,_ZThn36_N3bbb9GG00010113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00010113barEv,_ZTv0_n16_N3bbb9GG00010113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00010113barEv,_ZThn36_N3bbb9GG00010113barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0001011E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00010113barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00010113fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010113fooEv,_ZTv0_n16_N3bbb9GG00010113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00010113barEv,_ZTv0_n20_N3bbb9GG00010113barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00010113fooEv,_ZTv0_n12_N3bbb9GG00010113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010113barEv,_ZTv0_n16_N3bbb9GG00010113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00010113fooEv,_ZTv0_n12_N3bbb9GG00010113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00010113barEv,_ZTv0_n16_N3bbb9GG00010113barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0001011E[];
+extern void _ZN3bbb5FF1013barEv();
+extern void _ZN3bbb5FF1013fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF101E__NS_9GG0001011E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1013barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1013fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0001011E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0001011E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001011E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0001011E[] = {
+  {&(_ZTVN3bbb9GG0001011E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF101E__NS_9GG0001011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0001011E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0001011E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0001011E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0001011E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0001011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001011E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001011E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0001011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0001011E[];
+static VTBL_ENTRY alt_thunk_names28[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00010113barEv,_ZTv0_n16_N3bbb9GG00010113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00010113barEv,_ZThn36_N3bbb9GG00010113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00010113barEv,_ZThn28_N3bbb9GG00010113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00010113fooEv,_ZTv0_n12_N3bbb9GG00010113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00010113fooEv,_ZThn36_N3bbb9GG00010113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00010113fooEv,_ZThn28_N3bbb9GG00010113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00010113barEv,_ZTv0_n20_N3bbb9GG00010113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00010113barEv,_ZThn16_N3bbb9GG00010113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00010113fooEv,_ZTv0_n16_N3bbb9GG00010113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00010113fooEv,_ZThn16_N3bbb9GG00010113fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0001011E = {  "_ZN3bbb9GG0001011E", // class name
+  bases__ZN3bbb9GG0001011E, 6,
+  &(vtc__ZN3bbb9GG0001011E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0001011E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0001011E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0001011E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0001011E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names28,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0001100  : virtual ::bbb::EE000 , ::bbb::FF110 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00011003fooEv
+  virtual void  bar(); // _ZN3bbb9GG00011003barEv
+  ~GG0001100(); // tgen
+  GG0001100(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0001100E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC6{ v2 v1 Fi} VBC7{ v2 v1 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0001100 ::foo(){vfunc_called(this, "_ZN3bbb9GG00011003fooEv");}
+void  bbb::GG0001100 ::bar(){vfunc_called(this, "_ZN3bbb9GG00011003barEv");}
+bbb::GG0001100 ::~GG0001100(){ note_dtor("_ZN3bbb9GG0001100E", this);} // tgen
+bbb::GG0001100 ::GG0001100(){ note_ctor("_ZN3bbb9GG0001100E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0001100E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0001100E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0001100E, buf);
+    ::bbb::GG0001100 *dp, &lv = *(dp=new (buf) ::bbb::GG0001100());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0001100E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0001100E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0001100E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001100E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001100E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF110*), 0, "_ZN3bbb9GG0001100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF110*), ABISELECT(56,36), "_ZN3bbb9GG0001100E");
+    check_base_class_offset(lv, (::bbb::FF110*), 0, "_ZN3bbb9GG0001100E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0001100E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0001100E);
+    dp->::bbb::GG0001100::~GG0001100();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0001100E(Test__ZN3bbb9GG0001100E, "_ZN3bbb9GG0001100E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0001100C1Ev();
+extern void _ZN3bbb9GG0001100D1Ev();
+Name_Map name_map__ZN3bbb9GG0001100E[] = {
+  NSPAIR(_ZN3bbb9GG0001100C1Ev),
+  NSPAIR(_ZN3bbb9GG0001100D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF110E;
+extern VTBL_ENTRY _ZTIN3bbb5FF110E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF110E[];
+static Base_Class bases__ZN3bbb9GG0001100E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF110E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001100E[];
+extern void _ZN3bbb9GG00011003barEv();
+extern void _ZN3bbb9GG00011003fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011003fooEv,_ZTv0_n16_N3bbb9GG00011003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00011003fooEv,_ZThn16_N3bbb9GG00011003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00011003barEv,_ZTv0_n20_N3bbb9GG00011003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00011003barEv,_ZThn16_N3bbb9GG00011003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00011003fooEv,_ZTv0_n12_N3bbb9GG00011003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00011003fooEv,_ZThn28_N3bbb9GG00011003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011003barEv,_ZTv0_n16_N3bbb9GG00011003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00011003barEv,_ZThn28_N3bbb9GG00011003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00011003barEv,_ZTv0_n12_N3bbb9GG00011003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00011003barEv,_ZThn36_N3bbb9GG00011003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011003fooEv,_ZTv0_n16_N3bbb9GG00011003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00011003fooEv,_ZThn36_N3bbb9GG00011003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0001100E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00011003barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00011003fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011003fooEv,_ZTv0_n16_N3bbb9GG00011003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00011003barEv,_ZTv0_n20_N3bbb9GG00011003barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00011003fooEv,_ZTv0_n12_N3bbb9GG00011003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011003barEv,_ZTv0_n16_N3bbb9GG00011003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00011003barEv,_ZTv0_n12_N3bbb9GG00011003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011003fooEv,_ZTv0_n16_N3bbb9GG00011003fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0001100E[];
+extern void _ZN3bbb5FF1103barEv();
+extern void _ZN3bbb5FF1103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF110E__NS_9GG0001100E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0001100E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0001100E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001100E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0001100E[] = {
+  {&(_ZTVN3bbb9GG0001100E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF110E__NS_9GG0001100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0001100E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0001100E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0001100E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0001100E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0001100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001100E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001100E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0001100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0001100E[];
+static VTBL_ENTRY alt_thunk_names29[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00011003barEv,_ZTv0_n12_N3bbb9GG00011003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00011003barEv,_ZThn36_N3bbb9GG00011003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00011003barEv,_ZTv0_n16_N3bbb9GG00011003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00011003barEv,_ZThn28_N3bbb9GG00011003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00011003fooEv,_ZTv0_n12_N3bbb9GG00011003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00011003fooEv,_ZThn28_N3bbb9GG00011003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00011003barEv,_ZTv0_n20_N3bbb9GG00011003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00011003barEv,_ZThn16_N3bbb9GG00011003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00011003fooEv,_ZTv0_n16_N3bbb9GG00011003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00011003fooEv,_ZThn36_N3bbb9GG00011003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00011003fooEv,_ZThn16_N3bbb9GG00011003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0001100E = {  "_ZN3bbb9GG0001100E", // class name
+  bases__ZN3bbb9GG0001100E, 6,
+  &(vtc__ZN3bbb9GG0001100E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0001100E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0001100E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0001100E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0001100E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names29,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0001101  : virtual ::bbb::EE000 , ::bbb::FF110 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00011013barEv
+  virtual void  foo(); // _ZN3bbb9GG00011013fooEv
+  ~GG0001101(); // tgen
+  GG0001101(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0001101E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC6{ v1 v2 Fi} VBC7{ v1 v2 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0001101 ::bar(){vfunc_called(this, "_ZN3bbb9GG00011013barEv");}
+void  bbb::GG0001101 ::foo(){vfunc_called(this, "_ZN3bbb9GG00011013fooEv");}
+bbb::GG0001101 ::~GG0001101(){ note_dtor("_ZN3bbb9GG0001101E", this);} // tgen
+bbb::GG0001101 ::GG0001101(){ note_ctor("_ZN3bbb9GG0001101E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0001101E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0001101E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0001101E, buf);
+    ::bbb::GG0001101 *dp, &lv = *(dp=new (buf) ::bbb::GG0001101());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0001101E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0001101E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0001101E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001101E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001101E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF110*), 0, "_ZN3bbb9GG0001101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF110*), ABISELECT(56,36), "_ZN3bbb9GG0001101E");
+    check_base_class_offset(lv, (::bbb::FF110*), 0, "_ZN3bbb9GG0001101E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0001101E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0001101E);
+    dp->::bbb::GG0001101::~GG0001101();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0001101E(Test__ZN3bbb9GG0001101E, "_ZN3bbb9GG0001101E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0001101C1Ev();
+extern void _ZN3bbb9GG0001101D1Ev();
+Name_Map name_map__ZN3bbb9GG0001101E[] = {
+  NSPAIR(_ZN3bbb9GG0001101C1Ev),
+  NSPAIR(_ZN3bbb9GG0001101D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF110E;
+extern VTBL_ENTRY _ZTIN3bbb5FF110E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF110E[];
+static Base_Class bases__ZN3bbb9GG0001101E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF110E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001101E[];
+extern void _ZN3bbb9GG00011013barEv();
+extern void _ZN3bbb9GG00011013fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011013fooEv,_ZTv0_n16_N3bbb9GG00011013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00011013fooEv,_ZThn16_N3bbb9GG00011013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00011013barEv,_ZTv0_n20_N3bbb9GG00011013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00011013barEv,_ZThn16_N3bbb9GG00011013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00011013fooEv,_ZTv0_n12_N3bbb9GG00011013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00011013fooEv,_ZThn28_N3bbb9GG00011013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011013barEv,_ZTv0_n16_N3bbb9GG00011013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00011013barEv,_ZThn28_N3bbb9GG00011013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00011013barEv,_ZTv0_n12_N3bbb9GG00011013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00011013barEv,_ZThn36_N3bbb9GG00011013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011013fooEv,_ZTv0_n16_N3bbb9GG00011013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00011013fooEv,_ZThn36_N3bbb9GG00011013fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0001101E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00011013barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00011013fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011013fooEv,_ZTv0_n16_N3bbb9GG00011013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00011013barEv,_ZTv0_n20_N3bbb9GG00011013barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00011013fooEv,_ZTv0_n12_N3bbb9GG00011013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011013barEv,_ZTv0_n16_N3bbb9GG00011013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00011013barEv,_ZTv0_n12_N3bbb9GG00011013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011013fooEv,_ZTv0_n16_N3bbb9GG00011013fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0001101E[];
+extern void _ZN3bbb5FF1103barEv();
+extern void _ZN3bbb5FF1103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF110E__NS_9GG0001101E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0001101E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0001101E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001101E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0001101E[] = {
+  {&(_ZTVN3bbb9GG0001101E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF110E__NS_9GG0001101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0001101E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0001101E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0001101E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0001101E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0001101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001101E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001101E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0001101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0001101E[];
+static VTBL_ENTRY alt_thunk_names30[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00011013barEv,_ZTv0_n12_N3bbb9GG00011013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00011013barEv,_ZThn36_N3bbb9GG00011013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00011013barEv,_ZTv0_n16_N3bbb9GG00011013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00011013barEv,_ZThn28_N3bbb9GG00011013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00011013fooEv,_ZTv0_n12_N3bbb9GG00011013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00011013fooEv,_ZThn28_N3bbb9GG00011013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00011013barEv,_ZTv0_n20_N3bbb9GG00011013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00011013barEv,_ZThn16_N3bbb9GG00011013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00011013fooEv,_ZTv0_n16_N3bbb9GG00011013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00011013fooEv,_ZThn36_N3bbb9GG00011013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00011013fooEv,_ZThn16_N3bbb9GG00011013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0001101E = {  "_ZN3bbb9GG0001101E", // class name
+  bases__ZN3bbb9GG0001101E, 6,
+  &(vtc__ZN3bbb9GG0001101E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0001101E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0001101E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0001101E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0001101E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names30,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0001110  : virtual ::bbb::EE000 , ::bbb::FF111 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00011103fooEv
+  virtual void  bar(); // _ZN3bbb9GG00011103barEv
+  ~GG0001110(); // tgen
+  GG0001110(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0001110E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC6{ v2 v1 Fi} VBC7{ v2 v1 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0001110 ::foo(){vfunc_called(this, "_ZN3bbb9GG00011103fooEv");}
+void  bbb::GG0001110 ::bar(){vfunc_called(this, "_ZN3bbb9GG00011103barEv");}
+bbb::GG0001110 ::~GG0001110(){ note_dtor("_ZN3bbb9GG0001110E", this);} // tgen
+bbb::GG0001110 ::GG0001110(){ note_ctor("_ZN3bbb9GG0001110E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0001110E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0001110E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0001110E, buf);
+    ::bbb::GG0001110 *dp, &lv = *(dp=new (buf) ::bbb::GG0001110());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0001110E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0001110E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0001110E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001110E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001110E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF111*), 0, "_ZN3bbb9GG0001110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF111*), ABISELECT(56,36), "_ZN3bbb9GG0001110E");
+    check_base_class_offset(lv, (::bbb::FF111*), 0, "_ZN3bbb9GG0001110E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0001110E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0001110E);
+    dp->::bbb::GG0001110::~GG0001110();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0001110E(Test__ZN3bbb9GG0001110E, "_ZN3bbb9GG0001110E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0001110C1Ev();
+extern void _ZN3bbb9GG0001110D1Ev();
+Name_Map name_map__ZN3bbb9GG0001110E[] = {
+  NSPAIR(_ZN3bbb9GG0001110C1Ev),
+  NSPAIR(_ZN3bbb9GG0001110D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF111E;
+extern VTBL_ENTRY _ZTIN3bbb5FF111E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF111E[];
+static Base_Class bases__ZN3bbb9GG0001110E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF111E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001110E[];
+extern void _ZN3bbb9GG00011103barEv();
+extern void _ZN3bbb9GG00011103fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011103fooEv,_ZTv0_n16_N3bbb9GG00011103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00011103fooEv,_ZThn16_N3bbb9GG00011103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00011103barEv,_ZTv0_n20_N3bbb9GG00011103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00011103barEv,_ZThn16_N3bbb9GG00011103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00011103fooEv,_ZTv0_n12_N3bbb9GG00011103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00011103fooEv,_ZThn28_N3bbb9GG00011103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011103barEv,_ZTv0_n16_N3bbb9GG00011103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00011103barEv,_ZThn28_N3bbb9GG00011103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00011103barEv,_ZTv0_n12_N3bbb9GG00011103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00011103barEv,_ZThn36_N3bbb9GG00011103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011103fooEv,_ZTv0_n16_N3bbb9GG00011103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00011103fooEv,_ZThn36_N3bbb9GG00011103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0001110E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00011103barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00011103fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011103fooEv,_ZTv0_n16_N3bbb9GG00011103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00011103barEv,_ZTv0_n20_N3bbb9GG00011103barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00011103fooEv,_ZTv0_n12_N3bbb9GG00011103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011103barEv,_ZTv0_n16_N3bbb9GG00011103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00011103barEv,_ZTv0_n12_N3bbb9GG00011103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011103fooEv,_ZTv0_n16_N3bbb9GG00011103fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0001110E[];
+extern void _ZN3bbb5FF1113barEv();
+extern void _ZN3bbb5FF1113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF111E__NS_9GG0001110E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0001110E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0001110E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001110E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0001110E[] = {
+  {&(_ZTVN3bbb9GG0001110E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF111E__NS_9GG0001110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0001110E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0001110E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0001110E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0001110E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0001110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001110E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001110E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0001110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0001110E[];
+static VTBL_ENTRY alt_thunk_names31[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00011103barEv,_ZTv0_n12_N3bbb9GG00011103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00011103barEv,_ZThn36_N3bbb9GG00011103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00011103barEv,_ZTv0_n16_N3bbb9GG00011103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00011103barEv,_ZThn28_N3bbb9GG00011103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00011103fooEv,_ZTv0_n12_N3bbb9GG00011103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00011103fooEv,_ZThn28_N3bbb9GG00011103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00011103barEv,_ZTv0_n20_N3bbb9GG00011103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00011103barEv,_ZThn16_N3bbb9GG00011103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00011103fooEv,_ZTv0_n16_N3bbb9GG00011103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00011103fooEv,_ZThn36_N3bbb9GG00011103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00011103fooEv,_ZThn16_N3bbb9GG00011103fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0001110E = {  "_ZN3bbb9GG0001110E", // class name
+  bases__ZN3bbb9GG0001110E, 6,
+  &(vtc__ZN3bbb9GG0001110E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0001110E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0001110E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0001110E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0001110E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names31,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0001111  : virtual ::bbb::EE000 , ::bbb::FF111 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00011113barEv
+  virtual void  foo(); // _ZN3bbb9GG00011113fooEv
+  ~GG0001111(); // tgen
+  GG0001111(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0001111E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC6{ v1 v2 Fi} VBC7{ v1 v2 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0001111 ::bar(){vfunc_called(this, "_ZN3bbb9GG00011113barEv");}
+void  bbb::GG0001111 ::foo(){vfunc_called(this, "_ZN3bbb9GG00011113fooEv");}
+bbb::GG0001111 ::~GG0001111(){ note_dtor("_ZN3bbb9GG0001111E", this);} // tgen
+bbb::GG0001111 ::GG0001111(){ note_ctor("_ZN3bbb9GG0001111E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0001111E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0001111E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0001111E, buf);
+    ::bbb::GG0001111 *dp, &lv = *(dp=new (buf) ::bbb::GG0001111());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0001111E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0001111E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE000*), ABISELECT(40,28), "_ZN3bbb9GG0001111E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001111E");
+    check_base_class_offset(lv, (::bbb::EE000*), ABISELECT(24,16), "_ZN3bbb9GG0001111E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF111*), 0, "_ZN3bbb9GG0001111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF111*), ABISELECT(56,36), "_ZN3bbb9GG0001111E");
+    check_base_class_offset(lv, (::bbb::FF111*), 0, "_ZN3bbb9GG0001111E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0001111E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0001111E);
+    dp->::bbb::GG0001111::~GG0001111();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0001111E(Test__ZN3bbb9GG0001111E, "_ZN3bbb9GG0001111E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0001111C1Ev();
+extern void _ZN3bbb9GG0001111D1Ev();
+Name_Map name_map__ZN3bbb9GG0001111E[] = {
+  NSPAIR(_ZN3bbb9GG0001111C1Ev),
+  NSPAIR(_ZN3bbb9GG0001111D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE000E;
+extern VTBL_ENTRY _ZTIN3bbb5EE000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE000E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF111E;
+extern VTBL_ENTRY _ZTIN3bbb5FF111E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF111E[];
+static Base_Class bases__ZN3bbb9GG0001111E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE000E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF111E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001111E[];
+extern void _ZN3bbb9GG00011113barEv();
+extern void _ZN3bbb9GG00011113fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011113fooEv,_ZTv0_n16_N3bbb9GG00011113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00011113fooEv,_ZThn16_N3bbb9GG00011113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00011113barEv,_ZTv0_n20_N3bbb9GG00011113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00011113barEv,_ZThn16_N3bbb9GG00011113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00011113fooEv,_ZTv0_n12_N3bbb9GG00011113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00011113fooEv,_ZThn28_N3bbb9GG00011113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011113barEv,_ZTv0_n16_N3bbb9GG00011113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00011113barEv,_ZThn28_N3bbb9GG00011113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00011113barEv,_ZTv0_n12_N3bbb9GG00011113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00011113barEv,_ZThn36_N3bbb9GG00011113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00011113fooEv,_ZTv0_n16_N3bbb9GG00011113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00011113fooEv,_ZThn36_N3bbb9GG00011113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0001111E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00011113barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00011113fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011113fooEv,_ZTv0_n16_N3bbb9GG00011113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00011113barEv,_ZTv0_n20_N3bbb9GG00011113barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00011113fooEv,_ZTv0_n12_N3bbb9GG00011113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011113barEv,_ZTv0_n16_N3bbb9GG00011113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0001111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00011113barEv,_ZTv0_n12_N3bbb9GG00011113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00011113fooEv,_ZTv0_n16_N3bbb9GG00011113fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0001111E[];
+extern void _ZN3bbb5FF1113barEv();
+extern void _ZN3bbb5FF1113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF111E__NS_9GG0001111E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0001111E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv),
+};
+extern void _ZN3bbb5EE0003fooEv();
+extern void _ZN3bbb5EE0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE000E__NS_9GG0001111E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001111E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0001111E[] = {
+  {&(_ZTVN3bbb9GG0001111E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF111E__NS_9GG0001111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0001111E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0001111E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0001111E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0001111E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE000E__NS_9GG0001111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE000E__NS_9GG0001111E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0001111E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0001111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0001111E[];
+static VTBL_ENTRY alt_thunk_names32[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0003barEv,_ZTv0_n16_N3bbb5EE0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003barEv,_ZThn12_N3bbb5EE0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0003fooEv,_ZTv0_n12_N3bbb5EE0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0003fooEv,_ZThn12_N3bbb5EE0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00011113barEv,_ZTv0_n12_N3bbb9GG00011113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00011113barEv,_ZThn36_N3bbb9GG00011113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00011113barEv,_ZTv0_n16_N3bbb9GG00011113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00011113barEv,_ZThn28_N3bbb9GG00011113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00011113fooEv,_ZTv0_n12_N3bbb9GG00011113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00011113fooEv,_ZThn28_N3bbb9GG00011113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00011113barEv,_ZTv0_n20_N3bbb9GG00011113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00011113barEv,_ZThn16_N3bbb9GG00011113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00011113fooEv,_ZTv0_n16_N3bbb9GG00011113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00011113fooEv,_ZThn36_N3bbb9GG00011113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00011113fooEv,_ZThn16_N3bbb9GG00011113fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0001111E = {  "_ZN3bbb9GG0001111E", // class name
+  bases__ZN3bbb9GG0001111E, 6,
+  &(vtc__ZN3bbb9GG0001111E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0001111E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0001111E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0001111E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0001111E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names32,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0010000  : virtual ::bbb::EE001 , ::bbb::FF000 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00100003fooEv
+  virtual void  bar(); // _ZN3bbb9GG00100003barEv
+  ~GG0010000(); // tgen
+  GG0010000(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0010000E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC3 VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0010000 ::foo(){vfunc_called(this, "_ZN3bbb9GG00100003fooEv");}
+void  bbb::GG0010000 ::bar(){vfunc_called(this, "_ZN3bbb9GG00100003barEv");}
+bbb::GG0010000 ::~GG0010000(){ note_dtor("_ZN3bbb9GG0010000E", this);} // tgen
+bbb::GG0010000 ::GG0010000(){ note_ctor("_ZN3bbb9GG0010000E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0010000E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0010000E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0010000E, buf);
+    ::bbb::GG0010000 *dp, &lv = *(dp=new (buf) ::bbb::GG0010000());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0010000E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0010000E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0010000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010000E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010000E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF000*), 0, "_ZN3bbb9GG0010000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF000*), ABISELECT(56,36), "_ZN3bbb9GG0010000E");
+    check_base_class_offset(lv, (::bbb::FF000*), 0, "_ZN3bbb9GG0010000E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0010000E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0010000E);
+    dp->::bbb::GG0010000::~GG0010000();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0010000E(Test__ZN3bbb9GG0010000E, "_ZN3bbb9GG0010000E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0010000C1Ev();
+extern void _ZN3bbb9GG0010000D1Ev();
+Name_Map name_map__ZN3bbb9GG0010000E[] = {
+  NSPAIR(_ZN3bbb9GG0010000C1Ev),
+  NSPAIR(_ZN3bbb9GG0010000D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF000E;
+extern VTBL_ENTRY _ZTIN3bbb5FF000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF000E[];
+static Base_Class bases__ZN3bbb9GG0010000E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF000E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010000E[];
+extern void _ZN3bbb9GG00100003fooEv();
+extern void _ZN3bbb9GG00100003barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100003fooEv,_ZTv0_n16_N3bbb9GG00100003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00100003fooEv,_ZThn16_N3bbb9GG00100003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00100003barEv,_ZTv0_n20_N3bbb9GG00100003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00100003barEv,_ZThn16_N3bbb9GG00100003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00100003fooEv,_ZTv0_n12_N3bbb9GG00100003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00100003fooEv,_ZThn28_N3bbb9GG00100003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100003barEv,_ZTv0_n16_N3bbb9GG00100003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00100003barEv,_ZThn28_N3bbb9GG00100003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00100003fooEv,_ZTv0_n12_N3bbb9GG00100003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00100003fooEv,_ZThn36_N3bbb9GG00100003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100003barEv,_ZTv0_n16_N3bbb9GG00100003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00100003barEv,_ZThn36_N3bbb9GG00100003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0010000E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00100003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00100003barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100003fooEv,_ZTv0_n16_N3bbb9GG00100003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00100003barEv,_ZTv0_n20_N3bbb9GG00100003barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00100003fooEv,_ZTv0_n12_N3bbb9GG00100003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100003barEv,_ZTv0_n16_N3bbb9GG00100003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00100003fooEv,_ZTv0_n12_N3bbb9GG00100003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100003barEv,_ZTv0_n16_N3bbb9GG00100003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0010000E[];
+extern void _ZN3bbb5FF0003fooEv();
+extern void _ZN3bbb5FF0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF000E__NS_9GG0010000E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0010000E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0010000E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010000E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0010000E[] = {
+  {&(_ZTVN3bbb9GG0010000E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF000E__NS_9GG0010000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0010000E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0010000E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0010000E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0010000E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0010000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010000E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010000E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0010000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0010000E[];
+static VTBL_ENTRY alt_thunk_names33[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00100003barEv,_ZTv0_n16_N3bbb9GG00100003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00100003barEv,_ZThn36_N3bbb9GG00100003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00100003barEv,_ZThn28_N3bbb9GG00100003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00100003fooEv,_ZTv0_n12_N3bbb9GG00100003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00100003fooEv,_ZThn36_N3bbb9GG00100003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00100003fooEv,_ZThn28_N3bbb9GG00100003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00100003barEv,_ZTv0_n20_N3bbb9GG00100003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00100003barEv,_ZThn16_N3bbb9GG00100003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00100003fooEv,_ZTv0_n16_N3bbb9GG00100003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00100003fooEv,_ZThn16_N3bbb9GG00100003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0010000E = {  "_ZN3bbb9GG0010000E", // class name
+  bases__ZN3bbb9GG0010000E, 6,
+  &(vtc__ZN3bbb9GG0010000E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0010000E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0010000E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0010000E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0010000E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names33,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0010001  : virtual ::bbb::EE001 , ::bbb::FF000 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00100013barEv
+  virtual void  foo(); // _ZN3bbb9GG00100013fooEv
+  ~GG0010001(); // tgen
+  GG0010001(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0010001E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC3 VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0010001 ::bar(){vfunc_called(this, "_ZN3bbb9GG00100013barEv");}
+void  bbb::GG0010001 ::foo(){vfunc_called(this, "_ZN3bbb9GG00100013fooEv");}
+bbb::GG0010001 ::~GG0010001(){ note_dtor("_ZN3bbb9GG0010001E", this);} // tgen
+bbb::GG0010001 ::GG0010001(){ note_ctor("_ZN3bbb9GG0010001E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0010001E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0010001E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0010001E, buf);
+    ::bbb::GG0010001 *dp, &lv = *(dp=new (buf) ::bbb::GG0010001());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0010001E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0010001E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0010001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010001E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010001E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF000*), 0, "_ZN3bbb9GG0010001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF000*), ABISELECT(56,36), "_ZN3bbb9GG0010001E");
+    check_base_class_offset(lv, (::bbb::FF000*), 0, "_ZN3bbb9GG0010001E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0010001E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0010001E);
+    dp->::bbb::GG0010001::~GG0010001();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0010001E(Test__ZN3bbb9GG0010001E, "_ZN3bbb9GG0010001E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0010001C1Ev();
+extern void _ZN3bbb9GG0010001D1Ev();
+Name_Map name_map__ZN3bbb9GG0010001E[] = {
+  NSPAIR(_ZN3bbb9GG0010001C1Ev),
+  NSPAIR(_ZN3bbb9GG0010001D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF000E;
+extern VTBL_ENTRY _ZTIN3bbb5FF000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF000E[];
+static Base_Class bases__ZN3bbb9GG0010001E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF000E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010001E[];
+extern void _ZN3bbb9GG00100013fooEv();
+extern void _ZN3bbb9GG00100013barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100013fooEv,_ZTv0_n16_N3bbb9GG00100013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00100013fooEv,_ZThn16_N3bbb9GG00100013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00100013barEv,_ZTv0_n20_N3bbb9GG00100013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00100013barEv,_ZThn16_N3bbb9GG00100013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00100013fooEv,_ZTv0_n12_N3bbb9GG00100013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00100013fooEv,_ZThn28_N3bbb9GG00100013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100013barEv,_ZTv0_n16_N3bbb9GG00100013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00100013barEv,_ZThn28_N3bbb9GG00100013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00100013fooEv,_ZTv0_n12_N3bbb9GG00100013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00100013fooEv,_ZThn36_N3bbb9GG00100013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100013barEv,_ZTv0_n16_N3bbb9GG00100013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00100013barEv,_ZThn36_N3bbb9GG00100013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0010001E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00100013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00100013barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100013fooEv,_ZTv0_n16_N3bbb9GG00100013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00100013barEv,_ZTv0_n20_N3bbb9GG00100013barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00100013fooEv,_ZTv0_n12_N3bbb9GG00100013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100013barEv,_ZTv0_n16_N3bbb9GG00100013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00100013fooEv,_ZTv0_n12_N3bbb9GG00100013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100013barEv,_ZTv0_n16_N3bbb9GG00100013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0010001E[];
+extern void _ZN3bbb5FF0003fooEv();
+extern void _ZN3bbb5FF0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF000E__NS_9GG0010001E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0010001E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0010001E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010001E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0010001E[] = {
+  {&(_ZTVN3bbb9GG0010001E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF000E__NS_9GG0010001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0010001E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0010001E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0010001E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0010001E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0010001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010001E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010001E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0010001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0010001E[];
+static VTBL_ENTRY alt_thunk_names34[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00100013barEv,_ZTv0_n16_N3bbb9GG00100013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00100013barEv,_ZThn36_N3bbb9GG00100013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00100013barEv,_ZThn28_N3bbb9GG00100013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00100013fooEv,_ZTv0_n12_N3bbb9GG00100013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00100013fooEv,_ZThn36_N3bbb9GG00100013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00100013fooEv,_ZThn28_N3bbb9GG00100013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00100013barEv,_ZTv0_n20_N3bbb9GG00100013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00100013barEv,_ZThn16_N3bbb9GG00100013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00100013fooEv,_ZTv0_n16_N3bbb9GG00100013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00100013fooEv,_ZThn16_N3bbb9GG00100013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0010001E = {  "_ZN3bbb9GG0010001E", // class name
+  bases__ZN3bbb9GG0010001E, 6,
+  &(vtc__ZN3bbb9GG0010001E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0010001E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0010001E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0010001E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0010001E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names34,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0010010  : virtual ::bbb::EE001 , ::bbb::FF001 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00100103fooEv
+  virtual void  bar(); // _ZN3bbb9GG00100103barEv
+  ~GG0010010(); // tgen
+  GG0010010(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0010010E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC3 VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0010010 ::foo(){vfunc_called(this, "_ZN3bbb9GG00100103fooEv");}
+void  bbb::GG0010010 ::bar(){vfunc_called(this, "_ZN3bbb9GG00100103barEv");}
+bbb::GG0010010 ::~GG0010010(){ note_dtor("_ZN3bbb9GG0010010E", this);} // tgen
+bbb::GG0010010 ::GG0010010(){ note_ctor("_ZN3bbb9GG0010010E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0010010E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0010010E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0010010E, buf);
+    ::bbb::GG0010010 *dp, &lv = *(dp=new (buf) ::bbb::GG0010010());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0010010E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0010010E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0010010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010010E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010010E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF001*), 0, "_ZN3bbb9GG0010010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF001*), ABISELECT(56,36), "_ZN3bbb9GG0010010E");
+    check_base_class_offset(lv, (::bbb::FF001*), 0, "_ZN3bbb9GG0010010E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0010010E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0010010E);
+    dp->::bbb::GG0010010::~GG0010010();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0010010E(Test__ZN3bbb9GG0010010E, "_ZN3bbb9GG0010010E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0010010C1Ev();
+extern void _ZN3bbb9GG0010010D1Ev();
+Name_Map name_map__ZN3bbb9GG0010010E[] = {
+  NSPAIR(_ZN3bbb9GG0010010C1Ev),
+  NSPAIR(_ZN3bbb9GG0010010D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF001E;
+extern VTBL_ENTRY _ZTIN3bbb5FF001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF001E[];
+static Base_Class bases__ZN3bbb9GG0010010E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF001E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010010E[];
+extern void _ZN3bbb9GG00100103fooEv();
+extern void _ZN3bbb9GG00100103barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100103fooEv,_ZTv0_n16_N3bbb9GG00100103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00100103fooEv,_ZThn16_N3bbb9GG00100103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00100103barEv,_ZTv0_n20_N3bbb9GG00100103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00100103barEv,_ZThn16_N3bbb9GG00100103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00100103fooEv,_ZTv0_n12_N3bbb9GG00100103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00100103fooEv,_ZThn28_N3bbb9GG00100103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100103barEv,_ZTv0_n16_N3bbb9GG00100103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00100103barEv,_ZThn28_N3bbb9GG00100103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00100103fooEv,_ZTv0_n12_N3bbb9GG00100103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00100103fooEv,_ZThn36_N3bbb9GG00100103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100103barEv,_ZTv0_n16_N3bbb9GG00100103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00100103barEv,_ZThn36_N3bbb9GG00100103barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0010010E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00100103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00100103barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100103fooEv,_ZTv0_n16_N3bbb9GG00100103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00100103barEv,_ZTv0_n20_N3bbb9GG00100103barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00100103fooEv,_ZTv0_n12_N3bbb9GG00100103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100103barEv,_ZTv0_n16_N3bbb9GG00100103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00100103fooEv,_ZTv0_n12_N3bbb9GG00100103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100103barEv,_ZTv0_n16_N3bbb9GG00100103barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0010010E[];
+extern void _ZN3bbb5FF0013fooEv();
+extern void _ZN3bbb5FF0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF001E__NS_9GG0010010E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0010010E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0010010E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010010E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0010010E[] = {
+  {&(_ZTVN3bbb9GG0010010E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF001E__NS_9GG0010010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0010010E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0010010E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0010010E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0010010E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0010010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010010E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010010E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0010010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0010010E[];
+static VTBL_ENTRY alt_thunk_names35[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00100103barEv,_ZTv0_n16_N3bbb9GG00100103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00100103barEv,_ZThn36_N3bbb9GG00100103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00100103barEv,_ZThn28_N3bbb9GG00100103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00100103fooEv,_ZTv0_n12_N3bbb9GG00100103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00100103fooEv,_ZThn36_N3bbb9GG00100103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00100103fooEv,_ZThn28_N3bbb9GG00100103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00100103barEv,_ZTv0_n20_N3bbb9GG00100103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00100103barEv,_ZThn16_N3bbb9GG00100103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00100103fooEv,_ZTv0_n16_N3bbb9GG00100103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00100103fooEv,_ZThn16_N3bbb9GG00100103fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0010010E = {  "_ZN3bbb9GG0010010E", // class name
+  bases__ZN3bbb9GG0010010E, 6,
+  &(vtc__ZN3bbb9GG0010010E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0010010E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0010010E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0010010E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0010010E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names35,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0010011  : virtual ::bbb::EE001 , ::bbb::FF001 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00100113barEv
+  virtual void  foo(); // _ZN3bbb9GG00100113fooEv
+  ~GG0010011(); // tgen
+  GG0010011(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0010011E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC3 VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0010011 ::bar(){vfunc_called(this, "_ZN3bbb9GG00100113barEv");}
+void  bbb::GG0010011 ::foo(){vfunc_called(this, "_ZN3bbb9GG00100113fooEv");}
+bbb::GG0010011 ::~GG0010011(){ note_dtor("_ZN3bbb9GG0010011E", this);} // tgen
+bbb::GG0010011 ::GG0010011(){ note_ctor("_ZN3bbb9GG0010011E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0010011E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0010011E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0010011E, buf);
+    ::bbb::GG0010011 *dp, &lv = *(dp=new (buf) ::bbb::GG0010011());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0010011E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0010011E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0010011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010011E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010011E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF001*), 0, "_ZN3bbb9GG0010011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF001*), ABISELECT(56,36), "_ZN3bbb9GG0010011E");
+    check_base_class_offset(lv, (::bbb::FF001*), 0, "_ZN3bbb9GG0010011E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0010011E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0010011E);
+    dp->::bbb::GG0010011::~GG0010011();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0010011E(Test__ZN3bbb9GG0010011E, "_ZN3bbb9GG0010011E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0010011C1Ev();
+extern void _ZN3bbb9GG0010011D1Ev();
+Name_Map name_map__ZN3bbb9GG0010011E[] = {
+  NSPAIR(_ZN3bbb9GG0010011C1Ev),
+  NSPAIR(_ZN3bbb9GG0010011D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF001E;
+extern VTBL_ENTRY _ZTIN3bbb5FF001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF001E[];
+static Base_Class bases__ZN3bbb9GG0010011E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF001E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010011E[];
+extern void _ZN3bbb9GG00100113fooEv();
+extern void _ZN3bbb9GG00100113barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100113fooEv,_ZTv0_n16_N3bbb9GG00100113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00100113fooEv,_ZThn16_N3bbb9GG00100113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00100113barEv,_ZTv0_n20_N3bbb9GG00100113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00100113barEv,_ZThn16_N3bbb9GG00100113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00100113fooEv,_ZTv0_n12_N3bbb9GG00100113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00100113fooEv,_ZThn28_N3bbb9GG00100113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100113barEv,_ZTv0_n16_N3bbb9GG00100113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00100113barEv,_ZThn28_N3bbb9GG00100113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00100113fooEv,_ZTv0_n12_N3bbb9GG00100113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00100113fooEv,_ZThn36_N3bbb9GG00100113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00100113barEv,_ZTv0_n16_N3bbb9GG00100113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00100113barEv,_ZThn36_N3bbb9GG00100113barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0010011E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00100113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00100113barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100113fooEv,_ZTv0_n16_N3bbb9GG00100113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00100113barEv,_ZTv0_n20_N3bbb9GG00100113barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00100113fooEv,_ZTv0_n12_N3bbb9GG00100113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100113barEv,_ZTv0_n16_N3bbb9GG00100113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00100113fooEv,_ZTv0_n12_N3bbb9GG00100113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00100113barEv,_ZTv0_n16_N3bbb9GG00100113barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0010011E[];
+extern void _ZN3bbb5FF0013fooEv();
+extern void _ZN3bbb5FF0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF001E__NS_9GG0010011E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0010011E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0010011E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010011E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0010011E[] = {
+  {&(_ZTVN3bbb9GG0010011E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF001E__NS_9GG0010011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0010011E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0010011E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0010011E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0010011E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0010011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010011E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010011E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0010011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0010011E[];
+static VTBL_ENTRY alt_thunk_names36[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00100113barEv,_ZTv0_n16_N3bbb9GG00100113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00100113barEv,_ZThn36_N3bbb9GG00100113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00100113barEv,_ZThn28_N3bbb9GG00100113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00100113fooEv,_ZTv0_n12_N3bbb9GG00100113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00100113fooEv,_ZThn36_N3bbb9GG00100113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00100113fooEv,_ZThn28_N3bbb9GG00100113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00100113barEv,_ZTv0_n20_N3bbb9GG00100113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00100113barEv,_ZThn16_N3bbb9GG00100113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00100113fooEv,_ZTv0_n16_N3bbb9GG00100113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00100113fooEv,_ZThn16_N3bbb9GG00100113fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0010011E = {  "_ZN3bbb9GG0010011E", // class name
+  bases__ZN3bbb9GG0010011E, 6,
+  &(vtc__ZN3bbb9GG0010011E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0010011E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0010011E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0010011E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0010011E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names36,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0010100  : virtual ::bbb::EE001 , ::bbb::FF010 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00101003fooEv
+  virtual void  bar(); // _ZN3bbb9GG00101003barEv
+  ~GG0010100(); // tgen
+  GG0010100(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0010100E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC3 VBC6{ v2 v1 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0010100 ::foo(){vfunc_called(this, "_ZN3bbb9GG00101003fooEv");}
+void  bbb::GG0010100 ::bar(){vfunc_called(this, "_ZN3bbb9GG00101003barEv");}
+bbb::GG0010100 ::~GG0010100(){ note_dtor("_ZN3bbb9GG0010100E", this);} // tgen
+bbb::GG0010100 ::GG0010100(){ note_ctor("_ZN3bbb9GG0010100E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0010100E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0010100E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0010100E, buf);
+    ::bbb::GG0010100 *dp, &lv = *(dp=new (buf) ::bbb::GG0010100());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0010100E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0010100E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0010100E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010100E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010100E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF010*), 0, "_ZN3bbb9GG0010100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF010*), ABISELECT(56,36), "_ZN3bbb9GG0010100E");
+    check_base_class_offset(lv, (::bbb::FF010*), 0, "_ZN3bbb9GG0010100E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0010100E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0010100E);
+    dp->::bbb::GG0010100::~GG0010100();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0010100E(Test__ZN3bbb9GG0010100E, "_ZN3bbb9GG0010100E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0010100C1Ev();
+extern void _ZN3bbb9GG0010100D1Ev();
+Name_Map name_map__ZN3bbb9GG0010100E[] = {
+  NSPAIR(_ZN3bbb9GG0010100C1Ev),
+  NSPAIR(_ZN3bbb9GG0010100D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF010E;
+extern VTBL_ENTRY _ZTIN3bbb5FF010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF010E[];
+static Base_Class bases__ZN3bbb9GG0010100E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF010E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010100E[];
+extern void _ZN3bbb9GG00101003fooEv();
+extern void _ZN3bbb9GG00101003barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101003fooEv,_ZTv0_n16_N3bbb9GG00101003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00101003fooEv,_ZThn16_N3bbb9GG00101003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00101003barEv,_ZTv0_n20_N3bbb9GG00101003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00101003barEv,_ZThn16_N3bbb9GG00101003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00101003fooEv,_ZTv0_n12_N3bbb9GG00101003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00101003fooEv,_ZThn28_N3bbb9GG00101003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101003barEv,_ZTv0_n16_N3bbb9GG00101003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00101003barEv,_ZThn28_N3bbb9GG00101003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00101003barEv,_ZTv0_n12_N3bbb9GG00101003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00101003barEv,_ZThn36_N3bbb9GG00101003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101003fooEv,_ZTv0_n16_N3bbb9GG00101003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00101003fooEv,_ZThn36_N3bbb9GG00101003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0010100E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00101003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00101003barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101003fooEv,_ZTv0_n16_N3bbb9GG00101003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00101003barEv,_ZTv0_n20_N3bbb9GG00101003barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00101003fooEv,_ZTv0_n12_N3bbb9GG00101003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101003barEv,_ZTv0_n16_N3bbb9GG00101003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00101003barEv,_ZTv0_n12_N3bbb9GG00101003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101003fooEv,_ZTv0_n16_N3bbb9GG00101003fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0010100E[];
+extern void _ZN3bbb5FF0103fooEv();
+extern void _ZN3bbb5FF0103barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF010E__NS_9GG0010100E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0103barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0010100E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0010100E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010100E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0010100E[] = {
+  {&(_ZTVN3bbb9GG0010100E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF010E__NS_9GG0010100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0010100E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0010100E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0010100E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0010100E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0010100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010100E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010100E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0010100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0010100E[];
+static VTBL_ENTRY alt_thunk_names37[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00101003barEv,_ZTv0_n12_N3bbb9GG00101003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00101003barEv,_ZThn36_N3bbb9GG00101003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00101003barEv,_ZTv0_n16_N3bbb9GG00101003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00101003barEv,_ZThn28_N3bbb9GG00101003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00101003fooEv,_ZTv0_n12_N3bbb9GG00101003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00101003fooEv,_ZThn28_N3bbb9GG00101003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00101003barEv,_ZTv0_n20_N3bbb9GG00101003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00101003barEv,_ZThn16_N3bbb9GG00101003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00101003fooEv,_ZTv0_n16_N3bbb9GG00101003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00101003fooEv,_ZThn36_N3bbb9GG00101003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00101003fooEv,_ZThn16_N3bbb9GG00101003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0010100E = {  "_ZN3bbb9GG0010100E", // class name
+  bases__ZN3bbb9GG0010100E, 6,
+  &(vtc__ZN3bbb9GG0010100E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0010100E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0010100E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0010100E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0010100E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names37,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0010101  : virtual ::bbb::EE001 , ::bbb::FF010 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00101013barEv
+  virtual void  foo(); // _ZN3bbb9GG00101013fooEv
+  ~GG0010101(); // tgen
+  GG0010101(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0010101E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC3 VBC6{ v1 v2 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0010101 ::bar(){vfunc_called(this, "_ZN3bbb9GG00101013barEv");}
+void  bbb::GG0010101 ::foo(){vfunc_called(this, "_ZN3bbb9GG00101013fooEv");}
+bbb::GG0010101 ::~GG0010101(){ note_dtor("_ZN3bbb9GG0010101E", this);} // tgen
+bbb::GG0010101 ::GG0010101(){ note_ctor("_ZN3bbb9GG0010101E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0010101E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0010101E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0010101E, buf);
+    ::bbb::GG0010101 *dp, &lv = *(dp=new (buf) ::bbb::GG0010101());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0010101E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0010101E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0010101E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010101E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010101E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF010*), 0, "_ZN3bbb9GG0010101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF010*), ABISELECT(56,36), "_ZN3bbb9GG0010101E");
+    check_base_class_offset(lv, (::bbb::FF010*), 0, "_ZN3bbb9GG0010101E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0010101E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0010101E);
+    dp->::bbb::GG0010101::~GG0010101();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0010101E(Test__ZN3bbb9GG0010101E, "_ZN3bbb9GG0010101E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0010101C1Ev();
+extern void _ZN3bbb9GG0010101D1Ev();
+Name_Map name_map__ZN3bbb9GG0010101E[] = {
+  NSPAIR(_ZN3bbb9GG0010101C1Ev),
+  NSPAIR(_ZN3bbb9GG0010101D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF010E;
+extern VTBL_ENTRY _ZTIN3bbb5FF010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF010E[];
+static Base_Class bases__ZN3bbb9GG0010101E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF010E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010101E[];
+extern void _ZN3bbb9GG00101013fooEv();
+extern void _ZN3bbb9GG00101013barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101013fooEv,_ZTv0_n16_N3bbb9GG00101013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00101013fooEv,_ZThn16_N3bbb9GG00101013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00101013barEv,_ZTv0_n20_N3bbb9GG00101013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00101013barEv,_ZThn16_N3bbb9GG00101013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00101013fooEv,_ZTv0_n12_N3bbb9GG00101013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00101013fooEv,_ZThn28_N3bbb9GG00101013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101013barEv,_ZTv0_n16_N3bbb9GG00101013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00101013barEv,_ZThn28_N3bbb9GG00101013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00101013barEv,_ZTv0_n12_N3bbb9GG00101013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00101013barEv,_ZThn36_N3bbb9GG00101013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101013fooEv,_ZTv0_n16_N3bbb9GG00101013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00101013fooEv,_ZThn36_N3bbb9GG00101013fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0010101E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00101013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00101013barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101013fooEv,_ZTv0_n16_N3bbb9GG00101013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00101013barEv,_ZTv0_n20_N3bbb9GG00101013barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00101013fooEv,_ZTv0_n12_N3bbb9GG00101013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101013barEv,_ZTv0_n16_N3bbb9GG00101013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00101013barEv,_ZTv0_n12_N3bbb9GG00101013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101013fooEv,_ZTv0_n16_N3bbb9GG00101013fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0010101E[];
+extern void _ZN3bbb5FF0103fooEv();
+extern void _ZN3bbb5FF0103barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF010E__NS_9GG0010101E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0103barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0010101E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0010101E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010101E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0010101E[] = {
+  {&(_ZTVN3bbb9GG0010101E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF010E__NS_9GG0010101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0010101E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0010101E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0010101E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0010101E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0010101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010101E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010101E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0010101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0010101E[];
+static VTBL_ENTRY alt_thunk_names38[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00101013barEv,_ZTv0_n12_N3bbb9GG00101013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00101013barEv,_ZThn36_N3bbb9GG00101013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00101013barEv,_ZTv0_n16_N3bbb9GG00101013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00101013barEv,_ZThn28_N3bbb9GG00101013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00101013fooEv,_ZTv0_n12_N3bbb9GG00101013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00101013fooEv,_ZThn28_N3bbb9GG00101013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00101013barEv,_ZTv0_n20_N3bbb9GG00101013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00101013barEv,_ZThn16_N3bbb9GG00101013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00101013fooEv,_ZTv0_n16_N3bbb9GG00101013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00101013fooEv,_ZThn36_N3bbb9GG00101013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00101013fooEv,_ZThn16_N3bbb9GG00101013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0010101E = {  "_ZN3bbb9GG0010101E", // class name
+  bases__ZN3bbb9GG0010101E, 6,
+  &(vtc__ZN3bbb9GG0010101E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0010101E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0010101E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0010101E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0010101E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names38,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0010110  : virtual ::bbb::EE001 , ::bbb::FF011 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00101103fooEv
+  virtual void  bar(); // _ZN3bbb9GG00101103barEv
+  ~GG0010110(); // tgen
+  GG0010110(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0010110E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC3 VBC6{ v2 v1 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0010110 ::foo(){vfunc_called(this, "_ZN3bbb9GG00101103fooEv");}
+void  bbb::GG0010110 ::bar(){vfunc_called(this, "_ZN3bbb9GG00101103barEv");}
+bbb::GG0010110 ::~GG0010110(){ note_dtor("_ZN3bbb9GG0010110E", this);} // tgen
+bbb::GG0010110 ::GG0010110(){ note_ctor("_ZN3bbb9GG0010110E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0010110E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0010110E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0010110E, buf);
+    ::bbb::GG0010110 *dp, &lv = *(dp=new (buf) ::bbb::GG0010110());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0010110E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0010110E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0010110E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010110E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010110E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF011*), 0, "_ZN3bbb9GG0010110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF011*), ABISELECT(56,36), "_ZN3bbb9GG0010110E");
+    check_base_class_offset(lv, (::bbb::FF011*), 0, "_ZN3bbb9GG0010110E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0010110E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0010110E);
+    dp->::bbb::GG0010110::~GG0010110();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0010110E(Test__ZN3bbb9GG0010110E, "_ZN3bbb9GG0010110E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0010110C1Ev();
+extern void _ZN3bbb9GG0010110D1Ev();
+Name_Map name_map__ZN3bbb9GG0010110E[] = {
+  NSPAIR(_ZN3bbb9GG0010110C1Ev),
+  NSPAIR(_ZN3bbb9GG0010110D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF011E;
+extern VTBL_ENTRY _ZTIN3bbb5FF011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF011E[];
+static Base_Class bases__ZN3bbb9GG0010110E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF011E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010110E[];
+extern void _ZN3bbb9GG00101103fooEv();
+extern void _ZN3bbb9GG00101103barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101103fooEv,_ZTv0_n16_N3bbb9GG00101103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00101103fooEv,_ZThn16_N3bbb9GG00101103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00101103barEv,_ZTv0_n20_N3bbb9GG00101103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00101103barEv,_ZThn16_N3bbb9GG00101103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00101103fooEv,_ZTv0_n12_N3bbb9GG00101103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00101103fooEv,_ZThn28_N3bbb9GG00101103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101103barEv,_ZTv0_n16_N3bbb9GG00101103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00101103barEv,_ZThn28_N3bbb9GG00101103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00101103barEv,_ZTv0_n12_N3bbb9GG00101103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00101103barEv,_ZThn36_N3bbb9GG00101103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101103fooEv,_ZTv0_n16_N3bbb9GG00101103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00101103fooEv,_ZThn36_N3bbb9GG00101103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0010110E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00101103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00101103barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101103fooEv,_ZTv0_n16_N3bbb9GG00101103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00101103barEv,_ZTv0_n20_N3bbb9GG00101103barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00101103fooEv,_ZTv0_n12_N3bbb9GG00101103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101103barEv,_ZTv0_n16_N3bbb9GG00101103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00101103barEv,_ZTv0_n12_N3bbb9GG00101103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101103fooEv,_ZTv0_n16_N3bbb9GG00101103fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0010110E[];
+extern void _ZN3bbb5FF0113fooEv();
+extern void _ZN3bbb5FF0113barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF011E__NS_9GG0010110E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0113barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0010110E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0010110E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010110E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0010110E[] = {
+  {&(_ZTVN3bbb9GG0010110E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF011E__NS_9GG0010110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0010110E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0010110E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0010110E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0010110E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0010110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010110E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010110E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0010110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0010110E[];
+static VTBL_ENTRY alt_thunk_names39[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00101103barEv,_ZTv0_n12_N3bbb9GG00101103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00101103barEv,_ZThn36_N3bbb9GG00101103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00101103barEv,_ZTv0_n16_N3bbb9GG00101103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00101103barEv,_ZThn28_N3bbb9GG00101103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00101103fooEv,_ZTv0_n12_N3bbb9GG00101103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00101103fooEv,_ZThn28_N3bbb9GG00101103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00101103barEv,_ZTv0_n20_N3bbb9GG00101103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00101103barEv,_ZThn16_N3bbb9GG00101103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00101103fooEv,_ZTv0_n16_N3bbb9GG00101103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00101103fooEv,_ZThn36_N3bbb9GG00101103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00101103fooEv,_ZThn16_N3bbb9GG00101103fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0010110E = {  "_ZN3bbb9GG0010110E", // class name
+  bases__ZN3bbb9GG0010110E, 6,
+  &(vtc__ZN3bbb9GG0010110E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0010110E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0010110E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0010110E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0010110E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names39,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0010111  : virtual ::bbb::EE001 , ::bbb::FF011 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00101113barEv
+  virtual void  foo(); // _ZN3bbb9GG00101113fooEv
+  ~GG0010111(); // tgen
+  GG0010111(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0010111E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC3 VBC6{ v1 v2 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0010111 ::bar(){vfunc_called(this, "_ZN3bbb9GG00101113barEv");}
+void  bbb::GG0010111 ::foo(){vfunc_called(this, "_ZN3bbb9GG00101113fooEv");}
+bbb::GG0010111 ::~GG0010111(){ note_dtor("_ZN3bbb9GG0010111E", this);} // tgen
+bbb::GG0010111 ::GG0010111(){ note_ctor("_ZN3bbb9GG0010111E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0010111E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0010111E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0010111E, buf);
+    ::bbb::GG0010111 *dp, &lv = *(dp=new (buf) ::bbb::GG0010111());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0010111E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0010111E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0010111E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010111E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0010111E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF011*), 0, "_ZN3bbb9GG0010111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF011*), ABISELECT(56,36), "_ZN3bbb9GG0010111E");
+    check_base_class_offset(lv, (::bbb::FF011*), 0, "_ZN3bbb9GG0010111E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0010111E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0010111E);
+    dp->::bbb::GG0010111::~GG0010111();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0010111E(Test__ZN3bbb9GG0010111E, "_ZN3bbb9GG0010111E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0010111C1Ev();
+extern void _ZN3bbb9GG0010111D1Ev();
+Name_Map name_map__ZN3bbb9GG0010111E[] = {
+  NSPAIR(_ZN3bbb9GG0010111C1Ev),
+  NSPAIR(_ZN3bbb9GG0010111D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF011E;
+extern VTBL_ENTRY _ZTIN3bbb5FF011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF011E[];
+static Base_Class bases__ZN3bbb9GG0010111E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF011E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010111E[];
+extern void _ZN3bbb9GG00101113fooEv();
+extern void _ZN3bbb9GG00101113barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101113fooEv,_ZTv0_n16_N3bbb9GG00101113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00101113fooEv,_ZThn16_N3bbb9GG00101113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00101113barEv,_ZTv0_n20_N3bbb9GG00101113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00101113barEv,_ZThn16_N3bbb9GG00101113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00101113fooEv,_ZTv0_n12_N3bbb9GG00101113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00101113fooEv,_ZThn28_N3bbb9GG00101113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101113barEv,_ZTv0_n16_N3bbb9GG00101113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00101113barEv,_ZThn28_N3bbb9GG00101113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00101113barEv,_ZTv0_n12_N3bbb9GG00101113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00101113barEv,_ZThn36_N3bbb9GG00101113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00101113fooEv,_ZTv0_n16_N3bbb9GG00101113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00101113fooEv,_ZThn36_N3bbb9GG00101113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0010111E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00101113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00101113barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101113fooEv,_ZTv0_n16_N3bbb9GG00101113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00101113barEv,_ZTv0_n20_N3bbb9GG00101113barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00101113fooEv,_ZTv0_n12_N3bbb9GG00101113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101113barEv,_ZTv0_n16_N3bbb9GG00101113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0010111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00101113barEv,_ZTv0_n12_N3bbb9GG00101113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00101113fooEv,_ZTv0_n16_N3bbb9GG00101113fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0010111E[];
+extern void _ZN3bbb5FF0113fooEv();
+extern void _ZN3bbb5FF0113barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF011E__NS_9GG0010111E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0113barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0010111E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0010111E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010111E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0010111E[] = {
+  {&(_ZTVN3bbb9GG0010111E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF011E__NS_9GG0010111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0010111E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0010111E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0010111E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0010111E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0010111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0010111E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0010111E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0010111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0010111E[];
+static VTBL_ENTRY alt_thunk_names40[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00101113barEv,_ZTv0_n12_N3bbb9GG00101113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00101113barEv,_ZThn36_N3bbb9GG00101113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00101113barEv,_ZTv0_n16_N3bbb9GG00101113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00101113barEv,_ZThn28_N3bbb9GG00101113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00101113fooEv,_ZTv0_n12_N3bbb9GG00101113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00101113fooEv,_ZThn28_N3bbb9GG00101113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00101113barEv,_ZTv0_n20_N3bbb9GG00101113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00101113barEv,_ZThn16_N3bbb9GG00101113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00101113fooEv,_ZTv0_n16_N3bbb9GG00101113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00101113fooEv,_ZThn36_N3bbb9GG00101113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00101113fooEv,_ZThn16_N3bbb9GG00101113fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0010111E = {  "_ZN3bbb9GG0010111E", // class name
+  bases__ZN3bbb9GG0010111E, 6,
+  &(vtc__ZN3bbb9GG0010111E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0010111E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0010111E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0010111E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0010111E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names40,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0011000  : virtual ::bbb::EE001 , ::bbb::FF100 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00110003fooEv
+  virtual void  bar(); // _ZN3bbb9GG00110003barEv
+  ~GG0011000(); // tgen
+  GG0011000(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0011000E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC6{ v2 v1 Fi} VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0011000 ::foo(){vfunc_called(this, "_ZN3bbb9GG00110003fooEv");}
+void  bbb::GG0011000 ::bar(){vfunc_called(this, "_ZN3bbb9GG00110003barEv");}
+bbb::GG0011000 ::~GG0011000(){ note_dtor("_ZN3bbb9GG0011000E", this);} // tgen
+bbb::GG0011000 ::GG0011000(){ note_ctor("_ZN3bbb9GG0011000E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0011000E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0011000E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0011000E, buf);
+    ::bbb::GG0011000 *dp, &lv = *(dp=new (buf) ::bbb::GG0011000());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0011000E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0011000E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0011000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011000E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011000E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF100*), 0, "_ZN3bbb9GG0011000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF100*), ABISELECT(56,36), "_ZN3bbb9GG0011000E");
+    check_base_class_offset(lv, (::bbb::FF100*), 0, "_ZN3bbb9GG0011000E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0011000E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0011000E);
+    dp->::bbb::GG0011000::~GG0011000();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0011000E(Test__ZN3bbb9GG0011000E, "_ZN3bbb9GG0011000E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0011000C1Ev();
+extern void _ZN3bbb9GG0011000D1Ev();
+Name_Map name_map__ZN3bbb9GG0011000E[] = {
+  NSPAIR(_ZN3bbb9GG0011000C1Ev),
+  NSPAIR(_ZN3bbb9GG0011000D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF100E;
+extern VTBL_ENTRY _ZTIN3bbb5FF100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF100E[];
+static Base_Class bases__ZN3bbb9GG0011000E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF100E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011000E[];
+extern void _ZN3bbb9GG00110003barEv();
+extern void _ZN3bbb9GG00110003fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110003fooEv,_ZTv0_n16_N3bbb9GG00110003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00110003fooEv,_ZThn16_N3bbb9GG00110003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00110003barEv,_ZTv0_n20_N3bbb9GG00110003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00110003barEv,_ZThn16_N3bbb9GG00110003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00110003fooEv,_ZTv0_n12_N3bbb9GG00110003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00110003fooEv,_ZThn28_N3bbb9GG00110003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110003barEv,_ZTv0_n16_N3bbb9GG00110003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00110003barEv,_ZThn28_N3bbb9GG00110003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00110003fooEv,_ZTv0_n12_N3bbb9GG00110003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00110003fooEv,_ZThn36_N3bbb9GG00110003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110003barEv,_ZTv0_n16_N3bbb9GG00110003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00110003barEv,_ZThn36_N3bbb9GG00110003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0011000E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00110003barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00110003fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110003fooEv,_ZTv0_n16_N3bbb9GG00110003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00110003barEv,_ZTv0_n20_N3bbb9GG00110003barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00110003fooEv,_ZTv0_n12_N3bbb9GG00110003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110003barEv,_ZTv0_n16_N3bbb9GG00110003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00110003fooEv,_ZTv0_n12_N3bbb9GG00110003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110003barEv,_ZTv0_n16_N3bbb9GG00110003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0011000E[];
+extern void _ZN3bbb5FF1003barEv();
+extern void _ZN3bbb5FF1003fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF100E__NS_9GG0011000E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1003barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1003fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0011000E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0011000E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011000E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0011000E[] = {
+  {&(_ZTVN3bbb9GG0011000E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF100E__NS_9GG0011000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0011000E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0011000E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0011000E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0011000E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0011000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011000E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011000E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0011000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0011000E[];
+static VTBL_ENTRY alt_thunk_names41[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00110003barEv,_ZTv0_n16_N3bbb9GG00110003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00110003barEv,_ZThn36_N3bbb9GG00110003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00110003barEv,_ZThn28_N3bbb9GG00110003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00110003fooEv,_ZTv0_n12_N3bbb9GG00110003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00110003fooEv,_ZThn36_N3bbb9GG00110003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00110003fooEv,_ZThn28_N3bbb9GG00110003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00110003barEv,_ZTv0_n20_N3bbb9GG00110003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00110003barEv,_ZThn16_N3bbb9GG00110003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00110003fooEv,_ZTv0_n16_N3bbb9GG00110003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00110003fooEv,_ZThn16_N3bbb9GG00110003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0011000E = {  "_ZN3bbb9GG0011000E", // class name
+  bases__ZN3bbb9GG0011000E, 6,
+  &(vtc__ZN3bbb9GG0011000E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0011000E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0011000E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0011000E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0011000E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names41,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0011001  : virtual ::bbb::EE001 , ::bbb::FF100 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00110013barEv
+  virtual void  foo(); // _ZN3bbb9GG00110013fooEv
+  ~GG0011001(); // tgen
+  GG0011001(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0011001E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC6{ v1 v2 Fi} VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0011001 ::bar(){vfunc_called(this, "_ZN3bbb9GG00110013barEv");}
+void  bbb::GG0011001 ::foo(){vfunc_called(this, "_ZN3bbb9GG00110013fooEv");}
+bbb::GG0011001 ::~GG0011001(){ note_dtor("_ZN3bbb9GG0011001E", this);} // tgen
+bbb::GG0011001 ::GG0011001(){ note_ctor("_ZN3bbb9GG0011001E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0011001E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0011001E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0011001E, buf);
+    ::bbb::GG0011001 *dp, &lv = *(dp=new (buf) ::bbb::GG0011001());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0011001E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0011001E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0011001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011001E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011001E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF100*), 0, "_ZN3bbb9GG0011001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF100*), ABISELECT(56,36), "_ZN3bbb9GG0011001E");
+    check_base_class_offset(lv, (::bbb::FF100*), 0, "_ZN3bbb9GG0011001E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0011001E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0011001E);
+    dp->::bbb::GG0011001::~GG0011001();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0011001E(Test__ZN3bbb9GG0011001E, "_ZN3bbb9GG0011001E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0011001C1Ev();
+extern void _ZN3bbb9GG0011001D1Ev();
+Name_Map name_map__ZN3bbb9GG0011001E[] = {
+  NSPAIR(_ZN3bbb9GG0011001C1Ev),
+  NSPAIR(_ZN3bbb9GG0011001D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF100E;
+extern VTBL_ENTRY _ZTIN3bbb5FF100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF100E[];
+static Base_Class bases__ZN3bbb9GG0011001E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF100E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011001E[];
+extern void _ZN3bbb9GG00110013barEv();
+extern void _ZN3bbb9GG00110013fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110013fooEv,_ZTv0_n16_N3bbb9GG00110013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00110013fooEv,_ZThn16_N3bbb9GG00110013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00110013barEv,_ZTv0_n20_N3bbb9GG00110013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00110013barEv,_ZThn16_N3bbb9GG00110013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00110013fooEv,_ZTv0_n12_N3bbb9GG00110013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00110013fooEv,_ZThn28_N3bbb9GG00110013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110013barEv,_ZTv0_n16_N3bbb9GG00110013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00110013barEv,_ZThn28_N3bbb9GG00110013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00110013fooEv,_ZTv0_n12_N3bbb9GG00110013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00110013fooEv,_ZThn36_N3bbb9GG00110013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110013barEv,_ZTv0_n16_N3bbb9GG00110013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00110013barEv,_ZThn36_N3bbb9GG00110013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0011001E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00110013barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00110013fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110013fooEv,_ZTv0_n16_N3bbb9GG00110013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00110013barEv,_ZTv0_n20_N3bbb9GG00110013barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00110013fooEv,_ZTv0_n12_N3bbb9GG00110013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110013barEv,_ZTv0_n16_N3bbb9GG00110013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00110013fooEv,_ZTv0_n12_N3bbb9GG00110013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110013barEv,_ZTv0_n16_N3bbb9GG00110013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0011001E[];
+extern void _ZN3bbb5FF1003barEv();
+extern void _ZN3bbb5FF1003fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF100E__NS_9GG0011001E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1003barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1003fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0011001E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0011001E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011001E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0011001E[] = {
+  {&(_ZTVN3bbb9GG0011001E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF100E__NS_9GG0011001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0011001E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0011001E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0011001E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0011001E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0011001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011001E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011001E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0011001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0011001E[];
+static VTBL_ENTRY alt_thunk_names42[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00110013barEv,_ZTv0_n16_N3bbb9GG00110013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00110013barEv,_ZThn36_N3bbb9GG00110013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00110013barEv,_ZThn28_N3bbb9GG00110013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00110013fooEv,_ZTv0_n12_N3bbb9GG00110013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00110013fooEv,_ZThn36_N3bbb9GG00110013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00110013fooEv,_ZThn28_N3bbb9GG00110013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00110013barEv,_ZTv0_n20_N3bbb9GG00110013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00110013barEv,_ZThn16_N3bbb9GG00110013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00110013fooEv,_ZTv0_n16_N3bbb9GG00110013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00110013fooEv,_ZThn16_N3bbb9GG00110013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0011001E = {  "_ZN3bbb9GG0011001E", // class name
+  bases__ZN3bbb9GG0011001E, 6,
+  &(vtc__ZN3bbb9GG0011001E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0011001E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0011001E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0011001E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0011001E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names42,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0011010  : virtual ::bbb::EE001 , ::bbb::FF101 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00110103fooEv
+  virtual void  bar(); // _ZN3bbb9GG00110103barEv
+  ~GG0011010(); // tgen
+  GG0011010(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0011010E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC6{ v2 v1 Fi} VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0011010 ::foo(){vfunc_called(this, "_ZN3bbb9GG00110103fooEv");}
+void  bbb::GG0011010 ::bar(){vfunc_called(this, "_ZN3bbb9GG00110103barEv");}
+bbb::GG0011010 ::~GG0011010(){ note_dtor("_ZN3bbb9GG0011010E", this);} // tgen
+bbb::GG0011010 ::GG0011010(){ note_ctor("_ZN3bbb9GG0011010E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0011010E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0011010E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0011010E, buf);
+    ::bbb::GG0011010 *dp, &lv = *(dp=new (buf) ::bbb::GG0011010());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0011010E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0011010E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0011010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011010E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011010E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF101*), 0, "_ZN3bbb9GG0011010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF101*), ABISELECT(56,36), "_ZN3bbb9GG0011010E");
+    check_base_class_offset(lv, (::bbb::FF101*), 0, "_ZN3bbb9GG0011010E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0011010E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0011010E);
+    dp->::bbb::GG0011010::~GG0011010();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0011010E(Test__ZN3bbb9GG0011010E, "_ZN3bbb9GG0011010E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0011010C1Ev();
+extern void _ZN3bbb9GG0011010D1Ev();
+Name_Map name_map__ZN3bbb9GG0011010E[] = {
+  NSPAIR(_ZN3bbb9GG0011010C1Ev),
+  NSPAIR(_ZN3bbb9GG0011010D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF101E;
+extern VTBL_ENTRY _ZTIN3bbb5FF101E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF101E[];
+static Base_Class bases__ZN3bbb9GG0011010E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF101E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011010E[];
+extern void _ZN3bbb9GG00110103barEv();
+extern void _ZN3bbb9GG00110103fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110103fooEv,_ZTv0_n16_N3bbb9GG00110103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00110103fooEv,_ZThn16_N3bbb9GG00110103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00110103barEv,_ZTv0_n20_N3bbb9GG00110103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00110103barEv,_ZThn16_N3bbb9GG00110103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00110103fooEv,_ZTv0_n12_N3bbb9GG00110103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00110103fooEv,_ZThn28_N3bbb9GG00110103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110103barEv,_ZTv0_n16_N3bbb9GG00110103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00110103barEv,_ZThn28_N3bbb9GG00110103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00110103fooEv,_ZTv0_n12_N3bbb9GG00110103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00110103fooEv,_ZThn36_N3bbb9GG00110103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110103barEv,_ZTv0_n16_N3bbb9GG00110103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00110103barEv,_ZThn36_N3bbb9GG00110103barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0011010E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00110103barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00110103fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110103fooEv,_ZTv0_n16_N3bbb9GG00110103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00110103barEv,_ZTv0_n20_N3bbb9GG00110103barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00110103fooEv,_ZTv0_n12_N3bbb9GG00110103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110103barEv,_ZTv0_n16_N3bbb9GG00110103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00110103fooEv,_ZTv0_n12_N3bbb9GG00110103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110103barEv,_ZTv0_n16_N3bbb9GG00110103barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0011010E[];
+extern void _ZN3bbb5FF1013barEv();
+extern void _ZN3bbb5FF1013fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF101E__NS_9GG0011010E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1013barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1013fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0011010E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0011010E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011010E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0011010E[] = {
+  {&(_ZTVN3bbb9GG0011010E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF101E__NS_9GG0011010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0011010E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0011010E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0011010E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0011010E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0011010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011010E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011010E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0011010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0011010E[];
+static VTBL_ENTRY alt_thunk_names43[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00110103barEv,_ZTv0_n16_N3bbb9GG00110103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00110103barEv,_ZThn36_N3bbb9GG00110103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00110103barEv,_ZThn28_N3bbb9GG00110103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00110103fooEv,_ZTv0_n12_N3bbb9GG00110103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00110103fooEv,_ZThn36_N3bbb9GG00110103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00110103fooEv,_ZThn28_N3bbb9GG00110103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00110103barEv,_ZTv0_n20_N3bbb9GG00110103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00110103barEv,_ZThn16_N3bbb9GG00110103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00110103fooEv,_ZTv0_n16_N3bbb9GG00110103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00110103fooEv,_ZThn16_N3bbb9GG00110103fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0011010E = {  "_ZN3bbb9GG0011010E", // class name
+  bases__ZN3bbb9GG0011010E, 6,
+  &(vtc__ZN3bbb9GG0011010E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0011010E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0011010E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0011010E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0011010E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names43,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0011011  : virtual ::bbb::EE001 , ::bbb::FF101 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00110113barEv
+  virtual void  foo(); // _ZN3bbb9GG00110113fooEv
+  ~GG0011011(); // tgen
+  GG0011011(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0011011E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC6{ v1 v2 Fi} VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0011011 ::bar(){vfunc_called(this, "_ZN3bbb9GG00110113barEv");}
+void  bbb::GG0011011 ::foo(){vfunc_called(this, "_ZN3bbb9GG00110113fooEv");}
+bbb::GG0011011 ::~GG0011011(){ note_dtor("_ZN3bbb9GG0011011E", this);} // tgen
+bbb::GG0011011 ::GG0011011(){ note_ctor("_ZN3bbb9GG0011011E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0011011E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0011011E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0011011E, buf);
+    ::bbb::GG0011011 *dp, &lv = *(dp=new (buf) ::bbb::GG0011011());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0011011E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0011011E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0011011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011011E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011011E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF101*), 0, "_ZN3bbb9GG0011011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF101*), ABISELECT(56,36), "_ZN3bbb9GG0011011E");
+    check_base_class_offset(lv, (::bbb::FF101*), 0, "_ZN3bbb9GG0011011E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0011011E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0011011E);
+    dp->::bbb::GG0011011::~GG0011011();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0011011E(Test__ZN3bbb9GG0011011E, "_ZN3bbb9GG0011011E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0011011C1Ev();
+extern void _ZN3bbb9GG0011011D1Ev();
+Name_Map name_map__ZN3bbb9GG0011011E[] = {
+  NSPAIR(_ZN3bbb9GG0011011C1Ev),
+  NSPAIR(_ZN3bbb9GG0011011D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF101E;
+extern VTBL_ENTRY _ZTIN3bbb5FF101E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF101E[];
+static Base_Class bases__ZN3bbb9GG0011011E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF101E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011011E[];
+extern void _ZN3bbb9GG00110113barEv();
+extern void _ZN3bbb9GG00110113fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110113fooEv,_ZTv0_n16_N3bbb9GG00110113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00110113fooEv,_ZThn16_N3bbb9GG00110113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00110113barEv,_ZTv0_n20_N3bbb9GG00110113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00110113barEv,_ZThn16_N3bbb9GG00110113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00110113fooEv,_ZTv0_n12_N3bbb9GG00110113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00110113fooEv,_ZThn28_N3bbb9GG00110113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110113barEv,_ZTv0_n16_N3bbb9GG00110113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00110113barEv,_ZThn28_N3bbb9GG00110113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00110113fooEv,_ZTv0_n12_N3bbb9GG00110113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00110113fooEv,_ZThn36_N3bbb9GG00110113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00110113barEv,_ZTv0_n16_N3bbb9GG00110113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00110113barEv,_ZThn36_N3bbb9GG00110113barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0011011E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00110113barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00110113fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110113fooEv,_ZTv0_n16_N3bbb9GG00110113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00110113barEv,_ZTv0_n20_N3bbb9GG00110113barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00110113fooEv,_ZTv0_n12_N3bbb9GG00110113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110113barEv,_ZTv0_n16_N3bbb9GG00110113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00110113fooEv,_ZTv0_n12_N3bbb9GG00110113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00110113barEv,_ZTv0_n16_N3bbb9GG00110113barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0011011E[];
+extern void _ZN3bbb5FF1013barEv();
+extern void _ZN3bbb5FF1013fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF101E__NS_9GG0011011E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1013barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1013fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0011011E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0011011E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011011E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0011011E[] = {
+  {&(_ZTVN3bbb9GG0011011E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF101E__NS_9GG0011011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0011011E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0011011E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0011011E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0011011E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0011011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011011E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011011E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0011011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0011011E[];
+static VTBL_ENTRY alt_thunk_names44[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00110113barEv,_ZTv0_n16_N3bbb9GG00110113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00110113barEv,_ZThn36_N3bbb9GG00110113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00110113barEv,_ZThn28_N3bbb9GG00110113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00110113fooEv,_ZTv0_n12_N3bbb9GG00110113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00110113fooEv,_ZThn36_N3bbb9GG00110113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00110113fooEv,_ZThn28_N3bbb9GG00110113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00110113barEv,_ZTv0_n20_N3bbb9GG00110113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00110113barEv,_ZThn16_N3bbb9GG00110113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00110113fooEv,_ZTv0_n16_N3bbb9GG00110113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00110113fooEv,_ZThn16_N3bbb9GG00110113fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0011011E = {  "_ZN3bbb9GG0011011E", // class name
+  bases__ZN3bbb9GG0011011E, 6,
+  &(vtc__ZN3bbb9GG0011011E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0011011E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0011011E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0011011E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0011011E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names44,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0011100  : virtual ::bbb::EE001 , ::bbb::FF110 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00111003fooEv
+  virtual void  bar(); // _ZN3bbb9GG00111003barEv
+  ~GG0011100(); // tgen
+  GG0011100(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0011100E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC6{ v2 v1 Fi} VBC7{ v2 v1 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0011100 ::foo(){vfunc_called(this, "_ZN3bbb9GG00111003fooEv");}
+void  bbb::GG0011100 ::bar(){vfunc_called(this, "_ZN3bbb9GG00111003barEv");}
+bbb::GG0011100 ::~GG0011100(){ note_dtor("_ZN3bbb9GG0011100E", this);} // tgen
+bbb::GG0011100 ::GG0011100(){ note_ctor("_ZN3bbb9GG0011100E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0011100E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0011100E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0011100E, buf);
+    ::bbb::GG0011100 *dp, &lv = *(dp=new (buf) ::bbb::GG0011100());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0011100E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0011100E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0011100E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011100E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011100E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF110*), 0, "_ZN3bbb9GG0011100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF110*), ABISELECT(56,36), "_ZN3bbb9GG0011100E");
+    check_base_class_offset(lv, (::bbb::FF110*), 0, "_ZN3bbb9GG0011100E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0011100E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0011100E);
+    dp->::bbb::GG0011100::~GG0011100();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0011100E(Test__ZN3bbb9GG0011100E, "_ZN3bbb9GG0011100E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0011100C1Ev();
+extern void _ZN3bbb9GG0011100D1Ev();
+Name_Map name_map__ZN3bbb9GG0011100E[] = {
+  NSPAIR(_ZN3bbb9GG0011100C1Ev),
+  NSPAIR(_ZN3bbb9GG0011100D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF110E;
+extern VTBL_ENTRY _ZTIN3bbb5FF110E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF110E[];
+static Base_Class bases__ZN3bbb9GG0011100E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF110E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011100E[];
+extern void _ZN3bbb9GG00111003barEv();
+extern void _ZN3bbb9GG00111003fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111003fooEv,_ZTv0_n16_N3bbb9GG00111003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00111003fooEv,_ZThn16_N3bbb9GG00111003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00111003barEv,_ZTv0_n20_N3bbb9GG00111003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00111003barEv,_ZThn16_N3bbb9GG00111003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00111003fooEv,_ZTv0_n12_N3bbb9GG00111003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00111003fooEv,_ZThn28_N3bbb9GG00111003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111003barEv,_ZTv0_n16_N3bbb9GG00111003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00111003barEv,_ZThn28_N3bbb9GG00111003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00111003barEv,_ZTv0_n12_N3bbb9GG00111003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00111003barEv,_ZThn36_N3bbb9GG00111003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111003fooEv,_ZTv0_n16_N3bbb9GG00111003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00111003fooEv,_ZThn36_N3bbb9GG00111003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0011100E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00111003barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00111003fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111003fooEv,_ZTv0_n16_N3bbb9GG00111003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00111003barEv,_ZTv0_n20_N3bbb9GG00111003barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00111003fooEv,_ZTv0_n12_N3bbb9GG00111003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111003barEv,_ZTv0_n16_N3bbb9GG00111003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00111003barEv,_ZTv0_n12_N3bbb9GG00111003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111003fooEv,_ZTv0_n16_N3bbb9GG00111003fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0011100E[];
+extern void _ZN3bbb5FF1103barEv();
+extern void _ZN3bbb5FF1103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF110E__NS_9GG0011100E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0011100E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0011100E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011100E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0011100E[] = {
+  {&(_ZTVN3bbb9GG0011100E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF110E__NS_9GG0011100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0011100E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0011100E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0011100E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0011100E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0011100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011100E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011100E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0011100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0011100E[];
+static VTBL_ENTRY alt_thunk_names45[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00111003barEv,_ZTv0_n12_N3bbb9GG00111003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00111003barEv,_ZThn36_N3bbb9GG00111003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00111003barEv,_ZTv0_n16_N3bbb9GG00111003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00111003barEv,_ZThn28_N3bbb9GG00111003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00111003fooEv,_ZTv0_n12_N3bbb9GG00111003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00111003fooEv,_ZThn28_N3bbb9GG00111003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00111003barEv,_ZTv0_n20_N3bbb9GG00111003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00111003barEv,_ZThn16_N3bbb9GG00111003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00111003fooEv,_ZTv0_n16_N3bbb9GG00111003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00111003fooEv,_ZThn36_N3bbb9GG00111003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00111003fooEv,_ZThn16_N3bbb9GG00111003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0011100E = {  "_ZN3bbb9GG0011100E", // class name
+  bases__ZN3bbb9GG0011100E, 6,
+  &(vtc__ZN3bbb9GG0011100E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0011100E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0011100E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0011100E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0011100E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names45,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0011101  : virtual ::bbb::EE001 , ::bbb::FF110 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00111013barEv
+  virtual void  foo(); // _ZN3bbb9GG00111013fooEv
+  ~GG0011101(); // tgen
+  GG0011101(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0011101E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC6{ v1 v2 Fi} VBC7{ v1 v2 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0011101 ::bar(){vfunc_called(this, "_ZN3bbb9GG00111013barEv");}
+void  bbb::GG0011101 ::foo(){vfunc_called(this, "_ZN3bbb9GG00111013fooEv");}
+bbb::GG0011101 ::~GG0011101(){ note_dtor("_ZN3bbb9GG0011101E", this);} // tgen
+bbb::GG0011101 ::GG0011101(){ note_ctor("_ZN3bbb9GG0011101E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0011101E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0011101E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0011101E, buf);
+    ::bbb::GG0011101 *dp, &lv = *(dp=new (buf) ::bbb::GG0011101());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0011101E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0011101E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0011101E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011101E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011101E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF110*), 0, "_ZN3bbb9GG0011101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF110*), ABISELECT(56,36), "_ZN3bbb9GG0011101E");
+    check_base_class_offset(lv, (::bbb::FF110*), 0, "_ZN3bbb9GG0011101E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0011101E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0011101E);
+    dp->::bbb::GG0011101::~GG0011101();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0011101E(Test__ZN3bbb9GG0011101E, "_ZN3bbb9GG0011101E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0011101C1Ev();
+extern void _ZN3bbb9GG0011101D1Ev();
+Name_Map name_map__ZN3bbb9GG0011101E[] = {
+  NSPAIR(_ZN3bbb9GG0011101C1Ev),
+  NSPAIR(_ZN3bbb9GG0011101D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF110E;
+extern VTBL_ENTRY _ZTIN3bbb5FF110E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF110E[];
+static Base_Class bases__ZN3bbb9GG0011101E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF110E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011101E[];
+extern void _ZN3bbb9GG00111013barEv();
+extern void _ZN3bbb9GG00111013fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111013fooEv,_ZTv0_n16_N3bbb9GG00111013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00111013fooEv,_ZThn16_N3bbb9GG00111013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00111013barEv,_ZTv0_n20_N3bbb9GG00111013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00111013barEv,_ZThn16_N3bbb9GG00111013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00111013fooEv,_ZTv0_n12_N3bbb9GG00111013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00111013fooEv,_ZThn28_N3bbb9GG00111013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111013barEv,_ZTv0_n16_N3bbb9GG00111013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00111013barEv,_ZThn28_N3bbb9GG00111013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00111013barEv,_ZTv0_n12_N3bbb9GG00111013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00111013barEv,_ZThn36_N3bbb9GG00111013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111013fooEv,_ZTv0_n16_N3bbb9GG00111013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00111013fooEv,_ZThn36_N3bbb9GG00111013fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0011101E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00111013barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00111013fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111013fooEv,_ZTv0_n16_N3bbb9GG00111013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00111013barEv,_ZTv0_n20_N3bbb9GG00111013barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00111013fooEv,_ZTv0_n12_N3bbb9GG00111013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111013barEv,_ZTv0_n16_N3bbb9GG00111013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00111013barEv,_ZTv0_n12_N3bbb9GG00111013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111013fooEv,_ZTv0_n16_N3bbb9GG00111013fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0011101E[];
+extern void _ZN3bbb5FF1103barEv();
+extern void _ZN3bbb5FF1103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF110E__NS_9GG0011101E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0011101E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0011101E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011101E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0011101E[] = {
+  {&(_ZTVN3bbb9GG0011101E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF110E__NS_9GG0011101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0011101E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0011101E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0011101E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0011101E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0011101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011101E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011101E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0011101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0011101E[];
+static VTBL_ENTRY alt_thunk_names46[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00111013barEv,_ZTv0_n12_N3bbb9GG00111013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00111013barEv,_ZThn36_N3bbb9GG00111013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00111013barEv,_ZTv0_n16_N3bbb9GG00111013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00111013barEv,_ZThn28_N3bbb9GG00111013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00111013fooEv,_ZTv0_n12_N3bbb9GG00111013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00111013fooEv,_ZThn28_N3bbb9GG00111013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00111013barEv,_ZTv0_n20_N3bbb9GG00111013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00111013barEv,_ZThn16_N3bbb9GG00111013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00111013fooEv,_ZTv0_n16_N3bbb9GG00111013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00111013fooEv,_ZThn36_N3bbb9GG00111013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00111013fooEv,_ZThn16_N3bbb9GG00111013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0011101E = {  "_ZN3bbb9GG0011101E", // class name
+  bases__ZN3bbb9GG0011101E, 6,
+  &(vtc__ZN3bbb9GG0011101E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0011101E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0011101E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0011101E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0011101E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names46,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0011110  : virtual ::bbb::EE001 , ::bbb::FF111 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG00111103fooEv
+  virtual void  bar(); // _ZN3bbb9GG00111103barEv
+  ~GG0011110(); // tgen
+  GG0011110(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0011110E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC6{ v2 v1 Fi} VBC7{ v2 v1 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0011110 ::foo(){vfunc_called(this, "_ZN3bbb9GG00111103fooEv");}
+void  bbb::GG0011110 ::bar(){vfunc_called(this, "_ZN3bbb9GG00111103barEv");}
+bbb::GG0011110 ::~GG0011110(){ note_dtor("_ZN3bbb9GG0011110E", this);} // tgen
+bbb::GG0011110 ::GG0011110(){ note_ctor("_ZN3bbb9GG0011110E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0011110E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0011110E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0011110E, buf);
+    ::bbb::GG0011110 *dp, &lv = *(dp=new (buf) ::bbb::GG0011110());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0011110E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0011110E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0011110E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011110E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011110E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF111*), 0, "_ZN3bbb9GG0011110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF111*), ABISELECT(56,36), "_ZN3bbb9GG0011110E");
+    check_base_class_offset(lv, (::bbb::FF111*), 0, "_ZN3bbb9GG0011110E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0011110E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0011110E);
+    dp->::bbb::GG0011110::~GG0011110();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0011110E(Test__ZN3bbb9GG0011110E, "_ZN3bbb9GG0011110E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0011110C1Ev();
+extern void _ZN3bbb9GG0011110D1Ev();
+Name_Map name_map__ZN3bbb9GG0011110E[] = {
+  NSPAIR(_ZN3bbb9GG0011110C1Ev),
+  NSPAIR(_ZN3bbb9GG0011110D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF111E;
+extern VTBL_ENTRY _ZTIN3bbb5FF111E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF111E[];
+static Base_Class bases__ZN3bbb9GG0011110E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF111E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011110E[];
+extern void _ZN3bbb9GG00111103barEv();
+extern void _ZN3bbb9GG00111103fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111103fooEv,_ZTv0_n16_N3bbb9GG00111103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00111103fooEv,_ZThn16_N3bbb9GG00111103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00111103barEv,_ZTv0_n20_N3bbb9GG00111103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00111103barEv,_ZThn16_N3bbb9GG00111103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00111103fooEv,_ZTv0_n12_N3bbb9GG00111103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00111103fooEv,_ZThn28_N3bbb9GG00111103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111103barEv,_ZTv0_n16_N3bbb9GG00111103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00111103barEv,_ZThn28_N3bbb9GG00111103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00111103barEv,_ZTv0_n12_N3bbb9GG00111103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00111103barEv,_ZThn36_N3bbb9GG00111103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111103fooEv,_ZTv0_n16_N3bbb9GG00111103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00111103fooEv,_ZThn36_N3bbb9GG00111103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0011110E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00111103barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00111103fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111103fooEv,_ZTv0_n16_N3bbb9GG00111103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00111103barEv,_ZTv0_n20_N3bbb9GG00111103barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00111103fooEv,_ZTv0_n12_N3bbb9GG00111103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111103barEv,_ZTv0_n16_N3bbb9GG00111103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00111103barEv,_ZTv0_n12_N3bbb9GG00111103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111103fooEv,_ZTv0_n16_N3bbb9GG00111103fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0011110E[];
+extern void _ZN3bbb5FF1113barEv();
+extern void _ZN3bbb5FF1113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF111E__NS_9GG0011110E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0011110E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0011110E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011110E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0011110E[] = {
+  {&(_ZTVN3bbb9GG0011110E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF111E__NS_9GG0011110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0011110E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0011110E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0011110E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0011110E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0011110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011110E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011110E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0011110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0011110E[];
+static VTBL_ENTRY alt_thunk_names47[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00111103barEv,_ZTv0_n12_N3bbb9GG00111103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00111103barEv,_ZThn36_N3bbb9GG00111103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00111103barEv,_ZTv0_n16_N3bbb9GG00111103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00111103barEv,_ZThn28_N3bbb9GG00111103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00111103fooEv,_ZTv0_n12_N3bbb9GG00111103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00111103fooEv,_ZThn28_N3bbb9GG00111103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00111103barEv,_ZTv0_n20_N3bbb9GG00111103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00111103barEv,_ZThn16_N3bbb9GG00111103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00111103fooEv,_ZTv0_n16_N3bbb9GG00111103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00111103fooEv,_ZThn36_N3bbb9GG00111103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00111103fooEv,_ZThn16_N3bbb9GG00111103fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0011110E = {  "_ZN3bbb9GG0011110E", // class name
+  bases__ZN3bbb9GG0011110E, 6,
+  &(vtc__ZN3bbb9GG0011110E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0011110E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0011110E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0011110E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0011110E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names47,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0011111  : virtual ::bbb::EE001 , ::bbb::FF111 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG00111113barEv
+  virtual void  foo(); // _ZN3bbb9GG00111113fooEv
+  ~GG0011111(); // tgen
+  GG0011111(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0011111E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC6{ v1 v2 Fi} VBC7{ v1 v2 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0011111 ::bar(){vfunc_called(this, "_ZN3bbb9GG00111113barEv");}
+void  bbb::GG0011111 ::foo(){vfunc_called(this, "_ZN3bbb9GG00111113fooEv");}
+bbb::GG0011111 ::~GG0011111(){ note_dtor("_ZN3bbb9GG0011111E", this);} // tgen
+bbb::GG0011111 ::GG0011111(){ note_ctor("_ZN3bbb9GG0011111E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0011111E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0011111E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0011111E, buf);
+    ::bbb::GG0011111 *dp, &lv = *(dp=new (buf) ::bbb::GG0011111());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0011111E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0011111E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE001*), ABISELECT(40,28), "_ZN3bbb9GG0011111E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011111E");
+    check_base_class_offset(lv, (::bbb::EE001*), ABISELECT(24,16), "_ZN3bbb9GG0011111E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF111*), 0, "_ZN3bbb9GG0011111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF111*), ABISELECT(56,36), "_ZN3bbb9GG0011111E");
+    check_base_class_offset(lv, (::bbb::FF111*), 0, "_ZN3bbb9GG0011111E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0011111E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0011111E);
+    dp->::bbb::GG0011111::~GG0011111();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0011111E(Test__ZN3bbb9GG0011111E, "_ZN3bbb9GG0011111E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0011111C1Ev();
+extern void _ZN3bbb9GG0011111D1Ev();
+Name_Map name_map__ZN3bbb9GG0011111E[] = {
+  NSPAIR(_ZN3bbb9GG0011111C1Ev),
+  NSPAIR(_ZN3bbb9GG0011111D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE001E;
+extern VTBL_ENTRY _ZTIN3bbb5EE001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE001E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF111E;
+extern VTBL_ENTRY _ZTIN3bbb5FF111E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF111E[];
+static Base_Class bases__ZN3bbb9GG0011111E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE001E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF111E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011111E[];
+extern void _ZN3bbb9GG00111113barEv();
+extern void _ZN3bbb9GG00111113fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111113fooEv,_ZTv0_n16_N3bbb9GG00111113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00111113fooEv,_ZThn16_N3bbb9GG00111113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG00111113barEv,_ZTv0_n20_N3bbb9GG00111113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG00111113barEv,_ZThn16_N3bbb9GG00111113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00111113fooEv,_ZTv0_n12_N3bbb9GG00111113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00111113fooEv,_ZThn28_N3bbb9GG00111113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111113barEv,_ZTv0_n16_N3bbb9GG00111113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG00111113barEv,_ZThn28_N3bbb9GG00111113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG00111113barEv,_ZTv0_n12_N3bbb9GG00111113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00111113barEv,_ZThn36_N3bbb9GG00111113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG00111113fooEv,_ZTv0_n16_N3bbb9GG00111113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG00111113fooEv,_ZThn36_N3bbb9GG00111113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0011111E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG00111113barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG00111113fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111113fooEv,_ZTv0_n16_N3bbb9GG00111113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG00111113barEv,_ZTv0_n20_N3bbb9GG00111113barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00111113fooEv,_ZTv0_n12_N3bbb9GG00111113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111113barEv,_ZTv0_n16_N3bbb9GG00111113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0011111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG00111113barEv,_ZTv0_n12_N3bbb9GG00111113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG00111113fooEv,_ZTv0_n16_N3bbb9GG00111113fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0011111E[];
+extern void _ZN3bbb5FF1113barEv();
+extern void _ZN3bbb5FF1113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF111E__NS_9GG0011111E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0011111E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv),
+};
+extern void _ZN3bbb5EE0013fooEv();
+extern void _ZN3bbb5EE0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE001E__NS_9GG0011111E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011111E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0011111E[] = {
+  {&(_ZTVN3bbb9GG0011111E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF111E__NS_9GG0011111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0011111E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0011111E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0011111E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0011111E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE001E__NS_9GG0011111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE001E__NS_9GG0011111E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0011111E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0011111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0011111E[];
+static VTBL_ENTRY alt_thunk_names48[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0013barEv,_ZTv0_n16_N3bbb5EE0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013barEv,_ZThn12_N3bbb5EE0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0013fooEv,_ZTv0_n12_N3bbb5EE0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0013fooEv,_ZThn12_N3bbb5EE0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00111113barEv,_ZTv0_n12_N3bbb9GG00111113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00111113barEv,_ZThn36_N3bbb9GG00111113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00111113barEv,_ZTv0_n16_N3bbb9GG00111113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00111113barEv,_ZThn28_N3bbb9GG00111113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG00111113fooEv,_ZTv0_n12_N3bbb9GG00111113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG00111113fooEv,_ZThn28_N3bbb9GG00111113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG00111113barEv,_ZTv0_n20_N3bbb9GG00111113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00111113barEv,_ZThn16_N3bbb9GG00111113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG00111113fooEv,_ZTv0_n16_N3bbb9GG00111113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG00111113fooEv,_ZThn36_N3bbb9GG00111113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG00111113fooEv,_ZThn16_N3bbb9GG00111113fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0011111E = {  "_ZN3bbb9GG0011111E", // class name
+  bases__ZN3bbb9GG0011111E, 6,
+  &(vtc__ZN3bbb9GG0011111E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0011111E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0011111E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0011111E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0011111E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names48,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0100000  : virtual ::bbb::EE010 , ::bbb::FF000 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01000003fooEv
+  virtual void  bar(); // _ZN3bbb9GG01000003barEv
+  ~GG0100000(); // tgen
+  GG0100000(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0100000E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC3 VBC6{ v1 v2 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0100000 ::foo(){vfunc_called(this, "_ZN3bbb9GG01000003fooEv");}
+void  bbb::GG0100000 ::bar(){vfunc_called(this, "_ZN3bbb9GG01000003barEv");}
+bbb::GG0100000 ::~GG0100000(){ note_dtor("_ZN3bbb9GG0100000E", this);} // tgen
+bbb::GG0100000 ::GG0100000(){ note_ctor("_ZN3bbb9GG0100000E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0100000E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0100000E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0100000E, buf);
+    ::bbb::GG0100000 *dp, &lv = *(dp=new (buf) ::bbb::GG0100000());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0100000E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0100000E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0100000E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100000E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100000E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF000*), 0, "_ZN3bbb9GG0100000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF000*), ABISELECT(56,36), "_ZN3bbb9GG0100000E");
+    check_base_class_offset(lv, (::bbb::FF000*), 0, "_ZN3bbb9GG0100000E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0100000E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0100000E);
+    dp->::bbb::GG0100000::~GG0100000();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0100000E(Test__ZN3bbb9GG0100000E, "_ZN3bbb9GG0100000E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0100000C1Ev();
+extern void _ZN3bbb9GG0100000D1Ev();
+Name_Map name_map__ZN3bbb9GG0100000E[] = {
+  NSPAIR(_ZN3bbb9GG0100000C1Ev),
+  NSPAIR(_ZN3bbb9GG0100000D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF000E;
+extern VTBL_ENTRY _ZTIN3bbb5FF000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF000E[];
+static Base_Class bases__ZN3bbb9GG0100000E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF000E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100000E[];
+extern void _ZN3bbb9GG01000003fooEv();
+extern void _ZN3bbb9GG01000003barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000003barEv,_ZTv0_n16_N3bbb9GG01000003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01000003barEv,_ZThn16_N3bbb9GG01000003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01000003fooEv,_ZTv0_n20_N3bbb9GG01000003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01000003fooEv,_ZThn16_N3bbb9GG01000003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01000003fooEv,_ZTv0_n12_N3bbb9GG01000003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01000003fooEv,_ZThn28_N3bbb9GG01000003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000003barEv,_ZTv0_n16_N3bbb9GG01000003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01000003barEv,_ZThn28_N3bbb9GG01000003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01000003fooEv,_ZTv0_n12_N3bbb9GG01000003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01000003fooEv,_ZThn36_N3bbb9GG01000003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000003barEv,_ZTv0_n16_N3bbb9GG01000003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01000003barEv,_ZThn36_N3bbb9GG01000003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0100000E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01000003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01000003barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000003barEv,_ZTv0_n16_N3bbb9GG01000003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01000003fooEv,_ZTv0_n20_N3bbb9GG01000003fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01000003fooEv,_ZTv0_n12_N3bbb9GG01000003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000003barEv,_ZTv0_n16_N3bbb9GG01000003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01000003fooEv,_ZTv0_n12_N3bbb9GG01000003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000003barEv,_ZTv0_n16_N3bbb9GG01000003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0100000E[];
+extern void _ZN3bbb5FF0003fooEv();
+extern void _ZN3bbb5FF0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF000E__NS_9GG0100000E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0100000E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0100000E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100000E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0100000E[] = {
+  {&(_ZTVN3bbb9GG0100000E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF000E__NS_9GG0100000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0100000E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0100000E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0100000E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0100000E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0100000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100000E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100000E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0100000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0100000E[];
+static VTBL_ENTRY alt_thunk_names49[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01000003fooEv,_ZTv0_n12_N3bbb9GG01000003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01000003fooEv,_ZThn36_N3bbb9GG01000003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01000003fooEv,_ZThn28_N3bbb9GG01000003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01000003fooEv,_ZTv0_n20_N3bbb9GG01000003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01000003fooEv,_ZThn16_N3bbb9GG01000003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01000003barEv,_ZTv0_n16_N3bbb9GG01000003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01000003barEv,_ZThn36_N3bbb9GG01000003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01000003barEv,_ZThn28_N3bbb9GG01000003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01000003barEv,_ZThn16_N3bbb9GG01000003barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0100000E = {  "_ZN3bbb9GG0100000E", // class name
+  bases__ZN3bbb9GG0100000E, 6,
+  &(vtc__ZN3bbb9GG0100000E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0100000E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0100000E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0100000E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0100000E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names49,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0100001  : virtual ::bbb::EE010 , ::bbb::FF000 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01000013barEv
+  virtual void  foo(); // _ZN3bbb9GG01000013fooEv
+  ~GG0100001(); // tgen
+  GG0100001(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0100001E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC3 VBC6{ v2 v1 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0100001 ::bar(){vfunc_called(this, "_ZN3bbb9GG01000013barEv");}
+void  bbb::GG0100001 ::foo(){vfunc_called(this, "_ZN3bbb9GG01000013fooEv");}
+bbb::GG0100001 ::~GG0100001(){ note_dtor("_ZN3bbb9GG0100001E", this);} // tgen
+bbb::GG0100001 ::GG0100001(){ note_ctor("_ZN3bbb9GG0100001E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0100001E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0100001E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0100001E, buf);
+    ::bbb::GG0100001 *dp, &lv = *(dp=new (buf) ::bbb::GG0100001());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0100001E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0100001E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0100001E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100001E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100001E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF000*), 0, "_ZN3bbb9GG0100001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF000*), ABISELECT(56,36), "_ZN3bbb9GG0100001E");
+    check_base_class_offset(lv, (::bbb::FF000*), 0, "_ZN3bbb9GG0100001E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0100001E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0100001E);
+    dp->::bbb::GG0100001::~GG0100001();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0100001E(Test__ZN3bbb9GG0100001E, "_ZN3bbb9GG0100001E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0100001C1Ev();
+extern void _ZN3bbb9GG0100001D1Ev();
+Name_Map name_map__ZN3bbb9GG0100001E[] = {
+  NSPAIR(_ZN3bbb9GG0100001C1Ev),
+  NSPAIR(_ZN3bbb9GG0100001D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF000E;
+extern VTBL_ENTRY _ZTIN3bbb5FF000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF000E[];
+static Base_Class bases__ZN3bbb9GG0100001E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF000E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100001E[];
+extern void _ZN3bbb9GG01000013fooEv();
+extern void _ZN3bbb9GG01000013barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000013barEv,_ZTv0_n16_N3bbb9GG01000013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01000013barEv,_ZThn16_N3bbb9GG01000013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01000013fooEv,_ZTv0_n20_N3bbb9GG01000013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01000013fooEv,_ZThn16_N3bbb9GG01000013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01000013fooEv,_ZTv0_n12_N3bbb9GG01000013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01000013fooEv,_ZThn28_N3bbb9GG01000013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000013barEv,_ZTv0_n16_N3bbb9GG01000013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01000013barEv,_ZThn28_N3bbb9GG01000013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01000013fooEv,_ZTv0_n12_N3bbb9GG01000013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01000013fooEv,_ZThn36_N3bbb9GG01000013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000013barEv,_ZTv0_n16_N3bbb9GG01000013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01000013barEv,_ZThn36_N3bbb9GG01000013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0100001E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01000013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01000013barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000013barEv,_ZTv0_n16_N3bbb9GG01000013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01000013fooEv,_ZTv0_n20_N3bbb9GG01000013fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01000013fooEv,_ZTv0_n12_N3bbb9GG01000013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000013barEv,_ZTv0_n16_N3bbb9GG01000013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01000013fooEv,_ZTv0_n12_N3bbb9GG01000013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000013barEv,_ZTv0_n16_N3bbb9GG01000013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0100001E[];
+extern void _ZN3bbb5FF0003fooEv();
+extern void _ZN3bbb5FF0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF000E__NS_9GG0100001E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0100001E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0100001E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100001E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0100001E[] = {
+  {&(_ZTVN3bbb9GG0100001E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF000E__NS_9GG0100001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0100001E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0100001E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0100001E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0100001E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0100001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100001E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100001E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0100001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0100001E[];
+static VTBL_ENTRY alt_thunk_names50[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01000013fooEv,_ZTv0_n12_N3bbb9GG01000013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01000013fooEv,_ZThn36_N3bbb9GG01000013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01000013fooEv,_ZThn28_N3bbb9GG01000013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01000013fooEv,_ZTv0_n20_N3bbb9GG01000013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01000013fooEv,_ZThn16_N3bbb9GG01000013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01000013barEv,_ZTv0_n16_N3bbb9GG01000013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01000013barEv,_ZThn36_N3bbb9GG01000013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01000013barEv,_ZThn28_N3bbb9GG01000013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01000013barEv,_ZThn16_N3bbb9GG01000013barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0100001E = {  "_ZN3bbb9GG0100001E", // class name
+  bases__ZN3bbb9GG0100001E, 6,
+  &(vtc__ZN3bbb9GG0100001E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0100001E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0100001E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0100001E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0100001E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names50,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0100010  : virtual ::bbb::EE010 , ::bbb::FF001 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01000103fooEv
+  virtual void  bar(); // _ZN3bbb9GG01000103barEv
+  ~GG0100010(); // tgen
+  GG0100010(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0100010E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC3 VBC6{ v1 v2 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0100010 ::foo(){vfunc_called(this, "_ZN3bbb9GG01000103fooEv");}
+void  bbb::GG0100010 ::bar(){vfunc_called(this, "_ZN3bbb9GG01000103barEv");}
+bbb::GG0100010 ::~GG0100010(){ note_dtor("_ZN3bbb9GG0100010E", this);} // tgen
+bbb::GG0100010 ::GG0100010(){ note_ctor("_ZN3bbb9GG0100010E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0100010E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0100010E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0100010E, buf);
+    ::bbb::GG0100010 *dp, &lv = *(dp=new (buf) ::bbb::GG0100010());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0100010E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0100010E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0100010E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100010E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100010E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF001*), 0, "_ZN3bbb9GG0100010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF001*), ABISELECT(56,36), "_ZN3bbb9GG0100010E");
+    check_base_class_offset(lv, (::bbb::FF001*), 0, "_ZN3bbb9GG0100010E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0100010E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0100010E);
+    dp->::bbb::GG0100010::~GG0100010();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0100010E(Test__ZN3bbb9GG0100010E, "_ZN3bbb9GG0100010E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0100010C1Ev();
+extern void _ZN3bbb9GG0100010D1Ev();
+Name_Map name_map__ZN3bbb9GG0100010E[] = {
+  NSPAIR(_ZN3bbb9GG0100010C1Ev),
+  NSPAIR(_ZN3bbb9GG0100010D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF001E;
+extern VTBL_ENTRY _ZTIN3bbb5FF001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF001E[];
+static Base_Class bases__ZN3bbb9GG0100010E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF001E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100010E[];
+extern void _ZN3bbb9GG01000103fooEv();
+extern void _ZN3bbb9GG01000103barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000103barEv,_ZTv0_n16_N3bbb9GG01000103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01000103barEv,_ZThn16_N3bbb9GG01000103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01000103fooEv,_ZTv0_n20_N3bbb9GG01000103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01000103fooEv,_ZThn16_N3bbb9GG01000103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01000103fooEv,_ZTv0_n12_N3bbb9GG01000103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01000103fooEv,_ZThn28_N3bbb9GG01000103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000103barEv,_ZTv0_n16_N3bbb9GG01000103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01000103barEv,_ZThn28_N3bbb9GG01000103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01000103fooEv,_ZTv0_n12_N3bbb9GG01000103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01000103fooEv,_ZThn36_N3bbb9GG01000103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000103barEv,_ZTv0_n16_N3bbb9GG01000103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01000103barEv,_ZThn36_N3bbb9GG01000103barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0100010E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01000103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01000103barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000103barEv,_ZTv0_n16_N3bbb9GG01000103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01000103fooEv,_ZTv0_n20_N3bbb9GG01000103fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01000103fooEv,_ZTv0_n12_N3bbb9GG01000103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000103barEv,_ZTv0_n16_N3bbb9GG01000103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01000103fooEv,_ZTv0_n12_N3bbb9GG01000103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000103barEv,_ZTv0_n16_N3bbb9GG01000103barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0100010E[];
+extern void _ZN3bbb5FF0013fooEv();
+extern void _ZN3bbb5FF0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF001E__NS_9GG0100010E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0100010E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0100010E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100010E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0100010E[] = {
+  {&(_ZTVN3bbb9GG0100010E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF001E__NS_9GG0100010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0100010E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0100010E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0100010E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0100010E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0100010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100010E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100010E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0100010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0100010E[];
+static VTBL_ENTRY alt_thunk_names51[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01000103fooEv,_ZTv0_n12_N3bbb9GG01000103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01000103fooEv,_ZThn36_N3bbb9GG01000103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01000103fooEv,_ZThn28_N3bbb9GG01000103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01000103fooEv,_ZTv0_n20_N3bbb9GG01000103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01000103fooEv,_ZThn16_N3bbb9GG01000103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01000103barEv,_ZTv0_n16_N3bbb9GG01000103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01000103barEv,_ZThn36_N3bbb9GG01000103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01000103barEv,_ZThn28_N3bbb9GG01000103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01000103barEv,_ZThn16_N3bbb9GG01000103barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0100010E = {  "_ZN3bbb9GG0100010E", // class name
+  bases__ZN3bbb9GG0100010E, 6,
+  &(vtc__ZN3bbb9GG0100010E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0100010E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0100010E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0100010E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0100010E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names51,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0100011  : virtual ::bbb::EE010 , ::bbb::FF001 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01000113barEv
+  virtual void  foo(); // _ZN3bbb9GG01000113fooEv
+  ~GG0100011(); // tgen
+  GG0100011(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0100011E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC3 VBC6{ v2 v1 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0100011 ::bar(){vfunc_called(this, "_ZN3bbb9GG01000113barEv");}
+void  bbb::GG0100011 ::foo(){vfunc_called(this, "_ZN3bbb9GG01000113fooEv");}
+bbb::GG0100011 ::~GG0100011(){ note_dtor("_ZN3bbb9GG0100011E", this);} // tgen
+bbb::GG0100011 ::GG0100011(){ note_ctor("_ZN3bbb9GG0100011E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0100011E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0100011E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0100011E, buf);
+    ::bbb::GG0100011 *dp, &lv = *(dp=new (buf) ::bbb::GG0100011());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0100011E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0100011E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0100011E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100011E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100011E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF001*), 0, "_ZN3bbb9GG0100011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF001*), ABISELECT(56,36), "_ZN3bbb9GG0100011E");
+    check_base_class_offset(lv, (::bbb::FF001*), 0, "_ZN3bbb9GG0100011E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0100011E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0100011E);
+    dp->::bbb::GG0100011::~GG0100011();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0100011E(Test__ZN3bbb9GG0100011E, "_ZN3bbb9GG0100011E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0100011C1Ev();
+extern void _ZN3bbb9GG0100011D1Ev();
+Name_Map name_map__ZN3bbb9GG0100011E[] = {
+  NSPAIR(_ZN3bbb9GG0100011C1Ev),
+  NSPAIR(_ZN3bbb9GG0100011D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF001E;
+extern VTBL_ENTRY _ZTIN3bbb5FF001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF001E[];
+static Base_Class bases__ZN3bbb9GG0100011E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF001E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100011E[];
+extern void _ZN3bbb9GG01000113fooEv();
+extern void _ZN3bbb9GG01000113barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000113barEv,_ZTv0_n16_N3bbb9GG01000113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01000113barEv,_ZThn16_N3bbb9GG01000113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01000113fooEv,_ZTv0_n20_N3bbb9GG01000113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01000113fooEv,_ZThn16_N3bbb9GG01000113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01000113fooEv,_ZTv0_n12_N3bbb9GG01000113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01000113fooEv,_ZThn28_N3bbb9GG01000113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000113barEv,_ZTv0_n16_N3bbb9GG01000113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01000113barEv,_ZThn28_N3bbb9GG01000113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01000113fooEv,_ZTv0_n12_N3bbb9GG01000113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01000113fooEv,_ZThn36_N3bbb9GG01000113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01000113barEv,_ZTv0_n16_N3bbb9GG01000113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01000113barEv,_ZThn36_N3bbb9GG01000113barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0100011E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01000113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01000113barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000113barEv,_ZTv0_n16_N3bbb9GG01000113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01000113fooEv,_ZTv0_n20_N3bbb9GG01000113fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01000113fooEv,_ZTv0_n12_N3bbb9GG01000113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000113barEv,_ZTv0_n16_N3bbb9GG01000113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01000113fooEv,_ZTv0_n12_N3bbb9GG01000113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01000113barEv,_ZTv0_n16_N3bbb9GG01000113barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0100011E[];
+extern void _ZN3bbb5FF0013fooEv();
+extern void _ZN3bbb5FF0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF001E__NS_9GG0100011E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0100011E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0100011E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100011E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0100011E[] = {
+  {&(_ZTVN3bbb9GG0100011E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF001E__NS_9GG0100011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0100011E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0100011E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0100011E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0100011E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0100011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100011E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100011E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0100011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0100011E[];
+static VTBL_ENTRY alt_thunk_names52[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01000113fooEv,_ZTv0_n12_N3bbb9GG01000113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01000113fooEv,_ZThn36_N3bbb9GG01000113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01000113fooEv,_ZThn28_N3bbb9GG01000113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01000113fooEv,_ZTv0_n20_N3bbb9GG01000113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01000113fooEv,_ZThn16_N3bbb9GG01000113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01000113barEv,_ZTv0_n16_N3bbb9GG01000113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01000113barEv,_ZThn36_N3bbb9GG01000113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01000113barEv,_ZThn28_N3bbb9GG01000113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01000113barEv,_ZThn16_N3bbb9GG01000113barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0100011E = {  "_ZN3bbb9GG0100011E", // class name
+  bases__ZN3bbb9GG0100011E, 6,
+  &(vtc__ZN3bbb9GG0100011E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0100011E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0100011E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0100011E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0100011E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names52,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0100100  : virtual ::bbb::EE010 , ::bbb::FF010 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01001003fooEv
+  virtual void  bar(); // _ZN3bbb9GG01001003barEv
+  ~GG0100100(); // tgen
+  GG0100100(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0100100E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC3 VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0100100 ::foo(){vfunc_called(this, "_ZN3bbb9GG01001003fooEv");}
+void  bbb::GG0100100 ::bar(){vfunc_called(this, "_ZN3bbb9GG01001003barEv");}
+bbb::GG0100100 ::~GG0100100(){ note_dtor("_ZN3bbb9GG0100100E", this);} // tgen
+bbb::GG0100100 ::GG0100100(){ note_ctor("_ZN3bbb9GG0100100E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0100100E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0100100E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0100100E, buf);
+    ::bbb::GG0100100 *dp, &lv = *(dp=new (buf) ::bbb::GG0100100());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0100100E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0100100E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0100100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100100E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100100E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF010*), 0, "_ZN3bbb9GG0100100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF010*), ABISELECT(56,36), "_ZN3bbb9GG0100100E");
+    check_base_class_offset(lv, (::bbb::FF010*), 0, "_ZN3bbb9GG0100100E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0100100E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0100100E);
+    dp->::bbb::GG0100100::~GG0100100();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0100100E(Test__ZN3bbb9GG0100100E, "_ZN3bbb9GG0100100E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0100100C1Ev();
+extern void _ZN3bbb9GG0100100D1Ev();
+Name_Map name_map__ZN3bbb9GG0100100E[] = {
+  NSPAIR(_ZN3bbb9GG0100100C1Ev),
+  NSPAIR(_ZN3bbb9GG0100100D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF010E;
+extern VTBL_ENTRY _ZTIN3bbb5FF010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF010E[];
+static Base_Class bases__ZN3bbb9GG0100100E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF010E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100100E[];
+extern void _ZN3bbb9GG01001003fooEv();
+extern void _ZN3bbb9GG01001003barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001003barEv,_ZTv0_n16_N3bbb9GG01001003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01001003barEv,_ZThn16_N3bbb9GG01001003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01001003fooEv,_ZTv0_n20_N3bbb9GG01001003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01001003fooEv,_ZThn16_N3bbb9GG01001003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01001003fooEv,_ZTv0_n12_N3bbb9GG01001003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01001003fooEv,_ZThn28_N3bbb9GG01001003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001003barEv,_ZTv0_n16_N3bbb9GG01001003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01001003barEv,_ZThn28_N3bbb9GG01001003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01001003barEv,_ZTv0_n12_N3bbb9GG01001003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01001003barEv,_ZThn36_N3bbb9GG01001003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001003fooEv,_ZTv0_n16_N3bbb9GG01001003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01001003fooEv,_ZThn36_N3bbb9GG01001003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0100100E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01001003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01001003barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001003barEv,_ZTv0_n16_N3bbb9GG01001003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01001003fooEv,_ZTv0_n20_N3bbb9GG01001003fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01001003fooEv,_ZTv0_n12_N3bbb9GG01001003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001003barEv,_ZTv0_n16_N3bbb9GG01001003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01001003barEv,_ZTv0_n12_N3bbb9GG01001003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001003fooEv,_ZTv0_n16_N3bbb9GG01001003fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0100100E[];
+extern void _ZN3bbb5FF0103fooEv();
+extern void _ZN3bbb5FF0103barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF010E__NS_9GG0100100E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0103barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0100100E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0100100E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100100E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0100100E[] = {
+  {&(_ZTVN3bbb9GG0100100E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF010E__NS_9GG0100100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0100100E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0100100E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0100100E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0100100E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0100100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100100E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100100E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0100100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0100100E[];
+static VTBL_ENTRY alt_thunk_names53[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01001003fooEv,_ZTv0_n16_N3bbb9GG01001003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01001003fooEv,_ZThn36_N3bbb9GG01001003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01001003barEv,_ZTv0_n12_N3bbb9GG01001003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01001003barEv,_ZThn36_N3bbb9GG01001003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01001003fooEv,_ZTv0_n12_N3bbb9GG01001003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01001003fooEv,_ZThn28_N3bbb9GG01001003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01001003fooEv,_ZTv0_n20_N3bbb9GG01001003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01001003fooEv,_ZThn16_N3bbb9GG01001003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01001003barEv,_ZTv0_n16_N3bbb9GG01001003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01001003barEv,_ZThn28_N3bbb9GG01001003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01001003barEv,_ZThn16_N3bbb9GG01001003barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0100100E = {  "_ZN3bbb9GG0100100E", // class name
+  bases__ZN3bbb9GG0100100E, 6,
+  &(vtc__ZN3bbb9GG0100100E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0100100E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0100100E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0100100E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0100100E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names53,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0100101  : virtual ::bbb::EE010 , ::bbb::FF010 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01001013barEv
+  virtual void  foo(); // _ZN3bbb9GG01001013fooEv
+  ~GG0100101(); // tgen
+  GG0100101(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0100101E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC3 VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0100101 ::bar(){vfunc_called(this, "_ZN3bbb9GG01001013barEv");}
+void  bbb::GG0100101 ::foo(){vfunc_called(this, "_ZN3bbb9GG01001013fooEv");}
+bbb::GG0100101 ::~GG0100101(){ note_dtor("_ZN3bbb9GG0100101E", this);} // tgen
+bbb::GG0100101 ::GG0100101(){ note_ctor("_ZN3bbb9GG0100101E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0100101E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0100101E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0100101E, buf);
+    ::bbb::GG0100101 *dp, &lv = *(dp=new (buf) ::bbb::GG0100101());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0100101E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0100101E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0100101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100101E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100101E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF010*), 0, "_ZN3bbb9GG0100101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF010*), ABISELECT(56,36), "_ZN3bbb9GG0100101E");
+    check_base_class_offset(lv, (::bbb::FF010*), 0, "_ZN3bbb9GG0100101E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0100101E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0100101E);
+    dp->::bbb::GG0100101::~GG0100101();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0100101E(Test__ZN3bbb9GG0100101E, "_ZN3bbb9GG0100101E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0100101C1Ev();
+extern void _ZN3bbb9GG0100101D1Ev();
+Name_Map name_map__ZN3bbb9GG0100101E[] = {
+  NSPAIR(_ZN3bbb9GG0100101C1Ev),
+  NSPAIR(_ZN3bbb9GG0100101D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF010E;
+extern VTBL_ENTRY _ZTIN3bbb5FF010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF010E[];
+static Base_Class bases__ZN3bbb9GG0100101E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF010E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100101E[];
+extern void _ZN3bbb9GG01001013fooEv();
+extern void _ZN3bbb9GG01001013barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001013barEv,_ZTv0_n16_N3bbb9GG01001013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01001013barEv,_ZThn16_N3bbb9GG01001013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01001013fooEv,_ZTv0_n20_N3bbb9GG01001013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01001013fooEv,_ZThn16_N3bbb9GG01001013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01001013fooEv,_ZTv0_n12_N3bbb9GG01001013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01001013fooEv,_ZThn28_N3bbb9GG01001013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001013barEv,_ZTv0_n16_N3bbb9GG01001013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01001013barEv,_ZThn28_N3bbb9GG01001013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01001013barEv,_ZTv0_n12_N3bbb9GG01001013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01001013barEv,_ZThn36_N3bbb9GG01001013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001013fooEv,_ZTv0_n16_N3bbb9GG01001013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01001013fooEv,_ZThn36_N3bbb9GG01001013fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0100101E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01001013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01001013barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001013barEv,_ZTv0_n16_N3bbb9GG01001013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01001013fooEv,_ZTv0_n20_N3bbb9GG01001013fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01001013fooEv,_ZTv0_n12_N3bbb9GG01001013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001013barEv,_ZTv0_n16_N3bbb9GG01001013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01001013barEv,_ZTv0_n12_N3bbb9GG01001013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001013fooEv,_ZTv0_n16_N3bbb9GG01001013fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0100101E[];
+extern void _ZN3bbb5FF0103fooEv();
+extern void _ZN3bbb5FF0103barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF010E__NS_9GG0100101E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0103barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0100101E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0100101E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100101E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0100101E[] = {
+  {&(_ZTVN3bbb9GG0100101E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF010E__NS_9GG0100101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0100101E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0100101E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0100101E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0100101E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0100101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100101E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100101E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0100101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0100101E[];
+static VTBL_ENTRY alt_thunk_names54[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01001013fooEv,_ZTv0_n16_N3bbb9GG01001013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01001013fooEv,_ZThn36_N3bbb9GG01001013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01001013barEv,_ZTv0_n12_N3bbb9GG01001013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01001013barEv,_ZThn36_N3bbb9GG01001013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01001013fooEv,_ZTv0_n12_N3bbb9GG01001013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01001013fooEv,_ZThn28_N3bbb9GG01001013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01001013fooEv,_ZTv0_n20_N3bbb9GG01001013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01001013fooEv,_ZThn16_N3bbb9GG01001013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01001013barEv,_ZTv0_n16_N3bbb9GG01001013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01001013barEv,_ZThn28_N3bbb9GG01001013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01001013barEv,_ZThn16_N3bbb9GG01001013barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0100101E = {  "_ZN3bbb9GG0100101E", // class name
+  bases__ZN3bbb9GG0100101E, 6,
+  &(vtc__ZN3bbb9GG0100101E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0100101E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0100101E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0100101E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0100101E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names54,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0100110  : virtual ::bbb::EE010 , ::bbb::FF011 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01001103fooEv
+  virtual void  bar(); // _ZN3bbb9GG01001103barEv
+  ~GG0100110(); // tgen
+  GG0100110(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0100110E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC3 VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0100110 ::foo(){vfunc_called(this, "_ZN3bbb9GG01001103fooEv");}
+void  bbb::GG0100110 ::bar(){vfunc_called(this, "_ZN3bbb9GG01001103barEv");}
+bbb::GG0100110 ::~GG0100110(){ note_dtor("_ZN3bbb9GG0100110E", this);} // tgen
+bbb::GG0100110 ::GG0100110(){ note_ctor("_ZN3bbb9GG0100110E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0100110E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0100110E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0100110E, buf);
+    ::bbb::GG0100110 *dp, &lv = *(dp=new (buf) ::bbb::GG0100110());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0100110E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0100110E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0100110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100110E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100110E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF011*), 0, "_ZN3bbb9GG0100110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF011*), ABISELECT(56,36), "_ZN3bbb9GG0100110E");
+    check_base_class_offset(lv, (::bbb::FF011*), 0, "_ZN3bbb9GG0100110E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0100110E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0100110E);
+    dp->::bbb::GG0100110::~GG0100110();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0100110E(Test__ZN3bbb9GG0100110E, "_ZN3bbb9GG0100110E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0100110C1Ev();
+extern void _ZN3bbb9GG0100110D1Ev();
+Name_Map name_map__ZN3bbb9GG0100110E[] = {
+  NSPAIR(_ZN3bbb9GG0100110C1Ev),
+  NSPAIR(_ZN3bbb9GG0100110D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF011E;
+extern VTBL_ENTRY _ZTIN3bbb5FF011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF011E[];
+static Base_Class bases__ZN3bbb9GG0100110E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF011E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100110E[];
+extern void _ZN3bbb9GG01001103fooEv();
+extern void _ZN3bbb9GG01001103barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001103barEv,_ZTv0_n16_N3bbb9GG01001103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01001103barEv,_ZThn16_N3bbb9GG01001103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01001103fooEv,_ZTv0_n20_N3bbb9GG01001103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01001103fooEv,_ZThn16_N3bbb9GG01001103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01001103fooEv,_ZTv0_n12_N3bbb9GG01001103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01001103fooEv,_ZThn28_N3bbb9GG01001103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001103barEv,_ZTv0_n16_N3bbb9GG01001103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01001103barEv,_ZThn28_N3bbb9GG01001103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01001103barEv,_ZTv0_n12_N3bbb9GG01001103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01001103barEv,_ZThn36_N3bbb9GG01001103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001103fooEv,_ZTv0_n16_N3bbb9GG01001103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01001103fooEv,_ZThn36_N3bbb9GG01001103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0100110E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01001103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01001103barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001103barEv,_ZTv0_n16_N3bbb9GG01001103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01001103fooEv,_ZTv0_n20_N3bbb9GG01001103fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01001103fooEv,_ZTv0_n12_N3bbb9GG01001103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001103barEv,_ZTv0_n16_N3bbb9GG01001103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01001103barEv,_ZTv0_n12_N3bbb9GG01001103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001103fooEv,_ZTv0_n16_N3bbb9GG01001103fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0100110E[];
+extern void _ZN3bbb5FF0113fooEv();
+extern void _ZN3bbb5FF0113barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF011E__NS_9GG0100110E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0113barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0100110E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0100110E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100110E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0100110E[] = {
+  {&(_ZTVN3bbb9GG0100110E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF011E__NS_9GG0100110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0100110E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0100110E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0100110E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0100110E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0100110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100110E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100110E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0100110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0100110E[];
+static VTBL_ENTRY alt_thunk_names55[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01001103fooEv,_ZTv0_n16_N3bbb9GG01001103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01001103fooEv,_ZThn36_N3bbb9GG01001103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01001103barEv,_ZTv0_n12_N3bbb9GG01001103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01001103barEv,_ZThn36_N3bbb9GG01001103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01001103fooEv,_ZTv0_n12_N3bbb9GG01001103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01001103fooEv,_ZThn28_N3bbb9GG01001103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01001103fooEv,_ZTv0_n20_N3bbb9GG01001103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01001103fooEv,_ZThn16_N3bbb9GG01001103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01001103barEv,_ZTv0_n16_N3bbb9GG01001103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01001103barEv,_ZThn28_N3bbb9GG01001103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01001103barEv,_ZThn16_N3bbb9GG01001103barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0100110E = {  "_ZN3bbb9GG0100110E", // class name
+  bases__ZN3bbb9GG0100110E, 6,
+  &(vtc__ZN3bbb9GG0100110E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0100110E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0100110E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0100110E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0100110E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names55,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0100111  : virtual ::bbb::EE010 , ::bbb::FF011 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01001113barEv
+  virtual void  foo(); // _ZN3bbb9GG01001113fooEv
+  ~GG0100111(); // tgen
+  GG0100111(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0100111E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC3 VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0100111 ::bar(){vfunc_called(this, "_ZN3bbb9GG01001113barEv");}
+void  bbb::GG0100111 ::foo(){vfunc_called(this, "_ZN3bbb9GG01001113fooEv");}
+bbb::GG0100111 ::~GG0100111(){ note_dtor("_ZN3bbb9GG0100111E", this);} // tgen
+bbb::GG0100111 ::GG0100111(){ note_ctor("_ZN3bbb9GG0100111E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0100111E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0100111E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0100111E, buf);
+    ::bbb::GG0100111 *dp, &lv = *(dp=new (buf) ::bbb::GG0100111());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0100111E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0100111E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0100111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100111E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0100111E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF011*), 0, "_ZN3bbb9GG0100111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF011*), ABISELECT(56,36), "_ZN3bbb9GG0100111E");
+    check_base_class_offset(lv, (::bbb::FF011*), 0, "_ZN3bbb9GG0100111E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0100111E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0100111E);
+    dp->::bbb::GG0100111::~GG0100111();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0100111E(Test__ZN3bbb9GG0100111E, "_ZN3bbb9GG0100111E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0100111C1Ev();
+extern void _ZN3bbb9GG0100111D1Ev();
+Name_Map name_map__ZN3bbb9GG0100111E[] = {
+  NSPAIR(_ZN3bbb9GG0100111C1Ev),
+  NSPAIR(_ZN3bbb9GG0100111D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF011E;
+extern VTBL_ENTRY _ZTIN3bbb5FF011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF011E[];
+static Base_Class bases__ZN3bbb9GG0100111E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF011E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100111E[];
+extern void _ZN3bbb9GG01001113fooEv();
+extern void _ZN3bbb9GG01001113barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001113barEv,_ZTv0_n16_N3bbb9GG01001113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01001113barEv,_ZThn16_N3bbb9GG01001113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01001113fooEv,_ZTv0_n20_N3bbb9GG01001113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01001113fooEv,_ZThn16_N3bbb9GG01001113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01001113fooEv,_ZTv0_n12_N3bbb9GG01001113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01001113fooEv,_ZThn28_N3bbb9GG01001113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001113barEv,_ZTv0_n16_N3bbb9GG01001113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01001113barEv,_ZThn28_N3bbb9GG01001113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01001113barEv,_ZTv0_n12_N3bbb9GG01001113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01001113barEv,_ZThn36_N3bbb9GG01001113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01001113fooEv,_ZTv0_n16_N3bbb9GG01001113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01001113fooEv,_ZThn36_N3bbb9GG01001113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0100111E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01001113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01001113barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001113barEv,_ZTv0_n16_N3bbb9GG01001113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01001113fooEv,_ZTv0_n20_N3bbb9GG01001113fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01001113fooEv,_ZTv0_n12_N3bbb9GG01001113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001113barEv,_ZTv0_n16_N3bbb9GG01001113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0100111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01001113barEv,_ZTv0_n12_N3bbb9GG01001113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01001113fooEv,_ZTv0_n16_N3bbb9GG01001113fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0100111E[];
+extern void _ZN3bbb5FF0113fooEv();
+extern void _ZN3bbb5FF0113barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF011E__NS_9GG0100111E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0113barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0100111E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0100111E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100111E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0100111E[] = {
+  {&(_ZTVN3bbb9GG0100111E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF011E__NS_9GG0100111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0100111E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0100111E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0100111E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0100111E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0100111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0100111E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0100111E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0100111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0100111E[];
+static VTBL_ENTRY alt_thunk_names56[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01001113fooEv,_ZTv0_n16_N3bbb9GG01001113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01001113fooEv,_ZThn36_N3bbb9GG01001113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01001113barEv,_ZTv0_n12_N3bbb9GG01001113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01001113barEv,_ZThn36_N3bbb9GG01001113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01001113fooEv,_ZTv0_n12_N3bbb9GG01001113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01001113fooEv,_ZThn28_N3bbb9GG01001113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01001113fooEv,_ZTv0_n20_N3bbb9GG01001113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01001113fooEv,_ZThn16_N3bbb9GG01001113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01001113barEv,_ZTv0_n16_N3bbb9GG01001113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01001113barEv,_ZThn28_N3bbb9GG01001113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01001113barEv,_ZThn16_N3bbb9GG01001113barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0100111E = {  "_ZN3bbb9GG0100111E", // class name
+  bases__ZN3bbb9GG0100111E, 6,
+  &(vtc__ZN3bbb9GG0100111E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0100111E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0100111E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0100111E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0100111E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names56,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0101000  : virtual ::bbb::EE010 , ::bbb::FF100 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01010003fooEv
+  virtual void  bar(); // _ZN3bbb9GG01010003barEv
+  ~GG0101000(); // tgen
+  GG0101000(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0101000E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC6{ v2 v1 Fi} VBC7{ v1 v2 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0101000 ::foo(){vfunc_called(this, "_ZN3bbb9GG01010003fooEv");}
+void  bbb::GG0101000 ::bar(){vfunc_called(this, "_ZN3bbb9GG01010003barEv");}
+bbb::GG0101000 ::~GG0101000(){ note_dtor("_ZN3bbb9GG0101000E", this);} // tgen
+bbb::GG0101000 ::GG0101000(){ note_ctor("_ZN3bbb9GG0101000E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0101000E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0101000E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0101000E, buf);
+    ::bbb::GG0101000 *dp, &lv = *(dp=new (buf) ::bbb::GG0101000());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0101000E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0101000E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0101000E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101000E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101000E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF100*), 0, "_ZN3bbb9GG0101000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF100*), ABISELECT(56,36), "_ZN3bbb9GG0101000E");
+    check_base_class_offset(lv, (::bbb::FF100*), 0, "_ZN3bbb9GG0101000E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0101000E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0101000E);
+    dp->::bbb::GG0101000::~GG0101000();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0101000E(Test__ZN3bbb9GG0101000E, "_ZN3bbb9GG0101000E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0101000C1Ev();
+extern void _ZN3bbb9GG0101000D1Ev();
+Name_Map name_map__ZN3bbb9GG0101000E[] = {
+  NSPAIR(_ZN3bbb9GG0101000C1Ev),
+  NSPAIR(_ZN3bbb9GG0101000D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF100E;
+extern VTBL_ENTRY _ZTIN3bbb5FF100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF100E[];
+static Base_Class bases__ZN3bbb9GG0101000E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF100E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101000E[];
+extern void _ZN3bbb9GG01010003barEv();
+extern void _ZN3bbb9GG01010003fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010003barEv,_ZTv0_n16_N3bbb9GG01010003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01010003barEv,_ZThn16_N3bbb9GG01010003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01010003fooEv,_ZTv0_n20_N3bbb9GG01010003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01010003fooEv,_ZThn16_N3bbb9GG01010003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01010003fooEv,_ZTv0_n12_N3bbb9GG01010003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01010003fooEv,_ZThn28_N3bbb9GG01010003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010003barEv,_ZTv0_n16_N3bbb9GG01010003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01010003barEv,_ZThn28_N3bbb9GG01010003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01010003fooEv,_ZTv0_n12_N3bbb9GG01010003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01010003fooEv,_ZThn36_N3bbb9GG01010003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010003barEv,_ZTv0_n16_N3bbb9GG01010003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01010003barEv,_ZThn36_N3bbb9GG01010003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0101000E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01010003barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01010003fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010003barEv,_ZTv0_n16_N3bbb9GG01010003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01010003fooEv,_ZTv0_n20_N3bbb9GG01010003fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01010003fooEv,_ZTv0_n12_N3bbb9GG01010003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010003barEv,_ZTv0_n16_N3bbb9GG01010003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01010003fooEv,_ZTv0_n12_N3bbb9GG01010003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010003barEv,_ZTv0_n16_N3bbb9GG01010003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0101000E[];
+extern void _ZN3bbb5FF1003barEv();
+extern void _ZN3bbb5FF1003fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF100E__NS_9GG0101000E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1003barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1003fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0101000E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0101000E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101000E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0101000E[] = {
+  {&(_ZTVN3bbb9GG0101000E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF100E__NS_9GG0101000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0101000E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0101000E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0101000E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0101000E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0101000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101000E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101000E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0101000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0101000E[];
+static VTBL_ENTRY alt_thunk_names57[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01010003fooEv,_ZTv0_n12_N3bbb9GG01010003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01010003fooEv,_ZThn36_N3bbb9GG01010003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01010003fooEv,_ZThn28_N3bbb9GG01010003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01010003fooEv,_ZTv0_n20_N3bbb9GG01010003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01010003fooEv,_ZThn16_N3bbb9GG01010003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01010003barEv,_ZTv0_n16_N3bbb9GG01010003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01010003barEv,_ZThn36_N3bbb9GG01010003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01010003barEv,_ZThn28_N3bbb9GG01010003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01010003barEv,_ZThn16_N3bbb9GG01010003barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0101000E = {  "_ZN3bbb9GG0101000E", // class name
+  bases__ZN3bbb9GG0101000E, 6,
+  &(vtc__ZN3bbb9GG0101000E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0101000E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0101000E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0101000E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0101000E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names57,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0101001  : virtual ::bbb::EE010 , ::bbb::FF100 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01010013barEv
+  virtual void  foo(); // _ZN3bbb9GG01010013fooEv
+  ~GG0101001(); // tgen
+  GG0101001(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0101001E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC6{ v1 v2 Fi} VBC7{ v2 v1 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0101001 ::bar(){vfunc_called(this, "_ZN3bbb9GG01010013barEv");}
+void  bbb::GG0101001 ::foo(){vfunc_called(this, "_ZN3bbb9GG01010013fooEv");}
+bbb::GG0101001 ::~GG0101001(){ note_dtor("_ZN3bbb9GG0101001E", this);} // tgen
+bbb::GG0101001 ::GG0101001(){ note_ctor("_ZN3bbb9GG0101001E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0101001E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0101001E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0101001E, buf);
+    ::bbb::GG0101001 *dp, &lv = *(dp=new (buf) ::bbb::GG0101001());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0101001E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0101001E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0101001E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101001E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101001E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF100*), 0, "_ZN3bbb9GG0101001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF100*), ABISELECT(56,36), "_ZN3bbb9GG0101001E");
+    check_base_class_offset(lv, (::bbb::FF100*), 0, "_ZN3bbb9GG0101001E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0101001E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0101001E);
+    dp->::bbb::GG0101001::~GG0101001();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0101001E(Test__ZN3bbb9GG0101001E, "_ZN3bbb9GG0101001E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0101001C1Ev();
+extern void _ZN3bbb9GG0101001D1Ev();
+Name_Map name_map__ZN3bbb9GG0101001E[] = {
+  NSPAIR(_ZN3bbb9GG0101001C1Ev),
+  NSPAIR(_ZN3bbb9GG0101001D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF100E;
+extern VTBL_ENTRY _ZTIN3bbb5FF100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF100E[];
+static Base_Class bases__ZN3bbb9GG0101001E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF100E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101001E[];
+extern void _ZN3bbb9GG01010013barEv();
+extern void _ZN3bbb9GG01010013fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010013barEv,_ZTv0_n16_N3bbb9GG01010013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01010013barEv,_ZThn16_N3bbb9GG01010013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01010013fooEv,_ZTv0_n20_N3bbb9GG01010013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01010013fooEv,_ZThn16_N3bbb9GG01010013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01010013fooEv,_ZTv0_n12_N3bbb9GG01010013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01010013fooEv,_ZThn28_N3bbb9GG01010013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010013barEv,_ZTv0_n16_N3bbb9GG01010013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01010013barEv,_ZThn28_N3bbb9GG01010013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01010013fooEv,_ZTv0_n12_N3bbb9GG01010013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01010013fooEv,_ZThn36_N3bbb9GG01010013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010013barEv,_ZTv0_n16_N3bbb9GG01010013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01010013barEv,_ZThn36_N3bbb9GG01010013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0101001E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01010013barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01010013fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010013barEv,_ZTv0_n16_N3bbb9GG01010013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01010013fooEv,_ZTv0_n20_N3bbb9GG01010013fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01010013fooEv,_ZTv0_n12_N3bbb9GG01010013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010013barEv,_ZTv0_n16_N3bbb9GG01010013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01010013fooEv,_ZTv0_n12_N3bbb9GG01010013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010013barEv,_ZTv0_n16_N3bbb9GG01010013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0101001E[];
+extern void _ZN3bbb5FF1003barEv();
+extern void _ZN3bbb5FF1003fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF100E__NS_9GG0101001E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1003barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1003fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0101001E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0101001E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101001E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0101001E[] = {
+  {&(_ZTVN3bbb9GG0101001E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF100E__NS_9GG0101001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0101001E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0101001E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0101001E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0101001E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0101001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101001E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101001E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0101001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0101001E[];
+static VTBL_ENTRY alt_thunk_names58[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01010013fooEv,_ZTv0_n12_N3bbb9GG01010013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01010013fooEv,_ZThn36_N3bbb9GG01010013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01010013fooEv,_ZThn28_N3bbb9GG01010013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01010013fooEv,_ZTv0_n20_N3bbb9GG01010013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01010013fooEv,_ZThn16_N3bbb9GG01010013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01010013barEv,_ZTv0_n16_N3bbb9GG01010013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01010013barEv,_ZThn36_N3bbb9GG01010013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01010013barEv,_ZThn28_N3bbb9GG01010013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01010013barEv,_ZThn16_N3bbb9GG01010013barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0101001E = {  "_ZN3bbb9GG0101001E", // class name
+  bases__ZN3bbb9GG0101001E, 6,
+  &(vtc__ZN3bbb9GG0101001E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0101001E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0101001E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0101001E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0101001E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names58,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0101010  : virtual ::bbb::EE010 , ::bbb::FF101 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01010103fooEv
+  virtual void  bar(); // _ZN3bbb9GG01010103barEv
+  ~GG0101010(); // tgen
+  GG0101010(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0101010E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC6{ v2 v1 Fi} VBC7{ v1 v2 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0101010 ::foo(){vfunc_called(this, "_ZN3bbb9GG01010103fooEv");}
+void  bbb::GG0101010 ::bar(){vfunc_called(this, "_ZN3bbb9GG01010103barEv");}
+bbb::GG0101010 ::~GG0101010(){ note_dtor("_ZN3bbb9GG0101010E", this);} // tgen
+bbb::GG0101010 ::GG0101010(){ note_ctor("_ZN3bbb9GG0101010E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0101010E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0101010E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0101010E, buf);
+    ::bbb::GG0101010 *dp, &lv = *(dp=new (buf) ::bbb::GG0101010());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0101010E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0101010E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0101010E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101010E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101010E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF101*), 0, "_ZN3bbb9GG0101010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF101*), ABISELECT(56,36), "_ZN3bbb9GG0101010E");
+    check_base_class_offset(lv, (::bbb::FF101*), 0, "_ZN3bbb9GG0101010E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0101010E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0101010E);
+    dp->::bbb::GG0101010::~GG0101010();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0101010E(Test__ZN3bbb9GG0101010E, "_ZN3bbb9GG0101010E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0101010C1Ev();
+extern void _ZN3bbb9GG0101010D1Ev();
+Name_Map name_map__ZN3bbb9GG0101010E[] = {
+  NSPAIR(_ZN3bbb9GG0101010C1Ev),
+  NSPAIR(_ZN3bbb9GG0101010D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF101E;
+extern VTBL_ENTRY _ZTIN3bbb5FF101E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF101E[];
+static Base_Class bases__ZN3bbb9GG0101010E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF101E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101010E[];
+extern void _ZN3bbb9GG01010103barEv();
+extern void _ZN3bbb9GG01010103fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010103barEv,_ZTv0_n16_N3bbb9GG01010103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01010103barEv,_ZThn16_N3bbb9GG01010103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01010103fooEv,_ZTv0_n20_N3bbb9GG01010103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01010103fooEv,_ZThn16_N3bbb9GG01010103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01010103fooEv,_ZTv0_n12_N3bbb9GG01010103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01010103fooEv,_ZThn28_N3bbb9GG01010103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010103barEv,_ZTv0_n16_N3bbb9GG01010103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01010103barEv,_ZThn28_N3bbb9GG01010103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01010103fooEv,_ZTv0_n12_N3bbb9GG01010103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01010103fooEv,_ZThn36_N3bbb9GG01010103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010103barEv,_ZTv0_n16_N3bbb9GG01010103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01010103barEv,_ZThn36_N3bbb9GG01010103barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0101010E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01010103barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01010103fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010103barEv,_ZTv0_n16_N3bbb9GG01010103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01010103fooEv,_ZTv0_n20_N3bbb9GG01010103fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01010103fooEv,_ZTv0_n12_N3bbb9GG01010103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010103barEv,_ZTv0_n16_N3bbb9GG01010103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01010103fooEv,_ZTv0_n12_N3bbb9GG01010103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010103barEv,_ZTv0_n16_N3bbb9GG01010103barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0101010E[];
+extern void _ZN3bbb5FF1013barEv();
+extern void _ZN3bbb5FF1013fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF101E__NS_9GG0101010E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1013barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1013fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0101010E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0101010E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101010E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0101010E[] = {
+  {&(_ZTVN3bbb9GG0101010E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF101E__NS_9GG0101010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0101010E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0101010E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0101010E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0101010E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0101010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101010E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101010E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0101010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0101010E[];
+static VTBL_ENTRY alt_thunk_names59[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01010103fooEv,_ZTv0_n12_N3bbb9GG01010103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01010103fooEv,_ZThn36_N3bbb9GG01010103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01010103fooEv,_ZThn28_N3bbb9GG01010103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01010103fooEv,_ZTv0_n20_N3bbb9GG01010103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01010103fooEv,_ZThn16_N3bbb9GG01010103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01010103barEv,_ZTv0_n16_N3bbb9GG01010103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01010103barEv,_ZThn36_N3bbb9GG01010103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01010103barEv,_ZThn28_N3bbb9GG01010103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01010103barEv,_ZThn16_N3bbb9GG01010103barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0101010E = {  "_ZN3bbb9GG0101010E", // class name
+  bases__ZN3bbb9GG0101010E, 6,
+  &(vtc__ZN3bbb9GG0101010E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0101010E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0101010E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0101010E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0101010E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names59,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0101011  : virtual ::bbb::EE010 , ::bbb::FF101 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01010113barEv
+  virtual void  foo(); // _ZN3bbb9GG01010113fooEv
+  ~GG0101011(); // tgen
+  GG0101011(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0101011E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC6{ v1 v2 Fi} VBC7{ v2 v1 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0101011 ::bar(){vfunc_called(this, "_ZN3bbb9GG01010113barEv");}
+void  bbb::GG0101011 ::foo(){vfunc_called(this, "_ZN3bbb9GG01010113fooEv");}
+bbb::GG0101011 ::~GG0101011(){ note_dtor("_ZN3bbb9GG0101011E", this);} // tgen
+bbb::GG0101011 ::GG0101011(){ note_ctor("_ZN3bbb9GG0101011E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0101011E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0101011E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0101011E, buf);
+    ::bbb::GG0101011 *dp, &lv = *(dp=new (buf) ::bbb::GG0101011());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0101011E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0101011E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0101011E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101011E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101011E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF101*), 0, "_ZN3bbb9GG0101011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF101*), ABISELECT(56,36), "_ZN3bbb9GG0101011E");
+    check_base_class_offset(lv, (::bbb::FF101*), 0, "_ZN3bbb9GG0101011E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0101011E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0101011E);
+    dp->::bbb::GG0101011::~GG0101011();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0101011E(Test__ZN3bbb9GG0101011E, "_ZN3bbb9GG0101011E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0101011C1Ev();
+extern void _ZN3bbb9GG0101011D1Ev();
+Name_Map name_map__ZN3bbb9GG0101011E[] = {
+  NSPAIR(_ZN3bbb9GG0101011C1Ev),
+  NSPAIR(_ZN3bbb9GG0101011D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF101E;
+extern VTBL_ENTRY _ZTIN3bbb5FF101E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF101E[];
+static Base_Class bases__ZN3bbb9GG0101011E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF101E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101011E[];
+extern void _ZN3bbb9GG01010113barEv();
+extern void _ZN3bbb9GG01010113fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010113barEv,_ZTv0_n16_N3bbb9GG01010113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01010113barEv,_ZThn16_N3bbb9GG01010113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01010113fooEv,_ZTv0_n20_N3bbb9GG01010113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01010113fooEv,_ZThn16_N3bbb9GG01010113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01010113fooEv,_ZTv0_n12_N3bbb9GG01010113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01010113fooEv,_ZThn28_N3bbb9GG01010113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010113barEv,_ZTv0_n16_N3bbb9GG01010113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01010113barEv,_ZThn28_N3bbb9GG01010113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01010113fooEv,_ZTv0_n12_N3bbb9GG01010113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01010113fooEv,_ZThn36_N3bbb9GG01010113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01010113barEv,_ZTv0_n16_N3bbb9GG01010113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01010113barEv,_ZThn36_N3bbb9GG01010113barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0101011E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01010113barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01010113fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010113barEv,_ZTv0_n16_N3bbb9GG01010113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01010113fooEv,_ZTv0_n20_N3bbb9GG01010113fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01010113fooEv,_ZTv0_n12_N3bbb9GG01010113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010113barEv,_ZTv0_n16_N3bbb9GG01010113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01010113fooEv,_ZTv0_n12_N3bbb9GG01010113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01010113barEv,_ZTv0_n16_N3bbb9GG01010113barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0101011E[];
+extern void _ZN3bbb5FF1013barEv();
+extern void _ZN3bbb5FF1013fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF101E__NS_9GG0101011E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1013barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1013fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0101011E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0101011E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101011E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0101011E[] = {
+  {&(_ZTVN3bbb9GG0101011E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF101E__NS_9GG0101011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0101011E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0101011E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0101011E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0101011E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0101011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101011E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101011E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0101011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0101011E[];
+static VTBL_ENTRY alt_thunk_names60[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01010113fooEv,_ZTv0_n12_N3bbb9GG01010113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01010113fooEv,_ZThn36_N3bbb9GG01010113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01010113fooEv,_ZThn28_N3bbb9GG01010113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01010113fooEv,_ZTv0_n20_N3bbb9GG01010113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01010113fooEv,_ZThn16_N3bbb9GG01010113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01010113barEv,_ZTv0_n16_N3bbb9GG01010113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01010113barEv,_ZThn36_N3bbb9GG01010113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01010113barEv,_ZThn28_N3bbb9GG01010113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01010113barEv,_ZThn16_N3bbb9GG01010113barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0101011E = {  "_ZN3bbb9GG0101011E", // class name
+  bases__ZN3bbb9GG0101011E, 6,
+  &(vtc__ZN3bbb9GG0101011E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0101011E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0101011E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0101011E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0101011E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names60,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0101100  : virtual ::bbb::EE010 , ::bbb::FF110 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01011003fooEv
+  virtual void  bar(); // _ZN3bbb9GG01011003barEv
+  ~GG0101100(); // tgen
+  GG0101100(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0101100E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC6{ v2 v1 Fi} VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0101100 ::foo(){vfunc_called(this, "_ZN3bbb9GG01011003fooEv");}
+void  bbb::GG0101100 ::bar(){vfunc_called(this, "_ZN3bbb9GG01011003barEv");}
+bbb::GG0101100 ::~GG0101100(){ note_dtor("_ZN3bbb9GG0101100E", this);} // tgen
+bbb::GG0101100 ::GG0101100(){ note_ctor("_ZN3bbb9GG0101100E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0101100E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0101100E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0101100E, buf);
+    ::bbb::GG0101100 *dp, &lv = *(dp=new (buf) ::bbb::GG0101100());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0101100E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0101100E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0101100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101100E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101100E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF110*), 0, "_ZN3bbb9GG0101100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF110*), ABISELECT(56,36), "_ZN3bbb9GG0101100E");
+    check_base_class_offset(lv, (::bbb::FF110*), 0, "_ZN3bbb9GG0101100E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0101100E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0101100E);
+    dp->::bbb::GG0101100::~GG0101100();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0101100E(Test__ZN3bbb9GG0101100E, "_ZN3bbb9GG0101100E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0101100C1Ev();
+extern void _ZN3bbb9GG0101100D1Ev();
+Name_Map name_map__ZN3bbb9GG0101100E[] = {
+  NSPAIR(_ZN3bbb9GG0101100C1Ev),
+  NSPAIR(_ZN3bbb9GG0101100D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF110E;
+extern VTBL_ENTRY _ZTIN3bbb5FF110E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF110E[];
+static Base_Class bases__ZN3bbb9GG0101100E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF110E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101100E[];
+extern void _ZN3bbb9GG01011003barEv();
+extern void _ZN3bbb9GG01011003fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011003barEv,_ZTv0_n16_N3bbb9GG01011003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01011003barEv,_ZThn16_N3bbb9GG01011003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01011003fooEv,_ZTv0_n20_N3bbb9GG01011003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01011003fooEv,_ZThn16_N3bbb9GG01011003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01011003fooEv,_ZTv0_n12_N3bbb9GG01011003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01011003fooEv,_ZThn28_N3bbb9GG01011003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011003barEv,_ZTv0_n16_N3bbb9GG01011003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01011003barEv,_ZThn28_N3bbb9GG01011003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01011003barEv,_ZTv0_n12_N3bbb9GG01011003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01011003barEv,_ZThn36_N3bbb9GG01011003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011003fooEv,_ZTv0_n16_N3bbb9GG01011003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01011003fooEv,_ZThn36_N3bbb9GG01011003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0101100E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01011003barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01011003fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011003barEv,_ZTv0_n16_N3bbb9GG01011003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01011003fooEv,_ZTv0_n20_N3bbb9GG01011003fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01011003fooEv,_ZTv0_n12_N3bbb9GG01011003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011003barEv,_ZTv0_n16_N3bbb9GG01011003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01011003barEv,_ZTv0_n12_N3bbb9GG01011003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011003fooEv,_ZTv0_n16_N3bbb9GG01011003fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0101100E[];
+extern void _ZN3bbb5FF1103barEv();
+extern void _ZN3bbb5FF1103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF110E__NS_9GG0101100E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0101100E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0101100E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101100E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0101100E[] = {
+  {&(_ZTVN3bbb9GG0101100E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF110E__NS_9GG0101100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0101100E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0101100E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0101100E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0101100E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0101100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101100E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101100E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0101100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0101100E[];
+static VTBL_ENTRY alt_thunk_names61[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01011003fooEv,_ZTv0_n16_N3bbb9GG01011003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01011003fooEv,_ZThn36_N3bbb9GG01011003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01011003barEv,_ZTv0_n12_N3bbb9GG01011003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01011003barEv,_ZThn36_N3bbb9GG01011003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01011003fooEv,_ZTv0_n12_N3bbb9GG01011003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01011003fooEv,_ZThn28_N3bbb9GG01011003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01011003fooEv,_ZTv0_n20_N3bbb9GG01011003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01011003fooEv,_ZThn16_N3bbb9GG01011003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01011003barEv,_ZTv0_n16_N3bbb9GG01011003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01011003barEv,_ZThn28_N3bbb9GG01011003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01011003barEv,_ZThn16_N3bbb9GG01011003barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0101100E = {  "_ZN3bbb9GG0101100E", // class name
+  bases__ZN3bbb9GG0101100E, 6,
+  &(vtc__ZN3bbb9GG0101100E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0101100E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0101100E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0101100E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0101100E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names61,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0101101  : virtual ::bbb::EE010 , ::bbb::FF110 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01011013barEv
+  virtual void  foo(); // _ZN3bbb9GG01011013fooEv
+  ~GG0101101(); // tgen
+  GG0101101(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0101101E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC6{ v1 v2 Fi} VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0101101 ::bar(){vfunc_called(this, "_ZN3bbb9GG01011013barEv");}
+void  bbb::GG0101101 ::foo(){vfunc_called(this, "_ZN3bbb9GG01011013fooEv");}
+bbb::GG0101101 ::~GG0101101(){ note_dtor("_ZN3bbb9GG0101101E", this);} // tgen
+bbb::GG0101101 ::GG0101101(){ note_ctor("_ZN3bbb9GG0101101E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0101101E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0101101E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0101101E, buf);
+    ::bbb::GG0101101 *dp, &lv = *(dp=new (buf) ::bbb::GG0101101());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0101101E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0101101E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0101101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101101E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101101E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF110*), 0, "_ZN3bbb9GG0101101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF110*), ABISELECT(56,36), "_ZN3bbb9GG0101101E");
+    check_base_class_offset(lv, (::bbb::FF110*), 0, "_ZN3bbb9GG0101101E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0101101E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0101101E);
+    dp->::bbb::GG0101101::~GG0101101();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0101101E(Test__ZN3bbb9GG0101101E, "_ZN3bbb9GG0101101E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0101101C1Ev();
+extern void _ZN3bbb9GG0101101D1Ev();
+Name_Map name_map__ZN3bbb9GG0101101E[] = {
+  NSPAIR(_ZN3bbb9GG0101101C1Ev),
+  NSPAIR(_ZN3bbb9GG0101101D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF110E;
+extern VTBL_ENTRY _ZTIN3bbb5FF110E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF110E[];
+static Base_Class bases__ZN3bbb9GG0101101E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF110E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101101E[];
+extern void _ZN3bbb9GG01011013barEv();
+extern void _ZN3bbb9GG01011013fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011013barEv,_ZTv0_n16_N3bbb9GG01011013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01011013barEv,_ZThn16_N3bbb9GG01011013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01011013fooEv,_ZTv0_n20_N3bbb9GG01011013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01011013fooEv,_ZThn16_N3bbb9GG01011013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01011013fooEv,_ZTv0_n12_N3bbb9GG01011013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01011013fooEv,_ZThn28_N3bbb9GG01011013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011013barEv,_ZTv0_n16_N3bbb9GG01011013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01011013barEv,_ZThn28_N3bbb9GG01011013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01011013barEv,_ZTv0_n12_N3bbb9GG01011013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01011013barEv,_ZThn36_N3bbb9GG01011013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011013fooEv,_ZTv0_n16_N3bbb9GG01011013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01011013fooEv,_ZThn36_N3bbb9GG01011013fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0101101E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01011013barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01011013fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011013barEv,_ZTv0_n16_N3bbb9GG01011013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01011013fooEv,_ZTv0_n20_N3bbb9GG01011013fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01011013fooEv,_ZTv0_n12_N3bbb9GG01011013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011013barEv,_ZTv0_n16_N3bbb9GG01011013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01011013barEv,_ZTv0_n12_N3bbb9GG01011013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011013fooEv,_ZTv0_n16_N3bbb9GG01011013fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0101101E[];
+extern void _ZN3bbb5FF1103barEv();
+extern void _ZN3bbb5FF1103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF110E__NS_9GG0101101E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0101101E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0101101E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101101E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0101101E[] = {
+  {&(_ZTVN3bbb9GG0101101E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF110E__NS_9GG0101101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0101101E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0101101E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0101101E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0101101E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0101101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101101E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101101E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0101101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0101101E[];
+static VTBL_ENTRY alt_thunk_names62[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01011013fooEv,_ZTv0_n16_N3bbb9GG01011013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01011013fooEv,_ZThn36_N3bbb9GG01011013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01011013barEv,_ZTv0_n12_N3bbb9GG01011013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01011013barEv,_ZThn36_N3bbb9GG01011013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01011013fooEv,_ZTv0_n12_N3bbb9GG01011013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01011013fooEv,_ZThn28_N3bbb9GG01011013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01011013fooEv,_ZTv0_n20_N3bbb9GG01011013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01011013fooEv,_ZThn16_N3bbb9GG01011013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01011013barEv,_ZTv0_n16_N3bbb9GG01011013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01011013barEv,_ZThn28_N3bbb9GG01011013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01011013barEv,_ZThn16_N3bbb9GG01011013barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0101101E = {  "_ZN3bbb9GG0101101E", // class name
+  bases__ZN3bbb9GG0101101E, 6,
+  &(vtc__ZN3bbb9GG0101101E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0101101E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0101101E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0101101E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0101101E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names62,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0101110  : virtual ::bbb::EE010 , ::bbb::FF111 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01011103fooEv
+  virtual void  bar(); // _ZN3bbb9GG01011103barEv
+  ~GG0101110(); // tgen
+  GG0101110(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0101110E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v1 v2 Fi} BC5{ BC6{ v2 v1 Fi} VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0101110 ::foo(){vfunc_called(this, "_ZN3bbb9GG01011103fooEv");}
+void  bbb::GG0101110 ::bar(){vfunc_called(this, "_ZN3bbb9GG01011103barEv");}
+bbb::GG0101110 ::~GG0101110(){ note_dtor("_ZN3bbb9GG0101110E", this);} // tgen
+bbb::GG0101110 ::GG0101110(){ note_ctor("_ZN3bbb9GG0101110E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0101110E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0101110E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0101110E, buf);
+    ::bbb::GG0101110 *dp, &lv = *(dp=new (buf) ::bbb::GG0101110());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0101110E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0101110E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0101110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101110E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101110E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF111*), 0, "_ZN3bbb9GG0101110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF111*), ABISELECT(56,36), "_ZN3bbb9GG0101110E");
+    check_base_class_offset(lv, (::bbb::FF111*), 0, "_ZN3bbb9GG0101110E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0101110E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0101110E);
+    dp->::bbb::GG0101110::~GG0101110();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0101110E(Test__ZN3bbb9GG0101110E, "_ZN3bbb9GG0101110E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0101110C1Ev();
+extern void _ZN3bbb9GG0101110D1Ev();
+Name_Map name_map__ZN3bbb9GG0101110E[] = {
+  NSPAIR(_ZN3bbb9GG0101110C1Ev),
+  NSPAIR(_ZN3bbb9GG0101110D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF111E;
+extern VTBL_ENTRY _ZTIN3bbb5FF111E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF111E[];
+static Base_Class bases__ZN3bbb9GG0101110E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF111E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101110E[];
+extern void _ZN3bbb9GG01011103barEv();
+extern void _ZN3bbb9GG01011103fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011103barEv,_ZTv0_n16_N3bbb9GG01011103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01011103barEv,_ZThn16_N3bbb9GG01011103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01011103fooEv,_ZTv0_n20_N3bbb9GG01011103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01011103fooEv,_ZThn16_N3bbb9GG01011103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01011103fooEv,_ZTv0_n12_N3bbb9GG01011103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01011103fooEv,_ZThn28_N3bbb9GG01011103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011103barEv,_ZTv0_n16_N3bbb9GG01011103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01011103barEv,_ZThn28_N3bbb9GG01011103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01011103barEv,_ZTv0_n12_N3bbb9GG01011103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01011103barEv,_ZThn36_N3bbb9GG01011103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011103fooEv,_ZTv0_n16_N3bbb9GG01011103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01011103fooEv,_ZThn36_N3bbb9GG01011103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0101110E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01011103barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01011103fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011103barEv,_ZTv0_n16_N3bbb9GG01011103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01011103fooEv,_ZTv0_n20_N3bbb9GG01011103fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01011103fooEv,_ZTv0_n12_N3bbb9GG01011103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011103barEv,_ZTv0_n16_N3bbb9GG01011103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01011103barEv,_ZTv0_n12_N3bbb9GG01011103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011103fooEv,_ZTv0_n16_N3bbb9GG01011103fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0101110E[];
+extern void _ZN3bbb5FF1113barEv();
+extern void _ZN3bbb5FF1113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF111E__NS_9GG0101110E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0101110E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0101110E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101110E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0101110E[] = {
+  {&(_ZTVN3bbb9GG0101110E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF111E__NS_9GG0101110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0101110E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0101110E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0101110E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0101110E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0101110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101110E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101110E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0101110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0101110E[];
+static VTBL_ENTRY alt_thunk_names63[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01011103fooEv,_ZTv0_n16_N3bbb9GG01011103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01011103fooEv,_ZThn36_N3bbb9GG01011103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01011103barEv,_ZTv0_n12_N3bbb9GG01011103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01011103barEv,_ZThn36_N3bbb9GG01011103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01011103fooEv,_ZTv0_n12_N3bbb9GG01011103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01011103fooEv,_ZThn28_N3bbb9GG01011103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01011103fooEv,_ZTv0_n20_N3bbb9GG01011103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01011103fooEv,_ZThn16_N3bbb9GG01011103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01011103barEv,_ZTv0_n16_N3bbb9GG01011103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01011103barEv,_ZThn28_N3bbb9GG01011103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01011103barEv,_ZThn16_N3bbb9GG01011103barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0101110E = {  "_ZN3bbb9GG0101110E", // class name
+  bases__ZN3bbb9GG0101110E, 6,
+  &(vtc__ZN3bbb9GG0101110E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0101110E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0101110E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0101110E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0101110E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names63,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0101111  : virtual ::bbb::EE010 , ::bbb::FF111 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01011113barEv
+  virtual void  foo(); // _ZN3bbb9GG01011113fooEv
+  ~GG0101111(); // tgen
+  GG0101111(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0101111E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v2 v1 Fi} BC5{ BC6{ v1 v2 Fi} VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0101111 ::bar(){vfunc_called(this, "_ZN3bbb9GG01011113barEv");}
+void  bbb::GG0101111 ::foo(){vfunc_called(this, "_ZN3bbb9GG01011113fooEv");}
+bbb::GG0101111 ::~GG0101111(){ note_dtor("_ZN3bbb9GG0101111E", this);} // tgen
+bbb::GG0101111 ::GG0101111(){ note_ctor("_ZN3bbb9GG0101111E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0101111E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0101111E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0101111E, buf);
+    ::bbb::GG0101111 *dp, &lv = *(dp=new (buf) ::bbb::GG0101111());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0101111E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0101111E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE010*), ABISELECT(40,28), "_ZN3bbb9GG0101111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101111E");
+    check_base_class_offset(lv, (::bbb::EE010*), ABISELECT(24,16), "_ZN3bbb9GG0101111E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF111*), 0, "_ZN3bbb9GG0101111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF111*), ABISELECT(56,36), "_ZN3bbb9GG0101111E");
+    check_base_class_offset(lv, (::bbb::FF111*), 0, "_ZN3bbb9GG0101111E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0101111E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0101111E);
+    dp->::bbb::GG0101111::~GG0101111();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0101111E(Test__ZN3bbb9GG0101111E, "_ZN3bbb9GG0101111E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0101111C1Ev();
+extern void _ZN3bbb9GG0101111D1Ev();
+Name_Map name_map__ZN3bbb9GG0101111E[] = {
+  NSPAIR(_ZN3bbb9GG0101111C1Ev),
+  NSPAIR(_ZN3bbb9GG0101111D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE010E;
+extern VTBL_ENTRY _ZTIN3bbb5EE010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE010E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF111E;
+extern VTBL_ENTRY _ZTIN3bbb5FF111E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF111E[];
+static Base_Class bases__ZN3bbb9GG0101111E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE010E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF111E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101111E[];
+extern void _ZN3bbb9GG01011113barEv();
+extern void _ZN3bbb9GG01011113fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011113barEv,_ZTv0_n16_N3bbb9GG01011113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01011113barEv,_ZThn16_N3bbb9GG01011113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01011113fooEv,_ZTv0_n20_N3bbb9GG01011113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01011113fooEv,_ZThn16_N3bbb9GG01011113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01011113fooEv,_ZTv0_n12_N3bbb9GG01011113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01011113fooEv,_ZThn28_N3bbb9GG01011113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011113barEv,_ZTv0_n16_N3bbb9GG01011113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01011113barEv,_ZThn28_N3bbb9GG01011113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01011113barEv,_ZTv0_n12_N3bbb9GG01011113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01011113barEv,_ZThn36_N3bbb9GG01011113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01011113fooEv,_ZTv0_n16_N3bbb9GG01011113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01011113fooEv,_ZThn36_N3bbb9GG01011113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0101111E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01011113barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01011113fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011113barEv,_ZTv0_n16_N3bbb9GG01011113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01011113fooEv,_ZTv0_n20_N3bbb9GG01011113fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01011113fooEv,_ZTv0_n12_N3bbb9GG01011113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011113barEv,_ZTv0_n16_N3bbb9GG01011113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0101111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01011113barEv,_ZTv0_n12_N3bbb9GG01011113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01011113fooEv,_ZTv0_n16_N3bbb9GG01011113fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0101111E[];
+extern void _ZN3bbb5FF1113barEv();
+extern void _ZN3bbb5FF1113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF111E__NS_9GG0101111E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0101111E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv),
+};
+extern void _ZN3bbb5EE0103barEv();
+extern void _ZN3bbb5EE0103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE010E__NS_9GG0101111E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101111E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0101111E[] = {
+  {&(_ZTVN3bbb9GG0101111E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF111E__NS_9GG0101111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0101111E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0101111E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0101111E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0101111E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE010E__NS_9GG0101111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE010E__NS_9GG0101111E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0101111E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0101111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0101111E[];
+static VTBL_ENTRY alt_thunk_names64[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0103barEv,_ZTv0_n16_N3bbb5EE0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103barEv,_ZThn12_N3bbb5EE0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0103fooEv,_ZTv0_n12_N3bbb5EE0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0103fooEv,_ZThn12_N3bbb5EE0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01011113fooEv,_ZTv0_n16_N3bbb9GG01011113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01011113fooEv,_ZThn36_N3bbb9GG01011113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01011113barEv,_ZTv0_n12_N3bbb9GG01011113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01011113barEv,_ZThn36_N3bbb9GG01011113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01011113fooEv,_ZTv0_n12_N3bbb9GG01011113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01011113fooEv,_ZThn28_N3bbb9GG01011113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01011113fooEv,_ZTv0_n20_N3bbb9GG01011113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01011113fooEv,_ZThn16_N3bbb9GG01011113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01011113barEv,_ZTv0_n16_N3bbb9GG01011113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01011113barEv,_ZThn28_N3bbb9GG01011113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01011113barEv,_ZThn16_N3bbb9GG01011113barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0101111E = {  "_ZN3bbb9GG0101111E", // class name
+  bases__ZN3bbb9GG0101111E, 6,
+  &(vtc__ZN3bbb9GG0101111E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0101111E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0101111E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0101111E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0101111E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names64,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0110000  : virtual ::bbb::EE011 , ::bbb::FF000 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01100003fooEv
+  virtual void  bar(); // _ZN3bbb9GG01100003barEv
+  ~GG0110000(); // tgen
+  GG0110000(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0110000E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC3 VBC6{ v1 v2 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0110000 ::foo(){vfunc_called(this, "_ZN3bbb9GG01100003fooEv");}
+void  bbb::GG0110000 ::bar(){vfunc_called(this, "_ZN3bbb9GG01100003barEv");}
+bbb::GG0110000 ::~GG0110000(){ note_dtor("_ZN3bbb9GG0110000E", this);} // tgen
+bbb::GG0110000 ::GG0110000(){ note_ctor("_ZN3bbb9GG0110000E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0110000E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0110000E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0110000E, buf);
+    ::bbb::GG0110000 *dp, &lv = *(dp=new (buf) ::bbb::GG0110000());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0110000E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0110000E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0110000E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110000E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110000E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF000*), 0, "_ZN3bbb9GG0110000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF000*), ABISELECT(56,36), "_ZN3bbb9GG0110000E");
+    check_base_class_offset(lv, (::bbb::FF000*), 0, "_ZN3bbb9GG0110000E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0110000E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0110000E);
+    dp->::bbb::GG0110000::~GG0110000();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0110000E(Test__ZN3bbb9GG0110000E, "_ZN3bbb9GG0110000E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0110000C1Ev();
+extern void _ZN3bbb9GG0110000D1Ev();
+Name_Map name_map__ZN3bbb9GG0110000E[] = {
+  NSPAIR(_ZN3bbb9GG0110000C1Ev),
+  NSPAIR(_ZN3bbb9GG0110000D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF000E;
+extern VTBL_ENTRY _ZTIN3bbb5FF000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF000E[];
+static Base_Class bases__ZN3bbb9GG0110000E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF000E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110000E[];
+extern void _ZN3bbb9GG01100003fooEv();
+extern void _ZN3bbb9GG01100003barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100003barEv,_ZTv0_n16_N3bbb9GG01100003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01100003barEv,_ZThn16_N3bbb9GG01100003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01100003fooEv,_ZTv0_n20_N3bbb9GG01100003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01100003fooEv,_ZThn16_N3bbb9GG01100003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01100003fooEv,_ZTv0_n12_N3bbb9GG01100003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01100003fooEv,_ZThn28_N3bbb9GG01100003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100003barEv,_ZTv0_n16_N3bbb9GG01100003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01100003barEv,_ZThn28_N3bbb9GG01100003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01100003fooEv,_ZTv0_n12_N3bbb9GG01100003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01100003fooEv,_ZThn36_N3bbb9GG01100003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100003barEv,_ZTv0_n16_N3bbb9GG01100003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01100003barEv,_ZThn36_N3bbb9GG01100003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0110000E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01100003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01100003barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100003barEv,_ZTv0_n16_N3bbb9GG01100003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01100003fooEv,_ZTv0_n20_N3bbb9GG01100003fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01100003fooEv,_ZTv0_n12_N3bbb9GG01100003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100003barEv,_ZTv0_n16_N3bbb9GG01100003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01100003fooEv,_ZTv0_n12_N3bbb9GG01100003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100003barEv,_ZTv0_n16_N3bbb9GG01100003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0110000E[];
+extern void _ZN3bbb5FF0003fooEv();
+extern void _ZN3bbb5FF0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF000E__NS_9GG0110000E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0110000E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0110000E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110000E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0110000E[] = {
+  {&(_ZTVN3bbb9GG0110000E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF000E__NS_9GG0110000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0110000E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0110000E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0110000E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0110000E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0110000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110000E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110000E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0110000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0110000E[];
+static VTBL_ENTRY alt_thunk_names65[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01100003fooEv,_ZTv0_n12_N3bbb9GG01100003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01100003fooEv,_ZThn36_N3bbb9GG01100003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01100003fooEv,_ZThn28_N3bbb9GG01100003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01100003fooEv,_ZTv0_n20_N3bbb9GG01100003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01100003fooEv,_ZThn16_N3bbb9GG01100003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01100003barEv,_ZTv0_n16_N3bbb9GG01100003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01100003barEv,_ZThn36_N3bbb9GG01100003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01100003barEv,_ZThn28_N3bbb9GG01100003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01100003barEv,_ZThn16_N3bbb9GG01100003barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0110000E = {  "_ZN3bbb9GG0110000E", // class name
+  bases__ZN3bbb9GG0110000E, 6,
+  &(vtc__ZN3bbb9GG0110000E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0110000E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0110000E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0110000E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0110000E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names65,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0110001  : virtual ::bbb::EE011 , ::bbb::FF000 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01100013barEv
+  virtual void  foo(); // _ZN3bbb9GG01100013fooEv
+  ~GG0110001(); // tgen
+  GG0110001(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0110001E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC3 VBC6{ v2 v1 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0110001 ::bar(){vfunc_called(this, "_ZN3bbb9GG01100013barEv");}
+void  bbb::GG0110001 ::foo(){vfunc_called(this, "_ZN3bbb9GG01100013fooEv");}
+bbb::GG0110001 ::~GG0110001(){ note_dtor("_ZN3bbb9GG0110001E", this);} // tgen
+bbb::GG0110001 ::GG0110001(){ note_ctor("_ZN3bbb9GG0110001E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0110001E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0110001E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0110001E, buf);
+    ::bbb::GG0110001 *dp, &lv = *(dp=new (buf) ::bbb::GG0110001());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0110001E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0110001E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0110001E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110001E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110001E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF000*), 0, "_ZN3bbb9GG0110001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF000*), ABISELECT(56,36), "_ZN3bbb9GG0110001E");
+    check_base_class_offset(lv, (::bbb::FF000*), 0, "_ZN3bbb9GG0110001E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0110001E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0110001E);
+    dp->::bbb::GG0110001::~GG0110001();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0110001E(Test__ZN3bbb9GG0110001E, "_ZN3bbb9GG0110001E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0110001C1Ev();
+extern void _ZN3bbb9GG0110001D1Ev();
+Name_Map name_map__ZN3bbb9GG0110001E[] = {
+  NSPAIR(_ZN3bbb9GG0110001C1Ev),
+  NSPAIR(_ZN3bbb9GG0110001D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF000E;
+extern VTBL_ENTRY _ZTIN3bbb5FF000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF000E[];
+static Base_Class bases__ZN3bbb9GG0110001E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF000E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110001E[];
+extern void _ZN3bbb9GG01100013fooEv();
+extern void _ZN3bbb9GG01100013barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100013barEv,_ZTv0_n16_N3bbb9GG01100013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01100013barEv,_ZThn16_N3bbb9GG01100013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01100013fooEv,_ZTv0_n20_N3bbb9GG01100013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01100013fooEv,_ZThn16_N3bbb9GG01100013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01100013fooEv,_ZTv0_n12_N3bbb9GG01100013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01100013fooEv,_ZThn28_N3bbb9GG01100013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100013barEv,_ZTv0_n16_N3bbb9GG01100013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01100013barEv,_ZThn28_N3bbb9GG01100013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01100013fooEv,_ZTv0_n12_N3bbb9GG01100013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01100013fooEv,_ZThn36_N3bbb9GG01100013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100013barEv,_ZTv0_n16_N3bbb9GG01100013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01100013barEv,_ZThn36_N3bbb9GG01100013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0110001E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01100013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01100013barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100013barEv,_ZTv0_n16_N3bbb9GG01100013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01100013fooEv,_ZTv0_n20_N3bbb9GG01100013fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01100013fooEv,_ZTv0_n12_N3bbb9GG01100013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100013barEv,_ZTv0_n16_N3bbb9GG01100013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01100013fooEv,_ZTv0_n12_N3bbb9GG01100013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100013barEv,_ZTv0_n16_N3bbb9GG01100013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0110001E[];
+extern void _ZN3bbb5FF0003fooEv();
+extern void _ZN3bbb5FF0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF000E__NS_9GG0110001E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0110001E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0110001E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110001E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0110001E[] = {
+  {&(_ZTVN3bbb9GG0110001E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF000E__NS_9GG0110001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG0110001E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0110001E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0110001E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0110001E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0110001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110001E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110001E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0110001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0110001E[];
+static VTBL_ENTRY alt_thunk_names66[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01100013fooEv,_ZTv0_n12_N3bbb9GG01100013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01100013fooEv,_ZThn36_N3bbb9GG01100013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01100013fooEv,_ZThn28_N3bbb9GG01100013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01100013fooEv,_ZTv0_n20_N3bbb9GG01100013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01100013fooEv,_ZThn16_N3bbb9GG01100013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01100013barEv,_ZTv0_n16_N3bbb9GG01100013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01100013barEv,_ZThn36_N3bbb9GG01100013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01100013barEv,_ZThn28_N3bbb9GG01100013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01100013barEv,_ZThn16_N3bbb9GG01100013barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0110001E = {  "_ZN3bbb9GG0110001E", // class name
+  bases__ZN3bbb9GG0110001E, 6,
+  &(vtc__ZN3bbb9GG0110001E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0110001E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0110001E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0110001E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0110001E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names66,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0110010  : virtual ::bbb::EE011 , ::bbb::FF001 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01100103fooEv
+  virtual void  bar(); // _ZN3bbb9GG01100103barEv
+  ~GG0110010(); // tgen
+  GG0110010(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0110010E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC3 VBC6{ v1 v2 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0110010 ::foo(){vfunc_called(this, "_ZN3bbb9GG01100103fooEv");}
+void  bbb::GG0110010 ::bar(){vfunc_called(this, "_ZN3bbb9GG01100103barEv");}
+bbb::GG0110010 ::~GG0110010(){ note_dtor("_ZN3bbb9GG0110010E", this);} // tgen
+bbb::GG0110010 ::GG0110010(){ note_ctor("_ZN3bbb9GG0110010E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0110010E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0110010E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0110010E, buf);
+    ::bbb::GG0110010 *dp, &lv = *(dp=new (buf) ::bbb::GG0110010());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0110010E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0110010E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0110010E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110010E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110010E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF001*), 0, "_ZN3bbb9GG0110010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF001*), ABISELECT(56,36), "_ZN3bbb9GG0110010E");
+    check_base_class_offset(lv, (::bbb::FF001*), 0, "_ZN3bbb9GG0110010E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0110010E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0110010E);
+    dp->::bbb::GG0110010::~GG0110010();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0110010E(Test__ZN3bbb9GG0110010E, "_ZN3bbb9GG0110010E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0110010C1Ev();
+extern void _ZN3bbb9GG0110010D1Ev();
+Name_Map name_map__ZN3bbb9GG0110010E[] = {
+  NSPAIR(_ZN3bbb9GG0110010C1Ev),
+  NSPAIR(_ZN3bbb9GG0110010D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF001E;
+extern VTBL_ENTRY _ZTIN3bbb5FF001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF001E[];
+static Base_Class bases__ZN3bbb9GG0110010E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF001E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110010E[];
+extern void _ZN3bbb9GG01100103fooEv();
+extern void _ZN3bbb9GG01100103barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100103barEv,_ZTv0_n16_N3bbb9GG01100103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01100103barEv,_ZThn16_N3bbb9GG01100103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01100103fooEv,_ZTv0_n20_N3bbb9GG01100103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01100103fooEv,_ZThn16_N3bbb9GG01100103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01100103fooEv,_ZTv0_n12_N3bbb9GG01100103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01100103fooEv,_ZThn28_N3bbb9GG01100103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100103barEv,_ZTv0_n16_N3bbb9GG01100103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01100103barEv,_ZThn28_N3bbb9GG01100103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01100103fooEv,_ZTv0_n12_N3bbb9GG01100103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01100103fooEv,_ZThn36_N3bbb9GG01100103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100103barEv,_ZTv0_n16_N3bbb9GG01100103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01100103barEv,_ZThn36_N3bbb9GG01100103barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0110010E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01100103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01100103barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100103barEv,_ZTv0_n16_N3bbb9GG01100103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01100103fooEv,_ZTv0_n20_N3bbb9GG01100103fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01100103fooEv,_ZTv0_n12_N3bbb9GG01100103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100103barEv,_ZTv0_n16_N3bbb9GG01100103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01100103fooEv,_ZTv0_n12_N3bbb9GG01100103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100103barEv,_ZTv0_n16_N3bbb9GG01100103barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0110010E[];
+extern void _ZN3bbb5FF0013fooEv();
+extern void _ZN3bbb5FF0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF001E__NS_9GG0110010E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0110010E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0110010E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110010E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0110010E[] = {
+  {&(_ZTVN3bbb9GG0110010E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF001E__NS_9GG0110010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0110010E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0110010E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0110010E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0110010E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0110010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110010E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110010E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0110010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0110010E[];
+static VTBL_ENTRY alt_thunk_names67[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01100103fooEv,_ZTv0_n12_N3bbb9GG01100103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01100103fooEv,_ZThn36_N3bbb9GG01100103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01100103fooEv,_ZThn28_N3bbb9GG01100103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01100103fooEv,_ZTv0_n20_N3bbb9GG01100103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01100103fooEv,_ZThn16_N3bbb9GG01100103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01100103barEv,_ZTv0_n16_N3bbb9GG01100103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01100103barEv,_ZThn36_N3bbb9GG01100103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01100103barEv,_ZThn28_N3bbb9GG01100103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01100103barEv,_ZThn16_N3bbb9GG01100103barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0110010E = {  "_ZN3bbb9GG0110010E", // class name
+  bases__ZN3bbb9GG0110010E, 6,
+  &(vtc__ZN3bbb9GG0110010E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0110010E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0110010E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0110010E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0110010E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names67,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0110011  : virtual ::bbb::EE011 , ::bbb::FF001 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01100113barEv
+  virtual void  foo(); // _ZN3bbb9GG01100113fooEv
+  ~GG0110011(); // tgen
+  GG0110011(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0110011E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC3 VBC6{ v2 v1 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0110011 ::bar(){vfunc_called(this, "_ZN3bbb9GG01100113barEv");}
+void  bbb::GG0110011 ::foo(){vfunc_called(this, "_ZN3bbb9GG01100113fooEv");}
+bbb::GG0110011 ::~GG0110011(){ note_dtor("_ZN3bbb9GG0110011E", this);} // tgen
+bbb::GG0110011 ::GG0110011(){ note_ctor("_ZN3bbb9GG0110011E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0110011E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0110011E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0110011E, buf);
+    ::bbb::GG0110011 *dp, &lv = *(dp=new (buf) ::bbb::GG0110011());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0110011E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0110011E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0110011E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110011E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110011E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF001*), 0, "_ZN3bbb9GG0110011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF001*), ABISELECT(56,36), "_ZN3bbb9GG0110011E");
+    check_base_class_offset(lv, (::bbb::FF001*), 0, "_ZN3bbb9GG0110011E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0110011E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0110011E);
+    dp->::bbb::GG0110011::~GG0110011();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0110011E(Test__ZN3bbb9GG0110011E, "_ZN3bbb9GG0110011E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0110011C1Ev();
+extern void _ZN3bbb9GG0110011D1Ev();
+Name_Map name_map__ZN3bbb9GG0110011E[] = {
+  NSPAIR(_ZN3bbb9GG0110011C1Ev),
+  NSPAIR(_ZN3bbb9GG0110011D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF001E;
+extern VTBL_ENTRY _ZTIN3bbb5FF001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF001E[];
+static Base_Class bases__ZN3bbb9GG0110011E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF001E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110011E[];
+extern void _ZN3bbb9GG01100113fooEv();
+extern void _ZN3bbb9GG01100113barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100113barEv,_ZTv0_n16_N3bbb9GG01100113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01100113barEv,_ZThn16_N3bbb9GG01100113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01100113fooEv,_ZTv0_n20_N3bbb9GG01100113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01100113fooEv,_ZThn16_N3bbb9GG01100113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01100113fooEv,_ZTv0_n12_N3bbb9GG01100113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01100113fooEv,_ZThn28_N3bbb9GG01100113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100113barEv,_ZTv0_n16_N3bbb9GG01100113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01100113barEv,_ZThn28_N3bbb9GG01100113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01100113fooEv,_ZTv0_n12_N3bbb9GG01100113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01100113fooEv,_ZThn36_N3bbb9GG01100113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01100113barEv,_ZTv0_n16_N3bbb9GG01100113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01100113barEv,_ZThn36_N3bbb9GG01100113barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0110011E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01100113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01100113barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100113barEv,_ZTv0_n16_N3bbb9GG01100113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01100113fooEv,_ZTv0_n20_N3bbb9GG01100113fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01100113fooEv,_ZTv0_n12_N3bbb9GG01100113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100113barEv,_ZTv0_n16_N3bbb9GG01100113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01100113fooEv,_ZTv0_n12_N3bbb9GG01100113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01100113barEv,_ZTv0_n16_N3bbb9GG01100113barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0110011E[];
+extern void _ZN3bbb5FF0013fooEv();
+extern void _ZN3bbb5FF0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF001E__NS_9GG0110011E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0110011E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0110011E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110011E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0110011E[] = {
+  {&(_ZTVN3bbb9GG0110011E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF001E__NS_9GG0110011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG0110011E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0110011E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0110011E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0110011E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0110011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110011E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110011E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0110011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0110011E[];
+static VTBL_ENTRY alt_thunk_names68[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01100113fooEv,_ZTv0_n12_N3bbb9GG01100113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01100113fooEv,_ZThn36_N3bbb9GG01100113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01100113fooEv,_ZThn28_N3bbb9GG01100113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01100113fooEv,_ZTv0_n20_N3bbb9GG01100113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01100113fooEv,_ZThn16_N3bbb9GG01100113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01100113barEv,_ZTv0_n16_N3bbb9GG01100113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01100113barEv,_ZThn36_N3bbb9GG01100113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01100113barEv,_ZThn28_N3bbb9GG01100113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01100113barEv,_ZThn16_N3bbb9GG01100113barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0110011E = {  "_ZN3bbb9GG0110011E", // class name
+  bases__ZN3bbb9GG0110011E, 6,
+  &(vtc__ZN3bbb9GG0110011E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0110011E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0110011E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0110011E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0110011E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names68,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0110100  : virtual ::bbb::EE011 , ::bbb::FF010 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01101003fooEv
+  virtual void  bar(); // _ZN3bbb9GG01101003barEv
+  ~GG0110100(); // tgen
+  GG0110100(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0110100E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC3 VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0110100 ::foo(){vfunc_called(this, "_ZN3bbb9GG01101003fooEv");}
+void  bbb::GG0110100 ::bar(){vfunc_called(this, "_ZN3bbb9GG01101003barEv");}
+bbb::GG0110100 ::~GG0110100(){ note_dtor("_ZN3bbb9GG0110100E", this);} // tgen
+bbb::GG0110100 ::GG0110100(){ note_ctor("_ZN3bbb9GG0110100E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0110100E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0110100E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0110100E, buf);
+    ::bbb::GG0110100 *dp, &lv = *(dp=new (buf) ::bbb::GG0110100());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0110100E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0110100E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0110100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110100E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110100E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF010*), 0, "_ZN3bbb9GG0110100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF010*), ABISELECT(56,36), "_ZN3bbb9GG0110100E");
+    check_base_class_offset(lv, (::bbb::FF010*), 0, "_ZN3bbb9GG0110100E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0110100E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0110100E);
+    dp->::bbb::GG0110100::~GG0110100();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0110100E(Test__ZN3bbb9GG0110100E, "_ZN3bbb9GG0110100E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0110100C1Ev();
+extern void _ZN3bbb9GG0110100D1Ev();
+Name_Map name_map__ZN3bbb9GG0110100E[] = {
+  NSPAIR(_ZN3bbb9GG0110100C1Ev),
+  NSPAIR(_ZN3bbb9GG0110100D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF010E;
+extern VTBL_ENTRY _ZTIN3bbb5FF010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF010E[];
+static Base_Class bases__ZN3bbb9GG0110100E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF010E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110100E[];
+extern void _ZN3bbb9GG01101003fooEv();
+extern void _ZN3bbb9GG01101003barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101003barEv,_ZTv0_n16_N3bbb9GG01101003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01101003barEv,_ZThn16_N3bbb9GG01101003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01101003fooEv,_ZTv0_n20_N3bbb9GG01101003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01101003fooEv,_ZThn16_N3bbb9GG01101003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01101003fooEv,_ZTv0_n12_N3bbb9GG01101003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01101003fooEv,_ZThn28_N3bbb9GG01101003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101003barEv,_ZTv0_n16_N3bbb9GG01101003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01101003barEv,_ZThn28_N3bbb9GG01101003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01101003barEv,_ZTv0_n12_N3bbb9GG01101003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01101003barEv,_ZThn36_N3bbb9GG01101003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101003fooEv,_ZTv0_n16_N3bbb9GG01101003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01101003fooEv,_ZThn36_N3bbb9GG01101003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0110100E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01101003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01101003barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101003barEv,_ZTv0_n16_N3bbb9GG01101003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01101003fooEv,_ZTv0_n20_N3bbb9GG01101003fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01101003fooEv,_ZTv0_n12_N3bbb9GG01101003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101003barEv,_ZTv0_n16_N3bbb9GG01101003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01101003barEv,_ZTv0_n12_N3bbb9GG01101003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101003fooEv,_ZTv0_n16_N3bbb9GG01101003fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0110100E[];
+extern void _ZN3bbb5FF0103fooEv();
+extern void _ZN3bbb5FF0103barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF010E__NS_9GG0110100E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0103barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0110100E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0110100E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110100E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0110100E[] = {
+  {&(_ZTVN3bbb9GG0110100E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF010E__NS_9GG0110100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0110100E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0110100E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0110100E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0110100E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0110100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110100E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110100E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0110100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0110100E[];
+static VTBL_ENTRY alt_thunk_names69[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01101003fooEv,_ZTv0_n16_N3bbb9GG01101003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01101003fooEv,_ZThn36_N3bbb9GG01101003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01101003barEv,_ZTv0_n12_N3bbb9GG01101003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01101003barEv,_ZThn36_N3bbb9GG01101003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01101003fooEv,_ZTv0_n12_N3bbb9GG01101003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01101003fooEv,_ZThn28_N3bbb9GG01101003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01101003fooEv,_ZTv0_n20_N3bbb9GG01101003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01101003fooEv,_ZThn16_N3bbb9GG01101003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01101003barEv,_ZTv0_n16_N3bbb9GG01101003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01101003barEv,_ZThn28_N3bbb9GG01101003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01101003barEv,_ZThn16_N3bbb9GG01101003barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0110100E = {  "_ZN3bbb9GG0110100E", // class name
+  bases__ZN3bbb9GG0110100E, 6,
+  &(vtc__ZN3bbb9GG0110100E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0110100E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0110100E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0110100E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0110100E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names69,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0110101  : virtual ::bbb::EE011 , ::bbb::FF010 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01101013barEv
+  virtual void  foo(); // _ZN3bbb9GG01101013fooEv
+  ~GG0110101(); // tgen
+  GG0110101(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0110101E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC3 VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0110101 ::bar(){vfunc_called(this, "_ZN3bbb9GG01101013barEv");}
+void  bbb::GG0110101 ::foo(){vfunc_called(this, "_ZN3bbb9GG01101013fooEv");}
+bbb::GG0110101 ::~GG0110101(){ note_dtor("_ZN3bbb9GG0110101E", this);} // tgen
+bbb::GG0110101 ::GG0110101(){ note_ctor("_ZN3bbb9GG0110101E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0110101E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0110101E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0110101E, buf);
+    ::bbb::GG0110101 *dp, &lv = *(dp=new (buf) ::bbb::GG0110101());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0110101E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0110101E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0110101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110101E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110101E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF010*), 0, "_ZN3bbb9GG0110101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF010*), ABISELECT(56,36), "_ZN3bbb9GG0110101E");
+    check_base_class_offset(lv, (::bbb::FF010*), 0, "_ZN3bbb9GG0110101E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0110101E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0110101E);
+    dp->::bbb::GG0110101::~GG0110101();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0110101E(Test__ZN3bbb9GG0110101E, "_ZN3bbb9GG0110101E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0110101C1Ev();
+extern void _ZN3bbb9GG0110101D1Ev();
+Name_Map name_map__ZN3bbb9GG0110101E[] = {
+  NSPAIR(_ZN3bbb9GG0110101C1Ev),
+  NSPAIR(_ZN3bbb9GG0110101D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF010E;
+extern VTBL_ENTRY _ZTIN3bbb5FF010E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF010E[];
+static Base_Class bases__ZN3bbb9GG0110101E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF010E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110101E[];
+extern void _ZN3bbb9GG01101013fooEv();
+extern void _ZN3bbb9GG01101013barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101013barEv,_ZTv0_n16_N3bbb9GG01101013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01101013barEv,_ZThn16_N3bbb9GG01101013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01101013fooEv,_ZTv0_n20_N3bbb9GG01101013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01101013fooEv,_ZThn16_N3bbb9GG01101013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01101013fooEv,_ZTv0_n12_N3bbb9GG01101013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01101013fooEv,_ZThn28_N3bbb9GG01101013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101013barEv,_ZTv0_n16_N3bbb9GG01101013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01101013barEv,_ZThn28_N3bbb9GG01101013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01101013barEv,_ZTv0_n12_N3bbb9GG01101013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01101013barEv,_ZThn36_N3bbb9GG01101013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101013fooEv,_ZTv0_n16_N3bbb9GG01101013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01101013fooEv,_ZThn36_N3bbb9GG01101013fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0110101E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01101013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01101013barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101013barEv,_ZTv0_n16_N3bbb9GG01101013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01101013fooEv,_ZTv0_n20_N3bbb9GG01101013fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01101013fooEv,_ZTv0_n12_N3bbb9GG01101013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101013barEv,_ZTv0_n16_N3bbb9GG01101013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01101013barEv,_ZTv0_n12_N3bbb9GG01101013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101013fooEv,_ZTv0_n16_N3bbb9GG01101013fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0110101E[];
+extern void _ZN3bbb5FF0103fooEv();
+extern void _ZN3bbb5FF0103barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF010E__NS_9GG0110101E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0103barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0110101E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0110101E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110101E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0110101E[] = {
+  {&(_ZTVN3bbb9GG0110101E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF010E__NS_9GG0110101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF010E__NS_9GG0110101E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0110101E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0110101E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0110101E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0110101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110101E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110101E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0110101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0110101E[];
+static VTBL_ENTRY alt_thunk_names70[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0103fooEv,_ZTv0_n16_N3bbb5FF0103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103fooEv,_ZThn36_N3bbb5FF0103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0103barEv,_ZTv0_n12_N3bbb5FF0103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0103barEv,_ZThn36_N3bbb5FF0103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01101013fooEv,_ZTv0_n16_N3bbb9GG01101013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01101013fooEv,_ZThn36_N3bbb9GG01101013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01101013barEv,_ZTv0_n12_N3bbb9GG01101013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01101013barEv,_ZThn36_N3bbb9GG01101013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01101013fooEv,_ZTv0_n12_N3bbb9GG01101013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01101013fooEv,_ZThn28_N3bbb9GG01101013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01101013fooEv,_ZTv0_n20_N3bbb9GG01101013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01101013fooEv,_ZThn16_N3bbb9GG01101013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01101013barEv,_ZTv0_n16_N3bbb9GG01101013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01101013barEv,_ZThn28_N3bbb9GG01101013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01101013barEv,_ZThn16_N3bbb9GG01101013barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0110101E = {  "_ZN3bbb9GG0110101E", // class name
+  bases__ZN3bbb9GG0110101E, 6,
+  &(vtc__ZN3bbb9GG0110101E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0110101E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0110101E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0110101E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0110101E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names70,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0110110  : virtual ::bbb::EE011 , ::bbb::FF011 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01101103fooEv
+  virtual void  bar(); // _ZN3bbb9GG01101103barEv
+  ~GG0110110(); // tgen
+  GG0110110(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0110110E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC3 VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0110110 ::foo(){vfunc_called(this, "_ZN3bbb9GG01101103fooEv");}
+void  bbb::GG0110110 ::bar(){vfunc_called(this, "_ZN3bbb9GG01101103barEv");}
+bbb::GG0110110 ::~GG0110110(){ note_dtor("_ZN3bbb9GG0110110E", this);} // tgen
+bbb::GG0110110 ::GG0110110(){ note_ctor("_ZN3bbb9GG0110110E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0110110E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0110110E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0110110E, buf);
+    ::bbb::GG0110110 *dp, &lv = *(dp=new (buf) ::bbb::GG0110110());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0110110E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0110110E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0110110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110110E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110110E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF011*), 0, "_ZN3bbb9GG0110110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF011*), ABISELECT(56,36), "_ZN3bbb9GG0110110E");
+    check_base_class_offset(lv, (::bbb::FF011*), 0, "_ZN3bbb9GG0110110E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0110110E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0110110E);
+    dp->::bbb::GG0110110::~GG0110110();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0110110E(Test__ZN3bbb9GG0110110E, "_ZN3bbb9GG0110110E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0110110C1Ev();
+extern void _ZN3bbb9GG0110110D1Ev();
+Name_Map name_map__ZN3bbb9GG0110110E[] = {
+  NSPAIR(_ZN3bbb9GG0110110C1Ev),
+  NSPAIR(_ZN3bbb9GG0110110D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF011E;
+extern VTBL_ENTRY _ZTIN3bbb5FF011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF011E[];
+static Base_Class bases__ZN3bbb9GG0110110E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF011E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110110E[];
+extern void _ZN3bbb9GG01101103fooEv();
+extern void _ZN3bbb9GG01101103barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101103barEv,_ZTv0_n16_N3bbb9GG01101103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01101103barEv,_ZThn16_N3bbb9GG01101103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01101103fooEv,_ZTv0_n20_N3bbb9GG01101103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01101103fooEv,_ZThn16_N3bbb9GG01101103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01101103fooEv,_ZTv0_n12_N3bbb9GG01101103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01101103fooEv,_ZThn28_N3bbb9GG01101103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101103barEv,_ZTv0_n16_N3bbb9GG01101103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01101103barEv,_ZThn28_N3bbb9GG01101103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01101103barEv,_ZTv0_n12_N3bbb9GG01101103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01101103barEv,_ZThn36_N3bbb9GG01101103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101103fooEv,_ZTv0_n16_N3bbb9GG01101103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01101103fooEv,_ZThn36_N3bbb9GG01101103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0110110E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01101103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01101103barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101103barEv,_ZTv0_n16_N3bbb9GG01101103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01101103fooEv,_ZTv0_n20_N3bbb9GG01101103fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01101103fooEv,_ZTv0_n12_N3bbb9GG01101103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101103barEv,_ZTv0_n16_N3bbb9GG01101103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01101103barEv,_ZTv0_n12_N3bbb9GG01101103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101103fooEv,_ZTv0_n16_N3bbb9GG01101103fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0110110E[];
+extern void _ZN3bbb5FF0113fooEv();
+extern void _ZN3bbb5FF0113barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF011E__NS_9GG0110110E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0113barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0110110E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0110110E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110110E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0110110E[] = {
+  {&(_ZTVN3bbb9GG0110110E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF011E__NS_9GG0110110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0110110E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0110110E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0110110E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0110110E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0110110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110110E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110110E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0110110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0110110E[];
+static VTBL_ENTRY alt_thunk_names71[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01101103fooEv,_ZTv0_n16_N3bbb9GG01101103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01101103fooEv,_ZThn36_N3bbb9GG01101103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01101103barEv,_ZTv0_n12_N3bbb9GG01101103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01101103barEv,_ZThn36_N3bbb9GG01101103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01101103fooEv,_ZTv0_n12_N3bbb9GG01101103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01101103fooEv,_ZThn28_N3bbb9GG01101103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01101103fooEv,_ZTv0_n20_N3bbb9GG01101103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01101103fooEv,_ZThn16_N3bbb9GG01101103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01101103barEv,_ZTv0_n16_N3bbb9GG01101103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01101103barEv,_ZThn28_N3bbb9GG01101103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01101103barEv,_ZThn16_N3bbb9GG01101103barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0110110E = {  "_ZN3bbb9GG0110110E", // class name
+  bases__ZN3bbb9GG0110110E, 6,
+  &(vtc__ZN3bbb9GG0110110E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0110110E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0110110E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0110110E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0110110E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names71,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0110111  : virtual ::bbb::EE011 , ::bbb::FF011 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01101113barEv
+  virtual void  foo(); // _ZN3bbb9GG01101113fooEv
+  ~GG0110111(); // tgen
+  GG0110111(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0110111E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC3 VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0110111 ::bar(){vfunc_called(this, "_ZN3bbb9GG01101113barEv");}
+void  bbb::GG0110111 ::foo(){vfunc_called(this, "_ZN3bbb9GG01101113fooEv");}
+bbb::GG0110111 ::~GG0110111(){ note_dtor("_ZN3bbb9GG0110111E", this);} // tgen
+bbb::GG0110111 ::GG0110111(){ note_ctor("_ZN3bbb9GG0110111E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0110111E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0110111E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0110111E, buf);
+    ::bbb::GG0110111 *dp, &lv = *(dp=new (buf) ::bbb::GG0110111());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0110111E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0110111E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0110111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110111E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0110111E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF011*), 0, "_ZN3bbb9GG0110111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF011*), ABISELECT(56,36), "_ZN3bbb9GG0110111E");
+    check_base_class_offset(lv, (::bbb::FF011*), 0, "_ZN3bbb9GG0110111E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0110111E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0110111E);
+    dp->::bbb::GG0110111::~GG0110111();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0110111E(Test__ZN3bbb9GG0110111E, "_ZN3bbb9GG0110111E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0110111C1Ev();
+extern void _ZN3bbb9GG0110111D1Ev();
+Name_Map name_map__ZN3bbb9GG0110111E[] = {
+  NSPAIR(_ZN3bbb9GG0110111C1Ev),
+  NSPAIR(_ZN3bbb9GG0110111D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF011E;
+extern VTBL_ENTRY _ZTIN3bbb5FF011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF011E[];
+static Base_Class bases__ZN3bbb9GG0110111E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF011E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110111E[];
+extern void _ZN3bbb9GG01101113fooEv();
+extern void _ZN3bbb9GG01101113barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101113barEv,_ZTv0_n16_N3bbb9GG01101113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01101113barEv,_ZThn16_N3bbb9GG01101113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01101113fooEv,_ZTv0_n20_N3bbb9GG01101113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01101113fooEv,_ZThn16_N3bbb9GG01101113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01101113fooEv,_ZTv0_n12_N3bbb9GG01101113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01101113fooEv,_ZThn28_N3bbb9GG01101113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101113barEv,_ZTv0_n16_N3bbb9GG01101113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01101113barEv,_ZThn28_N3bbb9GG01101113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01101113barEv,_ZTv0_n12_N3bbb9GG01101113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01101113barEv,_ZThn36_N3bbb9GG01101113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01101113fooEv,_ZTv0_n16_N3bbb9GG01101113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01101113fooEv,_ZThn36_N3bbb9GG01101113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0110111E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01101113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01101113barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101113barEv,_ZTv0_n16_N3bbb9GG01101113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01101113fooEv,_ZTv0_n20_N3bbb9GG01101113fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01101113fooEv,_ZTv0_n12_N3bbb9GG01101113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101113barEv,_ZTv0_n16_N3bbb9GG01101113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0110111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01101113barEv,_ZTv0_n12_N3bbb9GG01101113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01101113fooEv,_ZTv0_n16_N3bbb9GG01101113fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0110111E[];
+extern void _ZN3bbb5FF0113fooEv();
+extern void _ZN3bbb5FF0113barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF011E__NS_9GG0110111E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0113barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0110111E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0110111E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110111E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0110111E[] = {
+  {&(_ZTVN3bbb9GG0110111E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF011E__NS_9GG0110111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF011E__NS_9GG0110111E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0110111E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0110111E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0110111E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0110111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0110111E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0110111E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0110111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0110111E[];
+static VTBL_ENTRY alt_thunk_names72[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0113fooEv,_ZTv0_n16_N3bbb5FF0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113fooEv,_ZThn36_N3bbb5FF0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0113barEv,_ZTv0_n12_N3bbb5FF0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0113barEv,_ZThn36_N3bbb5FF0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01101113fooEv,_ZTv0_n16_N3bbb9GG01101113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01101113fooEv,_ZThn36_N3bbb9GG01101113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01101113barEv,_ZTv0_n12_N3bbb9GG01101113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01101113barEv,_ZThn36_N3bbb9GG01101113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01101113fooEv,_ZTv0_n12_N3bbb9GG01101113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01101113fooEv,_ZThn28_N3bbb9GG01101113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01101113fooEv,_ZTv0_n20_N3bbb9GG01101113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01101113fooEv,_ZThn16_N3bbb9GG01101113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01101113barEv,_ZTv0_n16_N3bbb9GG01101113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01101113barEv,_ZThn28_N3bbb9GG01101113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01101113barEv,_ZThn16_N3bbb9GG01101113barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0110111E = {  "_ZN3bbb9GG0110111E", // class name
+  bases__ZN3bbb9GG0110111E, 6,
+  &(vtc__ZN3bbb9GG0110111E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0110111E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0110111E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0110111E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0110111E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names72,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0111000  : virtual ::bbb::EE011 , ::bbb::FF100 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01110003fooEv
+  virtual void  bar(); // _ZN3bbb9GG01110003barEv
+  ~GG0111000(); // tgen
+  GG0111000(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0111000E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC6{ v2 v1 Fi} VBC7{ v1 v2 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0111000 ::foo(){vfunc_called(this, "_ZN3bbb9GG01110003fooEv");}
+void  bbb::GG0111000 ::bar(){vfunc_called(this, "_ZN3bbb9GG01110003barEv");}
+bbb::GG0111000 ::~GG0111000(){ note_dtor("_ZN3bbb9GG0111000E", this);} // tgen
+bbb::GG0111000 ::GG0111000(){ note_ctor("_ZN3bbb9GG0111000E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0111000E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0111000E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0111000E, buf);
+    ::bbb::GG0111000 *dp, &lv = *(dp=new (buf) ::bbb::GG0111000());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0111000E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0111000E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0111000E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111000E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111000E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF100*), 0, "_ZN3bbb9GG0111000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF100*), ABISELECT(56,36), "_ZN3bbb9GG0111000E");
+    check_base_class_offset(lv, (::bbb::FF100*), 0, "_ZN3bbb9GG0111000E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0111000E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0111000E);
+    dp->::bbb::GG0111000::~GG0111000();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0111000E(Test__ZN3bbb9GG0111000E, "_ZN3bbb9GG0111000E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0111000C1Ev();
+extern void _ZN3bbb9GG0111000D1Ev();
+Name_Map name_map__ZN3bbb9GG0111000E[] = {
+  NSPAIR(_ZN3bbb9GG0111000C1Ev),
+  NSPAIR(_ZN3bbb9GG0111000D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF100E;
+extern VTBL_ENTRY _ZTIN3bbb5FF100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF100E[];
+static Base_Class bases__ZN3bbb9GG0111000E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF100E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111000E[];
+extern void _ZN3bbb9GG01110003barEv();
+extern void _ZN3bbb9GG01110003fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110003barEv,_ZTv0_n16_N3bbb9GG01110003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01110003barEv,_ZThn16_N3bbb9GG01110003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01110003fooEv,_ZTv0_n20_N3bbb9GG01110003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01110003fooEv,_ZThn16_N3bbb9GG01110003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01110003fooEv,_ZTv0_n12_N3bbb9GG01110003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01110003fooEv,_ZThn28_N3bbb9GG01110003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110003barEv,_ZTv0_n16_N3bbb9GG01110003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01110003barEv,_ZThn28_N3bbb9GG01110003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01110003fooEv,_ZTv0_n12_N3bbb9GG01110003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01110003fooEv,_ZThn36_N3bbb9GG01110003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110003barEv,_ZTv0_n16_N3bbb9GG01110003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01110003barEv,_ZThn36_N3bbb9GG01110003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0111000E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01110003barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01110003fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110003barEv,_ZTv0_n16_N3bbb9GG01110003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01110003fooEv,_ZTv0_n20_N3bbb9GG01110003fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01110003fooEv,_ZTv0_n12_N3bbb9GG01110003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110003barEv,_ZTv0_n16_N3bbb9GG01110003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01110003fooEv,_ZTv0_n12_N3bbb9GG01110003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110003barEv,_ZTv0_n16_N3bbb9GG01110003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0111000E[];
+extern void _ZN3bbb5FF1003barEv();
+extern void _ZN3bbb5FF1003fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF100E__NS_9GG0111000E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1003barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1003fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0111000E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0111000E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111000E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0111000E[] = {
+  {&(_ZTVN3bbb9GG0111000E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF100E__NS_9GG0111000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0111000E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0111000E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0111000E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0111000E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0111000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111000E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111000E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0111000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0111000E[];
+static VTBL_ENTRY alt_thunk_names73[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01110003fooEv,_ZTv0_n12_N3bbb9GG01110003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01110003fooEv,_ZThn36_N3bbb9GG01110003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01110003fooEv,_ZThn28_N3bbb9GG01110003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01110003fooEv,_ZTv0_n20_N3bbb9GG01110003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01110003fooEv,_ZThn16_N3bbb9GG01110003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01110003barEv,_ZTv0_n16_N3bbb9GG01110003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01110003barEv,_ZThn36_N3bbb9GG01110003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01110003barEv,_ZThn28_N3bbb9GG01110003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01110003barEv,_ZThn16_N3bbb9GG01110003barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0111000E = {  "_ZN3bbb9GG0111000E", // class name
+  bases__ZN3bbb9GG0111000E, 6,
+  &(vtc__ZN3bbb9GG0111000E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0111000E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0111000E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0111000E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0111000E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names73,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0111001  : virtual ::bbb::EE011 , ::bbb::FF100 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01110013barEv
+  virtual void  foo(); // _ZN3bbb9GG01110013fooEv
+  ~GG0111001(); // tgen
+  GG0111001(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0111001E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC6{ v1 v2 Fi} VBC7{ v2 v1 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0111001 ::bar(){vfunc_called(this, "_ZN3bbb9GG01110013barEv");}
+void  bbb::GG0111001 ::foo(){vfunc_called(this, "_ZN3bbb9GG01110013fooEv");}
+bbb::GG0111001 ::~GG0111001(){ note_dtor("_ZN3bbb9GG0111001E", this);} // tgen
+bbb::GG0111001 ::GG0111001(){ note_ctor("_ZN3bbb9GG0111001E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0111001E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0111001E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0111001E, buf);
+    ::bbb::GG0111001 *dp, &lv = *(dp=new (buf) ::bbb::GG0111001());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0111001E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0111001E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0111001E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111001E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111001E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF100*), 0, "_ZN3bbb9GG0111001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF100*), ABISELECT(56,36), "_ZN3bbb9GG0111001E");
+    check_base_class_offset(lv, (::bbb::FF100*), 0, "_ZN3bbb9GG0111001E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0111001E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0111001E);
+    dp->::bbb::GG0111001::~GG0111001();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0111001E(Test__ZN3bbb9GG0111001E, "_ZN3bbb9GG0111001E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0111001C1Ev();
+extern void _ZN3bbb9GG0111001D1Ev();
+Name_Map name_map__ZN3bbb9GG0111001E[] = {
+  NSPAIR(_ZN3bbb9GG0111001C1Ev),
+  NSPAIR(_ZN3bbb9GG0111001D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF100E;
+extern VTBL_ENTRY _ZTIN3bbb5FF100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF100E[];
+static Base_Class bases__ZN3bbb9GG0111001E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF100E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111001E[];
+extern void _ZN3bbb9GG01110013barEv();
+extern void _ZN3bbb9GG01110013fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110013barEv,_ZTv0_n16_N3bbb9GG01110013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01110013barEv,_ZThn16_N3bbb9GG01110013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01110013fooEv,_ZTv0_n20_N3bbb9GG01110013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01110013fooEv,_ZThn16_N3bbb9GG01110013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01110013fooEv,_ZTv0_n12_N3bbb9GG01110013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01110013fooEv,_ZThn28_N3bbb9GG01110013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110013barEv,_ZTv0_n16_N3bbb9GG01110013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01110013barEv,_ZThn28_N3bbb9GG01110013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01110013fooEv,_ZTv0_n12_N3bbb9GG01110013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01110013fooEv,_ZThn36_N3bbb9GG01110013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110013barEv,_ZTv0_n16_N3bbb9GG01110013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01110013barEv,_ZThn36_N3bbb9GG01110013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0111001E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01110013barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01110013fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110013barEv,_ZTv0_n16_N3bbb9GG01110013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01110013fooEv,_ZTv0_n20_N3bbb9GG01110013fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01110013fooEv,_ZTv0_n12_N3bbb9GG01110013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110013barEv,_ZTv0_n16_N3bbb9GG01110013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01110013fooEv,_ZTv0_n12_N3bbb9GG01110013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110013barEv,_ZTv0_n16_N3bbb9GG01110013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0111001E[];
+extern void _ZN3bbb5FF1003barEv();
+extern void _ZN3bbb5FF1003fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF100E__NS_9GG0111001E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1003barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1003fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0111001E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0111001E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111001E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0111001E[] = {
+  {&(_ZTVN3bbb9GG0111001E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF100E__NS_9GG0111001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF100E__NS_9GG0111001E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0111001E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0111001E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0111001E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0111001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111001E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111001E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0111001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0111001E[];
+static VTBL_ENTRY alt_thunk_names74[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1003barEv,_ZTv0_n16_N3bbb5FF1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003barEv,_ZThn36_N3bbb5FF1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1003fooEv,_ZTv0_n12_N3bbb5FF1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1003fooEv,_ZThn36_N3bbb5FF1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01110013fooEv,_ZTv0_n12_N3bbb9GG01110013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01110013fooEv,_ZThn36_N3bbb9GG01110013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01110013fooEv,_ZThn28_N3bbb9GG01110013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01110013fooEv,_ZTv0_n20_N3bbb9GG01110013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01110013fooEv,_ZThn16_N3bbb9GG01110013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01110013barEv,_ZTv0_n16_N3bbb9GG01110013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01110013barEv,_ZThn36_N3bbb9GG01110013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01110013barEv,_ZThn28_N3bbb9GG01110013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01110013barEv,_ZThn16_N3bbb9GG01110013barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0111001E = {  "_ZN3bbb9GG0111001E", // class name
+  bases__ZN3bbb9GG0111001E, 6,
+  &(vtc__ZN3bbb9GG0111001E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0111001E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0111001E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0111001E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0111001E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names74,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0111010  : virtual ::bbb::EE011 , ::bbb::FF101 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01110103fooEv
+  virtual void  bar(); // _ZN3bbb9GG01110103barEv
+  ~GG0111010(); // tgen
+  GG0111010(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0111010E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC6{ v2 v1 Fi} VBC7{ v1 v2 Fi} v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0111010 ::foo(){vfunc_called(this, "_ZN3bbb9GG01110103fooEv");}
+void  bbb::GG0111010 ::bar(){vfunc_called(this, "_ZN3bbb9GG01110103barEv");}
+bbb::GG0111010 ::~GG0111010(){ note_dtor("_ZN3bbb9GG0111010E", this);} // tgen
+bbb::GG0111010 ::GG0111010(){ note_ctor("_ZN3bbb9GG0111010E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0111010E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0111010E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0111010E, buf);
+    ::bbb::GG0111010 *dp, &lv = *(dp=new (buf) ::bbb::GG0111010());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0111010E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0111010E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0111010E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111010E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111010E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF101*), 0, "_ZN3bbb9GG0111010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF101*), ABISELECT(56,36), "_ZN3bbb9GG0111010E");
+    check_base_class_offset(lv, (::bbb::FF101*), 0, "_ZN3bbb9GG0111010E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0111010E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0111010E);
+    dp->::bbb::GG0111010::~GG0111010();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0111010E(Test__ZN3bbb9GG0111010E, "_ZN3bbb9GG0111010E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0111010C1Ev();
+extern void _ZN3bbb9GG0111010D1Ev();
+Name_Map name_map__ZN3bbb9GG0111010E[] = {
+  NSPAIR(_ZN3bbb9GG0111010C1Ev),
+  NSPAIR(_ZN3bbb9GG0111010D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF101E;
+extern VTBL_ENTRY _ZTIN3bbb5FF101E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF101E[];
+static Base_Class bases__ZN3bbb9GG0111010E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF101E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111010E[];
+extern void _ZN3bbb9GG01110103barEv();
+extern void _ZN3bbb9GG01110103fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110103barEv,_ZTv0_n16_N3bbb9GG01110103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01110103barEv,_ZThn16_N3bbb9GG01110103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01110103fooEv,_ZTv0_n20_N3bbb9GG01110103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01110103fooEv,_ZThn16_N3bbb9GG01110103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01110103fooEv,_ZTv0_n12_N3bbb9GG01110103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01110103fooEv,_ZThn28_N3bbb9GG01110103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110103barEv,_ZTv0_n16_N3bbb9GG01110103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01110103barEv,_ZThn28_N3bbb9GG01110103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01110103fooEv,_ZTv0_n12_N3bbb9GG01110103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01110103fooEv,_ZThn36_N3bbb9GG01110103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110103barEv,_ZTv0_n16_N3bbb9GG01110103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01110103barEv,_ZThn36_N3bbb9GG01110103barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0111010E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01110103barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01110103fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110103barEv,_ZTv0_n16_N3bbb9GG01110103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01110103fooEv,_ZTv0_n20_N3bbb9GG01110103fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01110103fooEv,_ZTv0_n12_N3bbb9GG01110103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110103barEv,_ZTv0_n16_N3bbb9GG01110103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01110103fooEv,_ZTv0_n12_N3bbb9GG01110103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110103barEv,_ZTv0_n16_N3bbb9GG01110103barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0111010E[];
+extern void _ZN3bbb5FF1013barEv();
+extern void _ZN3bbb5FF1013fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF101E__NS_9GG0111010E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1013barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1013fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0111010E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0111010E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111010E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0111010E[] = {
+  {&(_ZTVN3bbb9GG0111010E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF101E__NS_9GG0111010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0111010E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0111010E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0111010E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0111010E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0111010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111010E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111010E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0111010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0111010E[];
+static VTBL_ENTRY alt_thunk_names75[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01110103fooEv,_ZTv0_n12_N3bbb9GG01110103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01110103fooEv,_ZThn36_N3bbb9GG01110103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01110103fooEv,_ZThn28_N3bbb9GG01110103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01110103fooEv,_ZTv0_n20_N3bbb9GG01110103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01110103fooEv,_ZThn16_N3bbb9GG01110103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01110103barEv,_ZTv0_n16_N3bbb9GG01110103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01110103barEv,_ZThn36_N3bbb9GG01110103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01110103barEv,_ZThn28_N3bbb9GG01110103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01110103barEv,_ZThn16_N3bbb9GG01110103barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0111010E = {  "_ZN3bbb9GG0111010E", // class name
+  bases__ZN3bbb9GG0111010E, 6,
+  &(vtc__ZN3bbb9GG0111010E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0111010E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0111010E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0111010E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0111010E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names75,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0111011  : virtual ::bbb::EE011 , ::bbb::FF101 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01110113barEv
+  virtual void  foo(); // _ZN3bbb9GG01110113fooEv
+  ~GG0111011(); // tgen
+  GG0111011(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0111011E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC6{ v1 v2 Fi} VBC7{ v2 v1 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0111011 ::bar(){vfunc_called(this, "_ZN3bbb9GG01110113barEv");}
+void  bbb::GG0111011 ::foo(){vfunc_called(this, "_ZN3bbb9GG01110113fooEv");}
+bbb::GG0111011 ::~GG0111011(){ note_dtor("_ZN3bbb9GG0111011E", this);} // tgen
+bbb::GG0111011 ::GG0111011(){ note_ctor("_ZN3bbb9GG0111011E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0111011E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0111011E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0111011E, buf);
+    ::bbb::GG0111011 *dp, &lv = *(dp=new (buf) ::bbb::GG0111011());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0111011E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0111011E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0111011E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111011E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111011E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF101*), 0, "_ZN3bbb9GG0111011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF101*), ABISELECT(56,36), "_ZN3bbb9GG0111011E");
+    check_base_class_offset(lv, (::bbb::FF101*), 0, "_ZN3bbb9GG0111011E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0111011E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0111011E);
+    dp->::bbb::GG0111011::~GG0111011();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0111011E(Test__ZN3bbb9GG0111011E, "_ZN3bbb9GG0111011E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0111011C1Ev();
+extern void _ZN3bbb9GG0111011D1Ev();
+Name_Map name_map__ZN3bbb9GG0111011E[] = {
+  NSPAIR(_ZN3bbb9GG0111011C1Ev),
+  NSPAIR(_ZN3bbb9GG0111011D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF101E;
+extern VTBL_ENTRY _ZTIN3bbb5FF101E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF101E[];
+static Base_Class bases__ZN3bbb9GG0111011E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF101E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111011E[];
+extern void _ZN3bbb9GG01110113barEv();
+extern void _ZN3bbb9GG01110113fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110113barEv,_ZTv0_n16_N3bbb9GG01110113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01110113barEv,_ZThn16_N3bbb9GG01110113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01110113fooEv,_ZTv0_n20_N3bbb9GG01110113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01110113fooEv,_ZThn16_N3bbb9GG01110113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01110113fooEv,_ZTv0_n12_N3bbb9GG01110113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01110113fooEv,_ZThn28_N3bbb9GG01110113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110113barEv,_ZTv0_n16_N3bbb9GG01110113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01110113barEv,_ZThn28_N3bbb9GG01110113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01110113fooEv,_ZTv0_n12_N3bbb9GG01110113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01110113fooEv,_ZThn36_N3bbb9GG01110113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01110113barEv,_ZTv0_n16_N3bbb9GG01110113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01110113barEv,_ZThn36_N3bbb9GG01110113barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0111011E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01110113barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01110113fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110113barEv,_ZTv0_n16_N3bbb9GG01110113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01110113fooEv,_ZTv0_n20_N3bbb9GG01110113fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01110113fooEv,_ZTv0_n12_N3bbb9GG01110113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110113barEv,_ZTv0_n16_N3bbb9GG01110113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01110113fooEv,_ZTv0_n12_N3bbb9GG01110113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01110113barEv,_ZTv0_n16_N3bbb9GG01110113barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0111011E[];
+extern void _ZN3bbb5FF1013barEv();
+extern void _ZN3bbb5FF1013fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF101E__NS_9GG0111011E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1013barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1013fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0111011E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0111011E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111011E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0111011E[] = {
+  {&(_ZTVN3bbb9GG0111011E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF101E__NS_9GG0111011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF101E__NS_9GG0111011E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0111011E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0111011E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0111011E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0111011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111011E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111011E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0111011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0111011E[];
+static VTBL_ENTRY alt_thunk_names76[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1013barEv,_ZTv0_n16_N3bbb5FF1013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013barEv,_ZThn36_N3bbb5FF1013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1013fooEv,_ZTv0_n12_N3bbb5FF1013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1013fooEv,_ZThn36_N3bbb5FF1013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01110113fooEv,_ZTv0_n12_N3bbb9GG01110113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01110113fooEv,_ZThn36_N3bbb9GG01110113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01110113fooEv,_ZThn28_N3bbb9GG01110113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01110113fooEv,_ZTv0_n20_N3bbb9GG01110113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01110113fooEv,_ZThn16_N3bbb9GG01110113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01110113barEv,_ZTv0_n16_N3bbb9GG01110113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01110113barEv,_ZThn36_N3bbb9GG01110113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01110113barEv,_ZThn28_N3bbb9GG01110113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01110113barEv,_ZThn16_N3bbb9GG01110113barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0111011E = {  "_ZN3bbb9GG0111011E", // class name
+  bases__ZN3bbb9GG0111011E, 6,
+  &(vtc__ZN3bbb9GG0111011E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0111011E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0111011E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0111011E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0111011E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names76,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0111100  : virtual ::bbb::EE011 , ::bbb::FF110 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01111003fooEv
+  virtual void  bar(); // _ZN3bbb9GG01111003barEv
+  ~GG0111100(); // tgen
+  GG0111100(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0111100E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC6{ v2 v1 Fi} VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0111100 ::foo(){vfunc_called(this, "_ZN3bbb9GG01111003fooEv");}
+void  bbb::GG0111100 ::bar(){vfunc_called(this, "_ZN3bbb9GG01111003barEv");}
+bbb::GG0111100 ::~GG0111100(){ note_dtor("_ZN3bbb9GG0111100E", this);} // tgen
+bbb::GG0111100 ::GG0111100(){ note_ctor("_ZN3bbb9GG0111100E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0111100E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0111100E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0111100E, buf);
+    ::bbb::GG0111100 *dp, &lv = *(dp=new (buf) ::bbb::GG0111100());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0111100E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0111100E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0111100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111100E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111100E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF110*), 0, "_ZN3bbb9GG0111100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF110*), ABISELECT(56,36), "_ZN3bbb9GG0111100E");
+    check_base_class_offset(lv, (::bbb::FF110*), 0, "_ZN3bbb9GG0111100E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0111100E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0111100E);
+    dp->::bbb::GG0111100::~GG0111100();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0111100E(Test__ZN3bbb9GG0111100E, "_ZN3bbb9GG0111100E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0111100C1Ev();
+extern void _ZN3bbb9GG0111100D1Ev();
+Name_Map name_map__ZN3bbb9GG0111100E[] = {
+  NSPAIR(_ZN3bbb9GG0111100C1Ev),
+  NSPAIR(_ZN3bbb9GG0111100D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF110E;
+extern VTBL_ENTRY _ZTIN3bbb5FF110E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF110E[];
+static Base_Class bases__ZN3bbb9GG0111100E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF110E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111100E[];
+extern void _ZN3bbb9GG01111003barEv();
+extern void _ZN3bbb9GG01111003fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111003barEv,_ZTv0_n16_N3bbb9GG01111003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01111003barEv,_ZThn16_N3bbb9GG01111003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01111003fooEv,_ZTv0_n20_N3bbb9GG01111003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01111003fooEv,_ZThn16_N3bbb9GG01111003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01111003fooEv,_ZTv0_n12_N3bbb9GG01111003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01111003fooEv,_ZThn28_N3bbb9GG01111003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111003barEv,_ZTv0_n16_N3bbb9GG01111003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01111003barEv,_ZThn28_N3bbb9GG01111003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01111003barEv,_ZTv0_n12_N3bbb9GG01111003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01111003barEv,_ZThn36_N3bbb9GG01111003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111003fooEv,_ZTv0_n16_N3bbb9GG01111003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01111003fooEv,_ZThn36_N3bbb9GG01111003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0111100E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01111003barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01111003fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111003barEv,_ZTv0_n16_N3bbb9GG01111003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01111003fooEv,_ZTv0_n20_N3bbb9GG01111003fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01111003fooEv,_ZTv0_n12_N3bbb9GG01111003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111003barEv,_ZTv0_n16_N3bbb9GG01111003barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01111003barEv,_ZTv0_n12_N3bbb9GG01111003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111003fooEv,_ZTv0_n16_N3bbb9GG01111003fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0111100E[];
+extern void _ZN3bbb5FF1103barEv();
+extern void _ZN3bbb5FF1103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF110E__NS_9GG0111100E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0111100E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0111100E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111100E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0111100E[] = {
+  {&(_ZTVN3bbb9GG0111100E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF110E__NS_9GG0111100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0111100E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0111100E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0111100E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0111100E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0111100E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111100E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111100E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0111100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0111100E[];
+static VTBL_ENTRY alt_thunk_names77[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01111003fooEv,_ZTv0_n16_N3bbb9GG01111003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01111003fooEv,_ZThn36_N3bbb9GG01111003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01111003barEv,_ZTv0_n12_N3bbb9GG01111003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01111003barEv,_ZThn36_N3bbb9GG01111003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01111003fooEv,_ZTv0_n12_N3bbb9GG01111003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01111003fooEv,_ZThn28_N3bbb9GG01111003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01111003fooEv,_ZTv0_n20_N3bbb9GG01111003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01111003fooEv,_ZThn16_N3bbb9GG01111003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01111003barEv,_ZTv0_n16_N3bbb9GG01111003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01111003barEv,_ZThn28_N3bbb9GG01111003barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01111003barEv,_ZThn16_N3bbb9GG01111003barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0111100E = {  "_ZN3bbb9GG0111100E", // class name
+  bases__ZN3bbb9GG0111100E, 6,
+  &(vtc__ZN3bbb9GG0111100E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0111100E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0111100E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0111100E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0111100E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names77,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0111101  : virtual ::bbb::EE011 , ::bbb::FF110 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01111013barEv
+  virtual void  foo(); // _ZN3bbb9GG01111013fooEv
+  ~GG0111101(); // tgen
+  GG0111101(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0111101E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC6{ v1 v2 Fi} VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0111101 ::bar(){vfunc_called(this, "_ZN3bbb9GG01111013barEv");}
+void  bbb::GG0111101 ::foo(){vfunc_called(this, "_ZN3bbb9GG01111013fooEv");}
+bbb::GG0111101 ::~GG0111101(){ note_dtor("_ZN3bbb9GG0111101E", this);} // tgen
+bbb::GG0111101 ::GG0111101(){ note_ctor("_ZN3bbb9GG0111101E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0111101E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0111101E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0111101E, buf);
+    ::bbb::GG0111101 *dp, &lv = *(dp=new (buf) ::bbb::GG0111101());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0111101E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0111101E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0111101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111101E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111101E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF110*), 0, "_ZN3bbb9GG0111101E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF110*), ABISELECT(56,36), "_ZN3bbb9GG0111101E");
+    check_base_class_offset(lv, (::bbb::FF110*), 0, "_ZN3bbb9GG0111101E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0111101E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0111101E);
+    dp->::bbb::GG0111101::~GG0111101();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0111101E(Test__ZN3bbb9GG0111101E, "_ZN3bbb9GG0111101E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0111101C1Ev();
+extern void _ZN3bbb9GG0111101D1Ev();
+Name_Map name_map__ZN3bbb9GG0111101E[] = {
+  NSPAIR(_ZN3bbb9GG0111101C1Ev),
+  NSPAIR(_ZN3bbb9GG0111101D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF110E;
+extern VTBL_ENTRY _ZTIN3bbb5FF110E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF110E[];
+static Base_Class bases__ZN3bbb9GG0111101E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF110E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111101E[];
+extern void _ZN3bbb9GG01111013barEv();
+extern void _ZN3bbb9GG01111013fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111013barEv,_ZTv0_n16_N3bbb9GG01111013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01111013barEv,_ZThn16_N3bbb9GG01111013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01111013fooEv,_ZTv0_n20_N3bbb9GG01111013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01111013fooEv,_ZThn16_N3bbb9GG01111013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01111013fooEv,_ZTv0_n12_N3bbb9GG01111013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01111013fooEv,_ZThn28_N3bbb9GG01111013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111013barEv,_ZTv0_n16_N3bbb9GG01111013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01111013barEv,_ZThn28_N3bbb9GG01111013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01111013barEv,_ZTv0_n12_N3bbb9GG01111013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01111013barEv,_ZThn36_N3bbb9GG01111013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111013fooEv,_ZTv0_n16_N3bbb9GG01111013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01111013fooEv,_ZThn36_N3bbb9GG01111013fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0111101E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111101E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01111013barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01111013fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111013barEv,_ZTv0_n16_N3bbb9GG01111013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01111013fooEv,_ZTv0_n20_N3bbb9GG01111013fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01111013fooEv,_ZTv0_n12_N3bbb9GG01111013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111013barEv,_ZTv0_n16_N3bbb9GG01111013barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111101E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01111013barEv,_ZTv0_n12_N3bbb9GG01111013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111013fooEv,_ZTv0_n16_N3bbb9GG01111013fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0111101E[];
+extern void _ZN3bbb5FF1103barEv();
+extern void _ZN3bbb5FF1103fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF110E__NS_9GG0111101E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1103barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1103fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0111101E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0111101E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111101E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0111101E[] = {
+  {&(_ZTVN3bbb9GG0111101E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF110E__NS_9GG0111101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF110E__NS_9GG0111101E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0111101E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0111101E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0111101E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0111101E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111101E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111101E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0111101E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0111101E[];
+static VTBL_ENTRY alt_thunk_names78[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1103fooEv,_ZTv0_n16_N3bbb5FF1103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103fooEv,_ZThn36_N3bbb5FF1103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1103barEv,_ZTv0_n12_N3bbb5FF1103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1103barEv,_ZThn36_N3bbb5FF1103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01111013fooEv,_ZTv0_n16_N3bbb9GG01111013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01111013fooEv,_ZThn36_N3bbb9GG01111013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01111013barEv,_ZTv0_n12_N3bbb9GG01111013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01111013barEv,_ZThn36_N3bbb9GG01111013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01111013fooEv,_ZTv0_n12_N3bbb9GG01111013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01111013fooEv,_ZThn28_N3bbb9GG01111013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01111013fooEv,_ZTv0_n20_N3bbb9GG01111013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01111013fooEv,_ZThn16_N3bbb9GG01111013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01111013barEv,_ZTv0_n16_N3bbb9GG01111013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01111013barEv,_ZThn28_N3bbb9GG01111013barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01111013barEv,_ZThn16_N3bbb9GG01111013barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0111101E = {  "_ZN3bbb9GG0111101E", // class name
+  bases__ZN3bbb9GG0111101E, 6,
+  &(vtc__ZN3bbb9GG0111101E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0111101E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0111101E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0111101E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0111101E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names78,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0111110  : virtual ::bbb::EE011 , ::bbb::FF111 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG01111103fooEv
+  virtual void  bar(); // _ZN3bbb9GG01111103barEv
+  ~GG0111110(); // tgen
+  GG0111110(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0111110E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC6{ v2 v1 Fi} VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0111110 ::foo(){vfunc_called(this, "_ZN3bbb9GG01111103fooEv");}
+void  bbb::GG0111110 ::bar(){vfunc_called(this, "_ZN3bbb9GG01111103barEv");}
+bbb::GG0111110 ::~GG0111110(){ note_dtor("_ZN3bbb9GG0111110E", this);} // tgen
+bbb::GG0111110 ::GG0111110(){ note_ctor("_ZN3bbb9GG0111110E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0111110E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0111110E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0111110E, buf);
+    ::bbb::GG0111110 *dp, &lv = *(dp=new (buf) ::bbb::GG0111110());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0111110E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0111110E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0111110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111110E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111110E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF111*), 0, "_ZN3bbb9GG0111110E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF111*), ABISELECT(56,36), "_ZN3bbb9GG0111110E");
+    check_base_class_offset(lv, (::bbb::FF111*), 0, "_ZN3bbb9GG0111110E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0111110E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0111110E);
+    dp->::bbb::GG0111110::~GG0111110();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0111110E(Test__ZN3bbb9GG0111110E, "_ZN3bbb9GG0111110E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0111110C1Ev();
+extern void _ZN3bbb9GG0111110D1Ev();
+Name_Map name_map__ZN3bbb9GG0111110E[] = {
+  NSPAIR(_ZN3bbb9GG0111110C1Ev),
+  NSPAIR(_ZN3bbb9GG0111110D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF111E;
+extern VTBL_ENTRY _ZTIN3bbb5FF111E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF111E[];
+static Base_Class bases__ZN3bbb9GG0111110E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF111E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111110E[];
+extern void _ZN3bbb9GG01111103barEv();
+extern void _ZN3bbb9GG01111103fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111103barEv,_ZTv0_n16_N3bbb9GG01111103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01111103barEv,_ZThn16_N3bbb9GG01111103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01111103fooEv,_ZTv0_n20_N3bbb9GG01111103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01111103fooEv,_ZThn16_N3bbb9GG01111103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01111103fooEv,_ZTv0_n12_N3bbb9GG01111103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01111103fooEv,_ZThn28_N3bbb9GG01111103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111103barEv,_ZTv0_n16_N3bbb9GG01111103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01111103barEv,_ZThn28_N3bbb9GG01111103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01111103barEv,_ZTv0_n12_N3bbb9GG01111103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01111103barEv,_ZThn36_N3bbb9GG01111103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111103fooEv,_ZTv0_n16_N3bbb9GG01111103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01111103fooEv,_ZThn36_N3bbb9GG01111103fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0111110E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111110E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01111103barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01111103fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111103barEv,_ZTv0_n16_N3bbb9GG01111103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01111103fooEv,_ZTv0_n20_N3bbb9GG01111103fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01111103fooEv,_ZTv0_n12_N3bbb9GG01111103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111103barEv,_ZTv0_n16_N3bbb9GG01111103barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111110E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01111103barEv,_ZTv0_n12_N3bbb9GG01111103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111103fooEv,_ZTv0_n16_N3bbb9GG01111103fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0111110E[];
+extern void _ZN3bbb5FF1113barEv();
+extern void _ZN3bbb5FF1113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF111E__NS_9GG0111110E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0111110E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0111110E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111110E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0111110E[] = {
+  {&(_ZTVN3bbb9GG0111110E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF111E__NS_9GG0111110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0111110E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0111110E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0111110E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0111110E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0111110E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111110E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111110E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0111110E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0111110E[];
+static VTBL_ENTRY alt_thunk_names79[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01111103fooEv,_ZTv0_n16_N3bbb9GG01111103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01111103fooEv,_ZThn36_N3bbb9GG01111103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01111103barEv,_ZTv0_n12_N3bbb9GG01111103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01111103barEv,_ZThn36_N3bbb9GG01111103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01111103fooEv,_ZTv0_n12_N3bbb9GG01111103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01111103fooEv,_ZThn28_N3bbb9GG01111103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01111103fooEv,_ZTv0_n20_N3bbb9GG01111103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01111103fooEv,_ZThn16_N3bbb9GG01111103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01111103barEv,_ZTv0_n16_N3bbb9GG01111103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01111103barEv,_ZThn28_N3bbb9GG01111103barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01111103barEv,_ZThn16_N3bbb9GG01111103barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0111110E = {  "_ZN3bbb9GG0111110E", // class name
+  bases__ZN3bbb9GG0111110E, 6,
+  &(vtc__ZN3bbb9GG0111110E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0111110E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0111110E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0111110E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0111110E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names79,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG0111111  : virtual ::bbb::EE011 , ::bbb::FF111 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG01111113barEv
+  virtual void  foo(); // _ZN3bbb9GG01111113fooEv
+  ~GG0111111(); // tgen
+  GG0111111(); // tgen
+};
+//SIG(1 _ZN3bbb9GG0111111E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC6{ v1 v2 Fi} VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG0111111 ::bar(){vfunc_called(this, "_ZN3bbb9GG01111113barEv");}
+void  bbb::GG0111111 ::foo(){vfunc_called(this, "_ZN3bbb9GG01111113fooEv");}
+bbb::GG0111111 ::~GG0111111(){ note_dtor("_ZN3bbb9GG0111111E", this);} // tgen
+bbb::GG0111111 ::GG0111111(){ note_ctor("_ZN3bbb9GG0111111E", this);} // tgen
+}
+static void Test__ZN3bbb9GG0111111E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG0111111E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG0111111E, buf);
+    ::bbb::GG0111111 *dp, &lv = *(dp=new (buf) ::bbb::GG0111111());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG0111111E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG0111111E)");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::EE011*), ABISELECT(40,28), "_ZN3bbb9GG0111111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111111E");
+    check_base_class_offset(lv, (::bbb::EE011*), ABISELECT(24,16), "_ZN3bbb9GG0111111E");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::FF111*), 0, "_ZN3bbb9GG0111111E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF111*), ABISELECT(56,36), "_ZN3bbb9GG0111111E");
+    check_base_class_offset(lv, (::bbb::FF111*), 0, "_ZN3bbb9GG0111111E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG0111111E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG0111111E);
+    dp->::bbb::GG0111111::~GG0111111();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG0111111E(Test__ZN3bbb9GG0111111E, "_ZN3bbb9GG0111111E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG0111111C1Ev();
+extern void _ZN3bbb9GG0111111D1Ev();
+Name_Map name_map__ZN3bbb9GG0111111E[] = {
+  NSPAIR(_ZN3bbb9GG0111111C1Ev),
+  NSPAIR(_ZN3bbb9GG0111111D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5EE011E;
+extern VTBL_ENTRY _ZTIN3bbb5EE011E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE011E[];
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB1E;
+extern VTBL_ENTRY _ZTIN3bbb3BB1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB1E[];
+extern Class_Descriptor cd__ZN3bbb5FF111E;
+extern VTBL_ENTRY _ZTIN3bbb5FF111E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF111E[];
+static Base_Class bases__ZN3bbb9GG0111111E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA0E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB1E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE011E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA1E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB1E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF111E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111111E[];
+extern void _ZN3bbb9GG01111113barEv();
+extern void _ZN3bbb9GG01111113fooEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111113barEv,_ZTv0_n16_N3bbb9GG01111113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01111113barEv,_ZThn16_N3bbb9GG01111113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG01111113fooEv,_ZTv0_n20_N3bbb9GG01111113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG01111113fooEv,_ZThn16_N3bbb9GG01111113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01111113fooEv,_ZTv0_n12_N3bbb9GG01111113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01111113fooEv,_ZThn28_N3bbb9GG01111113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111113barEv,_ZTv0_n16_N3bbb9GG01111113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG01111113barEv,_ZThn28_N3bbb9GG01111113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG01111113barEv,_ZTv0_n12_N3bbb9GG01111113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01111113barEv,_ZThn36_N3bbb9GG01111113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG01111113fooEv,_ZTv0_n16_N3bbb9GG01111113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG01111113fooEv,_ZThn36_N3bbb9GG01111113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG0111111E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG01111113barEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG01111113fooEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111113barEv,_ZTv0_n16_N3bbb9GG01111113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG01111113fooEv,_ZTv0_n20_N3bbb9GG01111113fooEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01111113fooEv,_ZTv0_n12_N3bbb9GG01111113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111113barEv,_ZTv0_n16_N3bbb9GG01111113barEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG0111111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG01111113barEv,_ZTv0_n12_N3bbb9GG01111113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG01111113fooEv,_ZTv0_n16_N3bbb9GG01111113fooEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG0111111E[];
+extern void _ZN3bbb5FF1113barEv();
+extern void _ZN3bbb5FF1113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF111E__NS_9GG0111111E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF1113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF1113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0111111E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF111E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv),
+};
+extern void _ZN3bbb5EE0113barEv();
+extern void _ZN3bbb5EE0113fooEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE011E__NS_9GG0111111E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE0113barEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE0113fooEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111111E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG0111111E[] = {
+  {&(_ZTVN3bbb9GG0111111E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF111E__NS_9GG0111111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB1E__NS_5FF111E__NS_9GG0111111E[4]),  4,6},
+  {&(_ZTVN3bbb9GG0111111E[12]),  12,26},
+  {&(_ZTVN3bbb9GG0111111E[18]),  18,26},
+  {&(_ZTVN3bbb9GG0111111E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE011E__NS_9GG0111111E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA0E__NS_5EE011E__NS_9GG0111111E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG0111111E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG0111111E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG0111111E[];
+static VTBL_ENTRY alt_thunk_names80[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE0113barEv,_ZTv0_n16_N3bbb5EE0113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113barEv,_ZThn12_N3bbb5EE0113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE0113fooEv,_ZTv0_n12_N3bbb5EE0113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE0113fooEv,_ZThn12_N3bbb5EE0113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF1113fooEv,_ZTv0_n16_N3bbb5FF1113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113fooEv,_ZThn36_N3bbb5FF1113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF1113barEv,_ZTv0_n12_N3bbb5FF1113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF1113barEv,_ZThn36_N3bbb5FF1113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01111113fooEv,_ZTv0_n16_N3bbb9GG01111113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01111113fooEv,_ZThn36_N3bbb9GG01111113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01111113barEv,_ZTv0_n12_N3bbb9GG01111113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG01111113barEv,_ZThn36_N3bbb9GG01111113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG01111113fooEv,_ZTv0_n12_N3bbb9GG01111113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01111113fooEv,_ZThn28_N3bbb9GG01111113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG01111113fooEv,_ZTv0_n20_N3bbb9GG01111113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01111113fooEv,_ZThn16_N3bbb9GG01111113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG01111113barEv,_ZTv0_n16_N3bbb9GG01111113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG01111113barEv,_ZThn28_N3bbb9GG01111113barEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG01111113barEv,_ZThn16_N3bbb9GG01111113barEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG0111111E = {  "_ZN3bbb9GG0111111E", // class name
+  bases__ZN3bbb9GG0111111E, 6,
+  &(vtc__ZN3bbb9GG0111111E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG0111111E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG0111111E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG0111111E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG0111111E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names80,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG1000000  : virtual ::bbb::EE100 , ::bbb::FF000 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG10000003fooEv
+  virtual void  bar(); // _ZN3bbb9GG10000003barEv
+  ~GG1000000(); // tgen
+  GG1000000(); // tgen
+};
+//SIG(1 _ZN3bbb9GG1000000E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC6{ v1 v2 Fi} VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG1000000 ::foo(){vfunc_called(this, "_ZN3bbb9GG10000003fooEv");}
+void  bbb::GG1000000 ::bar(){vfunc_called(this, "_ZN3bbb9GG10000003barEv");}
+bbb::GG1000000 ::~GG1000000(){ note_dtor("_ZN3bbb9GG1000000E", this);} // tgen
+bbb::GG1000000 ::GG1000000(){ note_ctor("_ZN3bbb9GG1000000E", this);} // tgen
+}
+static void Test__ZN3bbb9GG1000000E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG1000000E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG1000000E, buf);
+    ::bbb::GG1000000 *dp, &lv = *(dp=new (buf) ::bbb::GG1000000());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG1000000E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG1000000E)");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::EE100*), ABISELECT(40,28), "_ZN3bbb9GG1000000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE100*), ABISELECT(24,16), "_ZN3bbb9GG1000000E");
+    check_base_class_offset(lv, (::bbb::EE100*), ABISELECT(24,16), "_ZN3bbb9GG1000000E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF000*), 0, "_ZN3bbb9GG1000000E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF000*), ABISELECT(56,36), "_ZN3bbb9GG1000000E");
+    check_base_class_offset(lv, (::bbb::FF000*), 0, "_ZN3bbb9GG1000000E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG1000000E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG1000000E);
+    dp->::bbb::GG1000000::~GG1000000();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG1000000E(Test__ZN3bbb9GG1000000E, "_ZN3bbb9GG1000000E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG1000000C1Ev();
+extern void _ZN3bbb9GG1000000D1Ev();
+Name_Map name_map__ZN3bbb9GG1000000E[] = {
+  NSPAIR(_ZN3bbb9GG1000000C1Ev),
+  NSPAIR(_ZN3bbb9GG1000000D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE100E;
+extern VTBL_ENTRY _ZTIN3bbb5EE100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE100E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF000E;
+extern VTBL_ENTRY _ZTIN3bbb5FF000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF000E[];
+static Base_Class bases__ZN3bbb9GG1000000E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE100E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF000E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG1000000E[];
+extern void _ZN3bbb9GG10000003fooEv();
+extern void _ZN3bbb9GG10000003barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000003fooEv,_ZTv0_n16_N3bbb9GG10000003fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG10000003fooEv,_ZThn16_N3bbb9GG10000003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG10000003barEv,_ZTv0_n20_N3bbb9GG10000003barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG10000003barEv,_ZThn16_N3bbb9GG10000003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG10000003barEv,_ZTv0_n12_N3bbb9GG10000003barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG10000003barEv,_ZThn28_N3bbb9GG10000003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000003fooEv,_ZTv0_n16_N3bbb9GG10000003fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG10000003fooEv,_ZThn28_N3bbb9GG10000003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG10000003fooEv,_ZTv0_n12_N3bbb9GG10000003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG10000003fooEv,_ZThn36_N3bbb9GG10000003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000003barEv,_ZTv0_n16_N3bbb9GG10000003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG10000003barEv,_ZThn36_N3bbb9GG10000003barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG1000000E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG10000003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG10000003barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000003fooEv,_ZTv0_n16_N3bbb9GG10000003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG10000003barEv,_ZTv0_n20_N3bbb9GG10000003barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG10000003barEv,_ZTv0_n12_N3bbb9GG10000003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000003fooEv,_ZTv0_n16_N3bbb9GG10000003fooEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG10000003fooEv,_ZTv0_n12_N3bbb9GG10000003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000003barEv,_ZTv0_n16_N3bbb9GG10000003barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG1000000E[];
+extern void _ZN3bbb5FF0003fooEv();
+extern void _ZN3bbb5FF0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF000E__NS_9GG1000000E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG1000000E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv),
+};
+extern void _ZN3bbb5EE1003fooEv();
+extern void _ZN3bbb5EE1003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE100E__NS_9GG1000000E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE1003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE1003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1003barEv,_ZThn12_N3bbb5EE1003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1003fooEv,_ZThn12_N3bbb5EE1003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA1E__NS_5EE100E__NS_9GG1000000E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG1000000E[] = {
+  {&(_ZTVN3bbb9GG1000000E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF000E__NS_9GG1000000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG1000000E[4]),  4,6},
+  {&(_ZTVN3bbb9GG1000000E[12]),  12,26},
+  {&(_ZTVN3bbb9GG1000000E[18]),  18,26},
+  {&(_ZTVN3bbb9GG1000000E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE100E__NS_9GG1000000E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA1E__NS_5EE100E__NS_9GG1000000E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG1000000E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG1000000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG1000000E[];
+static VTBL_ENTRY alt_thunk_names81[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1003fooEv,_ZThn12_N3bbb5EE1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1003barEv,_ZThn12_N3bbb5EE1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG10000003barEv,_ZTv0_n16_N3bbb9GG10000003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG10000003barEv,_ZThn36_N3bbb9GG10000003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG10000003fooEv,_ZTv0_n12_N3bbb9GG10000003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG10000003fooEv,_ZThn36_N3bbb9GG10000003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG10000003barEv,_ZTv0_n12_N3bbb9GG10000003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG10000003barEv,_ZThn28_N3bbb9GG10000003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG10000003barEv,_ZTv0_n20_N3bbb9GG10000003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG10000003barEv,_ZThn16_N3bbb9GG10000003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG10000003fooEv,_ZTv0_n16_N3bbb9GG10000003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG10000003fooEv,_ZThn28_N3bbb9GG10000003fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG10000003fooEv,_ZThn16_N3bbb9GG10000003fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG1000000E = {  "_ZN3bbb9GG1000000E", // class name
+  bases__ZN3bbb9GG1000000E, 6,
+  &(vtc__ZN3bbb9GG1000000E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG1000000E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG1000000E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG1000000E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG1000000E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names81,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG1000001  : virtual ::bbb::EE100 , ::bbb::FF000 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG10000013barEv
+  virtual void  foo(); // _ZN3bbb9GG10000013fooEv
+  ~GG1000001(); // tgen
+  GG1000001(); // tgen
+};
+//SIG(1 _ZN3bbb9GG1000001E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC6{ v2 v1 Fi} VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG1000001 ::bar(){vfunc_called(this, "_ZN3bbb9GG10000013barEv");}
+void  bbb::GG1000001 ::foo(){vfunc_called(this, "_ZN3bbb9GG10000013fooEv");}
+bbb::GG1000001 ::~GG1000001(){ note_dtor("_ZN3bbb9GG1000001E", this);} // tgen
+bbb::GG1000001 ::GG1000001(){ note_ctor("_ZN3bbb9GG1000001E", this);} // tgen
+}
+static void Test__ZN3bbb9GG1000001E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG1000001E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG1000001E, buf);
+    ::bbb::GG1000001 *dp, &lv = *(dp=new (buf) ::bbb::GG1000001());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG1000001E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG1000001E)");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::EE100*), ABISELECT(40,28), "_ZN3bbb9GG1000001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE100*), ABISELECT(24,16), "_ZN3bbb9GG1000001E");
+    check_base_class_offset(lv, (::bbb::EE100*), ABISELECT(24,16), "_ZN3bbb9GG1000001E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF000*), 0, "_ZN3bbb9GG1000001E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF000*), ABISELECT(56,36), "_ZN3bbb9GG1000001E");
+    check_base_class_offset(lv, (::bbb::FF000*), 0, "_ZN3bbb9GG1000001E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG1000001E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG1000001E);
+    dp->::bbb::GG1000001::~GG1000001();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG1000001E(Test__ZN3bbb9GG1000001E, "_ZN3bbb9GG1000001E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG1000001C1Ev();
+extern void _ZN3bbb9GG1000001D1Ev();
+Name_Map name_map__ZN3bbb9GG1000001E[] = {
+  NSPAIR(_ZN3bbb9GG1000001C1Ev),
+  NSPAIR(_ZN3bbb9GG1000001D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE100E;
+extern VTBL_ENTRY _ZTIN3bbb5EE100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE100E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF000E;
+extern VTBL_ENTRY _ZTIN3bbb5FF000E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF000E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF000E[];
+static Base_Class bases__ZN3bbb9GG1000001E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE100E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF000E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG1000001E[];
+extern void _ZN3bbb9GG10000013fooEv();
+extern void _ZN3bbb9GG10000013barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000013fooEv,_ZTv0_n16_N3bbb9GG10000013fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG10000013fooEv,_ZThn16_N3bbb9GG10000013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG10000013barEv,_ZTv0_n20_N3bbb9GG10000013barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG10000013barEv,_ZThn16_N3bbb9GG10000013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG10000013barEv,_ZTv0_n12_N3bbb9GG10000013barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG10000013barEv,_ZThn28_N3bbb9GG10000013barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000013fooEv,_ZTv0_n16_N3bbb9GG10000013fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG10000013fooEv,_ZThn28_N3bbb9GG10000013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG10000013fooEv,_ZTv0_n12_N3bbb9GG10000013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG10000013fooEv,_ZThn36_N3bbb9GG10000013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000013barEv,_ZTv0_n16_N3bbb9GG10000013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG10000013barEv,_ZThn36_N3bbb9GG10000013barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG1000001E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG10000013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG10000013barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000013fooEv,_ZTv0_n16_N3bbb9GG10000013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG10000013barEv,_ZTv0_n20_N3bbb9GG10000013barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG10000013barEv,_ZTv0_n12_N3bbb9GG10000013barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000013fooEv,_ZTv0_n16_N3bbb9GG10000013fooEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG10000013fooEv,_ZTv0_n12_N3bbb9GG10000013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000013barEv,_ZTv0_n16_N3bbb9GG10000013barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG1000001E[];
+extern void _ZN3bbb5FF0003fooEv();
+extern void _ZN3bbb5FF0003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF000E__NS_9GG1000001E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG1000001E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF000E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv),
+};
+extern void _ZN3bbb5EE1003fooEv();
+extern void _ZN3bbb5EE1003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE100E__NS_9GG1000001E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE1003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE1003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1003barEv,_ZThn12_N3bbb5EE1003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1003fooEv,_ZThn12_N3bbb5EE1003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA1E__NS_5EE100E__NS_9GG1000001E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG1000001E[] = {
+  {&(_ZTVN3bbb9GG1000001E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF000E__NS_9GG1000001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF000E__NS_9GG1000001E[4]),  4,6},
+  {&(_ZTVN3bbb9GG1000001E[12]),  12,26},
+  {&(_ZTVN3bbb9GG1000001E[18]),  18,26},
+  {&(_ZTVN3bbb9GG1000001E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE100E__NS_9GG1000001E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA1E__NS_5EE100E__NS_9GG1000001E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG1000001E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG1000001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG1000001E[];
+static VTBL_ENTRY alt_thunk_names82[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1003fooEv,_ZThn12_N3bbb5EE1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1003barEv,_ZThn12_N3bbb5EE1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0003barEv,_ZTv0_n16_N3bbb5FF0003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003barEv,_ZThn36_N3bbb5FF0003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0003fooEv,_ZTv0_n12_N3bbb5FF0003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0003fooEv,_ZThn36_N3bbb5FF0003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG10000013barEv,_ZTv0_n16_N3bbb9GG10000013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG10000013barEv,_ZThn36_N3bbb9GG10000013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG10000013fooEv,_ZTv0_n12_N3bbb9GG10000013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG10000013fooEv,_ZThn36_N3bbb9GG10000013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG10000013barEv,_ZTv0_n12_N3bbb9GG10000013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG10000013barEv,_ZThn28_N3bbb9GG10000013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG10000013barEv,_ZTv0_n20_N3bbb9GG10000013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG10000013barEv,_ZThn16_N3bbb9GG10000013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG10000013fooEv,_ZTv0_n16_N3bbb9GG10000013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG10000013fooEv,_ZThn28_N3bbb9GG10000013fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG10000013fooEv,_ZThn16_N3bbb9GG10000013fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG1000001E = {  "_ZN3bbb9GG1000001E", // class name
+  bases__ZN3bbb9GG1000001E, 6,
+  &(vtc__ZN3bbb9GG1000001E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG1000001E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG1000001E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG1000001E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG1000001E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names82,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG1000010  : virtual ::bbb::EE100 , ::bbb::FF001 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG10000103fooEv
+  virtual void  bar(); // _ZN3bbb9GG10000103barEv
+  ~GG1000010(); // tgen
+  GG1000010(); // tgen
+};
+//SIG(1 _ZN3bbb9GG1000010E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC6{ v1 v2 Fi} VBC4 v2 v1 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG1000010 ::foo(){vfunc_called(this, "_ZN3bbb9GG10000103fooEv");}
+void  bbb::GG1000010 ::bar(){vfunc_called(this, "_ZN3bbb9GG10000103barEv");}
+bbb::GG1000010 ::~GG1000010(){ note_dtor("_ZN3bbb9GG1000010E", this);} // tgen
+bbb::GG1000010 ::GG1000010(){ note_ctor("_ZN3bbb9GG1000010E", this);} // tgen
+}
+static void Test__ZN3bbb9GG1000010E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG1000010E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG1000010E, buf);
+    ::bbb::GG1000010 *dp, &lv = *(dp=new (buf) ::bbb::GG1000010());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG1000010E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG1000010E)");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::EE100*), ABISELECT(40,28), "_ZN3bbb9GG1000010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE100*), ABISELECT(24,16), "_ZN3bbb9GG1000010E");
+    check_base_class_offset(lv, (::bbb::EE100*), ABISELECT(24,16), "_ZN3bbb9GG1000010E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF001*), 0, "_ZN3bbb9GG1000010E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF001*), ABISELECT(56,36), "_ZN3bbb9GG1000010E");
+    check_base_class_offset(lv, (::bbb::FF001*), 0, "_ZN3bbb9GG1000010E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG1000010E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG1000010E);
+    dp->::bbb::GG1000010::~GG1000010();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG1000010E(Test__ZN3bbb9GG1000010E, "_ZN3bbb9GG1000010E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG1000010C1Ev();
+extern void _ZN3bbb9GG1000010D1Ev();
+Name_Map name_map__ZN3bbb9GG1000010E[] = {
+  NSPAIR(_ZN3bbb9GG1000010C1Ev),
+  NSPAIR(_ZN3bbb9GG1000010D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE100E;
+extern VTBL_ENTRY _ZTIN3bbb5EE100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE100E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF001E;
+extern VTBL_ENTRY _ZTIN3bbb5FF001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF001E[];
+static Base_Class bases__ZN3bbb9GG1000010E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE100E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF001E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG1000010E[];
+extern void _ZN3bbb9GG10000103fooEv();
+extern void _ZN3bbb9GG10000103barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000103fooEv,_ZTv0_n16_N3bbb9GG10000103fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG10000103fooEv,_ZThn16_N3bbb9GG10000103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG10000103barEv,_ZTv0_n20_N3bbb9GG10000103barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG10000103barEv,_ZThn16_N3bbb9GG10000103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG10000103barEv,_ZTv0_n12_N3bbb9GG10000103barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG10000103barEv,_ZThn28_N3bbb9GG10000103barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000103fooEv,_ZTv0_n16_N3bbb9GG10000103fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG10000103fooEv,_ZThn28_N3bbb9GG10000103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG10000103fooEv,_ZTv0_n12_N3bbb9GG10000103fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG10000103fooEv,_ZThn36_N3bbb9GG10000103fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000103barEv,_ZTv0_n16_N3bbb9GG10000103barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG10000103barEv,_ZThn36_N3bbb9GG10000103barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG1000010E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000010E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG10000103fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG10000103barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000103fooEv,_ZTv0_n16_N3bbb9GG10000103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG10000103barEv,_ZTv0_n20_N3bbb9GG10000103barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG10000103barEv,_ZTv0_n12_N3bbb9GG10000103barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000103fooEv,_ZTv0_n16_N3bbb9GG10000103fooEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000010E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG10000103fooEv,_ZTv0_n12_N3bbb9GG10000103fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000103barEv,_ZTv0_n16_N3bbb9GG10000103barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG1000010E[];
+extern void _ZN3bbb5FF0013fooEv();
+extern void _ZN3bbb5FF0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF001E__NS_9GG1000010E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG1000010E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv),
+};
+extern void _ZN3bbb5EE1003fooEv();
+extern void _ZN3bbb5EE1003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE100E__NS_9GG1000010E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE1003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE1003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1003barEv,_ZThn12_N3bbb5EE1003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1003fooEv,_ZThn12_N3bbb5EE1003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA1E__NS_5EE100E__NS_9GG1000010E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG1000010E[] = {
+  {&(_ZTVN3bbb9GG1000010E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF001E__NS_9GG1000010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG1000010E[4]),  4,6},
+  {&(_ZTVN3bbb9GG1000010E[12]),  12,26},
+  {&(_ZTVN3bbb9GG1000010E[18]),  18,26},
+  {&(_ZTVN3bbb9GG1000010E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE100E__NS_9GG1000010E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA1E__NS_5EE100E__NS_9GG1000010E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG1000010E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG1000010E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG1000010E[];
+static VTBL_ENTRY alt_thunk_names83[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1003fooEv,_ZThn12_N3bbb5EE1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1003barEv,_ZThn12_N3bbb5EE1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG10000103barEv,_ZTv0_n16_N3bbb9GG10000103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG10000103barEv,_ZThn36_N3bbb9GG10000103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG10000103fooEv,_ZTv0_n12_N3bbb9GG10000103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG10000103fooEv,_ZThn36_N3bbb9GG10000103fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG10000103barEv,_ZTv0_n12_N3bbb9GG10000103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG10000103barEv,_ZThn28_N3bbb9GG10000103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG10000103barEv,_ZTv0_n20_N3bbb9GG10000103barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG10000103barEv,_ZThn16_N3bbb9GG10000103barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG10000103fooEv,_ZTv0_n16_N3bbb9GG10000103fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG10000103fooEv,_ZThn28_N3bbb9GG10000103fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG10000103fooEv,_ZThn16_N3bbb9GG10000103fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG1000010E = {  "_ZN3bbb9GG1000010E", // class name
+  bases__ZN3bbb9GG1000010E, 6,
+  &(vtc__ZN3bbb9GG1000010E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG1000010E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG1000010E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG1000010E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG1000010E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names83,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG1000011  : virtual ::bbb::EE100 , ::bbb::FF001 {
+  int pg;
+  virtual void  bar(); // _ZN3bbb9GG10000113barEv
+  virtual void  foo(); // _ZN3bbb9GG10000113fooEv
+  ~GG1000011(); // tgen
+  GG1000011(); // tgen
+};
+//SIG(1 _ZN3bbb9GG1000011E) C1{ VBC2{ VBC3{ v1 v2 Fi} BC4{ v2 v1 Fi} v2 v1 Fi} BC5{ BC6{ v2 v1 Fi} VBC4 v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG1000011 ::bar(){vfunc_called(this, "_ZN3bbb9GG10000113barEv");}
+void  bbb::GG1000011 ::foo(){vfunc_called(this, "_ZN3bbb9GG10000113fooEv");}
+bbb::GG1000011 ::~GG1000011(){ note_dtor("_ZN3bbb9GG1000011E", this);} // tgen
+bbb::GG1000011 ::GG1000011(){ note_ctor("_ZN3bbb9GG1000011E", this);} // tgen
+}
+static void Test__ZN3bbb9GG1000011E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG1000011E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG1000011E, buf);
+    ::bbb::GG1000011 *dp, &lv = *(dp=new (buf) ::bbb::GG1000011());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG1000011E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG1000011E)");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::EE100*), ABISELECT(40,28), "_ZN3bbb9GG1000011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE100*), ABISELECT(24,16), "_ZN3bbb9GG1000011E");
+    check_base_class_offset(lv, (::bbb::EE100*), ABISELECT(24,16), "_ZN3bbb9GG1000011E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF001*), 0, "_ZN3bbb9GG1000011E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::FF001*), ABISELECT(56,36), "_ZN3bbb9GG1000011E");
+    check_base_class_offset(lv, (::bbb::FF001*), 0, "_ZN3bbb9GG1000011E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG1000011E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG1000011E);
+    dp->::bbb::GG1000011::~GG1000011();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG1000011E(Test__ZN3bbb9GG1000011E, "_ZN3bbb9GG1000011E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG1000011C1Ev();
+extern void _ZN3bbb9GG1000011D1Ev();
+Name_Map name_map__ZN3bbb9GG1000011E[] = {
+  NSPAIR(_ZN3bbb9GG1000011C1Ev),
+  NSPAIR(_ZN3bbb9GG1000011D1Ev),
+  {0,0}
+};
+extern Class_Descriptor cd__ZN3bbb3AA1E;
+extern VTBL_ENTRY _ZTIN3bbb3AA1E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA1E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5EE100E;
+extern VTBL_ENTRY _ZTIN3bbb5EE100E[];
+extern  VTBL_ENTRY _ZTVN3bbb5EE100E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5EE100E[];
+extern Class_Descriptor cd__ZN3bbb3AA0E;
+extern VTBL_ENTRY _ZTIN3bbb3AA0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3AA0E[];
+extern Class_Descriptor cd__ZN3bbb3BB0E;
+extern VTBL_ENTRY _ZTIN3bbb3BB0E[];
+extern  VTBL_ENTRY _ZTVN3bbb3BB0E[];
+extern Class_Descriptor cd__ZN3bbb5FF001E;
+extern VTBL_ENTRY _ZTIN3bbb5FF001E[];
+extern  VTBL_ENTRY _ZTVN3bbb5FF001E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb5FF001E[];
+static Base_Class bases__ZN3bbb9GG1000011E[] = {
+  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
+  {&cd__ZN3bbb3AA1E,    ABISELECT(40,28), //bcp->offset
+    14, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    5, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    1, //init_seq
+    2, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb3BB0E,    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
+    2, //init_seq
+    2, //immediately_derived
+  0, 0},
+  {&cd__ZN3bbb5EE100E,    ABISELECT(24,16), //bcp->offset
+    7, //bcp->virtual_function_table_offset
+    5, //num_negative_vtable_entries(t, bcp)
+    4, //bcp->index_in_construction_vtbl_array
+    7, //bcp->base_subarray_index_in_construction_vtbl_array
+    3, //init_seq
+    -1, //immediately_derived
+  1, 1},
+  {&cd__ZN3bbb3AA0E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_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__ZN3bbb3BB0E,    ABISELECT(56,36), //bcp->offset
+    20, //bcp->virtual_function_table_offset
+    4, //num_negative_vtable_entries(t, bcp)
+    6, //bcp->index_in_construction_vtbl_array
+    0, //bcp->base_subarray_index_in_construction_vtbl_array
+    4, //init_seq
+    5, //immediately_derived
+  0, 1},
+  {&cd__ZN3bbb5FF001E,    0, //bcp->offset
+    -1, //bcp->virtual_function_table_offset
+    3, //num_negative_vtable_entries(t, bcp)
+    0, //bcp->index_in_construction_vtbl_array
+    2, //bcp->base_subarray_index_in_construction_vtbl_array
+    6, //init_seq
+    -1, //immediately_derived
+  1, 0},
+  {0}};
+extern VTBL_ENTRY _ZTIN3bbb9GG1000011E[];
+extern void _ZN3bbb9GG10000113fooEv();
+extern void _ZN3bbb9GG10000113barEv();
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000113fooEv,_ZTv0_n16_N3bbb9GG10000113fooEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG10000113fooEv,_ZThn16_N3bbb9GG10000113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n40_N3bbb9GG10000113barEv,_ZTv0_n20_N3bbb9GG10000113barEv)();
+extern void ABISELECT(_ZThn24_N3bbb9GG10000113barEv,_ZThn16_N3bbb9GG10000113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG10000113barEv,_ZTv0_n12_N3bbb9GG10000113barEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG10000113barEv,_ZThn28_N3bbb9GG10000113barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000113fooEv,_ZTv0_n16_N3bbb9GG10000113fooEv)();
+extern void ABISELECT(_ZThn40_N3bbb9GG10000113fooEv,_ZThn28_N3bbb9GG10000113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n24_N3bbb9GG10000113fooEv,_ZTv0_n12_N3bbb9GG10000113fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG10000113fooEv,_ZThn36_N3bbb9GG10000113fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb9GG10000113barEv,_ZTv0_n16_N3bbb9GG10000113barEv)();
+extern void ABISELECT(_ZThn56_N3bbb9GG10000113barEv,_ZThn36_N3bbb9GG10000113barEv)() __attribute__((weak));
+static  VTBL_ENTRY vtc__ZN3bbb9GG1000011E[] = {
+  ABISELECT(40,28),
+  ABISELECT(24,16),
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000011E[0]),
+  (VTBL_ENTRY)&_ZN3bbb9GG10000113fooEv,
+  (VTBL_ENTRY)&_ZN3bbb9GG10000113barEv,
+  ABISELECT(-24,-16),
+  ABISELECT(-24,-16),
+  ABISELECT(16,12),
+  ABISELECT(-24,-16),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000113fooEv,_ZTv0_n16_N3bbb9GG10000113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N3bbb9GG10000113barEv,_ZTv0_n20_N3bbb9GG10000113barEv),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  ABISELECT(-40,-28),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG10000113barEv,_ZTv0_n12_N3bbb9GG10000113barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000113fooEv,_ZTv0_n16_N3bbb9GG10000113fooEv),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb9GG1000011E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb9GG10000113fooEv,_ZTv0_n12_N3bbb9GG10000113fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb9GG10000113barEv,_ZTv0_n16_N3bbb9GG10000113barEv),
+};
+extern VTBL_ENTRY _ZTVN3bbb9GG1000011E[];
+extern void _ZN3bbb5FF0013fooEv();
+extern void _ZN3bbb5FF0013barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5FF001E__NS_9GG1000011E[] = {
+  ABISELECT(56,36),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5FF0013fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5FF0013barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv)();
+extern void ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG1000011E[] = {
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  ABISELECT(-56,-36),
+  (VTBL_ENTRY)&(_ZTIN3bbb5FF001E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv),
+};
+extern void _ZN3bbb5EE1003fooEv();
+extern void _ZN3bbb5EE1003barEv();
+static  VTBL_ENTRY _tg__ZTVN3bbb5EE100E__NS_9GG1000011E[] = {
+  ABISELECT(16,12),
+  0,
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE100E[0]),
+  (VTBL_ENTRY)&_ZN3bbb5EE1003fooEv,
+  (VTBL_ENTRY)&_ZN3bbb5EE1003barEv,
+};
+extern void ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1003barEv,_ZThn12_N3bbb5EE1003barEv)() __attribute__((weak));
+extern void ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv)();
+extern void ABISELECT(_ZThn16_N3bbb5EE1003fooEv,_ZThn12_N3bbb5EE1003fooEv)() __attribute__((weak));
+static  VTBL_ENTRY _tg__ZTVN3bbb3AA1E__NS_5EE100E__NS_9GG1000011E[] = {
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  ABISELECT(-16,-12),
+  (VTBL_ENTRY)&(_ZTIN3bbb5EE100E[0]),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv),
+  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv),
+};
+static  VTT_ENTRY vtt__ZN3bbb9GG1000011E[] = {
+  {&(_ZTVN3bbb9GG1000011E[5]),  5,26},
+  {&(_tg__ZTVN3bbb5FF001E__NS_9GG1000011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3BB0E__NS_5FF001E__NS_9GG1000011E[4]),  4,6},
+  {&(_ZTVN3bbb9GG1000011E[12]),  12,26},
+  {&(_ZTVN3bbb9GG1000011E[18]),  18,26},
+  {&(_ZTVN3bbb9GG1000011E[24]),  24,26},
+  {&(_tg__ZTVN3bbb5EE100E__NS_9GG1000011E[3]),  3,5},
+  {&(_tg__ZTVN3bbb3AA1E__NS_5EE100E__NS_9GG1000011E[4]),  4,6},
+};
+extern VTBL_ENTRY _ZTIN3bbb9GG1000011E[];
+extern  VTBL_ENTRY _ZTVN3bbb9GG1000011E[];
+extern  VTBL_ENTRY * __attribute__((weak))_ZTTN3bbb9GG1000011E[];
+static VTBL_ENTRY alt_thunk_names84[] = {
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5EE1003fooEv,_ZTv0_n16_N3bbb5EE1003fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1003fooEv,_ZThn12_N3bbb5EE1003fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5EE1003barEv,_ZTv0_n12_N3bbb5EE1003barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn16_N3bbb5EE1003barEv,_ZThn12_N3bbb5EE1003barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb5FF0013barEv,_ZTv0_n16_N3bbb5FF0013barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013barEv,_ZThn36_N3bbb5FF0013barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb5FF0013fooEv,_ZTv0_n12_N3bbb5FF0013fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb5FF0013fooEv,_ZThn36_N3bbb5FF0013fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG10000113barEv,_ZTv0_n16_N3bbb9GG10000113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG10000113barEv,_ZThn36_N3bbb9GG10000113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG10000113fooEv,_ZTv0_n12_N3bbb9GG10000113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn56_N3bbb9GG10000113fooEv,_ZThn36_N3bbb9GG10000113fooEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N3bbb9GG10000113barEv,_ZTv0_n12_N3bbb9GG10000113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG10000113barEv,_ZThn28_N3bbb9GG10000113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N3bbb9GG10000113barEv,_ZTv0_n20_N3bbb9GG10000113barEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG10000113barEv,_ZThn16_N3bbb9GG10000113barEv),
+  ALT_NAMES_TERMINATOR,
+  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N3bbb9GG10000113fooEv,_ZTv0_n16_N3bbb9GG10000113fooEv), // 
+  (VTBL_ENTRY)ABISELECT(_ZThn40_N3bbb9GG10000113fooEv,_ZThn28_N3bbb9GG10000113fooEv),
+  (VTBL_ENTRY)ABISELECT(_ZThn24_N3bbb9GG10000113fooEv,_ZThn16_N3bbb9GG10000113fooEv),
+  ALT_NAMES_TERMINATOR,
+ALT_NAMES_TERMINATOR};
+Class_Descriptor cd__ZN3bbb9GG1000011E = {  "_ZN3bbb9GG1000011E", // class name
+  bases__ZN3bbb9GG1000011E, 6,
+  &(vtc__ZN3bbb9GG1000011E[0]), // expected_vtbl_contents
+  &(vtt__ZN3bbb9GG1000011E[0]), // expected_vtt_contents
+  ABISELECT(72,44), // object size
+  NSPAIRA(_ZTIN3bbb9GG1000011E),ABISELECT(56,32), //typeinfo_var
+  NSPAIRA(_ZTVN3bbb9GG1000011E),26, //virtual function table var
+  5, // offset into main vftv pointed to by object[0]
+  NSPAIRA(_ZTTN3bbb9GG1000011E),8, //virtual table table var
+  6, // n_initialized_bases
+  1, // has_virtual_bases
+  0, // has_class_type_fields
+  alt_thunk_names84,
+};
+#endif // __cplusplus
+
+//============================================================================
+
+#ifdef __cplusplus
+namespace bbb { 
+struct  GG1000100  : virtual ::bbb::EE100 , ::bbb::FF010 {
+  int pg;
+  virtual void  foo(); // _ZN3bbb9GG10001003fooEv
+  virtual void  bar(); // _ZN3bbb9GG10001003barEv
+  ~GG1000100(); // tgen
+  GG1000100(); // tgen
+};
+//SIG(1 _ZN3bbb9GG1000100E) C1{ VBC2{ VBC3{ v2 v1 Fi} BC4{ v1 v2 Fi} v1 v2 Fi} BC5{ BC6{ v1 v2 Fi} VBC7{ v2 v1 Fi} v1 v2 Fi} v1 v2 Fi}
+}
+namespace bbb { 
+void  bbb::GG1000100 ::foo(){vfunc_called(this, "_ZN3bbb9GG10001003fooEv");}
+void  bbb::GG1000100 ::bar(){vfunc_called(this, "_ZN3bbb9GG10001003barEv");}
+bbb::GG1000100 ::~GG1000100(){ note_dtor("_ZN3bbb9GG1000100E", this);} // tgen
+bbb::GG1000100 ::GG1000100(){ note_ctor("_ZN3bbb9GG1000100E", this);} // tgen
+}
+static void Test__ZN3bbb9GG1000100E()
+{
+  extern Class_Descriptor cd__ZN3bbb9GG1000100E;
+  void *lvp;
+  {
+    ABISELECT(double,int) buf[ABISELECT(10,12)];
+    init_test(&cd__ZN3bbb9GG1000100E, buf);
+    ::bbb::GG1000100 *dp, &lv = *(dp=new (buf) ::bbb::GG1000100());
+    lvp = (void*)&lv;
+    check2(sizeof(lv), ABISELECT(72,44), "sizeof(_ZN3bbb9GG1000100E)");
+    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(_ZN3bbb9GG1000100E)");
+    check_base_class_offset(lv, (::bbb::AA1*)(::bbb::EE100*), ABISELECT(40,28), "_ZN3bbb9GG1000100E");
+    check_base_class_offset(lv, (::bbb::BB0*)(::bbb::EE100*), ABISELECT(24,16), "_ZN3bbb9GG1000100E");
+    check_base_class_offset(lv, (::bbb::EE100*), ABISELECT(24,16), "_ZN3bbb9GG1000100E");
+    check_base_class_offset(lv, (::bbb::AA0*)(::bbb::FF010*), 0, "_ZN3bbb9GG1000100E");
+    check_base_class_offset(lv, (::bbb::BB1*)(::bbb::FF010*), ABISELECT(56,36), "_ZN3bbb9GG1000100E");
+    check_base_class_offset(lv, (::bbb::FF010*), 0, "_ZN3bbb9GG1000100E");
+    check_field_offset(lv, pg, ABISELECT(16,12), "_ZN3bbb9GG1000100E.pg");
+    test_class_info(&lv, &cd__ZN3bbb9GG1000100E);
+    dp->::bbb::GG1000100::~GG1000100();
+  }
+  Check_Ctor_Dtor_Calls(lvp);
+}
+static Arrange_To_Call_Me v_ZN3bbb9GG1000100E(Test__ZN3bbb9GG1000100E, "_ZN3bbb9GG1000100E", ABISELECT(72,44));
+
+#else // __cplusplus
+
+extern void _ZN3bbb9GG1000100C1Ev();

[... 16000 lines stripped ...]




More information about the llvm-commits mailing list